⽤c语⾔编程计算f(),计算⽅法C语⾔编程明解c语言
《计算⽅法C语⾔编程》由会员分享,可在线阅读,更多相关《计算⽅法C语⾔编程(11页珍藏版)》请在⼈⼈⽂库⽹上搜索。
1、计算⽅法C语⾔编程1、已知⽅程在区间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)/2if
f1(x)0b=x;elsea=x;endn=n+1;endN=n运⾏结果x =1.3788N =152、⽤迭代法求的正根,要求准确到⼩数点后第5位。【程序设计】%-迭代法-%clc;clearx0=0.00000;x=1.50000;k=0;y=(log(x+0.20000)/5.0000;x0=x;x=exp(y)。
2、;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、⽤⽜顿法求⽅程在x0=2附近的根,要求准确到⼩数点后第3位。【程序设计】function f=f3(x)f=x3-3*x-1;%-⽜顿法-
%clc;clearx0=1.0;x=2.0;k=0;if diff(f3(x0)=0 breakendwhile(abs(x-x0)0.0005);x0=x;x=x-(x3-3*x-1)/(3*x2-
3);k=k+1;endX=vpa(x,4),%精确到。
3、⼩数点后第三位N=k运⾏结果
4、分别⽤单点和双点弦截法求⽅程在1,1.5内的根。要求|xn+1-xn|0.【程序设计】%-单点弦截法-
%clc;clearx1=1.0;x2=2.0;k=0;while abs(x2-x1)0.;t=x2-(x22-x2-1)*(x2-x1)/(x23-x2-1)-(x13-x1-
1);x1=x1;x2=t;k=k+1;endX=k;Y=x2%-双点弦截法-%clc;clearx1=1.0;x2=2.0;k=0;while abs(x2-x1)0.;t=x2-(x22-x2-1)*(x2-
x1)/(x23-x2-1)-(x13-x1-1);x1=x2;x2=t。
4、;k=k+1;endX=k,Y=x2运⾏结果X =28Y =1.6180
5、分别⽤列主元素消去法求解下列⽅程组。(计算取4位⼩数)【程序设计】%-列主元素消去法-%clc;clearA=1.1161 0.1254 0.1397 0.1490; 0.1582 1.1675 0.1768 0.1871;0.1968 0.2071 1.2168
0.2271;0.2368 0.2471 0.2568 1.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;if d0disp(此⽅程组。
5、⽆解)endif RA=RB&RA=ndisp(此⽅程组有⽆穷解)endif RA=RB&RA=ndisp(此⽅程组有唯⼀解)n,n=size(A);x=zeros(n,1);for k = 1:n-1 piv,r = max(abs(B(k:n,k); %列主元所在⼦矩阵的⾏r r = r + k - 1; % 列主元所在⼤矩阵的⾏ if rk temp=B(k,:); B(k,:)=B(r,:); B(r,:)=temp; endendif B(k,k)=0, error(对⾓元出现0), end% 把增⼴矩阵消元成为上三⾓ for p = k+1:n B(p,:)=B(p,:)-B(k。
6、,:)*B(p,k)/B(k,k); end end % 解上三⾓⽅程组 A =B(:,1:n); b = B(:,n+1); x(n) = b(n)/A(n,n); for k = n-1:-1:1 x(k)=b(k); for
p=n:-1:k+1 x(k) = x(k)-A(k,p)*x(p); end x(k)=x(k)/A(k,k); endx运⾏结果此⽅程组有唯⼀解x=0.95681.03331.20951.21256、设有⽅程组 ,取初始向量,⽤雅可⽐迭代法求解,要求时迭代终⽌。【程序设计】%-雅克⽐迭代法-%clc;clearA=5 2 1;-1 1 1;2 -3 10;b=-。
7、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=Db;x=B*x0+f;n=1;while norm(x-x0)=epx0=x;x=B*x0+f;n=n+1;endn,x运⾏结果n =10x =-6.446810.84063.9510 7、设有⽅程组(1) 证明解此⽅程组的雅可⽐迭代法收敛,⽽相应的赛德尔迭代法发散.(2) 取初始向量,⽤雅可⽐迭代法求解,要求迭代三次.【程序设计】%-雅克⽐迭代法 迭代三次-%clc;clearx1=zeros(1,10)。
8、;x2=zeros(1,10);x3=zeros(1,10);X1=0;X2=0;X3=0;for k=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 =1 1 18、设有⽅程组 ,其等价形式为(1) 证明解等价⽅程组的简单迭代法发散,⽽赛德尔法收敛(2) 取初始向量,⽤赛德尔迭代法求解,要求迭代四次【程序设计】%-赛德尔迭代法-迭代四次-
%clc;clearx1=zeros(1,10);x2=zeros(1,10);x3=zero。
9、s(1,10);X1=0.0;X2=0.0;X3=0.0;for k=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.5781 0.7891
0.5781x1.12751.15031.17351.1972Y=f(x)0.11910.139540.159320.179039、已知函数表:应⽤拉格朗⽇插值公式计算
f(1.1300)的近似值。(计算取4位⼩数)【程序设计】%-拉格朗⽇插值-%clc;clearn=4;x=1.1300;X=1.1275;1.。
10、1503;1.1735;1.1972;Y=0.1191;0.1395;0.1593;0.1790;y=0;p=1;for k=1:nfor j=1:n if j=kp=p.*(x-X(j)/(X(k)-
X(j);endendy=y+p*Y(k);endx,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。
11、.65271,3.03035,3.34066;x1=1.68200;x2=1.81300;A=zeros(5,4);A=y,A;for j=2:5for i=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;for i=1:4for j=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;Ne。
12、w2=New*(x2-x(i);N2=N+c(i)*New2;endN1=vpa(N1,6),N2=vpa(N2,6)%取五位⼩数运⾏结果11、已知函数f(x)的下列数据:⽤柯特斯公式计算积分.(计算取5位⼩数)xk1.82.02.22.42.6f(xk)3.120144.426596.042418.0301410.46675【程序设计】 %-科特斯公式求积分-%function
y=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)*(。
13、b-a)*(7*Y(1)+32*Y(2)+12*Y(3)+32*Y(4)+7*Y(5);Y=vpa(y,6)%取五位⼩数运⾏结果
xk00.10.20.30.40.5f(xk)11.1.1.1.1.xk0.60.70.80.91.0f(xk)1.1.1.1.1.12、已知函数f(x)的下列数据:⽤复化梯形公式和复化⾟浦⽣公式计算积分.(计算取6位⼩数)注意:本题f(x)=cosx+sinx,积分真值I=1.【程序设计】function y=fly(x)y=sin(x)*sin(x)+cos(x)%-复化梯形公式、复化⾟普森公式-%clc;clearh=0.1;n=11;m=0;l=0;X=0;0。
14、.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1.0;f=1;1.;1.;1.;1.;1.;1.44157;1.;1.;1.;1.;for k=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=,要求误差不超过(计算取6位⼩数).【程序设
计】function y=fx13(x)y=exp(-x);lc;cl。
15、ear;format long e;%精确显⽰y=18; T=zeros(y,y);%定义长度为y的矩阵Tfor i=0:y-1 T(i+1)=i;%对矩阵T的第⼀⾏赋初值
enda=0;b=1;T(1,2)=(b-a)*(fx13(a)+fx13(b)/2;%算出T1for l=2:y sum=0;for j=1:2(l-1)sum=sum+fx13(a+(2*j-1)*(b-
a)/2l);endT(l,2)=T(l-1,2)/2+(b-a)/2l)*sum; %算出梯形序列if (T(l,2)-T(l-1,2)0.; %判断是否符合精度break;endendh=1;for m=1:y-
2f。
16、or k=h:(y+h-m-1)T(k+1,m+2)=(4m)*T(k+1,m+1)-T(k,m+1)/(4m-1);%按公式算出接下去的序列if (T(k+1,m+2)-
T(k,m+2)0.;break;endendh=h+1;endI=T(k+1,m+2)*2/sqrt(pi)I=vpa(I,7)%取六位⼩数运⾏结果14、⽤梯形法与欧拉预估-校正法求解初值问题:取步长h=0.1,并与准确解相⽐较.(计算取6位⼩数).【程序设计】function f=f(x,y)f=x+y;%-梯形法-
%clc;clearh=0.1;a=0;b=1;n=(b-a)/h;y0=1;x=a:h:b;y(1)=y0;for i=1:ny(i+1)=y(i)+h*f(x(i),y(i);for
k=1:2*ny(i+1)=y(i)+h*f(x(i),y(i)+f(x(i+1),y(i+1)/2;endendy=vpa(y,7)%取六位⼩数%-改进的欧拉法-%clc;clearh=0.1;a=0;b=1;n= (b-a)/h;y0=1;x=a:h:by(1)=y0;for i=1:ny1=y(i)+h*f(x(i),y(i);y2=y(i)+h*f(x(i+1),y1);y(i+1)=(y1+y2)/2;endy=vpa(y,7)%取六位⼩数运⾏结果: 梯形法:改进的欧拉法。