数值计算方法实验报告王春生.docx

上传人:牧羊曲112 文档编号:5306048 上传时间:2023-06-24 格式:DOCX 页数:28 大小:357.86KB
返回 下载 相关 举报
数值计算方法实验报告王春生.docx_第1页
第1页 / 共28页
数值计算方法实验报告王春生.docx_第2页
第2页 / 共28页
数值计算方法实验报告王春生.docx_第3页
第3页 / 共28页
数值计算方法实验报告王春生.docx_第4页
第4页 / 共28页
数值计算方法实验报告王春生.docx_第5页
第5页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数值计算方法实验报告王春生.docx》由会员分享,可在线阅读,更多相关《数值计算方法实验报告王春生.docx(28页珍藏版)》请在三一办公上搜索。

1、数值计算方法实验报告学院:计算机科学与技术学院 专业:计算机科学与技术 班级:0802班学号:2008001424姓名:王春生太原理工大学学生实验报告学院名称计算机科学与 技术学院专业班级计算机0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验方程求根一、实验目的及意义:(1) 了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。(2) 加深对方程求根方法的认识,掌握算法。(3) 会进行误差分析,并能对不同方法进行比较。二、实验任务:选择上述方法中的两种方法求方程f(x)=x3+4x2-10=0在1,2内的一个实 根,且要求满足精度|x*-Xn|0.

2、5X10-5。三、计算公式:(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) 牛顿法迭代公式:xn+1、, n = 0,1,2,. / (xn)四、结构程序设计1)二分法源代码:/二分法.cpp#include #include using namespace std;double fx(double x)(return (x*x*x) + (4*x*x)-10);voi

