计算方法C语言编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算方法C语言编程1、已知方程340xx在区间[1,2]内有一根,试问用二分法求根,使其具有5位有效数字至少应二分多少次?【程序设计】%------二分法------%clc;cleara=1;b=2;n=0;x=1.0;x0=0;while(abs(x-x0)0.00005);x0=x;x=(a+b)/2iff1(x)0b=x;elsea=x;endn=n+1;endN=n〖运行结果〗x=1.3788N=152、用迭代法求50.20xx的正根,要求准确到小数点后第5位。【程序设计】%-------迭代法------%clc;clearx0=0.00000;x=1.50000;k=0;y=(log(x+0.20000))/5.0000;x0=x;x=exp(y);while(abs(x-x0)0.00005);y=(log(x+0.20000))/5.0000;x0=x;x=exp(y);k=k+1;endN=kX=vpa(x,6)%准确到小数点后第五位〖运行结果〗3、用牛顿法求方程3310xx在x0=2附近的根,要求准确到小数点后第3位。【程序设计】functionf=f3(x)f=x^3-3*x-1;%------牛顿法-----%clc;clearx0=1.0;x=2.0;k=0;ifdiff(f3(x0))==0breakendwhile(abs(x-x0)0.0005);x0=x;x=x-(x^3-3*x-1)/(3*x^2-3);k=k+1;endX=vpa(x,4),%精确到小数点后第三位N=k〖运行结果〗4、分别用单点和双点弦截法求方程310xx在[1,1.5]内的根。要求|xn+1-xn|0.000005【程序设计】%------单点弦截法----%clc;clearx1=1.0;x2=2.0;k=0;whileabs(x2-x1)0.000005;t=x2-((x2^2-x2-1)*(x2-x1))/((x2^3-x2-1)-(x1^3-x1-1));x1=x1;x2=t;k=k+1;endX=k;Y=x2%------双点弦截法----%clc;clearx1=1.0;x2=2.0;k=0;whileabs(x2-x1)0.000005;t=x2-((x2^2-x2-1)*(x2-x1))/((x2^3-x2-1)-(x1^3-x1-1));x1=x2;x2=t;k=k+1;endX=k,Y=x2〖运行结果〗X=28Y=1.61805、分别用列主元素消去法求解下列方程组。(计算取4位小数)8471.12671.12568.02471.02368.07471.12271.02168.12071.01968.06471.11871.01768.01675.11582.05471.11490.01397.01254.01161.14321432143214321xxxxxxxxxxxxxxxx【程序设计】%-----列主元素消去法-----%clc;clearA=[1.11610.12540.13970.1490;0.15821.16750.17680.1871;0.19680.20711.21680.2271;0.23680.24710.25681.26717];b=[1.5471;1.6471;1.7471;1.8471];B=[A,b];n=length(b);RA=rank(A);RB=rank(B);d=RB-RA;ifd0disp('此方程组无解')endifRA==RB&RA~=ndisp('此方程组有无穷解')endifRA==RB&RA==ndisp('此方程组有唯一解')[n,n]=size(A);x=zeros(n,1);fork=1:n-1[piv,r]=max(abs(B(k:n,k)));%找列主元所在子矩阵的行rr=r+k-1;%列主元所在大矩阵的行ifrktemp=B(k,:);B(k,:)=B(r,:);B(r,:)=temp;endendifB(k,k)==0,error('对角元出现0'),end%把增广矩阵消元成为上三角forp=k+1:nB(p,:)=B(p,:)-B(k,:)*B(p,k)/B(k,k);endend%解上三角方程组A=B(:,1:n);b=B(:,n+1);x(n)=b(n)/A(n,n);fork=n-1:-1:1x(k)=b(k);forp=n:-1:k+1x(k)=x(k)-A(k,p)*x(p);endx(k)=x(k)/A(k,k);endx〖运行结果〗此方程组有唯一解x=0.95681.03331.20951.21256、设有方程组31032201225321321321xxxxxxxxx,取初始向量(0)T(3,1,1)x,用雅可比迭代法求解,要求(1)()13max3kkiiixx时迭代终止。【程序设计】%--------雅克比迭代法-------%clc;clearA=[521;-111;2-310];b=[-12;20;3];x0=[-3;1;1];ep=3;D=diag(diag(A));%对角阵L=-tril(A,-1);%下三角U=-triu(A,1);%上三角B=D\(L+U);f=D\b;x=B*x0+f;n=1;whilenorm(x-x0)=epx0=x;x=B*x0+f;n=n+1;endn,x〖运行结果〗n=10x=-6.446810.84063.95107、设有方程组5223122321321321xxxxxxxxx(1)证明解此方程组的雅可比迭代法收敛,而相应的赛德尔迭代法发散.(2)取初始向量(0)T(0,0,0)x,用雅可比迭代法求解,要求迭代三次.【程序设计】%-----雅克比迭代法迭代三次----%clc;clearx1=zeros(1,10);x2=zeros(1,10);x3=zeros(1,10);X1=0;X2=0;X3=0;fork=1:3;x1(k+1)=1-2*x2(k)+2*x3(k);x2(k+1)=3-x1(k)-x3(k);x3(k+1)=5-2*x1(k)-2*x2(k);endx=[x1(4)x2(4)x3(4)]〖运行结果〗x=1118、设有方程组010101021112321xxx,其等价形式为1132123211xxxxxxxx(1)证明解等价方程组的简单迭代法发散,而赛德尔法收敛(2)取初始向量(0)T(0,0,0)x,用赛德尔迭代法求解,要求迭代四次【程序设计】%-----赛德尔迭代法-迭代四次------%clc;clearx1=zeros(1,10);x2=zeros(1,10);x3=zeros(1,10);X1=0.0;X2=0.0;X3=0.0;fork=1:4;x1(k+1)=(x2(k)+x3(k))/2;x2(k+1)=(x1(k+1)+1)/2;x3(k+1)=x1(k+1);endx=[x1(5)x2(5)x3(5)]〖运行结果〗x=0.57810.78910.57819、已知函数表:应用拉格朗日插值公式计算f(1.1300)的近似值。(计算取4位小数)【程序设计】%-------拉格朗日插值-----%clc;clearn=4;x=1.1300;X=[1.1275;1.1503;1.1735;1.1972];Y=[0.1191;0.1395;0.1593;0.1790];y=0;p=1;fork=1:nforj=1:nifj~=kp=p.*((x-X(j))/(X(k)-X(j)));endendy=y+p*Y(k);endx1.12751.15031.17351.1972Y=f(x)0.11910.139540.159320.17903x,y=vpa(y,4)%取四位小数〖运行结果〗x=1.1300y=0.124710、利用函数表造出差商表,并利用牛顿插值公式计算f(x)在x=1.682,1.813处的近似值.(计算取5位小数).【程序设计】%-------牛顿插值法-----%clc;clearx=[1.615,1.634,1.072,1.828,1.92];y=[2.41450,2.46459,2.65271,3.03035,3.34066];x1=1.68200;x2=1.81300;A=zeros(5,4);A=[y',A];forj=2:5fori=j:5A(i,j)=(A(i,j-1)-A(i-1,j-1))/(x(i)-x(i+1-j));endenddisp('chashangbiao:');A=[x',A];disp(A);%计算f(x1),f(x2)的近似值N=y(1);yd=0;New=1;fori=1:4forj=i+1:5yd(j)=(y(j)-y(i))/(x(j)-x(i));endc(i)=yd(i+1);New1=New*(x1-x(i));N1=N+c(i)*New1;New2=New*(x2-x(i));N2=N+c(i)*New2;endN1=vpa(N1,6),N2=vpa(N2,6)%取五位小数〖运行结果〗11、已知函数f(x)的下列数据:用柯特斯公式计算积分6.28.1)(dxxf.(计算取5位小数)【程序设计】%------科特斯公式求积分------%functiony=KTS(X,Y)clc;cleara=1.8;b=2.6;X=[1.8;2.0;2.2;2.4;2.6];Y=[3.12014;4.42659;6.04241;8.03014;10.46675];y=(1.0/90)*(b-a)*(7*Y(1)+32*Y(2)+12*Y(3)+32*Y(4)+7*Y(5));Y=vpa(y,6)%取五位小数〖运行结果〗xk1.82.02.22.42.6f(xk)3.120144.426596.042418.0301410.4667512、已知函数f(x)的下列数据:用复化梯形公式和复化辛浦生公式计算积分10)(dxxf.(计算取6位小数)注意:本题f(x)=cosx+sin²x,积分真值I=1.11414677.【程序设计】functiony=fly(x)y=sin(x)*sin(x)+cos(x)%-------复化梯形公式、复化辛普森公式----%clc;clearh=0.1;n=11;m=0;l=0;X=[0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1.0];f=[1;1.004791;1.019536;1.042668;1.072707;1.107432;1.44157;1.759859;1.211307;1.235211;1.248375];fork=1:n-1m=m+f(k);l=l+fly(0.1*k+0.5*h);y1=0.5*h*(f(1)+2*m+f(n));%复化梯形公式y2=(1.0/6)*h*(f(1)+4*l+2*m+f(10));%复化辛普森公式endy1=vpa(y1,7),y2=vpa(y2,7)%取六位小数〖运行结果〗13、用龙贝格法计算积分I=2dxex10,要求误差不超过510(计算取6位小数).【程序设计】functiony=fx13(x)y=exp(-x);lc;clear;formatlonge;%精确显示y=18;T=zeros(y,y);%定义长度为y的矩阵Tfori=0:y-1xk00.10.20.30.40.5f(xk)11.0049711.0195361.0426681.0727071.107432xk0.60.70.80.91.0f(xk)1.1441571.7598591.2113071.2352111

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功