《数值分析》上机实验报告

上传人:第*** 文档编号:55995546 上传时间:2018-10-08 格式:DOC 页数:21 大小:517KB
返回 下载 相关 举报
《数值分析》上机实验报告_第1页
第1页 / 共21页
《数值分析》上机实验报告_第2页
第2页 / 共21页
《数值分析》上机实验报告_第3页
第3页 / 共21页
《数值分析》上机实验报告_第4页
第4页 / 共21页
《数值分析》上机实验报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《《数值分析》上机实验报告》由会员分享,可在线阅读,更多相关《《数值分析》上机实验报告(21页珍藏版)》请在金锄头文库上搜索。

1、数值分析上机实验报告数值分析上机实验报告数值分析数值分析上机实验报告上机实验报告1.用 Newton 法求方程X7-X4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代 6次或误差小于 0.00001) 。1.1 理论依据:理论依据:设函数在有限区间a,b上二阶导数存在,且满足条件 上的惟一解在区间平方收敛于方程所生的迭代序列迭代过程由则对任意初始近似值达到的一个中使是其中上不变号在区间,0)(3 , 2 , 1 , 0,)( )()(,x|)(),(|,|,)(| )(|. 4; 0)(. 3,)(. 20)()(. 110.baxfxkxfxfxxxNewtonbab

2、fafmirbacxfabcfxfbaxfbfxfkkk kkk令0)9 . 1 ()9 . 1 (0)8(4233642)(0)16(71127)(0)9 . 1 (, 0) 1 . 0(,1428)(3225333647 ffxxxxxfxxxxxfffxxxf故以 1.9 为起点9 . 1 )()(01xxfxfxxkk kk如此一次一次的迭代,逼近x的真实根。当前后两个的差 #include main() double x2,f,f1;double x1=1.9; /取初值为 1.9dox2=x1;f=pow(x2,7)-28*pow(x2,4)+14;f1=7*pow(x2,6)-4

3、*28*pow(x2,3);x1=x2-f/f1; while(fabs(x1-x2)=0.00001|x1 x0=1.9; eps=0.00001; M=100; x=Newton(f,df,x0,eps,M); vpa(x,7)1.51.5 问题讨论:问题讨论:1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。此程序的不足之处是,所要求解的方程必须满足上述定理的四个条件,但是第二和第四个条件在计算机上比较难以实现。2.Newton 迭代法是一个二阶收敛迭代式,他的几何意义 Xi+1 是 Xi 的切线与 x 轴的交点,故也称为切线法。它是平方收敛的

4、,但它是局部收敛的,即要求初始值与方程的根充分接近,所以在计算过程中需要先确定初始值。3.本题在理论依据部分,讨论了区间(0.1,1.9)两端点是否能作为 Newton 迭代的初值,结果发现 0.1 不满足条件,而 1.9 满足,能作为初值。另外,该程序简单,只有一个循环,且为顺序结构,故采用 do-while 循环。当然也可以选择 for和 while 循环。2.已知函数值如下表:x12345f(x)00.693147181.0986123 1.38629441.6094378x678910f(x)1.79175951.94591012.0794452.19722462.3025851f(x

5、)f(1)=1f(10)=0.1试用三次样条插值求 f(4.563)及 f(4.563)的近似值。2.12.1 理论依据理论依据3322 1111 111 1111()()( )()()()()6666jjjjjj jjjjjj jjjjxxxxhxxhxxS xMMyMyMhhhh 这里 ,所以只要求出,就能得出插值函数 S(x) 。11jjjhxxjM求的方法为:jM00111122112122212NNNNMdMdMd 这里10 00 0011111 111116()6()(1,2,1)61()1jjjj j jjjjNNNN NNjj jjj jjjjyydyhh yyyydjNhhh

6、hdyyyhh hh hhhh 最终归结为求解一个三对角阵的解。用追赶法解三对角阵的方法如下:11112221222111111111nnnnnnnnnbc abclALUl bcalab 1 ,nLdLUxdLdUx即若记则由得, 112111nnndlld 111111nnnnnxx 综上可得求解方程 Ax=d 的算法:1 111111111111,1,2,3,1,1,2,1i iiiii iiiiiniii ni nibdlbl cdlinc xxxin 2.22.2 C C 语言程序代码:语言程序代码:#include #includevoid main() int i,j,m,n,k

7、,p; double q10,p10,s4,g4,x0,x1,g0=1,g9=0.1; double s1010; double a10,b10,c10,d10,e10,x10,h9,u9,r9; double f10=0,0.69314718,1.0986123,1.3862944,1.6094378,1.7917595,1.9459101,2.079445,2.1972246,2.3025851;printf(“请依次输入 xi:n“);for(i=0;i=1;i-)xi-1=(bi-1-si-1i*xi)/ai-1;printf(“M%d=%lfn“,i,xi-1);printf(“可得

8、 s(x)在区间4,5上的表达式;n“);printf(“将 x=4.563 代入得:n“);x0=5-4.563;x1=4.563-4; s4=x3*pow(x0,3)/6+x4*pow(x1,3)/6+(f3-x3/6)*(5-4.563)+(f4- x4/6)*(4.563-4); g4=-x3*pow(x0,2)/2+x4*pow(x1,2)/2-(f3-x3/6)+(f4-x4/6); printf(“计算结果:f(4.563)的函数值是:%lfnf(4.563)的导数值是:%lfn“,s4,g4);2.32.3 运行结果:运行结果:2.42.4 问题讨论问题讨论1. 三次样条插值效

9、果比 Lagrange 插值好,没有 Runge 现象,光滑性较好。2. 本题的对任意划分的三弯矩插值法可以解决非等距节点的一般性问题。3. 编程过程中由于定义的数组比较多,需要仔细弄清楚各数组所代表的参数,要注意各下标代表的含义,特别是在用追赶法计算的过程中。3.用 Romberg 算法求.)00001. 0(sin)75(32314 . 1允许误差dxxxxx3.13.1 理论依据:理论依据:Romberg 算法的计算步骤如下:(1)先求出按梯形公式所得的积分值(0) 1 ( )( )2baTf af b(2)把区间 2 等分,求出两个小梯形面积之和,记为,即(1) 1T(1) 1 ( )

10、( )2 ()42babaTf af bf这样由外推法可得,。(0) 2T(1)2(0)(1)(0)11(0)11 2 21( )42 14 11 ( )2TTTTT(3)把区间再等分(即等分) ,得复化梯形公式,由与外推22(2) 1T(1) 1T(2) 1T可得,如此,若已算出等分的复化梯形(2)(1) (1)11 24 4 1TTT2(1)(0) (0)22 324 41TTT2k公式,则由 Richardson 外推法,构造新序列( ) 1kT, m=1,2,l, k=1,2,l-m+1,( )(1) (1) 14 41mkk kmm mmTTT 最后求得。(0) 1lT(4)或 #i

11、nclude double f(double x) /计算 f(x)的值 double z;z=pow(3,x)*pow(x,1.4)*(5*x+7)*sin(x*x);return(z); main() double t2020,s,e=0.00001,a=1,b=3;int i,j,l,k;t01=(b-a)*(f(b)+f(a)/2; /下为 romberg 算法t11=(b-a)*(f(b)+2*f(b+a)/2)+f(a)/4;t02=(a*t11-t01)/(4-1);j=3;for(l=2;fabs(t0j-1-t0j-2)=e;l+) for(k=1,s=0;k=0;i-,j+

12、)tij=(pow(4,j-1)*ti+1j-1-tij-1)/(pow(4,j-1)-1);if(t01eps)J=J+1;h=h/2;S=0;for i=1:nx=a+h*(2*i-1);S=S+feval(f,x);endR(J+1,1)=R(J,1)/2+h*S;for k=1:JR(J+1,k+1)=(4k*R(J+1,k)-R(J,k)/(4k-1);enderr=abs(R(J+1,J+1)-R(J+1,J);n=2*n;endR;T=R(J+1,J+1);format long f=(x)(3.x)*(x.1.4)*(5*x+7)*sin(x*x); T,n=mromb(f,1

13、,3,1.e-5)3.53.5 问题讨论:问题讨论:1.Romberge 算法的优点是:把积分化为代数运算,而实际上只需求T1(i),以后用递推可得.算法简单且收敛速度快,一般 4 或 5 次即能达到要求。2.Romberge 算法的缺点是:对函数的光滑性要求较高,计算新分点的值时,这些数值的个数成倍增加。3.该程序较为复杂,涉及函数定义,有循环,而且循环中又有判断,编写时需要注意该判断条件是处于循环中,当达到要求时跳出循环,终止运算。4.函数的定义可放在主函数前也可在主程序后面。本程序采用的后置方式。4. 用定步长四阶 Runge-Kutta 求解0)0(0)0(0)0(1001000100

14、0/1/321323321yyyyydtdyydtdydtdyh=0.0005,打印 yi(0.025) , yi(0.045) , yi(0.085) , yi(0.1) ,(i=1,2,3)4.14.1 理论依据:理论依据:Runge_Kutta 采用高阶单步法,这里不是先按 Taylor 公式展开,而是先写成 处附近的值的线性组合(有待定常数)再按 Taylor 公nt式展开,然后确定待定常数,这就是 Runge-Kutta 法的思想方法。本题采用四阶古典的 Runge-Kutta 公式:),()3/, 3/2()3/, 3/(),(8/ 33321421312143211hKhKhKYhxh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号