矩阵与数值分析上机实习题汇总Word下载.docx
《矩阵与数值分析上机实习题汇总Word下载.docx》由会员分享,可在线阅读,更多相关《矩阵与数值分析上机实习题汇总Word下载.docx(53页珍藏版)》请在冰豆网上搜索。
结果
=2)10^2
N=
100
7.4005e-001
>
clear
=2)10^4
10000
7.4990e-001
=2)10^6
1000000
7.5000e-001
从大到小
eps('
single'
forj=N:
-1:
2
ans=
1.1921e-007
(4)计算的顺序影响结果。
2.秦九韶算法。
已知n次多项式
,用秦九韶算法编写通用的程序计算函数在
点的值,并计算
在
点的值.
(提示:
编写程序时,输入系数向量和点
,输出结果,多项式的次数可以通过向量的长度来判断)
A=input('
请输入系数,由高次幂开始'
);
n=input('
请输入计算变量的值'
len=length(A);
val=zeros(len);
val
(1)=A
(1);
%%printf('
len=%c'
len)
fori=2:
1:
len
%disp(val(i-1))
%disp(n)
val(i)=val(i-1)*n+val(i);
%printf('
¼
Æ
Ë
ã
½
á
¹
û
£
º
%f'
val(len))
val(len)
结果:
请输入系数,由高次幂开始[73-511]
请输入计算变量的值23
85169
3.分别用Gauss消元法和列主元消去法编程求解方程组Ax=b,其中
,
高斯消去法代码:
A=[31-13000-10000
-1335-90-110000
0-931-1000000
00-1079-30000-9
000-3057-70-50
0000-747-3000
00000-304100
0000-50027-2
000-9000-229
];
B=[-15,27,23,0,-20,12,-7,7,10];
B=B.'
;
%disp(A)
%disp(B)
C=[A,B];
n=size(A,1);
ra=rank(A);
rc=rank(C);
x=zeros(1,n);
ifra~=rc
nosolution'
fori=1:
(n-1)
forj=i+1:
n
temp=(-C(j,i))/C(i,i);
fork=i:
(n+1)
C(j,k)=C(i,k)*temp+C(j,k);
fori=n:
1
ifi==n
disp(C(i,(n+1)))
disp(C(i,(n+1))-sum(C(i,(i+1):
n).*x((i+1):
n)))
disp(C(i,i))
x(i)=(C(i,(n+1))-sum(C(i,(i+1):
n)))/C(i,i);
disp('
solution'
disp(x)
-2.2051e-0029.4726e-0011.0410e+0007.4481e-002-2.6617e-0012.0020e-001-2.4242e-0022.3844e-0013.8439e-001
列主元消去法代码:
%t4---max%
%makemaxvalueincolintherow%
max=0;
inx=i;
forj=i:
n
if(abs(C(j,i))>
max)
max=abs(C(j,i));
inx=j;
ifinx>
i
swap=C(i,j);
C(i,j)=C(inx,j);
C(inx,j)=swap;
solution
-2.2051e-0029.4726e-0011.0410e+0007.4481e-002-2.6617e-0012.0020e-001-2.4242e-0022.3844e-0013.8439e-001
4.编程求解题3中矩阵
的LU分解及列主元的LU分解(求出L,U和P),并用LU分解的方法求A的逆矩阵及A的行列式
LU分解:
clear
L=eye(n,n);
L(j,i)=-(1*temp);
fori=n:
%disp('
%disp(x)
C'
disp(C)
L'
disp(L)
L
1.0000e+00000000000
-4.1935e-0011.0000e+0000000000
0-3.0459e-0011.0000e+000000000
00-3.5387e-0011.0000e+00000000
000-3.9755e-0011.0000e+0000000
0000-1.5694e-0011.0000e+000000
00000-6.5398e-0011.0000e+00000
0000-1.1210e-001-1.7545e-002-2.4619e-0021.0000e+0000
000-1.1927e-001-8.3391e-002-1.4227e-002-1.9962e-002-9.2316e-0021.0000e+000
U
3.1000e+001-1.3000e+001000-1.0000e+001000
02.9548e+001-9.0000e+0000-1.1000e+001-4.1935e+000000
002.8259e+001-1.0000e+001-3.3504e+000-1.2773e+000000
0007.5461e+001-3.1186e+001-4.5200e-00100-9.0000e+000
00004.4602e+001-7.1797e+0000-5.0000e+000-3.5780e+000
0000-8.8818e-0164.5873e+001-3.0000e+001-7.8472e-001-5.6154e-001
00000-3.5527e-0152.1381e+001-5.1319e-001-3.6724e-001
00000002.6413e+001-2.4200e+000
000000002.7390e+001
LUP分解
代码:
L=
U=
3.1000e+001-1.3000e+001000-1.0000e+001000
000004.5873e+001-3.0000e+001-7.8472e-001-5.6154e-001
0000002.1381e+001-5.1319e-001-3.6724e-001
P=
100000000
010000000
001000000
000100000
000010000
000001000
000000100
000000010
000000001
求A的逆矩阵:
通过LU分解获得LU,LUX=I,LY=I,UX=Y用高斯下去法解得Y和X
fori=1:
[RA,RB,n,X]=gaus(L,I(1:
n,i));
Y(1:
n,i)=X;
[RA,RB,n,X]=gaus(U,Y(1:
A_(1:
A_
3.8952e-0021.5961e-0025.8083e-0033.6407e-0037.2823e-0031.7585e-0021.2867e-0021.4396e-0031.2292e-003
1.5863e-0023.7828e-0021.3083e-0026.5129e-0031.2133e-0029.7237e-0037.1149e-0032.4090e-0032.1874e-003
4.8698e-0031.1613e-0023.8126e-0027.7386e-0036.9188e-0033.8776e-0032.8373e-0031.4666e-0032.5028e-003
8.1938e-0041.9539e-0036.4150e-0031.8128e-0021.0528e-0023.2693e-0032.3922e-0032.3786e-0035.7899e-003
4.5601e-0041.0874e-0033.5701e-0031.0089e-0022.4339e-0026.9837e-0035.1100e-0034.7635e-0033.4595e-003
1.2743e-0043.0388e-0049.9769e-0042.8193e-0036.8017e-0034.1874e-0023.0639e-0021.3312e-0039.6677e-004
9.3244e-0052.2235e-0047.3002e-0042.0629e-0034.9768e-0033.0639e-0024.6809e-0029.7403e-0047.0739e-004
1.0381e-0042.4755e-0048.1276e-0042.2967e-0034.7736e-0031.3755e-0031.0064e-0033.8169e-0023.3451e-003
2.6145e-0046.2346e-0042.0469e-0035.7843e-0033.5966e-0031.1095e-0038.1180e-0043.3705e-0033.6510e-002
|A|=|U|=6.1817e+013
5.编制程序求解矩阵A的cholesky分解,并用程序求解方程组Ax=b,其中
%5--choleky%
A=[21-51
1-507
021-1
16-1-4
B=[13,-9,6,0];
dim=size(A,1);
L=zeros(dim,dim);
y=[]
x=zeros(dim,1);
dim
forj=1:
dim
ifi>
=(j+1)
L(i,j)=(A(i,j)-sum(L(i,1:
(j-1)).*L(j,1:
(j-1))))/L(j,j);
else
L(j,j)=sqrt(A(j,j)-sum(L(j,1:
j-1).*L(j,1:
j-1)));
L_T=L.'
ifi==1
y
(1)=B
(1)/L(1,1);
y(i)=(B(i)-sum(L(i,1:
(i-1)).*y(1:
(i-1))))/L(i,i);
fori=dim:
1
ifi==dim
x(i)=y(i)/L(i,i);
x(i)=(y(i)-sum(L((i+1):
dim,i).*x((i+1):
dim)))/L(i,i);
%disp('
(((((((('
%disp(x(i))
x'
x
52.2500
-38.7500
30.7500
-52.7500
6.用追赶法编制程序求解方程组Ax=b,其中
%t6----×
·
¸
Ï
¨
%
A=[4200
3-210
0253
00-16
B=[62105];
c=zeros(1,(dim-1));
a=zeros(1,dim);
b=zeros(1,dim);
f=zeros(dim,1);
y=zeros(dim,1);
%computationformatrixLandU
c
(1)=A(1,2);
b
(1)=A(1,1);
(dim-1)
c(i)=A(i,(i+1));
a(i)=A(i,(i-1))/b(i-1);
b(i)=A(i,i)-a(i)*A((i-1),i);
a(dim)=A(dim,(dim-1))/b(dim-1);
b(dim)=A(dim,dim)-a(dim)*A((dim-1),dim);
%endofcomputationLandU
%Ax=fA=LULUx=f
%Ly=f
y
(1)=B
(1);
fori=2:
y(i)=B(i)-a(i)*y(i-1);
y'
disp(y)
%endofLy=f
f(dim)=y(dim)/b(dim);
fori=(dim-1):
f(i)=(y(i)-A(i,(i+1))*f(i+1))/b(i);
end
f'
disp(f)
%Yx=f
%endofUx=y
%%disp('
c'
%%disp(c)
a'
%disp(a)
b'
%disp(b)
%disp(f)
f
1
7.已知
编程求解矩阵A的QR分解;
代码
function[Q,R]=qrhouseholder(A)
dim=size(A,1);
R=A;
Q=eye(dim);
fori=1:
(dim-1)
x=R(i:
dim,i);
y=[1;
zeros(dim-i,1)];
Ht=householder(x,y);
H=blkdiag(eye(i-1),Ht);
Q=Q*H;
R=H*R;
function[H,rho]=householder(x,y)
x=x(:
y=y(:
iflength(x)~=length(y)
error('
TheColumnVector