计算方法Word文件下载.docx
《计算方法Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算方法Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
上机作业七19
Euler法19
改进Eulaer法19
经典R-K20
上机作业一
第一题
1、分别用不动点迭代与Newton法求解方程
2x-ex+3=0
的正根与负根。
不动点迭代
程序
functiony=g1(x)
y=-x+exp(x)-3;
P0=1;
N=1000;
TOL=10^-5;
k=1;
whilek<
=N
P=g1(P0);
ifabs(P-P0)<
TOL
break
end
k=k+1;
P0=P;
end
disp(P);
disp(k)
结果
-1.3734
36
Newton法求负根
y=x-(2*x-exp(x)+3)/(2-exp(x));
P0=-1;
4
Newton法求正根
1.9239
8
结果分析:
相比使用不动点迭代法时并不能确保收敛性,需要尝试不同的x和g(x),使用牛顿迭代法可以确保收敛性,所以肯定能求出正根和负根,也就是说不动点的收敛域没有牛顿法广泛
第二题
2、用Newton法求解方程x-sinx=0的根.再用Steffensen’smethod加速其收敛。
Newton法
functiony=g2(x)
y=x-(x-sin(x))/(1-cos(x));
%用Newton求根
N=600;
TOL=10^(-10);
fork=1:
N
P1=g2(P0);
ifabs(P1-P0)<
P0=P1;
end
disp(P2);
结果0.6551
45
Steffensen
p0=1;
functiony=f(x)
y=x-sin(x);
TOL=10^(-7);
n=0;
p
(1)=p0;
whilen<
fork=1:
2
p(k+1)=g2(p(k));
p1=p
(1)-(p
(2)-p
(1))^2/(p(3)-2*p
(2)+p
(1));
f0=f(p1);
ifabs(f0)<
n=n+1;
p
(1)=p1;
disp(p1);
disp(n)
1.6548e-06
1
上机作业二
1、分别用Jacobi、Seidel、Sor(w=1.1,1.2,1.3,1.4,1.5)方法求解
方程组Ax=b,这里
A=
,b=
X0=
;
e=10-5
解:
jacobi迭代法
程序:
A=ones(10,10)-13*eye(10);
b=-1*ones(10,1);
tol=10^(-5);
N=500;
x0=zeros(10,1);
x=x0;
fori=1:
10
x(i)=(b(i)-A(i,:
)*x0)/A(i,i)+x0(i);
ifnorm(x-x0)<
tol
disp(X);
disp(k)
return
x0=x;
disp('
发散'
)
结果:
seidel迭代法
)*x)/A(i,i)+x(i);
disp(x);
return;
disp('
Sor迭代法
w=1.1;
x(i)=w*(b(i)-A(i,:
W=1.2时
W=1.3时
W=1.4时
W=1.5时
在以上三种方法都收敛的前提下,Sor方法求解收敛速度最快,Seidel次之,而Jacobi方法收敛速度最慢。
上机作业三
1、用Newton法与最速下降法求方程组
x2+2y2-2=0
X2=y
在(0.8,0.7)附近的根。
x0=[0.8,0.7];
F=[x0
(1)^2+2*x0
(2)^2-2;
x0
(1)^2-x0
(2)];
F1=[2*x0
(1),4*x0
(2);
2*x0
(1),-1];
y=-F1\F;
ifnorm(y)<
tol;
最速下降法
functiony=h(t)
globalX0
g=G1(X0);
a=X0-g*t;
y=G(a);
functiony=G(A)
y=(A
(1)^2+2*A
(2)^2-2)^2+(A
(1)^2-A
(2))^2;
functiony=G1(A)
y(1,1)=8*A
(1)^3+8*A
(1)*A
(2)^2-8*A
(1)-4*A
(1)*A
(2);
y(2,1)=16*A
(2)^3-14*A
(2)-2*A
(1)^2+8*A
(1)^2*A
(2);
Tol=10^-5;
X0=[0.8;
0.7];
g=G1(X0);
u=fminsearch('
h'
0,100);
X=X0-u*g;
ifG(X)<
Tol
disp(k);
X0=X;
上机作业四
1、用幂法与反幂法求矩阵A的按模最大、最小特征值与对应的特征向量。
幂法
程序;
A=[4111;
13-11;
1-120;
1102];
v=[1;
1;
1];
lamda=0;
err=1;
while(k<
=N&
&
err>
eps)
u=A*v;
[mj]=max(abs(u));
dc=abs(lamda-m);
u=u/m;
dv=norm(u-v);
err=max(dc,dv);
v=u;
lamda=m;
k=k+1;
特征值='
);
disp(lamda);
特征向量='
disp(u);
迭代次数='
反幂法
13-11;
1-120;
1102];
A1=inv(A);
u=A1*v;
幂法求最大特征值算法简单,而反幂法则是求矩阵逆矩阵的最大特征值,收敛速度较快。
2、用House-holder变换求矩阵A的QR分解,并用QR方法做三次迭代。
n=size(A);
Q=eye(n);
n-1
c=norm(A(k:
n,k));
w=zeros(n,1);
w(k+1:
n)=A(k+1:
n,k);
w(k)=A(k,k)+sign(A(k,k))*c;
P=eye(n)-2*w*w'
/norm(w)^2;
Q=Q*P;
A=P*A;
R=A;
Q='
disp(Q);
P='
disp(P)
3次迭代
N=1;
whileN<
=3
c=norm(A(k:
w=zeros(n,1);
w(k+1:
w(k)=A(k,k)+sign(A(k,k))*c;
P=eye(n)-2*w*w'
Q=Q*P;
A=P*A;
A=A*Q;
N=N+1;
R=A*inv(Q);
上机作业五
1、目的:
观察lagrange插值的Runge现象。
对于函数
进行lagrange插值。
取不同的等分数n(n=5,n=10),
将区间[-1,1]n等分,取等距节点。
把插值多项式的曲线画在同一张图上进行比较。
forn=5:
5:
x=zeros(1,n+1);
y=zeros(1,n+1);
h=2/n;
(n+1)
x(i)=-1+(i-1)*h;
y(i)=1/(1+25*x(i)*x(i));
symsfx
fy=0;
n+1
t=1;
ifi~=k;
t=t*(fx-x(i))/(x(k)-x(i));
fy=fy+t*y(k);
ezplot(fy,[-1,1]);
holdon
ezplot(fy,[-1,1]);
上机作业六
1、用Romberg求积公式计算积分:
精度达到10^(-6)。
a=1;
b=3;
eps=10^-6;
M=1;
h=2;
j=0;
R=zeros(4,4);
R(1,1)=h*(exp
(1).*cos
(1)+exp(3).*cos(3))/2;
while(err>
j=j+1;
h=h/2;
x=a+h:
2*h:
b-h;
R(j+1,1)=R(j,1)/2+h*sum(exp(x).*cos(x));
forK=1:
min(3,J)
R(j+1,K+1)=R(j+1,K)+(R(j+1,K)-R(j,K))/(4^K-1);
if(j>
3)
err=abs(R(j+1,4)-R(j,4));
quad=R(j,4);
disp(quad);
上机作业七
1、分别用Euler方法(h=0.025)、改进的Euler方法(h=0.05)、经典的R-K方法(h=0.1)求初值问题的数值解计算0.1,0.2,0.3,0.4,0.5处解的近似值。
并与精确解比较,分析误差。
Euler法
x=0;
y=0.5;
h=0.025;
f=inline('
y-x^2+1'
'
x'
y'
fori=0:
20
y=y+h*f(x,y);
x=x+h;
if(i==3||i==7||i==11||i==15||i==19)
disp(y);
>
euler
0.65550.82531.00891.20561.4147
精确值:
0.65740.82931.01511.21411.4256
误差:
0.00190.0040.00620.00850.0109
改进Eulaer法
h=0.05;
y1=y+h*f(x,y);
y2=y+h*f(x,y1);
y=(y1+y2)/2;
if(i==1||i==3||i==5||i==7||i==9)
disp(y);
gaijinEuler
0.65730.82911.01471.21361.4250
0.65740.82931.01511.21411.4256
0.00010.00020.00040.00050.0006
经典R-K
h=0.1;
k1=h*f(x,y);
k2=h*f(x+h/2,y+k1/2);
k3=h*f(x+h/2,y+k2/2);
k4=h*f(x+h,y+k3);
y=y+(k1+2*k2+2*k3+k4)/6;
if(i==0||i==1||i==2||i==3||i==4)
End
R-K:
00000
通过对误差的分析可以看出,用Euler法、改进Euler法、经典R-K法解决同一初值问题,经典R-K法效果最好、精度最好,改进Euler法次之,Euler法最差。