版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科实验报告课程名称: 计算机数值方法 实验项目: 方程求根,线性方程组的直接求解, 线性方程组的迭代求解,代数插值和最小二乘法拟合 实验地点: 软件楼208 专业班级: 学号: 学生姓名: 指导教师: 李志 崔冬华 2015年6 月 5 日学生姓名实验成绩实验名称 实验一 方程求根实验内容和要求(必填)目的:数值计算方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、加强实践能力、提高解决实际计算问题的水平、启发创新思想。其基本目的是:(1) 培养理
2、论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。要求:(1) 应用结构化程序设计编出通用程序,源程序要有详细的注释和说明;(2) 比较计算结果,分析数值解误差的原因;(3) 实验完成,要求提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成功的原因或计算失败的教训。实验原理(必填)选择上述方法中的两种方法求方
3、程:f(x)=x3+4x2-10=0在1,2内的一个实根,且要求满足精度|x*-xn|a; float t, x; x=a; do x=sqrt(10-x*x*x)/4); t=a; a=x; while(fabs(a-t)0.5*1e-5); printf(x=%f,a); system(pause);割线法: #include stdafx.h#includestdio.h#includemath.h#includeiostreamusing namespace std;float main() float c,a=1.0,b=2.0; /cinab; while(1) c=b-(b*b*
4、b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a); if(fabs(b-c)0.5*0.000001) break; b=c; coutc;实验结果和分析 实验结果:迭代法:割线法:心得体会(遇到的问题和解决方法)使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同。实验名称 实验二 线性方程组的直接求解实验内容和要求(1)了解线性方程组常见的直接解法,如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。实验原理合理利用Gauss消元法、LU分解法或追赶法求解下列
5、方程组: 1 、2、3、4、(n=5,10,100,)主要仪器设备台式或笔记本计算机实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页) Gauss消元法:#include stdafx.h#includestdio.h#includeiostreamusing namespace std; float main() float a34=1,2,3,14,0,1,2,8,2,4,1,13; float x3; float sum=0; int k,i,j; for(k=0;k2;k+) for(i=k+1;i3;i+) for(j=k+1;j4;j+)aij=aij-aik/akk*
6、akj; for(i=0;i3;i+) for(j=0;j4;j+) printf(a%d%d=%f,i,j,aij); cout=0;k-) sum=0; for(j=k+1;j3;j+) sum+=akj*xj; xk=(ak3-sum)/akk; for(i=0;i3;i+)printf (x%d=%f,i+1,xi); LU分解法:#include stdafx.h#include #include #define L 30 double a L L , b L , l L L , u L L , x L , y L ; int main() int n, i, j, k, r; sc
7、anf( %d, &n ); for ( i = 1; i = n; +i ) for ( j = 1; j = n; +j ) scanf( %lf, &a i j ); for ( i = 1; i = n; +i ) scanf( %lf, &b i ); for ( i = 1; i = n; +i ) for ( j = 1; j = n; +j ) l i j =0; u i j = 0.0; for ( k = 1; k = n; +k ) for ( j = k; j = n; +j ) u k j = a k j ; for ( r = 1; r k; +r ) u k j
8、-= l k r * u r j ; for ( i = k + 1; i = n; +i ) l i k = a i k ; for ( r = 1; r k; +r ) l i k -= l i r * u r k ; l i k /= u k k ; l k k = 1.0; for ( i = 1; i = n; +i ) y i = b i ; for ( j = 1; j 0; -i ) x i = y i ; for ( j = i + 1; j = n; +j ) x i -= u i j * x j ; x i /= u i i ; for ( i = 1; i = n; +
9、i ) printf( %0.2lfn, x i ); return 0;追赶法:#include stdafx.h#include stdio.hvoid main() FILE *f; double a15,b15,c15,d15; double t; int i,n; f=fopen(zgf.txt,r); fscanf(f,%d,&n); fscanf(f,%lf%lf%lf,&b1,&c1,&d1); for(i=2;i=n-1;i+) fscanf(f,%lf%lf%lf%lf,&ai,&bi,&ci,&di); fscanf(f,%lf%lf%lf,&an,&bn,&dn); f
10、close(f); c1=c1/b1; d1=d1/b1; for(i=2;i=1;i-) di=di-ci*di+1; printf(n*n); for(i=1;i=n;i+) printf(d%2d=%lfn,i,di);Zgf.txt文件中的内容是:52 1 -71 2 1 -5 1 2 1 -5 1 2 1 -5 1 2 -5实验结果和分析Gauss消元法:心得体会(遇到的问题和解决方法)在调试过程中发现自己还是很粗心,容易犯简单错误,在今后应该多编写程序。实验名称 实验三 线性方程组的迭代求解实验内容和要求学习使用雅可比迭代法或高斯-赛德尔迭代法实验原理主要仪器设备台式或笔记本计算机
11、实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)高斯-赛德尔迭代法:#include stdafx.h#include stdio.h#include math.hvoid main() float a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8.3,4.2;float x3=0,0,0,sum1,sum2;int i,j,k,n=3;for (k=0;k10;k+) for(i=0;in;i+) sum1=0; sum2=0;for(j=0;ji;j+) sum1=sum1+aij*xj; for(j=i+1;j3;j+) sum2=sum2+ai
12、j*xj; xi=(bi-sum1-sum2)/aii; for(i=0;in;i+) printf(x%d=%f,i+1,xi); printf(n); 雅克比迭代:#include stdafx.h#include #include void main() float a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8.3,4.2;float x3=0,0,0,sum1;int i,j,k,n=3;for (k=0;k10;k+) for(i=0;i3;i+) sum1=0; for(j=0;jn;j+) if(i=j) continue; sum1=sum1+a
13、ij*xj; xi=(bi-sum1)/aii; for(i=0;in;i+) printf(x%d=%f,i+1,xi);printf(n); 实验结果和分析结果:高斯-赛德尔迭代法:雅克比迭代:分析:使用高斯-赛德尔和雅克比迭代都可以求出方程组的解,但是利用高斯-赛德尔迭代法所需的迭代次数比雅克比迭代少,能够更早的达到精度要求。心得体会(遇到的问题和解决方法)高斯迭代法比雅克比迭代迭代速度快,所以在编程时选择了高斯迭代法。实验名称 实验四 代数插值和最小二乘法拟合实验内容和要求 实验内容:使用拉格朗日插值法求解:已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的近似
14、值。x0.400.550.650.800.901.05f(x)0.410750.578150.696750.888111.026521.25386实验要求:1了解拉格朗日插值法的基本方法、基本原理。 2通过编写程序,进行算法设计和数值求解。实验原理拉格朗日基函数为:拉格朗日插值多项式为:主要仪器设备台式或笔记本计算机实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)#include#include#includetypedef struct data float x; float y;Data; Data d20; float f(int s,int t) if(t=s+1) re
15、turn (dt.y-ds.y)/(dt.x-ds.x); else return (f(s+1,t)-f(s,t-1)/(dt.x-ds.x); float Newton(float x,int count) int n; while(1) coutn; if(n=count-1) break; else system(cls); float t=1.0; float y=d0.y; float yt=0.0; for(int j=1;j=n;j+) t=(x-dj-1.x)*t; yt=f(0,j)*t; y=y+yt; return y;float lagrange(float x,in
16、t count) float y=0.0; for(int k=0;kcount;k+) float p=1.0; for(int j=0;jcount;j+) if(k=j)continue; p=p*(x-dj.x)/(dk.x-dj.x); y=y+p*dk.y; return y;void main() float x,y; int count; while(1) coutcount; if(count=20) break; system(cls); for(int i=0;icount;i+) cout请输入第i+1di.x; cout请输入第i+1di.y; system(cls); coutx; while(1) int choice=3; cout请您选择使用哪种插值法计算:endl; cout (0):退出endl; cout (1):Lagrangeendl; cout (2):Newtonendl; coutchoice; if(choice=2) cout你选择了牛顿插值计算方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年(全新版)中国石灰和石膏制造行业发展现状规划研究报告
- 2025-2030年中国高压清洗设备产业规模分析及发展建议研究报告
- 2025-2030年中国食品增稠剂行业市场发展趋势规划研究报告
- 2025-2030年中国铜合金接触线行业运行状况及未来发展趋势分析报告
- 2025-2030年中国金属切割及焊接设备市场发展前景调研及投资战略分析报告
- 出版物发行与仓储管理考核试卷
- 厨房电器企业社会责任与可持续发展考核试卷
- 创业投资行业趋势与发展考核试卷
- 塑料的印刷与装饰技术考核试卷
- 2025年度船舶船员劳动合同及船舶环保责任协议
- 不同茶叶的冲泡方法
- 光伏发电并网申办具体流程
- 基本药物制度政策培训课件
- 2025年中国华能集团限公司校园招聘高频重点提升(共500题)附带答案详解
- 建筑劳务专业分包合同范本(2025年)
- GB/T 45002-2024水泥胶砂保水率测定方法
- 广东省广州海珠区2023-2024学年八年级上学期期末数学试卷(含答案)
- 飞行原理(第二版) 课件 第10章 高速空气动力学基础
- 广西《乳腺X射线数字化体层摄影诊疗技术操作规范》
- 山西省2024年中考道德与法治真题试卷(含答案)
- 小学数学专题讲座:小学数学计算能力的培养课件
评论
0/150
提交评论