数值分析实验报告包含源程序

上传人:痛*** 文档编号:95278124 上传时间:2022-05-24 格式:DOC 页数:16 大小:325KB
收藏 版权申诉 举报 下载
数值分析实验报告包含源程序_第1页
第1页 / 共16页
数值分析实验报告包含源程序_第2页
第2页 / 共16页
数值分析实验报告包含源程序_第3页
第3页 / 共16页
资源描述:

《数值分析实验报告包含源程序》由会员分享,可在线阅读,更多相关《数值分析实验报告包含源程序(16页珍藏版)》请在装配图网上搜索。

1、课程实验报告课程名称计算方法班级实验日期姓名学号实验成绩实验名称实验一插值多项式实验目1、掌握拉格郎日插值多项式的用法,适用范围及精确度。的2、掌握牛顿插值多项式的用法,适用范围及精确度。及要 求实验Microsoft Visual C+ 6.0环境1、Lagrange插值多项式:Lnn(X)i 0h(x)yi,其中 h(x)n (X Xj) j 0 (Xi Xj)实2、Newton插值多项式:j i验 内Nn(X) f(X。)fX,X1(X X。).fX,.,Xn(XX).(XXn 1)容3、计算实例以 2.021,2.2,2.3,2.4为节点,用牛顿插值求函数f (X)7 x在2.51处的

2、近似值;取正弦函数f(x)sin x4、如果有错,修改直至运行成功,查看运行结果1、实验1实验步骤:算(1)程序设计法描述(2) 计算实例(3) 撰写实验报告及 实 验2、实验2实验步骤(1)程序设计步(2)计算实例以 2.0,2.1,2.2,2.3,2.4为节点,用牛顿插值求函数骤f (X) Jx在2.51处的近似值;(3)撰写实验报告1、拉格朗日插值实验结果如图:调 试 过 程 及 实 验 结 果以0.32,0.34,0.36为节点,分别用线性插值和抛物插值求正弦函数在0.3367处的近似值2、牛顿插值实验结果如图:进行测试:3、 使用牛顿插值计算实例以2.0,2.1,2.2,2.3,2.

3、4为节点,用牛顿插值求函数f(X)在2.51处的近似值:总结1、通过本次实验,使我进一步加深了对拉格朗日插值多项式的了解,掌握拉格朗日插值多项式的用法,能够正确的运用拉格朗日插值多项式进行 运算。2、通过本次实验,使我加深了对牛顿插值的认识,能够熟练的运用公式进 行运算,掌握牛顿插值多项式的用法。附 录1、拉格朗日插值程序清单:#in clude#in cludedouble Lagra nge(double x,i nt n, double a,double b); void mai n()double a20,b20,x,y;int i=0, n;printf(请输入数值个数:n=);sc

4、a nf(%d,&n);printf(请输入%d个不同的x的数值:n,n); for(i=0;i n ;i+)sca nf(%lf,&ai);printf(请按顺序输入x对应的y的数值:n); for(i=0;i n ;i+)sca nf(%lf,&bi);/* for(i=0;i n;i+)prin tf(%f ,ai);*/printf(请输入需计算的数:x=);sca nf(%lf, &x);y=Lagra nge(x, n,a,b);printf(根据拉格朗日插值公式计算后的数为:y=%fn,y); double Lagra nge(double x,i nt n, double a,

5、double b)double y=0,L;int i,j; for(i=0;i n ;i+)L=1;for(j=0;j n ;j+)if(j=i)c ontinue;else L=L*(x-aj)/(ai-aj); y+=L*bi;return y;2、牛顿插值程序清单:#in clude#i nclude#in cludedouble Newt on( double x,i nt n, double a,double b); double Chashang(int a1,int b1,double a,double b); void mai n()double a20,b20,x,y;in

6、t i=0, n;printf(请输入数值个数:n=);sca nf(%d,&n); printf(请输入%d个不同的x的数值:n,n); for(i=0;i n ;i+)sca nf(%lf,&ai);printf(请按顺序输入x对应的y的数值:n); for(i=0;i n ;i+)sca nf(%lf,&bi);printf(请输入需计算的数:x=);sea nf(%lf, &x);y=Newt on (x, n,a,b);printf(根据牛顿插值公式计算后的数为:y=%fn,y);double Newt on( double x,i nt n, double a,double b)i

