数值分析MATLAB编程Word下载.docx
《数值分析MATLAB编程Word下载.docx》由会员分享,可在线阅读,更多相关《数值分析MATLAB编程Word下载.docx(19页珍藏版)》请在冰点文库上搜索。
c);
x=zeros(length(b),1);
x(n)=A(n,c)/A(n,n);
fork=n-1:
-1:
1
x(k)=(A(k,c)-A(k,k+1:
n)*x(k+1:
n))/A(k,k);
disp('
x='
);
x=
disp(x);
题目2:
已知
,用线性插值法求
的近似值。
>
x0=4:
9;
y0=x0.^0.5;
x=4:
1:
y=x.^0.5;
y2=interp1(x0,y0,x);
figure
(2),plot(x,y,'
b'
x,y2,'
k:
'
),grid
disp('
y2='
)
y2=
disp(y2)
2.00002.23612.44952.64582.82843.0000
题目三:
设
,在[-1,1]上用Legendre多项式作
的3次最佳平方逼近多项式。
a=-1;
b=1;
n=3;
symsx;
fx=exp(x);
exp(x);
fork=3
F=x^k*fx;
d(k+1)=int(F,a,b);
d=reshape(d,n+1,1);
H=hilb(n+1);
a=H\d
a=
-3696*exp(-1)+536*exp
(1)
42900*exp(-1)-6180*exp
(1)
-105240*exp(-1)+15120*exp
(1)
69300*exp(-1)-9940*exp
(1)
vpa(a)
ans=
97.3166454843974255360582301282
-1016.953673622023958078606833033
2384.788857418174033934624995061
-1525.676101701956752911460193057
题目四:
用Gauss-Legendre求积公式(n=1,2)计算积分
。
f=inline('
((1+t)/2)^2*exp((1+t)/2)'
f=
Inlinefunction:
f(t)=((1+t)/2)^2*exp((1+t)/2)
I1=1*feval(f,-0.57735)+1*feval(f,0.57735);
I1=I1/2
I1=
0.7119%n=1,两点Gauss-Legendre公式求解%
x=[0.7745966692,-0.7745966692,0]
x=
0.7746-0.77460
A=[0.555555556,0.555555556,0.888888889]
A=
0.55560.55560.8889
I2=0;
fori=1:
length(x)
I2=I2+feval(f,x(i))/2*A(i);
I2
I2=
0.7183%n=2,三点Gauss-Legendre公式求解%
题目五:
用J法和GS法分别求解方程组
其准确解为
J法:
A=[103114;
2-103-5;
131014]
MAXTIME=50;
eps=1e-5;
[n,m]=size(A);
x=zeros(n,1);
y=zeros(n,1);
k=0;
X='
while1
disp(x'
n
s=0.0;
forj=1:
ifj~=i
s=s+A(i,j)*x(j);
end
y(i)=(A(i,n+1)-s)/A(i,i);
maxeps=max(0,abs(x(i)-y(i)));
ifmaxeps<
=eps%
x(i)=y(i);
return;
y(i)=0.0;
k=k+1;
ifk>
MAXTIME
error
GS法:
formatlong;
A=[103114;
Maxtime=50;
Eps=10E-5;
x=zeros(1,n);
fork=1:
Maxtime
disp(x);
ifi~=j
x(i)=(A(i,n+1)-s)/A(i,i);
ifsum((x-floor(x)).^2)<
eps
break;
end;
题目六:
求
的一个实根。
由题意可知,f
(1)=-1,f
(2)=5,即连续函数f(x)在区间[1,2]内变号,从而可知,(1,2)为有根区间。
f(x)=0可转换成两种等价形式:
程序1:
(x+1)^(1/3)'
x=feval(f,1.5);
1.3572
i=1;
i=i+1;
x=feval(f,x);
ifi>
11;
break;
ifx>
1E10;
end;
程序2:
x^3-1'
2.3750
题目七:
用幂法求矩阵
的主特征值和主特征向量。
A=[110.5;
110.25;
0.50.252]
1.00001.00000.5000
1.00001.00000.2500
0.50000.25002.0000
Maxtime=100;
Eps=1E-5;
n=length(A);
V=ones(n,1);
m0=0;
whilek<
=Maxtime
v=A*V;
[vmax,i]=max(abs(v));
m=v(i);
V=v/m;
ifabs(m-m0)<
Eps
m0=m;
D=m;
disp(D)
2.5365
disp(V)
0.7482
0.6497
1.0000
题目八:
分别取h=1,2,4,用经典R-K方法计算
s=dsolve('
Dy=-y+x-exp(-1)'
'
y
(1)=0'
x'
clear;
close;
x=1:
13;
y=x-1-exp(-1)+exp(-x);
disp(y)
F='
-y+x-exp(-1)'
a=1;
b=13;
h=1;
%可通过改变h的值来满足题目要求%
n=(b-a)/h;
X=a:
h:
b;
Y=zeros(1,n+1);
Y
(1)=0;
x=X(i);
y=Y(i);
K1=h*eval(F);
x=x+h/2;
y=y+K1/2;
K2=h*eval(F);
x=x;
y=Y(i)+K2/2;
K3=h*eval(F);
x=X(i)+h;
y=Y(i)+K3;
K4=h*eval(F);
Y(i+1)=Y(i)+(K1+2*K2+2*K3+K4)/6;
disp(Y)
准确解:
h=1,四阶R-K:
h=2,四阶R-K:
h=4,四阶R-K: