欢迎来到天天文库
浏览记录
ID:17612880
大小:84.00 KB
页数:5页
时间:2018-09-03
《数值分析作业复化求积公式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值计算方法上机题目3计算定积分的近似值:要求:(1)若用复化梯形公式和复化Simpson公式计算,要求误差限,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。解:(1),所以,,对于复化梯形公式:,,代入数据可知,取对于复化Simpson公式,,代入数据可知,取(2)复化梯形公式:函数functiony=fun(x)y=x*exp(x);程序:clcClear%复化梯形计算format
2、longa=1;b=2;n=7019;%区间划分为m等份h=(b-a)/n;%步长,根据误差限由该算法的余项作事前估计得到ty1=fun(a)+fun(b);ty2=0;fori=1:n-1x=a+i*h1;ty2=ty2+fun(x);endT=h*(ty1+2*ty2)/2;T对于复化Simpson公式clcClear%复化Simpon计算formatlonga=1;b=2;n=24;%区间划分为n等份h=(b-a)/(2*n);%步长,根据误差限由该算法的余项作事前估计得到sy1=fun(a)+fu
3、n(b);sy2=0;sy3=0;forj=1:2*n-1x=a+j*h2;ifrem(j,2)==0sy3=sy3+fun(x);elsesy2=sy2+fun(x);endendS=h*(sy1+4*sy2+2*sy3)/3;S%精确值Exactanswer=exp(2)运算结果:T=7.389056127230221S=7.389056126214707Exactanswer=7.389056098930650(3)比较可知复化梯形公式的计算量较大1.用共轭梯度法和G-S迭代法分别求解下面的方程组:
4、迭代20次或满足时停止计算。解:(1)G-S迭代法程序:%G-S迭代计算clcclearA=[1031;2-103;1310];b=[14-514]';x0=[000]';TOL=0.00000000001;n=length(b);k=0;x=zeros(n,1);while1x(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);fori=2:n-1x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);endx(n)=(b
5、(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);k=k+1;ifmax(abs(x(1:n)-x0(1:n)))6、000000001.000000000000001.00000000000000(2)共轭梯度法程序:%共轭梯度法计算clcclearA=[1031;2-103;1310];b=[14-514]';x0=[000]';if(nargin==3)eps=1.0e-11;endr1=b-A*x0;p1=r1;d=dot(r1,r1)/dot(p1,A*p1);x=x0+d*p1;r2=r1-d*A*p1;f=dot(r2,r2)/dot(r1,r1);p2=r2+f*p1;k=1;for(i=1:(rank(7、A)-1))x0=x;p1=p2;r1=r2;d=dot(r1,r1)/dot(p1,A*p1);x=x0+d*p1;r2=r1-d*A*p1;f=dot(r2,r2)/dot(r1,r1);p2=r2+f*p1;k=k+1;endd=dot(r2,r2)/dot(p2,A*p2);x=x+d*p2;k=k+1;disp('方程组的conjgrad迭代次数为:')kdisp('方程组的conjgrad迭代解为:')xdisp('方程组的精确解为:')xx=Ab运行结果:方程组的conjgrad迭代次数为8、:k=4方程组的conjgrad迭代解为:x=1.000322031601101.000310757883551.00032203160110方程组的精确解为:xx=1.000000000000001.000000000000001.00000000000000比较:共轭梯度法迭代次数为4次,而G-S法的迭代次数需要54次,因此共轭梯度法计算量要小得多。
6、000000001.000000000000001.00000000000000(2)共轭梯度法程序:%共轭梯度法计算clcclearA=[1031;2-103;1310];b=[14-514]';x0=[000]';if(nargin==3)eps=1.0e-11;endr1=b-A*x0;p1=r1;d=dot(r1,r1)/dot(p1,A*p1);x=x0+d*p1;r2=r1-d*A*p1;f=dot(r2,r2)/dot(r1,r1);p2=r2+f*p1;k=1;for(i=1:(rank(
7、A)-1))x0=x;p1=p2;r1=r2;d=dot(r1,r1)/dot(p1,A*p1);x=x0+d*p1;r2=r1-d*A*p1;f=dot(r2,r2)/dot(r1,r1);p2=r2+f*p1;k=k+1;endd=dot(r2,r2)/dot(p2,A*p2);x=x+d*p2;k=k+1;disp('方程组的conjgrad迭代次数为:')kdisp('方程组的conjgrad迭代解为:')xdisp('方程组的精确解为:')xx=Ab运行结果:方程组的conjgrad迭代次数为
8、:k=4方程组的conjgrad迭代解为:x=1.000322031601101.000310757883551.00032203160110方程组的精确解为:xx=1.000000000000001.000000000000001.00000000000000比较:共轭梯度法迭代次数为4次,而G-S法的迭代次数需要54次,因此共轭梯度法计算量要小得多。
此文档下载收益归作者所有