lumanual.m

来自「programas matlab metodos numericos」· M 代码 · 共 42 行

M
42
字号
n=length(A)-1;
%obtiene el largo de la matriz X
d=1;
for j=2:n
d=det(A(1:j,1:j))*d;
end
%verifica si tiene descomposicion LU (no tiene si d=0)
if d~=0
    for k= 1 :n-1 
        filas= k+1:n;
        if A(k,k)==0 % rota las filas si encuentra un pivote nulo
            i=k+1;
            while A(i,k)==0 
               i=i+1;
            end
            f(k:n+1)=A(i,k:n+1);
            A(i,k:n+1)=A(k,k:n+1);
            A(k,k:n+1)=f(k:n+1);
        end
        A(filas,k)=A(filas,k)/A(k,k);
        A(filas,filas)=A(filas,filas)-A(filas,k)*A(k,filas);
    end
    % descomposicion LU de la matriz A (la que dio el tipo)
    s(1,1)=A(1,n+1);
    for i=2:n
        s(i,1)=(A(i,n+1)-A(i,1:i-1)*s(1:i-1,1));
    end
    % resuelve el sistema L*s=v
    x(n,1)=s(n,1)/A(n,n);
    for k=n-1:-1:1
        x(k,1)=(s(k,1)-A(k,k+1:n)*x(k+1:n,1))/A(k,k);
    end
    %resuelve el sistema U*x=s
     x
    %muestra x
else
    %codigo cuando no se puede resolver

    'segui participando'
end

⌨️ 快捷键说明

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