通过反复求解n个线性系统来计算矩阵逆

时间:2019-12-05 06:21:19

标签: matlab math matlab-compiler matrix-factorization

enter image description here

我正在尝试解决此问题。但是我一直出错。 这是我的第一个代码。

% Program 3.3

function [L, U, P] = lufact(A)
[N, N] = size(A);
X = zeros(N, 1);
Y = zeros(N, 1);
C = zeros(1, N);
R = 1:N;

for p = 1: N-1
    [max1, j] = max(abs(A(p:N, p)));

    C = A(p,:);
    A(p,:) = A(j + p - 1,:);
    A(j + p -1, :) = C;
    d = R(p);
    R(p) = R(j + p -1);
    R(j + p - 1) = d;

    if A(p,p) == 0
        'A is Singular. No unique Solution'
        break
    end

    for k = p + 1: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);
    end

    I=(1:N)'*ones(1,N,1); J=I';
    L = (I>J).*A + eye(N);
    U = (J>=I).*A;
    P = zeros(N);
for k=1:N
P(k,R(k))=1;
end
end
X(N) = Y(N)/A(N,N);

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

这是我用来解决此问题的第二代码。

function B = Ques3(A)
% Computes the inverse of a matrix A
[L,U,P] = lufact(A);
N = max(size(A));
I = eye(N);
B = zeros(N);
for j = 1:N
Y = forsub(L,P*I(:,j));
B(:,j) = backsub(U,Y);
end

但是我在MATLAB中不断出错,

>> Ques3(A)
Unrecognized function or variable 'forsub'.
Error in Ques3 (line 12)
Y = forsub(L,P*I(:,j));

0 个答案:

没有答案