7、nt i;double t=1.O,zhi=bO,p=O.O;for(i=1;i=n ;i+) t=(x-ai-1)*t; p=Chasha ng(0,i,a,b)*t; zhi=zhi+p;return zhi;double Chashang(int a1,int b1,double a,double b)double c;if(b1=a1+1)c=(bb1-ba1)/(ab1-aa1);elsec=(Chasha ng(a1+1,b1,a,b)-Chasha ng(a1,b1-1,a,b)/(ab1-aa1); return c;课程实验报告课程名称计算方法班级实验日期姓名学号实验成绩实验

8、名称实验二 数值积分实验目的及要1、掌握Newton-Cotes算法程序设计2、掌握数值求积的Romberg算法程序设计3、数值求积的Newt on-Cotes算法程序设计。4、要求程序不断加密对积分区间的等分,自动地控制Newt on-Cotes算法中的加速收敛过程,直到定积分近似值的误差不超过106为止,输出求得的定积分近似值5、要求程序不断加密对积分区间的等分,自动地控制Romberg算法中的加求速收敛过程,直到定积分近似值的误差不超过 106为止,输出求得的定积分近似值实 验 环 境Microsoft Visual C+ 6.0实 验 内 容1、计算实例求定积分x1.82.02.22.

9、42.6f(x)3.120414.425696.042418.0301410.4667计算 2.6f(x)dx1.82、数值求积的Romberg算法程序设计。3、要求程序不断加密对积分区间的等分,自动地控制Romberg算法中的加 速收敛过程,直到定积分近似值的误差不超过10 6为止,输出求得的定积分 近似值4、 计算实例求定积分0$*dx梯形求积公式:I00)晋f(a) f(b)Romberg求积的递推化公式:4k I (k 1)I (k 1) (k)4 I m 1I m|“cc/|I mk, k 1,2, ,n;m 0,1, ,n k41其中lm为疋积分近似值,k决疋着Romberg求积公

10、式的阶数,例如k 0为一阶Romberg求积公式(即梯形求积公式),一般地,1幕是k 1阶Romberg求积公式的计算结果;m决疋着等分数,Im是在2等分情况 下的(k 1)阶复化Romberg求积公式的计算结果。算法描述及实1、实验1实验步骤:(1) Newton-Cotes积分程序设计(2) 计算实例(3) 撰写实验报告2、实验2实验步骤验 步 骤(1) 设计数值求积的Romberg算法程序(2) 计算实例(3) 撰写实验报告调 试 过 程 及 实 验 结 果1、Newton-Cotes求积分实验结果如图:2、Romberg积分实验结果如图:总结1、通过本次实验,使我加深了对 Newton

11、-Cotes求积分公式的了解,掌握了 Newton-Cotes求积分公式的用法,能够使用程序将Newton-Cotes求积分公式的算法实现。2、 通过本次实验,使我进一步理解了Romberg积分,能够掌握 Romberg 积分的用法。3、通过本次实验,提高了我的程序调试能力。附 录3、Newton-Cotes求积分程序清单:#in clude#in cludedouble Newto nCotes(double b,double h);void mai n()double y5,l,a,b;int i;printf(请输入积分区间:); scan f(%lf,&a);scan f(%lf,&b

12、); printf(请输入对应的函数值:n); for(i=0;i5;i+)sca nf(%lf, &yi);l=Newt on Cotes(y,b-a);printf(利用Newton-Cotes积分公式求得函数)在(1.8,2.6)区间的积 分值为:%6.5fn,l);double Newt on Cotes(double y,double h)double C;C=(y0+y4)*7+(y1+y3)*32+y2*12)*h/90;return C;4、Romberg积分的程序清单:#in clude#in cludeusing n amespace std;#define f(x) po