3、d main()(double A,B,mid,result,accuracy=0.000005;double a0=1.0,b0=2.0;coutf(x)=x3+4x2-10=01,2|x*-xn|0.5*10-5endl;cout*endl;do(A=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)a0B=setw(10)setprecision(10)b0endl;else if(fx(mid

4、)*fx(B)0)(a0=mid;b0=B;coutA=setw(10)setprecision(10)a0B=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+4x”2T0=0|x-xn|0.5*10”(-5)#include #include

5、 using namespace std;double f(double x)(return (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;do(xn=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、果:函方程求ffiDebug牛顿法.eze*- |n| *1ben =1.45455 xn=1.3689 Lcn =1.36524 xn=1.36523 xn=1.36523result is 1.36523Press mny key to continue太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学 号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验二线性方程组的直接解法一、实验目的及意义:(1) 了解线性方程组常见的直接解法,如Guass消元法、LU分解法、追赶法。(2) 加深对线性方程组求解方法的认识,掌握算法。(3) 会进行误差分

7、析,并能对不同方法进行比较。、实验任务:合理利用Gauss消元法:123-* 114012*2=8241*L 3J13三、计算公式:高斯分解法:将原方程组化为三角形方阵的方程组:l1k=a1k/akka.二 a. - Lk* ak.k=1,2,,n-1i=k+1,k+2, ,nj=k+1,k+2, ,n+1由回代过程求得原方程组的解:Xn= %+/ 气Xk=( a如k. X” (k=n-1,n-2, .,2,1)四、结构程序设计1 ) Guass消元法源代码:高斯.cpp#include stdio.hvoid main()(FILE *f;double a1515;double b15,s;

8、int i,j,k,n;f=fopen(Gaussdata.txt,r);fscanf(f,%d,&n);for(i=1;i=n;i+)for(j=1;j=n;j+)fscanf(f,lf,&aij);fscanf(f,lf,&bi);fclose(f);k=1;do(for (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);/ Gau

9、ssdata.txt31 2 3 140 1 2 82 4 1 13五、结果讨论和分析Guass消元法结果:函*J:求解绣性方程组Debug高斯.eze*- |n| x|1 =1.0000002 =2.0000003 =3.000000Press any key to continue分析:从消元过程可以看出,对于n阶线性方程组,只要各步主元素不为零,即 akk(kT)20,经过n-1步消元,就可以得到一个等价的系数矩阵为上三角形阵的 方程组,然后再利用回代过程可求得原方程组的解。实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与 技术专业班级计科080

10、2学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验三线性方程组的迭代解法一、实验目的及意义:(1) 了解线性方程组常见的迭代解法,如雅克比迭代法、高斯一塞德尔迭代法。(2) 加深对线性方程组迭代求解方法的认识,掌握算法。(3) 会进行误差分析,并能对不同方法进行比较。二、实验任务:使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。10x - x - 2x= 7.2 -x +10x - 2x = 8.3x x + 5 x = 4.2I 123三、计算公式:雅克比迭代法:设线性方程组Ax=b的系数矩阵A可逆且主对角元素aii,a22, ,气n均不为零,令D

11、=diag(aii,a22, *,ann)并将A分解成A=(A-D)+D从而线性方程组可写成Dx=(D-A) x+b则有迭代公式X(k+1)=B x(k)+f其中,BjI-D-iA,fjD-ib。四、结构程序设计雅克比迭代法源代码:/雅克比迭代.cpp#include #include #include using namespace std;double fx_1(double x2,double x3)(return (0.1*x2+0.2*x3+0.72);double fx_2(double x1,double x3)(return (0.1*x1+0.2*x3+0.83);doubl

12、e 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)=setw(7)ax2(k)=setw(7)bx3(k)=setw(7)c 0.00005|abs(x2-b)0.00005|abs(x3-c)0.0

13、0005);coutx1 =x1x2=x2x3=x3endl;五、结果讨论和分析分析:雅克比迭代公式简单,每迭代一次只须计算一次矩阵和向量的乘法。在计算机运算时需要两组存储单元,以存放x(k)及x(k+1)。实验地点计算机与软件学院606教 室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与 技术专业班级计科0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验四 矩阵特征值与特征向量问题一、实验目的及意义:(1) 了解矩阵特征值与特征向量问题解法,掌握幕法。(2) 加深对矩阵特征值与特征向量问题求解方法的认识,掌握算法。(3) 会进行误差分析。二、

14、实验任务:使用幕法求A模为最大的特征值及其相应的特征向量。210A =121012三、计算公式:幕法:由已知的非零向量x0和矩阵A的乘幕构造向量序列(xn)以计算矩阵 A的按模最大特征值及其特征向量的方法,称为幕法。迭代公式:y = Axkk i m = max( y ), k = 1,2,.x = yIk结果可取入就mv就y 或v就x七 1 k 1 k四、结构程序设计#include #include const int N(3);using namespace std;void matrixx(double ANN,double xN,double yN)(求y的值for(int i=0;

15、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-10|endl;cout|-12 -1|endl;cout|0-12|=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+;for(int l=0;lN;l+)

16、xl=ul;cout迭代次数是:kendl;cout特征值为:m(y)endl;cout特征向量为:(;coutu0,u1,u2;cout ) 1-请D:认二下数直计算方法七数值计算方法实会报告程序煤法求巨模最大值七加分析:幕法是一种求任意矩阵A的按模最大特征值及其对应特征向量的迭代 算法。该方法的最大优点是计算简单,容易在计算机上实现,对稀疏矩阵较为 适合,但有时收敛速度很慢。太原理工大学学生实验报告学院名称计算机科学与技术专业班级计算机0903学生姓名李木 八、实验日期学号成绩2009001496课程名称数值计算方法实验题目实验五代数插值、实验目的及意义:(1) 了解代数插值问题解法,掌握

17、拉格朗日插值法或牛顿插值法。(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),满足条件Ej,j=0,1,nL (x)=y l (x)+y l (x)

18、+y l (x)= Ey l (x) n0 01 1n ni ix1,xn为节点的n次插值基函且满足L=0,1,,n其中 l0(x),l(x),ln(x)为以 x。,数,则Ln(x)是一次数不超过n的多项式,Ln (xj)=yj,再由插值多项式的唯一性,得Pn(x)三 L (x)四、结构程序设计#include#include#includetypedef struct data(float x;float y;变量x和函数值y的结构最多二十组数据牛顿插值法,用以返回插商Data;Data d20;float f(int s,int t)(if(t=s+1)return (dt.y-ds.y)

19、/(dt.x-ds.x);elsereturn (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)/插值次数不得大于count 1次 break;elsesystem(cls);t=1.0;y=d0.y;yt=0.0;floatfloatfloatfor(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,int count)(float y

20、=0.0;for(int k=0;kcount;k+)/这儿默认为 count 1 次插值(float p=1.0;/初始化 pfor(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;/检查输入的是否合法system(cls);获得各组数据for(int i=0;icount;i+)(cout请输入

21、第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;/调用相应的处理函数if(choice=1)(cout你选择了拉格朗日插值计算方法,其结果为:;y=lagrange(x,count);break;/调

22、用相应的处理函数if(choice=0)break;system(cls);cout输入错误!endl;yendl;/输出最终结果五、结果讨论和分析拉格朗日插值的优点是插值多项式特别容易建立,缺点是增加节点是 原有多项式不能利用,必须重新建立,即所有基函数都要重新计算,这 就造成计算量的浪费。coutx实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方 法实验题目实验六最小二乘法拟合多项式实验目的及意义:1. 熟练运用已学计算方法求解方程组2. 加深对计算方法技巧

23、,选择正确的计算方法来求解各种方程组3. 培养使用电子计算机进行科学计算和解决问题的能力实验任务:给定数据点(气.必),用最小二乘法拟合数据的多项式,并求平方误差。尤.i00.50.60.70.80.91.0yi11.751.962.192.442.713.00三、计算公式:建立正规方程组:(X/k)ak=EXiJyi ,j=O,1,,n平方误差:I=(ax.ky.)四、结构程序设计#lnclude#lnclude#define N 15double power(double &a,int n)double b=1;for(int i=0;in;i+) b*二a;return b;void G

24、auss();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=sumX1tsumY1=sumY1endl;coutindex;coutendl;i=n;sumX0=i;for(i=2;i=2*index;i

25、+)(sumXi=0;for(j=0;jn;j+)sumXi+=power(Xj,i);coutsumXi=sumXiendl;for(i=2;i=index+1;i+)(sumYi=0;for(j=0;jn;j+)sumYi+=power(Xj,i-1)*Yj;coutsumYi=sumYiendl;for(i=1;i=index+1;i+)(建立正规方程组for(j=1;j=index+1;j+)aij=sumXi+j-2;bi=sumYi;k=1;用高斯消元法解方程组do(for(j=k+1;j=index+1;j+) ljk=ajk/akk;for(i=k+1;i=index+1;i+

26、)(for(j=k+1;j=1;i-)(s=0;for(j=i+1;j=index+1;j+)s=s+aij*xj;xi = (bi-s)/aii;cout拟合系数为:;/输出拟合系数for(i=1;i=index+1;i+)coutxit;double m=0;coutendl平方误差为:;for(i=0;in;i+)(double t=x1+x2*Xi-Yi;m=m+power(t,2);coutmendl;五、结果讨论和分析分析:数据拟合的具体作法是:对给定的数据(x ,y) (i=0,1,m),在取定的函 数类中,求p(x)属于此函数类,使误差r=p(x)-yi (i=0,1,m)的平方和最小, 即i i iri2=E(Ep(Xi)-yi)2二min从几何意义上讲,就是寻求与给定点(x ,y ) (i=0,1,m)的距离平方和为最小的曲线y=p(x)。11

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号