fanmifa.m
来自「数值分析方法,主要里面涵盖了计算方法方面matlab程序!」· M 代码 · 共 51 行
M
51 行
clear
clc
A=xlsread('data8_5.xls');
eps=1e-5;
KM=50;
k=0;
[m,n]=size(A);
nb=n+1;
u=ones(m,1);
Ab=[A,u];
r1=0;
while k<KM
k=k+1;
%LU分解
Ab(2:m,1)=Ab(2:m,1)/Ab(1,1);
for k=2:m
for j=k:nb
Ab(k,j)=Ab(k,j)-Ab(k,1:k-1)*Ab(1:k-1,j);
end
for i=k+1:m
Ab(i,k)=(Ab(i,k)-Ab(i,1:k-1)*Ab(1:k-1,k))/Ab(k,k);
end
end
v=zeros(m,1);
v(n)=Ab(n,nb)/Ab(n,n);
for k=n-1:-1:1
v(k)=(Ab(k,nb)-Ab(k,k+1:n)*v(k+1:n,1))/Ab(k,k);
end
%等价于v=inv(A)*u;
[r2,p]=max(abs(v));
r2=v(p);
u=v/r2;
if(abs(r1-r2)<eps)
break;
end
r1=r2;
Ab=[A,u];
r2
v
u
end
if k>=KM
fprintf('The Method is disconvergent\n');
else
fprintf('r=%f\n',r2);
for i=1:m
fprintf('x[%d]=%f\n',i,u(i));
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?