13、w(x, 1.0 / 2)double Romberg(double a, double b);void mai n()double a = 0.5, b = 1,jieguo;double real = 2.0 / 3 * (1 - pow(1.0 / 2, 3.0 / 2);printf(该积分的准确值是:%.17fnn, real);jieguo = Romberg(a, b);printf(由Romberg公式计算后的积分值是:%.17fn,jieguo);double Romberg(double a, double b)int m, n;double h, x;double s,

14、q;double jd,ji ngdu;double *y = new double10;double p ;h = b - a;y0 = h*(f(a) + f(b)/2.0;m = 1;n = 1;printf(请输入精度:);scan f(%lf,&ji ngdu);jd = jin gdu + 1.0;while (jd = jingdu) & (m 10)p = 0.0;for (i nt i=0; in; i+)x = a + (i + 0.5) * h;P = P + f(x);p = (y0 + h*p)/2.0;s = 1.0;for (i nt k=1; k=m; k+)s

15、 = 4.0*s;q = (s*p - yk-1)/(s - 1.0);yk-1 = p;p = q;p = fabs(q - ym-1);m = m + 1;ym-1 = q;n = n + n; h = h / 2.0;return q;课程实验报告课程名称计算方法班级实验日期姓名学号实验成绩实验名称实验三非线性方程求解1、掌握二分法与牛顿法的基本原理及应用2、用二分法计算方程实2 x验sin x 0目2的在(1, 2)内的根的近似值及3、用迭代计算方程要x3x 10求在(1, 1.5)内的根的近似值(0.5 105) o实验Microsoft Visual C+ 6.0环境实 验 内 容

16、二分法:假定f(x)在a,b上连续,f(a)f(b) 0且f (x)在(a,b)内仅有一实根x*取 区间中点c,若f (c)0,则c恰为其根,否则,根据f (a)f(c)0是否成立,可判断出根所属的新的有根子区间(a,c)或(c,b),为节省内存,仍称其为(a,b)。运算重复进行,直到满足精度要求为止,即|c x | b a。式中a,b为新的有根子区间的端点。迭代法:x0为初始猜测,则由递推关系f (Xk)xk 1 xk f (xk)产生逼近解x的迭代序列xk,这个递推公式就是Newton法。当x距x较 近时,xk很快收敛于x。但当x0选择不当时,会导致xk发散。故我们 事先规定迭代的最多次数

17、。若超过这个次数,还不收敛,则停止迭代另选 初值。算 法 描 述 及 实 验 步 骤1、实验1实验步骤:(1) 程序设计(2) 计算实例(3) 撰写实验报告2、实验2实验步骤:(1) 程序设计(2) 计算实例(3) 撰写实验报告调 试 过 程 及 实 验 结 果1、二分法求根实验结果如图:2、迭代法的求根实验结果如图:1、通过本次实验,使我掌握了使用二分法求非线性方程的根, 加深了对二总 结分法的了解。2、通过本次实验,使我掌握了使用迭代法求非线性方程的根的方法,能够使用使用迭代法正确的求出求非线性方程的根。附 录1、二分法程序清单:#in clude#in clude#in clude do

18、uble f(double x)double y = 0;y = sin(x) - x*x/2;return y;void mai n()double a,b,y1,y2,temp;int e1,e2=1, n, i=0;printf(请输入根的区间:);scan f(%lf,&a);scan f(%lf,&b);y1=f(a);y2=f(b);if(y1*y2)0)e2=e2*10;e1-;n=(i nt)(log(b-a)*e2)/log (2);printf(对方程 sinx-x2/2=0 开始进行二分:n);while( n0)printf(第%d 次二分结果:,i);temp=f(a

19、+b)/2);if(f(a)*temp)0)b=(a+b)/2;prin tf(a=%f,b=%fn,a,b);if(f(b)*temp)0)a=(a+b)/2;prin tf(a=%f,b=%fn,a,b);i+;n-;printf(方程的解是:%6.5fn,(a+b)/2);2、迭代法的求根程序清单:#i nclude#in clude#in cludedouble f(double x)double y = 0;y = x*x*x-x-1;return y;double fdao(double x)double a=1.0/3;retur n pow(x+1,a);void mai n(

