计算数值实验报告(太原理工大学)_第1页
计算数值实验报告(太原理工大学)_第2页
计算数值实验报告(太原理工大学)_第3页
计算数值实验报告(太原理工大学)_第4页
计算数值实验报告(太原理工大学)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算数值实验报告(太原理工大学).计算数值实验报告(太原理工大学).53/53计算数值实验报告(太原理工大学).本科实验报告课程名称:计算数值方法实验地址:综合楼五层506室专业班级:计科1002学号:2010001414学生姓名:xxx指导教师:王峥2012年6月20太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科1002学号2010001414学生姓名xxx实验日期成绩课程名称计算数值方法实验题目实验一方程求根一、课题名称方程求根:熟习使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在1,2内的一

2、个实根,且要求*-xn|0.510-5满足精度|x*-xn|0.510-5为止。迭代法:用迭代公式x=f(x)进行迭代计算,直到满足|x二分法:设f(x)在a,b上连续,且f(a1)*f(x1)0,记(a2,b2)=(x1,b1)带*-xn|0.510-5为止。入计算式进行计算直到|x二、目的和意义(1)认识非线性方程求根的常有方法,如二分法、迭代法、牛顿法、割线法。(2)加深对方程求根方法的认识,掌握算法。会进行偏差分析,并能对不一样方法进行比较。三、计算公式(1)迭代法1).第一对给定的计算公式进行变形使其能够迭代或许找出相应迭代速度较快的式子。2).带入求好的式子到循环中去比方:x1(x

3、)(k0,1,2,)kk(2)二分法:f(x)在区间(x,y)上连续1).先找到a、b属于区间(x,y),使f(a),f(b)异号,说明在区间(a,b)内一定有零点,而后求f(a+b)/2,2).假如f(a+b)/2=0,该点就是零点,假如f(a+b)/20,则在区间((a+b)/2,b)内有零点,反之在(a,(a+b)/2)内有零点带入1)中连续。四、主要仪器设施Vc+9.0C-freeCodeBlocks五、结构程序设计迭代法:#include#includemain()inti;doublexn15,y,x1,x2,m;printf(请输入x1,x2的值:n);scanf(%lf%lf,

4、&x1,&x2);printf(请输入精度要求:n);scanf(%lf,&m);printf(nxnn);i=0;doxn0=(x1+x2)/2;xni+1=sqrt(10/(4+xni);/迭代printf(%5d%5lfn,i,xni);y=fabs(xni+1-xni);i+;if(ym)break;while(1);二分法:#include#includemain()intm,n,o,p;doublea,b,l;printf(请输入x3,x2,x的系数和常数p:n);scanf(%d%d%d%d,&m,&n,&o,&p);/140-10printf(请输入x1,x2:n);scanf

5、(%lf%lf,&a,&b);/12printf(请输入精度要求:n);scanf(%lf,&l);/0.5x105printf(nanbnxnf(xn)n);doublex,fx;inti=1;dox=(b+a)/2;fx=m*x*x*x+n*x*x+o*x+p;printf(%5d%5f%5f%5f%5fn,i,a,b,x,fx);i+;if(fx=0)break;if(fx0)b=x;elseif(fx0)a=x;if(b-a)l)break;/进行计算并返值while(1);六、结果谈论和分析二分法:迭代法:分析谈论:使用不一样的方法,能够不一样程度的求得方程的解,不一样的方法速度不一

6、样,求得的结果也稍有差别,自然和要求精度也相关系。刚开始的时候用数组对二分法进行求解,发现循环到第二次就没法实现值的传达,于是换了其余一种方法取代了数组。流程图:实验地址综合楼五层506室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科1002学号2010001414学生姓名xxx实验日期成绩课程名称计算数值方法实验题目实验二线性方程组的直接解法一、课题名称线性方程组的直接解法合理利用Gauss消元法、LU分解法、追赶法求解以下方程组:102214321x1x2x314813151059.14311211.29521211x1x2x3x41248412278612311

7、510620 x1x2x3x427732112112112x1x2xnxn17555(n=5,10,100)二、目的和意义(1)认识线性方程组常有的直接解法,如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行偏差分析,并能对不一样方法进行比较。三、计算公式高斯分解法:将原方程组化为三角形方阵的方程组:lik=aik/akkaij=aij-lik*akjk=1,2,n-1i=k+1,k+2,nj=k+1,k+2,n+1由回代过程求得原方程组的解:xn=ann+1/annxk=(akn+1-akjxj)/akk(k=n-1,n-2,2,1)LU分解

