实验3 - 非线性方程AX=0的解法 下载本文

《数值计算方法》实验报告

17

X(N)=Y(N)/A(N,N); k=N-1 k=k-1 k> 1 Y k=k+1 k>N N Y(k)=E(t(k),J)-A(k,1:k-1)*Y(1:k-1) k=2, Y(1)=E(t(1),J); Y J=J+1 J>N N J=1 Y Y k>N N mult=A(k,p)/A(p,p);A(k,p)=mult;A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N) k=k+1 A(p,p)==0 N k=p+1 p=1>N-1 k=k+1 N [max1,j]=max(abs(A(p:N,p)));C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=t(p);t(p)=t(j+p-1);t(j+p-1)=d; Y start inputA,E [N,N]=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);t=1:N; p=1 Y

output N X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k) m(1:N,J)=X(1:N) end 《数值计算方法》实验报告 18

P120.4 算法:

(1) 输入 A,E;令[N,N]=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);t=1:N; p=1。 (2) 判断p=1>N-1是否成立,若成立,执行步骤(6);若不成立,执行步骤(3)。 (3) [max1,j]=max(abs(A(p:N,p)));C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=t(p);t(p)=t(j+p-1);t(j+p-1)=d; (4) 判断A(p,p)==0是否成立,若成立,执行步骤(11);若不成立,k=p+1,执行步骤(5)。 (5) 判断k>N是否成立,若成立,返回到步骤(2);若不成立, mult=A(k,p)/A(p,p); A(k,p)=mult;A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N);k=k+1;返回到步骤(5)。 (6) k=2, Y(1)=E(t(1),J);执行步骤(7)

(7) 判断k>N是否成立,若成立,执行步骤(8);若不成立,

Y(k)=E(t(k),J)-A(k,1:k-1)*Y(1:k-1),k=k+1,返回步骤(7)。

(8) X(N)=Y(N)/A(N,N); k=N-1.

(9) 判断k> 1是否成立,若成立,执行步骤(10);若不成立,

X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k);

k=k-1;执行步骤(9).

(10) 输出结果。

流程图:

《数值计算方法》实验报告 start inputA,E 19 [N,N]=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);t=1:N; p=1 k=k+1 p=1>N-1 N Y [max1,j]=max(abs(A(p:N,p)));C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=t(p);t(p)=t(j+p-1);t(j+p-1)=d; Y A(p,p)==0 N k=p+1 Y k>N N k=k+1 mult=A(k,p)/A(p,p);A(k,p)=mult;A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N) k=2, Y(1)=E(t(1),J); k=k+1 k>N N Y(k)=E(t(k),J)-A(k,1:k-1)*Y(1:k-1) Y X(N)=Y(N)/A(N,N); k=N-1 k=k-1 k> 1 N X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k) Y output end 《数值计算方法》实验报告 20

表3电流I1,I2,I3 (a) (b) (c) P130.4. 算法:

(1)输入A,B,P,delta,max1,令N=length(B); k=1.

(2)判断 k>max1是否成立,若成立,输出结果;若不成立,执行步骤(3)。 (3)令j=1,判断j>N是否成立,若成立执行步骤(8);若不成立,执行步骤(4)。 (4)判断 j==1是否成立,若成立,X(1)=(B(1)-A(1,2)*P(2))/A(1,1),j=j+1,

执行步骤(3);若不成立,执行步骤(5)。

(5)判断 j==2是否成立,若成立,X(2)=(B(2)-A(2,1)*X(1)'-A(2,3:4)*P(3:4))/A(2,2);

执行步骤(3);若不成立,执行步骤(6)。

(6)判断 j==N-1是否成立,若成立,X(N-1)=(B(N-1)-A(N-1,N-3:N-2)*X(N-3:N-2)'

-A(N-1,N)*P(N))/A(N-1,N-1);执行步骤(3);若不成立,执行步骤(7)。 (7)判断 j==N是否成立,若成立,X(N)=(B(N)-A(N,N-1)*(X(N-1))')/A(N,N),j=j+1,

执行步骤(3);若不成立,X(j)=(B(j)-A(j,j-1)*X(j-1)'-A(j,j+1)*P(j+1))/A(j,j),j=j+1,执行步骤(3)。

(8)令err=abs(norm(X'-P)); relerr=err/(norm(X)+eps);P=X';

(9)判断(err

执行步骤(2).

I1 3 0.5 4 I2 5 8 3 I3 1 1 -1