1、matlab第二章1 用简单消去法解线性方程组。matlab程序:function x=ja211(A,b)m,m=size(A);l(m,m)=0;x(m,1)=0;for j=1:1:m-1, for i=j+1:1:m, l(i,j)=A(i,j)/A(j,j); for h=j:1:m, A(i,h)=(A(i,h)-l(i,j)*A(j,h); end b(i,1)=b(i,1)-l(i,j)*b(j,1); endendif A(m,m)=0, x(m,1)=b(m,1)/A(m,m); for t=m-1:-1:1, s=0; for e=t+1:1:m, s=s+A(t,e)*
2、x(e,1), end x(t,1)=(b(t,1)-s)/A(t,t), endend题解 C=2.37 3.06 -4.28;1.46 -0.78 3.75;-3.69 5.13 1.06; d=1.76;4.69;5.74; ja211(C,d)ans = 0.933798514091890 1.541054685145016 1.2076471530237212 用主元消去法解线性方程组。Matlab程序:function x=ja221(A,b)m,m=size(A);D(1,m)=0;l(m,m)=0;x(m,1)=0;for j=1:1:m-1, c=find(A(j:1:m,j
3、)=max(A(j:1:m,j); D=A(j,:);d=b(j,1); A(j,:)=A(c+j-1,:);b(j,1)=b(c+j-1,1); A(c+j-1,:)=D;b(c+j-1,1)=d; for i=j+1:1:m, l(i,j)=A(i,j)/A(j,j); for h=j:1:m, A(i,h)=(A(i,h)-l(i,j)*A(j,h); end b(i,1)=b(i,1)-l(i,j)*b(j,1); endendif A(m,m)=0, x(m,1)=b(m,1)/A(m,m); for t=m-1:-1:1, s=0; for e=t+1:1:m, s=s+A(t,e
4、)*x(e,1); end x(t,1)=(b(t,1)-s)/A(t,t); endend题解A=1 0.8324 0.7675 0.9831;0.8324 0.6930 0.6400 0.8190;.0.7675 0.6400 0.5911 0.7580;0.9831 0.8190 0.7580 0.0055; b=8.8997;7.4144;6.8528;4.9171; ja221(A,b)ans = 0.999999999999273 2.000000000000864 3.000000000000011 4.000000000000005用LU分解法求线性方程组。Matlab程序:f
5、unction L U x=ja51(A,b)n,n=size(A);L=eye(size(A);U=zeros(size(A);U(1,:)=A(1,:);for i=2:1:n, for j=1:1:n, if j=i, s2=0; for e2=1:1:i-1, s2=s2+L(i,e2)*U(e2,j); end U(i,j)=A(i,j)-s2; end endendy(n,1)=0;x(n,1)=0;for h=1:1:n, if h=1, y(h,1)=b(1,1); else s3=0; for e3=1:1:h-1, s3=s3+L(h,e3)*y(e3,1); end y(
6、h,1)=b(h,1)-s3; endendfor t=n:-1:1, if t=n, x(t,1)=y(n,1)/U(n,n); else s4=0; for e4=t+1:1:n, s4=s4+U(t,e4)*x(e4,1); end x(t,1)=(y(t,1)-s4)/U(t,t); endend题解:(1) A=2 0 1;-3 4 -2;1 7 -5; b=4;-3;6; L U x=ja51(A,b)L =1.000000000000000 0 0 -1.500000000000000 1.000000000000000 0 0.500000000000000 1.7500000
7、00000000 1.000000000000000U = 2.000000000000000 0 1.000000000000000 0 4.000000000000000 -0.500000000000000 0 0 -4.625000000000000x = 1.864864864864865 0.783783783783784 0.270270270270270(2) AA=1 0.17 -0.25 0.54;0.47 1 0.67 -0.32;.-0.11 0.35 1 -0.74;0.55 0.43 0.36 1; bb=0.3;0.5;0.7;0.9; L U x=ja51(AA
8、,bb)L =Columns 1 through 3 1.000000000000000 0 0 0.470000000000000 1.000000000000000 0 -0.110000000000000 0.400717313335507 1.000000000000000 0.550000000000000 0.365721117269862 0.318896973426907 Column 4 0 0 0 1.000000000000000U =Columns 1 through 3 1.000000000000000 0.170000000000000 -0.2500000000
9、00000 0 0.920100000000000 0.787500000000000 0 0 0.656935115748288 0 0 0 Column 4 0.540000000000000 -0.573800000000000 -0.450668405608086.0565*x =0.440888550891832 -0.363030990136447 1.166*5979 0.393567223148812 6设对称正定矩阵能作分解,其中为下三角矩阵,为的转置矩阵,试推导的元素可由下列公式确定:8作矩阵的分解(用五位小数计算)。Matlab程序:function L D=ja28(A
10、,b)n,n=size(A);L=eye(size(A);D=zeros(size(A);for i=2:1:n, A(i,1)=A(i,1)/A(1,1); for j=2:1:n, if ij; s1=0; for e1=1:1:j-1, s1=s1+A(e1,e1)*A(i,e1)*A(j,e1); end A(i,j)=(A(i,j)-s1)/A(j,j); elseif i=j, s2=0; for e2=1:1:i-1, s2=s2+A(e2,e2)*A(i,e2)*A(i,e2); end A(i,j)=A(i,j)-s2; end endendfor h=1:1:n, D(h,
11、h)=A(h,h);endfor k=2:1:n, for t=1:1:k-1, L(k,t)=A(k,t); endend题解: A=1 0.8324 0.7675 0.9831;0.8324 0.6930 0.6400 0.8190;.0.7675 0.6400 0.5911 0.7580;0.9831 0.8190 0.7580 0.0055; L D=ja28(A,b)L =Columns 1 through 3 1.000000000000000 0 0 0.832400000000000 1.000000000000000 0 0.767500000000000 10.277576
12、197394675 1.000000000000000 0.983100000000000 6.055515239480546 0.353113136417216Column 4 0 0 0 1.000000000000000D = Columns 1 through 3 1.000000000000000 0 0 0 0.000110240000000 0 0 0 -0.009600743831649 0 0 0 Column 4 0 0 0 -0.9638309236894679分别用分解法和分解法求解线性方程组。Matlab求解程序:function L D x=ja2911(A,b)n
13、,n=size(A);L=eye(size(A);D=zeros(size(A);for i=2:1:n, A(i,1)=A(i,1)/A(1,1); for j=2:1:n, if ij; s1=0; for e1=1:1:j-1, s1=s1+A(e1,e1)*A(i,e1)*A(j,e1); end A(i,j)=(A(i,j)-s1)/A(j,j); elseif i=j, s2=0; for e2=1:1:i-1, s2=s2+A(e2,e2)*A(i,e2)*A(i,e2); end A(i,j)=A(i,j)-s2; end endendfor h=1:1:n, D(h,h)=A
14、(h,h);endfor k=2:1:n, for t=1:1:k-1, L(k,t)=A(k,t); endendy(n,1)=0;x(n,1)=0;y(1,1)=b(1,1)/D(1,1);for a=2:1:n, s3=0; for e3=1:1:a-1, s3=s3+L(a,e3)*D(e3,e3)*y(e3,1); end y(a,1)=(b(a,1)-s3)/D(a,a);endx(n,1)=y(n,1);for bb=n-1:-1:1, s4=0; for e4=bb+1:1:n, s4=s4+L(e4,bb)*x(e4,1); end x(bb,1)=y(bb,1)-s4;en
15、d题解:(1)A=4 -2 -4;-2 17 10;-4 10 9; b=10;3;-7; L D x=ja2911(A,b)L = 1.000000000000000 0 0 -0.500000000000000 1.000000000000000 0 -1.000000000000000 0.500000000000000 1.000000000000000D = 4 0 0 0 16 0 0 0 1x =2 1 -1(2)A=1 0.8324 0.7675 0.9831;0.8324 0.6930 0.6400 0.8190;.0.7675 0.6400 0.5911 0.7580;0.
16、9831 0.8190 0.7580 0.0055; b=8.8997;7.4144;6.8528;4.9171; L D x=ja2911(A,b)L =Columns 1 through 3 1.000000000000000 0 0 0.832400000000000 1.000000000000000 0 0.767500000000000 10.277576197394675 1.000000000000000 0.983100000000000 6.055515239480546 0.353113136417216Column 4 0 0 0 1.000000000000000D
17、=Columns 1 through 31.000000000000000 0 0 0 0.000110240000000 0 0 0 -0.009600743831649 0 0 0Column 4 0 0 0 -0.963830923689467x = 0.999999999999501 2.000000000000462 3.000000000000151 3.999999999999999用编程求解程序:function L x=ll(A,b)n,m=size(A);L=zeros(size(A);L(1,1)=(A(1,1)(1/2);for i=2:1:n, for j=1:1:i
18、, if j=i, s2=0; for e2=1:1:i-1, s2=s2+L(i,e2)*L(i,e2); end L(i,j)=(A(i,i)-s2)(1/2); end endendy(n,1)=0;x(n,1)=0;for k=1:1:n, s3=0; for e3=1:1:k-1, s3=s3+L(k,e3)*y(e3,1); end y(k,1)=(b(k,1)-s3)/L(k,k);endx(n,1)=y(n,1);for h=n-1:-1:1, s4=0; for e4=h+1:1:n, s4=s4+L(e4,h)*x(e4,1); end x(h,1)=(y(h,1)-s4)
19、/L(h,h);end题解:(1)A=4 -2 -4;-2 17 10;-4 10 9;b=10;3;-7; L x=ll(A,b)L = 2 0 0 -1 4 0 -2 2 1x =2 1 -1(2) A=1 0.8324 0.7675 0.9831;0.8324 0.6930 0.6400 0.8190;.0.7675 0.6400 0.5911 0.7580;0.9831 0.8190 0.7580 0.0055; b=8.8997;7.4144;6.8528;4.9171; L x=ll(A,b)L =Column 1 1.000000000000000 0.8324000000000
20、00 0.767500000000000 0.983100000000000Column 2 0 0.010499523798722 0.107909655877723 0.063580026370449 Column 3 0 0 0.000000000000000 + 0.097983385487789i -0.000000000000000 + 0.034599220566370i Column 4 0 0 0 0.000000000000000 + 0.981748910714683ix =-4.230492466831677 + 5.135030281812863i 11.705472
21、294606809 - 9.528336853201315i 4.412452545669016 - 1.386673748146589i -0.000000000000000 + 3.926995642858731i10用简单迭代法解下列线性方程组。(按三位小数进行计算)Matlab程序:function x1=jacobi(A,b,x0,N,E)m,n=size(A);x(m,2)=0;x(:,2)=x0;for i=1:1:N, if max(abs(x(:,1)-x(:,2) bb=85;72;110; x0=1;1;1;jacobi(AA,bb,x0,100,0.0001)ans =
22、-1.351465849800266 11.966245114666920 -49.692619548641581(2) A=8 1 -2;3 10 1;5 -2 20; b=9;19;72; x0=1;1;1; jacobi(A,b,x0,100,0.0001)ans =1.808733564833984 1.032266759707031 3.25103835950000013用简单迭代法、塞德尔迭代法解线性方程组(个迭代五次)。并与精确解比较。Matlab程序:function x1=GS(A,b,x0,N,E)m,n=size(A);x(m,2)=0;x(:,2)=x0;for i=1:1:N, if max(abs(x(:,1)-x(:,2) x0=1;1;1;1; jacobi(A,b,x0,5,0.000001)ans =0.968000000000000 1.981270000000000 2.968640000000000 3.981290000000000 GS(A,b,x0,5,0.000001)ans =0.996552514803221 1.998599188612620 2.998420412137192 3.999357211555304与真实值比较最大误差是0.004
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1