8、法:将系数矩阵A转变成A=L*U,L为单位下三角矩阵,U为一般上三角矩阵,而后经过解方程组l*y=b,u*x=y,来求解x.追赶法:用来求对角方程组;将系数矩阵A转变成A=L*U,L为一般下n-1对角矩阵,U为单位上n-1对角矩阵,而后经过解方程组l*y=b,u*x=y,来求解x.四、主要仪器设施Vc+9.0C-freeCodeBlocks五、结构程序设计Gauss消元法:#include#includeusingnamespacestd;intmain()intn,i,j,k;doublea100100,b100,o;cout输入未知数个数:n;cout输入数列:endl;for(i=1;i

9、=n;i+)for(j=1;jaij;for(i=1;i=n;i+)for(j=i+1;j1e-7)o=aii/aji;for(k=i;k0;i-)bi=ain+1/aii;for(j=i-1;j0;j-)ajn+1=ajn+1-bi*aji;cout解得:endl;for(i=1;i=n;i+)coutbiendl;/system(pause);return0;列主元素消元法:#include#include#defineN20usingnamespacestd;voidload();floataNN;intm;intmain()inti,j;intc,k,n,p,r;floatxN,lNN

10、,s,d;coutm;coutendl;cout请按次次输入增广矩阵a:endl;load();for(i=0;im;i+)for(j=i;jfabs(aii)?j:i;/*找列最大元素*/for(n=0;nm+1;n+)s=ain;ain=acn;acn=s;/*将列最大数防在对角线上*/for(p=0;pm+1;p+)coutaipt;coutendl;for(k=i+1;km;k+)lki=aki/aii;for(r=i;r=0;i-)d=0;for(j=i+1;jm;j+)d=d+aij*xj;xi=(aim-d)/aii;/*求解*/cout该方程组的解为:endl;for(i=0;

11、im;i+)coutxi=xit;return0;voidload()inti,j;for(i=0;im;i+)for(j=0;jaij;LU分解法:#includevoidsolve(floatl100,floatu100,floatb,floatx,intn)inti,j;floatt,s1,s2;floaty100;for(i=1;i=n;i+)/*第一次回代过程开始*/s1=0;for(j=1;j=1;i-)/*第二次回代过程开始*/s2=0;for(j=n;ji;j-)t=-uij;s2=s2+t*xj;xi=(yi+s2)/uii;voidmain()floata100100,l1

12、00100,u100100,x100,b100;inti,j,n,r,k;floats1,s2;for(i=1;i=99;i+)/*将全部的数组置零,同时将L矩阵的对角值设为1*/for(j=1;j=99;j+)lij=0,uij=0;if(j=i)lij=1;printf(输入方程组的个数n:n);/*输入方程组的个数*/scanf(%d,&n);printf(读取原矩阵A(x的系数):n);/*读取原矩阵A*/for(i=1;i=n;i+)for(j=1;j=n;j+)scanf(%f,&aij);printf(读取列矩阵B(y的值):n);/*读取列矩阵B*/for(i=1;i=n;i+

13、)scanf(%f,&bi);for(r=1;r=n;r+)/*求解矩阵L和U*/for(i=r;i=n;i+)s1=0;for(k=1;k=r-1;k+)s1=s1+lrk*uki;uri=ari-s1;for(i=r+1;i=n;i+)s2=0;for(k=1;k=r-1;k+)s2=s2+lik*ukr;lir=(air-s2)/urr;printf(输出矩阵L:n);/输出矩阵Lfor(i=1;i=n;i+)for(j=1;j=n;j+)printf(%7.3f,lij);printf(n);printf(输出矩阵U:n);/输出矩阵Ufor(i=1;i=n;i+)for(j=1;j=

14、n;j+)printf(%7.3f,uij);printf(n);solve(l,u,b,x,n);printf(解为:n);for(i=1;i=n;i+)printf(x%d=%fn,i,xi);追赶法:#include#defineN3main()doubleA33,b3;printf(请按次次输入x的系数:n);inta,c;for(a=0;a3;a+)for(c=0;c3;c+)scanf(%lf,&Aac);printf(请按次次输入y的值:n);intk;for(k=0;k3;k+)scanf(%lf,&bk);inti;A01=A01/A00;for(i=1;i2;i+)Aii+

15、1=Aii+1/(Aii-Aii-1*Ai-1i);for(i=1;i3;i+)Aii=Aii-Aii-1*Ai-1i;b0=b0/A00;for(i=1;i=0;i-)bi=bi-Aii+1*bi+1;for(i=0;i3;i+)printf(x%d=%.6lfn,i,di);六、结果谈论和分析Gauss消元法:列主元素消元法:LU分解法:追赶法:分析谈论从消元过程能够看出,关于n阶线性方程组,只需各步主元素不为零,经过n-1步消元,就能够获取一个等价的系数矩阵为上三角形阵的方程组,而后再利用回代过程可求得原方程组的解.因为列主元素法相像且优于完整主元素法因此省略了后者。消元过程相当于分解A

16、为单位下三角阵L与上三角阵U的乘积,解方程组Ly=b回代过程就是解方程组Ux=y。此中的L为n阶单位下三角阵、U为上三角阵.在A的LU分解中,L取下三角阵,U取单位上三角阵,这样求解方程组Ax=d的方法称为追赶法。其余是追赶法和其余方法求同一方程结果不一样样,我多次改正源程序,也不知道原由。再就是追赶法有很大的局限性还待改进。流程图:实验地址综合楼五层506室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科1002学号2010001414学生姓名xxx实验日期成绩课程名称计算数值方法实验题目实验三线性方程组的迭代解法一、课题名称线性方程组的迭代解法使用雅可比迭代法或高斯

17、-赛德尔迭代法对以下方程组进行求解。10 x1x22x3x110 x22x3x1x25x3二、目的和意义学习使用雅可比迭代法或高斯-赛德尔迭代法三、计算公式雅克比迭代法:设线性方程组Ax=b的系数矩阵A可逆且主对角元素a11,a22,ann均不为零,令D=diag(a11,a22,ann)并将A分解成A=(A-D)+D从而线性方程组可写成Dx=(D-A)x+b则有迭代公式x1x(k+1)=B(k+1)=B(k)+f1此中,B1=I-D-1A,f1=D-1b。-1b。四、主要仪器设施Vc+9.0C-freeCodeBlocks五、结构程序设计雅克比迭代法:#include#includemain

18、()inti;doublex120,x220,x320;doublex10,x20,x30;printf(请输入x1,x2,x3的初值:n);scanf(%lf%lf%lf,&x10,&x20,&x30);printf(nx1nx2nx3nn);for(i=0;i18;i+)x10=x10;x20=x20;x30=x30;x1i+1=0.1*x2i+0.2*x3i+0.72;x2i+1=0.1*x1i+0.2*x3i+0.83;x3i+1=0.2*x1i+0.2*x2i+0.84;printf(%5d%5lf%5lf%5lfn,i,x1i,x2i,x3i);六、实验结果与分析:雅克比迭代法:分

19、析谈论:其实,这两个迭代法是以前迭代法的升级,多了几个迭代式子而已,并且二者相差不大比较简单,因此选择了雅克比迭代法进行求解,可是没有与另一种方法高斯赛德尔迭代法进行实质性的比较。流程图:实验地址综合楼五层506室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科1002学号2010001414学生姓名xxx实验日期成绩课程名称计算数值方法实验题目实验四矩阵特色值与特色向量问题一、课题名称使用幂法求A模为最大的特色值及其相应的特色向量。210A121012二、目的和意义(1)认识矩阵特色值与特色向量问题解法,掌握幂法。(2)加深对矩阵特色值与特色向量问题求解方法的认识,掌

20、握算法。三、计算公式幂法:由已知的非零向量x0和矩阵A的乘幂结构向量序列xn以计算矩阵A的按模最大特色值及其特色向量的方法,称为幂法。迭代公式:yAxkk1mmax(y),k1,2,.kkxkymkk结果可取1mky或x1k1k四、主要仪器设施Vc+9.0C-freeCodeBlocks五、结构程序设计源代码:#include#include#defineN3#defineeps1e-6#defineKM30floatMaxValue(floatx,intn)floatMax=x0;inti;for(i=1;ifabs(Max)Max=xi;returnMax;voidPowerMethod(

21、float*A)floatUN,VN,r1,r2,temp;inti,j,k=0;while(kKM)k+;for(i=0;iN;i+)temp=0;for(j=0;jN;j+)temp+=*(A+i*N+j)*Uj;Vi=temp;for(i=0;iN;i+)Ui=Vi/MaxValue(V,N);if(k=1)r1=MaxValue(V,N);elser2=MaxValue(V,N);if(fabs(r2-r1)eps)break;r1=r2;printf(r=%fn,r2);for(i=0;iN;i+)printf(y%d=%fn,i+1,Ui);voidmain()floatANN=2

22、,-1,0,-1,2,-1,0,-1,2;floatUN;/A的值U0=1;U1=1;U2=1;/x0的值PowerMethod(A0);六、结果谈论和分析分析谈论因为该程序将A矩阵和x0的值编写在程序中,因此要想改正成其余矩阵时比较麻烦,因此也有必定的限制性。幂法是一种求随意矩阵A的按模最大特色值及其对应特色向量的迭代算法。该方法的最大长处是计算简单,简单在计算机上实现,对稀少矩阵较为合适,但有时收敛速度很慢。流程图:实验地址综合楼五层506室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科1002学号2010001414学生姓名xxx实验日期成绩课程名称计算数值方法

23、实验题目实验五代数插值一、课题名称(使用拉格朗日插值法或牛顿插值法求解:已知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),满足条件Pn(xj)=yj,j=0,1,n令Ln(x)=y0l0(x)+y1l1(x)+ynln(x)=yili(x)此中l0(

24、x),l1(x),ln(x)为以x0,x1,xn为节点的n次插值基函数,则Ln(x)是一次数不超出n的多项式,且满足Ln(xj)=yj,L=0,1,n再由插值多项式的独一性,得Pn(x)Ln(x)四、主要仪器设施Vc+9.0C-freeCodeBlocks五、结构程序设计#include#includemain()intI;charL;doubleM100100;doublex100,y100;doubleX=1,xx=0,w=1,N=0,P,R=1;intn=5;/coutn;/for(inti=0;i=n;i+)/*cout请输入xi的值:xi;cout请输入yi的值:yi;Mi0=xi;

25、Mi1=yi;*/用二维保留全部数据M00=0.40;M01=0.41075;M10=0.55;M11=0.57815;M20=0.65;M21=0.69675;M30=0.80;M31=0.88811;M40=0.90;M41=1.02652;M50=1.05;M51=1.25386;for(intj=2;j=n+1;j+)for(inti=1;i=n;i+)Mij=(Mij-1-Mi-1j-1)/(Mi0-Mi-j+10);for(inti=1;i=n;i+)cout其i阶均差为:Mii+1endl;coutxx;for(inti=0;in;i+)X*=xx-Mi0;N+=Mi+1i+2*

26、X;P=M01+N;cout其函数值:y=Pendl;/六、结果谈论和分析分析谈论拉格朗日插值的长处是插值多项式特别简单成立,弊端是增添节点是原有多项式不可以利用,一定从头成立,即全部基函数都要从头计算,这就造成计算量的浪费。因此该程序选择了牛顿法,因为在输入数据的时候比较麻烦因此将数据存在了程序里面,只好在程序里改正数据。其余因为精度问题计算结果有必定的偏差。流程图:实验地址综合楼五层506室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科1002学号2010001414学生姓名xxx实验日期成绩课程名称计算数值方法实验题目实验六最小二乘法拟合多项式一、课题名称给定数

27、据点(xi,yi),用最小二乘法拟合数据的多项式,并求平方偏差。xi00.50.60.70.80.91.0yi11.751.962.192.442.713.00二、目的和意义1娴熟运用已学计算方法求解方程组2加深对计算方法技巧,选择正确的计算方法来求解各样方程组3培育使用电子计算机进行科学计算和解决问题的能力三、计算公式成立正规方程组:(xij+k)ak=xijyi,j=0,1,ni,j=0,1,n平方偏差:I=(akxik-y2i)四、主要仪器设施Vc+9.0C-freeCodeBlocks五、结构程序设计源代码:#include#include#defineN15doublepower(d

28、ouble&a,intn)doubleb=1;for(inti=0;in;i+)b*=a;returnb;voidGauss();doubleXN,YN,sumXN,sumYN,aNN,bN,lNN,xN;voidmain()ofstreamoutdata;ifstreamindata;doubles;inti,j,k,n,index;/coutn;n=7;coutendl;/cout请输入X和Y:endl;/输入给定数据X0=0.0;Y0=1.00;X1=0.5;Y1=1.75;X2=0.6;Y2=1.96;X3=0.7;Y3=2.19;X4=0.8;Y4=2.44;X5=0.9;Y5=2.71;X6=1.0;Y6=3.00;/绑定数据/能够解绑由下for循环输入任何数据for(i=0;in;i+)/coutXiXi;sumX1+=Xi;/coutYiYi;sumY1+=Yi;/coutendl;coutsumX1=sumX1tsumY1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论