20、)double x1,x2,a,b,e2=1;int i = 0,e1;printf(请输入根的区间:);scan f(%lf,&a);scan f(%lf,&b);if(f(a)*f(b)0)e2=e2/10;e1-;e2=e2/2;prin tf(e2=%f,e2);x1=a;printf(第%d 次迭代后结果是:%20.19fn,i,x1);x2=f(x1);while(fabs(x2-x1)e2)i+;printf(第 %d 次迭代后结果是:%20.19fn,i,x2);x1=x2;x2=fdao(x1);printf(共进行%d次迭代过程n,i);printf(结果是:%20.19f

21、n,x2);elseprintf(无法进行迭代!);课程实验报告课程名称班级实验日期姓名学号实验成绩实验名称试验四Gauuss列主兀消去法解线性方程组实1、熟悉Gauss列主元消去法,编出实用程序。验目2、认识选主元技术的重要性。的3、明确对于哪些系数矩阵 A,在求解过程中不需使用选主元技术。及编制程序,用Gauss列主元消去法求解线性方程组 Ax b,并打印结要 求果,其中10 8231(1) A13.7124.623 ,b221.0725.643342410(2) A2 1710 ,b34 10974、与不选主兀的Gauss消去法结果比较并分析原因。实验Microsoft Visual C

22、+ 6.0环境由解一般线性方程组在使用 Gauss消去法求解时,从求解过程中可以清楚地看到,若aL )0,必须施以行交换的手续,才能使消去过程继续下去。实 验有时既使akk 1)0,但其绝对值很小,由于舍入误差的影响,消去过程也 会出现不稳定现象。因此,为使这种不稳定现象发生的可能性减至最小,内r,使仕施仃消去过程时母 步都要选土元糸,即要寻找仃容I a(kk 1)I (k 1). max | aik|并将第r行与第k行交换,以使ak: 1)的当前值(即a(kk1)的数值)远大于0。这种列主元消去法的主要步骤如下:1 消元过程对k 1,2,n 1,做1 o选主元,记|ark Imax |aik

23、|若ark 0,说明方程组系数矩阵奇异,则停止计算,否则进行2o。2o交换A (增广矩阵)的r,k两行元素arjakjj k,,n 13 o计算aijaijaikakj /akki k1,nj k1,,n 12回代过程对k n,n 1,2,1,计算nxk(ak,n 1akj Xj /akk)j k 1算法描 述1、程序设计及2、计算实例实 验3、撰写实验报告步骤1、Gauuss列主兀消去实验结果如图:调 试 过10 8231A13.7124.623 ,b221.0725.6433程 及 实 验 结 果图一第一题选主元消去法实验结果42 410A21710 ,b34 10 97图二第二题选主元消

24、去法实验结果2、不选主元消去法实验结果:810231A13.7124.623 ,b 22 1.072 5.6433图三 第一题不选主元消去法实验结果42 410A21710 ,b3 结果:4 10 97图四第二题不选主元消去法实验结果总结1、通过这次实验,我掌握了使用 Gauuss列主元消去法解线性方程组的方 法,加深了我对Gauuss兀消去法的理解。2、当使用不选主元的Gauss消去法时,如果主元素绝对值很小时,用它做 除数会导致结果错误,由于数值过大,位数过多,就会出现图三所是结 果。附 录程序清单:#i nclude #i nclude #in clude using n amespac

25、e std;void Change(double ab40,int m,int j) int i,max,temp=O,t,h=j; max=fabs(abOj); for(i=1;im;i+)if(maxfabs(abij) max=abij; temp=i;for(j=0;jm+1;j+) t=abhj; abhj=abtempj; abtempj=t;void mai n ()int i,j,m,k,t;double f=0, n=0,ab4040=0,g,e,x=0;printf(请输入未知数的个数:n m=);scan f(%d,&m);printf(请输入系数增广矩阵:n);for

26、(i=0;im;i+) for(j=0;jm+1;j+) sca nf(%lf,&abij);printf(您输入的系数增广矩阵为:n);for(i=0;im;i+)for(j=0;j=m;j+)prin tf(%10.9f,abij);prin tf(n);for(i=0;im-1;i+)/i 是行Chan ge(ab,m,i);for(k=i+1;km;k+)f=abii;g=abki;e=-(g/f);for(t=0;tm+1;t+)abkt+=abit*e;printf(经行处理后原矩阵变为:n);for(k=0;km;k+)for(t=0;t=m;t+)printf(%10.9f,abkt);prin tf(n);printf(”方程组的解为:n);ab22=ab23/ab22;ab11=(ab13-ab12*ab22)/ab11; ab00=(ab03-ab02*ab22-ab01*ab11)/ab00; for(i=0;im;i+)prin tf(x%d=%10.9fn,i+1,abii);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!