t3_4.m

来自「用matlab编写的追赶法程序」· M 代码 · 共 45 行

M
45
字号
function [k,flage]=lanczos1(n,m)
lin1=linspace(-2,-2,n-1);
lin2=linspace(3,3,n);
lin3=linspace(-1,-1,n-1);
A=diag(lin2);
B=diag(lin1,1);
C=diag(lin3,-1);
A=A+B+C;
x0=zeros(n,1);
b=zeros(n,1);
b(1)=1;
b(n)=2;
r0=b-A*x0;
r=zeros(n,1);
rr(1)=norm(r0);
flage=0;
for i=1:m
    e=zeros(n,1);
    e(i)=1;
    if i==1
        W=e;
    else
        W=[W,e];
    end
    V=W;
    T=W'*A*V;
    k=i;
    if det(T)==0
        flage=1;
        break;
    end
    y=T\W'*r0;
    x=x0+V*y;
    r=b-A*(x);
    rr(k+1)=norm(r);
end
if flage==0
    mx=1:1:k+1;
    rr(k+1)
else
    mx=1:1:k;
    rr(k)
end
flage
plot(mx,rr),xlabel('k'),ylabel('||r||'),title('||r||收敛曲线')

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?