《数值计算方法上机实习题答案整理》由会员分享,可在线阅读,更多相关《数值计算方法上机实习题答案整理(11页珍藏版)》请在金锄头文库上搜索。
1、 数值计算方法上机作业 热能工程1 设,(1) 由递推公式,从的几个近似值出发,计算;解:易得:ln6-ln5=0.1823,程序为:I=0.182;for n=1:20 I=(-5)*I+1/n;endI输出结果为:= -3.0666e+010(2) 粗糙估计,用,计算;因为 所以取程序为:I=0.0087;for n=1:20 I=(-1/5)*I+1/(5*n);endI= 0.0083(3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。首先分析两种递推式的误差;设第一递推式中开始时的误差为,递推过程的舍入误差不计。并记,则有。因为,所此递推式不可靠。而在第二种递推式中,误差在缩
2、小,所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制,即算法是否数值稳定。2 求方程的近似根,要求,并比较计算量。(1) 在0,1上用二分法;程序:a=0;b=1.0;while abs(b-a)5*1e-4 c=(b+a)/2; if exp(c)+10*c-20 b=c; else a=c; end endc结果:c = 0.0903(2) 取初值,并用迭代;程序:x=0;a=1;while abs(x-a)5*1e-4 a=x; x=(2-exp(x)/10;endx结果:x = 0.0905(3) 加速迭代的结果;程序:x=0;a=0;b=1;
3、while abs(b-a)5*1e-4 a=x; y=exp(x)+10*x-2; z=exp(y)+10*y-2; x=x-(y-x)2/(z-2*y+x); b=x;endx结果:x = 0.0995(4) 取初值,并用牛顿迭代法;程序:x=0;a=0;b=1;while abs(b-a)5*1e-4 a=x; x=x-(exp(x)+10*x-2)/(exp(x)+10); b=x;endx结果:x = 0.0905(5) 分析绝对误差。solve(exp(x)+10*x-2=0)3钢水包使用次数多以后,钢包的容积增大,数据如下:x23456789y6.428.29.589.59.71
4、09.939.991011121314151610.4910.5910.6010.810.610.910.76试从中找出使用次数和容积之间的关系,计算均方差。(注:增速减少,用何种模型)设y=f(x)具有指数形式(a0,b1e-4 x0=y; y=B*x0+f;n=n+1;endyn以文件名jacobi.m保存。程序:a=4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4;b=0 5 -2 5 -2 6;x0=0 0 0 0 0 0;jacobi(a,b,x0);运行结果
5、为:y = 1.0000 2.0000 1.0000 2.0000 1.0000 2.0000n = 28(2) GAUSS-SEIDEL迭代;程序:function y=seidel(a,b,x0)D=diag(diag(a);U=-triu(a,1);L=-tril(a,-1);G=(D-L)U;f=(D-L)b;y=G*x0+f;n=1;while norm(y-x0)10(-4) x0=y; y=G*x0+f;n=n+1;endyn以文件名deisel.m保存。程序:a=4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0
6、;0 -1 0 -1 4 -1;0 0 -1 0 -1 4;b=0 5 -2 5 -2 6;x0=0 0 0 0 0 0;jacobi(a,b,x0);运行结果为:y = 1.0000 2.0000 1.0000 2.0000 1.0000 2.0000n =15(3) SOR迭代()。程序:function y=sor(a,b,w,x0)D=diag(diag(a);U=-triu(a,1);L=-tril(a,-1);lw=(D-w*L)(1-w)*D+w*U);f=(D-w*L)b*w;y=lw*x0+f;n=1;while norm(y-x0)10(-4) x0=y; y=lw*x0+
7、f;n=n+1;endyn以文件名sor.m保存。程序:a=4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4;b=0 5 -2 5 -2 6;x0=0 0 0 0 0 0;c=1.334 1.95 0.95;for i=1:3 w=c(i);sor(a,b,w,x0);end运行结果分别为:y = 1.0000 2.0000 1.0000 2.0000 1.0000 2.0000n = 13y = 1.0000 2.0000 1.0000 2.0000 1.0000 2
8、.0000n = 241y = 1.0000 2.0000 1.0000 2.0000 1.0000 2.0000n = 175用逆幂迭代法求最接近于11的特征值和特征向量,准确到。程序:function mt,my=maxtr(A,p,ep)n=length(A);B=A-p*eye(n);v0=ones(n,1);k=1;v=B*v0;while abs(norm(v,inf)-norm(v0,inf)ep %norm(v-v0)ep k=k+1; q=v; u=v/norm(v,inf) v=B*u; v0=q;end mt=1/norm(v,inf)+pmy=u主界面中输入:A=1 -
9、2 -3; maxtr(A,11,0.001)结果为:特征值:mt = 11.0919特征向量:my = 0.3845 -1.0000 0.73066用经典R-K方法求解初值问题(1), ;程序:function ydot=lorenzeq(x,y)ydot=-2*y(1)+y(2)+2*sin(x);y(1)-2*y(2)+2*cos(x)-2*sin(x) 以文件民lorenzeq.m保存。主窗口输入:x,y=ode45(lorenzeq,0:10,2;3)运行结果为:x = 0 1 2 3 4 5 6 7 8 9 10y = 2.0000 3.0000 1.5775 1.2758 1.1802 -0.1457 0.2406 -0.8903 -0.7202 -0.6170 -0.9454 0.2971 -0.2745 0.9652 0.