数值计算方法上机答案.docx
- 文档编号:23215128
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:34
- 大小:144.44KB
数值计算方法上机答案.docx
《数值计算方法上机答案.docx》由会员分享,可在线阅读,更多相关《数值计算方法上机答案.docx(34页珍藏版)》请在冰豆网上搜索。
数值计算方法上机答案
本科实验报告
课程名称:
实验项目:
实验地点:
机房
专业班级:
采矿1206学号:
**********
*******
指导教师:
2014年7月3日
一、求非线性方程的根。
1、求方程
在
附近的是根,要求精度满足
.(牛顿切线法)
f=inline('x-cos(x)');%f(x)
df=inline('1+sin(x)');%f'(x)
n=1;
x0=input('x0=');
del=input('del=');
N=input('N=');
fprintf('\nkx(k)');
fprintf('\n%2d%f',0,x0);
F0=f(x0);dF0=df(x0);
whilen ifdF0==0 fprintf('导数为0,迭代无法继续进行.'); return; end x1=x0-F0/dF0; F1=f(x1); dF1=df(x1); if((abs(x1-x0) fprintf('\n\n结果: %f\n',x1); return; end fprintf('\n%2d%f',n,x1); n=n+1; x0=x1; F0=F1; dF0=dF1; end fprintf('\n\n%d次迭代后未达到精度要求.\n',N); NewtonIteration x0=1.5 del=1e-4 N=100 kx(k) 01.500000 10.784472 20.739519 结果: 0.739085 2、求方程 在 附近的是根,求出具有思维有效数字的根近似值..(简单迭代法) clear clc phi=inline('(0.8+x^2)^(1/3)');%迭代函数 x0=input('x0='); del=input('del='); N=input('N=');n=1; fprintf('\n%2d%f',0,x0); whilen x=phi(x0); ifabs(x-x0) fprintf('\n\n近似解=%f\n',x); return end fprintf('\n%2d%f',n,x); n=n+1; x0=x; end fprintf('\n\n%fd次迭代后未达到精度要求.\n',N) x0=1 del=1e-4 N=100 01.000000 11.216440 21.316116 31.363004 41.385180 51.395688 61.400671 71.403034 81.404155 91.404687 101.404939 111.405059 近似解=1.405116 100.000000d次迭代后未达到精度要求. 二、求解线性方程组(直接法或迭代法) 1、 (列主元素消元法) a=input('a=')%[2,2,1,-3,8;-2,1,-1,-3,1;8,-1,3,8,-1;10,4,4,3,8]; [p,n]=size(a); forw=1: p [x,y]=find(a(w: p,w)==max(max(a(w: p,w)))); q=a(w,: ); a(w,: )=a(x,: ); a(x,: )=q; end forj=1: (p-1) fori=(j+1): p a(i,: )=a(j,j)/a(i,j).*a(i,: )-a(j,: ); end end m=p; whilem>1 s(m)=a(m,n); j=p; while((j>2)&(j>=m+1)&(j s(m)=s(m)-a(m,j)*x(j); j=j-1; end x(m)=s(m)/a(m,m); m=m-1; x end a=[221-38;-21-1-31;8-138-1;104438] a= 221-38 -21-1-31 8-138-1 104438 x= 1.0000-1.00002.0000-2.0000 function[x,det,flag]=Gauss(A,b) [n,m]=size(A); nb=length(b); ifn~=m error('therowsandcloumsofAmustbeequal! '); return; end ifm~=nb error('therowsandcloumsofAmustbeequalthelengthofb! '); return; end flag='OK';det=1;x=zeros(n,1); fork=1: (n-1) max1=0; fori=k: n ifabs(A(i,k))>max1 max1=abs(A(i,k));r=i; end end ifmax1<1e-6 flag='failure';return; end ifr>k forj=k: n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z; end z=b(k);b(k)=b(r);b(r)=z;det=-det; end fori=k+1: n m=A(i,k)/A(k,k); forj=k+1: n A(i,j)=A(i,j)-m*A(k,j); end b(i)=b(i)-m*b(k); end det=det*A(k,k); end det=det*A(n,n); ifabs(A(n,n))<1e-6 flag='faliure';return; end fork=n: -1: 1 forj=k+1: n b(k)=b(k)-A(k,j)*x(j); end x(k)=b(k)/A(k,k); end x(k)=b(k)/A(k,k); end X Det flag A=vpa([17.031-0.615-2.9911.007-1.0060;-134.211-1-2.16.3-1.7;00.513-0.51-1.5;4.5013.11-3.907-61.70512.178.999;0.101-0.812-0.017-0.914.9180.1;1234.5521.80],6) b=vpa([0.23-22.32254240.23629.304-117.818],6); A= [17.031,-0.615,-2.991,1.007,-1.006,0] [-1.0,34.211,-1.0,-2.1,6.3,-1.7] [0,0.5,13.0,-0.5,1.0,-1.5] [4.501,3.11,-3.907,-61.705,12.17,8.999] [0.101,-0.812,-0.017,-0.91,4.918,0.1] [1.0,2.0,3.0,4.5,5.0,21.8] >>Gauss(A,b) A= [17.031,-0.615,-2.991,1.007,-1.006,0] [-1.0,34.211,-1.0,-2.1,6.3,-1.7] [0,0.5,13.0,-0.5,1.0,-1.5] [4.501,3.11,-3.907,-61.705,12.17,8.999] [0.101,-0.812,-0.017,-0.91,4.918,0.1] [1.0,2.0,3.0,4.5,5.0,21.8] ans= 1.0000 -2.0000 2.9999 -4.0001 5.0000 -6.0008 clear clc n=input('n='); A=input('A='); b=input('b='); x=input('x='); epsilon=input('\n精度='); N=input('\n最大迭代次数N='); fprintf('\n%d: ',0); fori=1: n fprintf('%f',x(i)); end %以下是迭代过程 fork=1: N %这是第k步迭代,迭代前的向量在x0[]中,迭代后的向量在x[]中; normal=0; fori=1: n t=x(i); x(i)=b(i); forj=1: n ifj~=i x(i)=x(i)-A(i,j)*x(j); end end x(i)=x(i)/A(i,i); temp=abs(x(i)-t);%求范数于迭代在同一个循环中; iftemp>normal normal=temp;%这里用的是无穷范数 end end%第i不迭代结束; fprintf('\n%d: ',k); fori=1: n fprintf('%f',x(i));%输出迭代过程 end ifnormal return end end fprintf('\n\n迭代%d次后仍未求得满足精度的解\n',N); n=8 A=[17,1,4,3,-1,2,3,-7;210-17-211-4;-11-82-52-11;241-11134-1;1317-151-24;-217-1212-18;345128-192;5111-11-710] b=[71;43;-11;-37;-61;52;-73;21] x0=[0;0;0;0;0;0;0;0] 精度=1e-4 最大迭代次数N=100 0: 0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000 1: 4.1764714.3000001.3750003.3636364.0666674.3333333.8421052.100000 2: 2.9225162.0834500.5552548.5693667.2030702.3916968.4193711.770708 3: 1.796703-1.159744-1.3226198.9108208.2232983.3576457.2909535.892632 4: 4.2118430.507676-1.2417916.9272028.8477911.5521346.9022046.149035 5: 4.8681201.868149-2.5922027.3796888.4218241.2958416.8839584.935878 6: 4.5347650.742110-2.3382647.8659948.5206412.9955406.6619884.531746 7: 4.1340460.204098-1.9753807.8475618.5522223.1606677.1482374.421535 8: 3.9348030.230528-2.0501637.8467958.3502823.0342277.1274764.968270 9: 4.1827670.456461-1.8566067.7032878.4770762.7098147.0649175.050721 10: 4.2398730.623716-2.0374607.7409308.4934282.5261337.0804484.900471 11: 4.2239090.527844-2.0911437.7663918.4818132.7290846.9876304.900388 12: 4.2294720.494477-2.0251787.7442958.4957602.7621067.0363614.834351 13: 4.1809570.483627-2.0503767.7731678.4616392.7712547.0548314.862722 14: 4.1877690.472362-2.0135997.7616418.4737412.7694887.0430224.896300 15: 4.1986420.499955-2.0210727.7553988.4794262.7237627.0548634.884616 16: 4.1986920.501255-2.0384687.7601448.4745152.7349437.0402094.891221 17: 4.2055730.498191-2.0286037.7557178.4802942.7405807.0410484.880464 18: 4.1993120.497105-2.0346057.7600978.4761272.7421377.0457024.877388 19: 4.1974990.492006-2.0308367.7600368.4757992.7481837.0430294.883474 20: 4.1991700.494820-2.0284517.7582898.4772642.7418767.0458104.882012 21: 4.1984870.496008-2.0317677.7593908.4761002.7413467.0445474.883555 22: 4.1998550.495605-2.0303137.7585468.4771302.7422207.0436914.883052 23: 4.1995870.496071-2.0311267.7588478.4768822.7416557.0445844.881763 24: 4.1990620.495235-2.0312187.7591598.4765432.7430467.0440424.882558 25: 4.1993170.495278-2.0304527.7588308.4768572.7425887.0444094.882330 26: 4.1991060.495514-2.0309467.7590208.4766402.7422837.0444594.882489 27: 4.1992540.495419-2.0307707.7589248.4767442.7424677.0442214.882645 28: 4.1993260.495564-2.0307947.7588918.4767882.7422487.0443704.882398 29: 4.1992300.495486-2.0309247.7589758.4767042.7424297.0442904.882484 30: 4.1992730.495441-2.0307827.7589238.4767582.7424537.0443054.882462 31: 4.1992410.495482-2.0308407.7589468.4767312.7423837.0443504.882449>>x x= 4.1992 0.4955 -2.0308 7.7589 8.4767 2.7424 7.0444 4.8824 function[x,det,flag]=Gauss(A,b) [n,m]=size(A); nb=length(b); ifn~=m error('therowsandcloumsofAmustbeequal! '); return; end ifm~=nb error('therowsandcloumsofAmustbeequalthelengthofb! '); return; end flag='OK';det=1;x=zeros(n,1); fork=1: (n-1) max1=0; fori=k: n ifabs(A(i,k))>max1 max1=abs(A(i,k));r=i; end end ifmax1<1e-6 flag='failure';return; end ifr>k forj=k: n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z; end z=b(k);b(k)=b(r);b(r)=z;det=-det; end fori=k+1: n m=A(i,k)/A(k,k); forj=k+1: n A(i,j)=A(i,j)-m*A(k,j); end b(i)=b(i)-m*b(k); end det=det*A(k,k); end det=det*A(n,n); ifabs(A(n,n))<1e-6 flag='faliure';return; end fork=n: -1: 1 forj=k+1: n b(k)=b(k)-A(k,j)*x(j); end x(k)=b(k)/A(k,k); end x(k)=b(k)/A(k,k); end A=[11111;12345;1361015;14102035;15153570];b=[10000] b= 10000 >>Gauss(A,b) ans= 5 -10 10 -5 1 三、用追赶法求解下列方程组(6位有效数字)。 解1 clear clc n=input('n='); a=input('a='); b=input('b='); c=input('c='); %a (1)=0;c (1)=0; x=input('x='); s=zeros(n,1); t=s; temp=0; fork=1: n s(k)=b(k)-a(k)*temp;%temp t(k)=c(k)/s(k); temp=t(k); end temp=0; fork=1: n x(k)=(x(k)-a(k)*temp)/s(k); temp=x(k); end fork=n-1: -1: 1 x(k)=x(k)-t(k)*x(k+1); end fprintf('\nx=\n'); fork=1: n fprintf('%f\n',x(k)); end n=5 a=[0-1-1-1-1] b=[44444] c=[-1-1-1-10] x=[100000200] x= 27.051282 8.205128 5.769231 14.871795 53.717949 解2 clear clc n=input('n='); a=input('a='); b=input('b='); c=input('c='); %a (1)=0;c (1)=0; x=input('x='); s=zeros(n,1); t=s; temp=0; fork=1: n s(k)=b(k)-a(k)*temp;%temp t(k)=c(k)/s(k); temp=t(k); end temp=0; fork=1: n x(k)=(x(k)-a(k)*temp)/s(k); temp=x(k); end fork=n-1: -1: 1 x(k)=x(k)-t(k)*x(k+1); end fprintf('\nx=\n'); fork=1: n fprintf('%f\n',x(k)); end n=10 a=[0111111111] b=[-2-2-2-2-2-2-2-2-2-2] c=[1111111110] x=[-0.5-1.5-1.5-1.5-1.5-1.5-1.5-1.5-1.5-0.5] x= 6.500000 12.500000 17.000000 20.000000 21.500000 21.500000 20.000000 17.000000 12.500000 6.500000 四、求解下列积分(E=1E-6) 解1 %复化的梯形公式和复化色Simpson公式计算定积分 f=inline('(sin(x)/x)');%函数表达式可以更换; a=input('a=');%积分区间左端点 b=input('b=');%积分区间右端点 n=input('n=');%区间n等分; h=(b-a)/n; temp=f(a); xk=a; fori=1: n-1 xk=xk+h; temp=temp+2*f(xk); end temp=temp+f(b); temp=temp*h/2; fprintf('\n复化梯形公式计算结果: %f',temp); fuhuatx a=1 b=2 n=1000 复化梯形公式计算结果: 0.659330 解2 %复化的梯形公式和复化色Simpson公式计算定积分 f=inline('exp(-x^2)');%函数表达式可以更换; a=input('a=');%积分区间左端点 b=input('b=');%积分区间右端点 n=input('n=');%区间n等分; h=(b-a)/n; temp=f(a); xk=a; fori=1: n-1 xk=xk+h; temp=temp+2*f(xk); end temp=temp+f(b); temp=temp*h/2; fprintf('\n复化梯形公式计算结果: %f',temp); fuhuatx a=0 b=1 n=1000 复化梯形公式计算结果: 0.746824 五、求下列矩阵所有最大和最小特征值和相应特征向量。 解1 (幂法) function[m,u,flag]=Pow(A,delta,max1) ifnargin<3 max1=100 end ifnargin<2 delta=1e-5; end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算方法 上机 答案