




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数值计算方法实验报告学院:计算机科学与技术学院专业:计算机科学与技术班级:0802班学号:2008001424姓名:王春生太原理工大学学生实验报告学院名称计算机科学与技术学院专业班级计算机0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验一 方程求根一、实验目的及意义:(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。(2)加深对方程求根方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验任务:选择上述方法中的两种方法求方程f(x)=x3+4x2-10=0在1,2内的一个实根,且要求满足精度|x*-xn|0.510-5
2、 。三、计算公式:(1)二分法公式f(x)在区间a,b上连续,且f(a)f(b)0,令x1=(a+b)/2,计算f(x1)。若f(x1)=0,则x=x1;若f(a) f(x1)0,则记(a,b)=(x1,b);重复此过程,直至满足精度要求,(b-a)/2。 (2)牛顿法迭代公式: 四、结构程序设计1)二分法源代码:/二分法.cpp#include #include using namespace std;double fx(double x)return (x*x*x)+(4*x*x)-10);void main()double A,B,mid,result,accuracy=0.000005
3、;double a0=1.0,b0=2.0;coutf(x)=x3+4x2-10=0 1,2 |x*-xn|0.5*10-5endl; cout*endl;doA=a0,B=b0;mid=(A+B)/2;if( fx(mid)=0)result=mid;a0=A,b0=B;else if (fx(A)*fx(mid)0)a0=A;b0=mid;coutA=setw(10)setprecision(10)a0 B=setw(10)setprecision(10)b0endl; else if(fx(mid)*fx(B)0) a0=mid;b0=B; coutA=setw(10)setprecis
4、ion(10)a0 B=setw(10)setprecision(10)b0=accuracy);cout*endl;coutthe result is X=setw(10)setprecision(10)resultendl;coutA=setw(10)setprecision(10)a0endl;coutB=setw(10)setprecision(10)b0endl;2)牛顿法源代码:/牛顿法.cpp/f(x)=x3+4x2-10=0 |x-xn|0.5*10(-5)#include #include using namespace std;double f(double x)retur
5、n (x*x*x+4*x*x-10);double fo(double x)return (3*x*x+8*x);int main()double x0=1,y;double temp,x1,xn;x1=x0;doxn=x1-f(x1)/fo(x1);temp=x1;x1=xn;y=xn-temp;if (y0)y=(-y);coutxn=setprecision(6)xn=0.000005);cout*endl;coutresult is xnendl;return 0;五、结果讨论和分析牛顿法结果: 分析:两种方法的结果是一样的。比较算法,可知牛顿法的收敛速度比二分法要快很多。二分法要求函
6、数连续,而牛顿法则要求函数的一阶导数存在。误差方面,二者都能达到所要求的精度。实验地点综合楼六层606室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号2008001424学生姓名王春生实验日期 成绩课程名称数值计算方法实验题目实验二 线性方程组的直接解法一、实验目的及意义:(1)了解线性方程组常见的直接解法,如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验任务:合理利用Gauss消元法: 三、计算公式:高斯分解法:将原方程组化为三角形方阵的方程组:lik=aik/
7、akk aij= aij- lik* akj k=1,2,n-1 i=k+1,k+2, ,n j=k+1,k+2, ,n+1由回代过程求得原方程组的解: xn= ann+1/ ann xk=( akn+1-akj xj)/ akk (k=n-1,n-2, ,2,1)四、结构程序设计1)Guass消元法源代码: /高斯.cpp#include stdio.hvoid main()FILE *f;double a1515;double b15,s;int i,j,k,n;f=fopen(Gaussdata.txt,r);fscanf(f,%d,&n);for(i=1;i=n;i+)for(j=1;
8、j=n;j+)fscanf(f,%lf,&aij);fscanf(f,%lf,&bi);fclose(f);k=1;dofor (j=k+1;j=n;j+) akj=akj/akk;bk=bk/akk;i=1;for(i=k+1;i=n;i+)for (j=k+1;j=1;i-) s=0;for(j=i+1;j=n;j+)s=s+aij*bj;bi=bi-s;for(i=1;i=n;i+)printf(b%2d=%lfn,i,bi);/ Gaussdata.txt31 2 3 140 1 2 82 4 1 13五、结果讨论和分析Guass消元法结果:分析:从消元过程可以看出,对于n阶线性方程组
9、,只要各步主元素不为零,即akk(k-1)0,经过n-1步消元,就可以得到一个等价的系数矩阵为上三角形阵的方程组,然后再利用回代过程可求得原方程组的解。实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验三 线性方程组的迭代解法一、实验目的及意义:(1)了解线性方程组常见的迭代解法,如雅克比迭代法、高斯塞德尔迭代法。(2)加深对线性方程组迭代求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验任务:使用雅可比迭代法或高斯-赛
10、德尔迭代法对下列方程组进行求解。 三、计算公式:雅克比迭代法:设线性方程组Ax=b的系数矩阵A可逆且主对角元素a11,a22,ann均不为零,令D=diag(a11,a22,ann)并将A分解成A=(A-D)+D从而线性方程组可写成Dx=(D-A)x+b则有迭代公式x(k+1)=B1x(k)+f1其中,B1=I-D-1A,f1=D-1b。四、结构程序设计雅克比迭代法源代码:/雅克比迭代.cpp#include #include #include using namespace std;double fx_1(double x2,double x3) return (0.1*x2+0.2*x3+
11、0.72);double fx_2(double x1,double x3) return (0.1*x1+0.2*x3+0.83);double fx_3(double x1,double x2) return (0.2*x1+0.2*x2+0.84);double abs(double a) /abs取绝对值充值为double型 if (a=0) return(a); else return(-a);void main() double x1=0,x2=0,x3=0; double temp1,temp2,temp3,a,b,c; do a=x1;b=x2;c=x3; coutx1(k)=
12、setw(7)a x2(k)=setw(7)b x3(k)=setw(7)c 0.00005|abs(x2-b)0.00005|abs(x3-c)0.00005); coutx1 =x1 x2= x2 x3= x3endl;五、结果讨论和分析分析:雅克比迭代公式简单,每迭代一次只须计算一次矩阵和向量的乘法。在计算机运算时需要两组存储单元,以存放x(k)及x(k+1)。实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号2008001424学生姓名王春生实验日期 成绩课程名称数值计算方法实验题目实验四 矩阵特征值与特征向量问题一、
13、实验目的及意义:(1)了解矩阵特征值与特征向量问题解法,掌握幂法。(2)加深对矩阵特征值与特征向量问题求解方法的认识,掌握算法。(3)会进行误差分析。二、实验任务:使用幂法求A模为最大的特征值及其相应的特征向量。三、计算公式:幂法:由已知的非零向量x0和矩阵A的乘幂构造向量序列xn以计算矩阵A的按模最大特征值及其特征向量的方法,称为幂法。迭代公式:结果可取 四、结构程序设计#include #include const int N(3);using namespace std;void matrixx(double ANN,double xN,double yN) /求y的值 for(int
14、i=0;iN;i+) yi=0; for(int j=0;jN;j+) yi+=Aij*xj; double m(double yN) /求m的值,即y的最大值 double max; for(int i=0;iyi+1?yi:yi+1; return max;void main() cout矩阵:endl|2 -1 0|endl;cout|-1 2 -1|endl;cout|0 -1 2|=e) for(int q=0;qN;q+) pq=yq; matrixx(A,x,y); for(int i=0;iN;i+) ui=yi/(m(y); delta=fabs(m(y)-m(p); k+;
15、 for(int l=0;lN;l+) xl=ul; cout迭代次数是:kendl; cout特征值为:m(y)endl; cout特征向量为:(; coutu0,u1,u2; cout ) endl;system(“pause”);五、结果讨论和分析分析: 幂法是一种求任意矩阵A的按模最大特征值及其对应特征向量的迭代算法。该方法的最大优点是计算简单,容易在计算机上实现,对稀疏矩阵较为适合,但有时收敛速度很慢。实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计算机0903学号2009001496学生姓名李杰实验日期成绩课程名称数值计算方法
16、实验题目实验五 代数插值一、实验目的及意义:(1)了解代数插值问题解法,掌握拉格朗日插值法或牛顿插值法。(2)加深对代数插值问题求解方法的认识,掌握算法。(3)能对各种方法进行比较,会进行误差分析。二、实验任务:使用拉格朗日插值法或牛顿插值法求解:已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的近似值。x0.400.550.650.800.901.05f(x)0.410750.578150.696750.888111.026521.25386三、计算公式:设函数在区间a,b上n+1互异节点x0,x1,xn上的函数值分别为y0,y1,yn,求n次插值多项式Pn(x),满
17、足条件Pn(xj)=yj, j=0,1,n令Ln(x)=y0l0(x)+y1l1(x)+ynln(x)= yili(x)其中l0(x),l1(x), ln(x) 为以x0,x1,xn为节点的n次插值基函数,则Ln(x)是一次数不超过n的多项式,且满足Ln(xj)=yj, L=0,1,n再由插值多项式的唯一性,得Pn(x)Ln(x)四、结构程序设计#include#include#includetypedef struct data float x; float y;Data; /变量x和函数值y的结构Data d20; /最多二十组数据float f(int s,int t) /牛顿插值法,用
18、以返回插商 if(t=s+1) return (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)/ 插值次数不得大于count1次 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;
19、 return y;float lagrange(float x,int count) float y=0.0; for(int k=0;kcount;k+)/这儿默认为count1次插值 float p=1.0;/初始化p for(int j=0;jcount;j+) /计算p的值 if(k=j)continue;/判定是否为同一个数 p=p*(x-dj.x)/(dk.x-dj.x); y=y+p*dk.y;/求和 return y;/返回y的值void main() float x,y; int count; while(1) coutcount; if(count=20) break;/
20、检查输入的是否合法 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你选择了牛顿插值计算方法,其结果为:; y=Newton(x,count);break;/调
21、用相应的处理函数 if(choice=1) cout你选择了拉格朗日插值计算方法,其结果为:; y=lagrange(x,count);break;/调用相应的处理函数 if(choice=0) break; system(cls); cout输入错误!endl; coutx , yendl;/输出最终结果 五、结果讨论和分析分析:拉格朗日插值的优点是插值多项式特别容易建立,缺点是增加节点是原有多项式不能利用,必须重新建立,即所有基函数都要重新计算,这就造成计算量的浪费。实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号200
22、8001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验六 最小二乘法拟合多项式一、 实验目的及意义:1熟练运用已学计算方法求解方程组2加深对计算方法技巧,选择正确的计算方法来求解各种方程组3培养使用电子计算机进行科学计算和解决问题的能力二、 实验任务:给定数据点(xi ,yi),用最小二乘法拟合数据的多项式,并求平方误差。xi00.50.60.70.80.91.0yi11.751.962.192.442.713.00三、计算公式: 建立正规方程组:(xij+k)ak=xijyi ,j=0,1,n 平方误差:I=(akxik-yi)2四、结构程序设计#include#inclu
23、de#define N 15double power(double &a,int n)double b=1;for(int i=0;in;i+)b*=a;return b;void Gauss();double XN,YN,sumXN,sumYN,aNN,bN,lNN,xN;void main()ofstream outdata;ifstream indata;double s;int i,j,k,n,index;coutn;coutendl;cout请输入X和Y:endl; /输入给定数据for(i=0;in;i+)coutXiXi;sumX1+=Xi;coutYiYi;sumY1+=Yi;coutendl;coutsumX1=sumX1t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Module 1 Unit 1 It's more than twenty thousand kilometres long(教学设计)2024-2025学年外研版(三起)英语六年级上册
- 2024秋五年级英语上册 Module 9 Unit 1 Are you feeling bored第1课时教学实录 外研版(三起)
- 2023三年级英语上册 Review Module Unit 2教学实录 外研版(三起)
- 2024年4篇推进城市治理现代化心得体会经验交流
- 晋升主管述职报告10
- 小学班级公约33
- 法学研究和论文写作方法
- 2023-2024学年浙江摄影版(三起)(2020)小学信息技术三年级下册信息社会(教学设计)
- 2025年异丙安替比林项目建议书
- 20 我们家的男子汉 教学设计-2023-2024学年统编版语文四年级下册
- 强迫症及相关障碍-138
- 品牌托管合同范本
- 普陀区2024届高三下学期二模考试语文试题(原卷版+解析版)
- 青鸟消防JB-QB-JBF5012火灾报警控制器使用说明书V1.3
- 职业技能培训投标方案(技术方案)
- 2024年四川省南充市重点中学小升初语文入学考试卷含答案
- 合金冶炼有限公司2×33000KVA全密闭硅锰合金矿热炉配套煤气发电项目环评可研资料环境影响
- 公路养护服务服务承诺及其质量保证措施
- 反电信诈骗安全教育课件
- 砂石料供应、运输、售后服务方案-1
- JGT160-2017 混凝土用机械锚栓
评论
0/150
提交评论