2016-09-15 2 views
0

이 코드는 LU 분해를위한 코드이지만 L 및 U의 행렬식을 포함하여 출력이 LU 또는 PLU의 행렬식을 결정할 수 있도록하려고합니다.MATLAB : LU 분해에 결정자를 포함하는 방법

function [ P, L, U ] = LUdecomposition(A) 
    A=input('matrix A ='); 
    m = size(A); 
    n = m(1); 
    L = eye(n); 
    P = eye(n); 
    U = A; 
    for i=1:m(1) 
    if U(i,i)==0 
     maximum = max(abs(U(i:end,1))); 
     for k=1:n 
     if maximum == abs(U(k,i)) 
      temp = U(1,:); 
      U(1,:) = U(k,:); 
      U(k,:) = temp; 
      temp = P(:,1); 
      P(1,:) = P(k,:); 
      P(k,:) = temp; 
     end 
     end 
    end 
    if U(i,i)~=1 
     temp = eye(n); 
     temp(i,i)=U(i,i); 
     L = L * temp; 
     U(i,:) = U(i,:)/U(i,i); 
    end 
    if i~=m(1) 
     for j=i+1:length(U) 
     temp = eye(n); 
     temp(j,i) = U(j,i); 
     L = L * temp; 
     U(j,:) = U(j,:)-U(j,i)*U(i,:); 
     end 
    end 
    end 
    P = P'; 
end 
+0

결정자를 포함하면 무엇을 의미합니까? 출력 인수에 추가하는 것을 의미합니까? – percusse

+0

출력 대신에 P = P '가되도록 출력하려면 det (LU) – dupsy

+0

'function [P, L, U, detLU] = LU 분해능 (A) ......... detLU = det (L * U) end' – percusse

답변

0

L 및 U는 삼각 행렬이다. 그래서 그들의 결정 요인은 대각선 요소의 산물입니다. 고전적인 LU 분해에서 L의 대각선 요소는 1이므로 det (L) = 1입니다. A = L * U => det (A) = det (L) * det (U)이므로 결정자를 쉽게 계산할 수 있습니다 그러므로 det (PLU) = + 또는 - det (LU). 알아내는 방법을 모르겠습니다./

+0

예, 저는 L과 U가 삼각 행렬이고 det (LU) = det (L) * det (U)를 알고 있지만 위의 코드에 어떻게 포함시킬 것입니까 – dupsy