簡體   English   中英

使用Matlab的矩陣

[英]Matrix using matlab

這是我在這個網站上的第一個問題。 我正在尋找Matlab問題,但似乎不知道該怎么做。 在輸入問題之前,我想清楚地表明,我在尋找的是理解力,而不是答案力。 雖然,我必須承認,如果發布答案,我不會生氣。 但更重要的是,我需要了解這一點。

“矩陣分解LU = PA可用於計算A的行列式。

det(L)det(U) = det(P)det(A)

因為L是對角線上帶有1的三角形,所以det(L)=1。因為U是三角形,所以det(U)= u 11 u 22···u nn。 因為P是一個排列,所以如果交換數為偶數,則det(P)= +1,如果為奇數,則為-1。 所以det(A)=±u 11 u 22···u nn。

修改lutx函數,使其返回四個輸出。

function [L,U,p,sig] = lutx(A)
%LU Triangular factorization
% [L,U,p,sig] = lutx(A) computes a unit lower triangular
% matrix L, an upper triangular matrix U, a permutation
% vector p, and a scalar sig, so that L*U = A(p,:) and
% sig = +1 or -1 if p is an even or odd permutation.

編寫一個函數mydet(A),使用修改后的lutx來計算A的行列式。在Matlab中,乘積prod(diag(U))可以計算乘積u 11 u 22·u n nn。”

lutx代碼可以在這里找到:

我很難理解問題的概念以及需要編寫的代碼。 任何幫助將不勝感激。 謝謝。

正如您在問題中提到的以下等式:

det(L)det(U) = det(P)det(A)

實際上,lutx函數分解輸入矩陣並返回分解后的元素。 這意味着如果給它一個A矩陣,它將計算L,U,p。 您可以檢查源代碼。

實際上,在您的問題中,“四個”元素中的三個是“已知”的,因此您可以使用lutx函數查找det(A) 因為:

det(A) = det(L)det(U) / det(P);

因此,您可以執行以下操作:

[L,U,p,sig] = lutx(A); % here I am using the modified version of lutx that you mentioned
DetA = 1 * prod(diag(U)) * sig; 

因為det(L)= 1 (我在前一行代碼中只是為了理解而提到),而det(U)= prod(diag(U)) ,而sig給出了符號。

最后,您可以將結果與matlab函數: det(A)進行比較

該練習似乎主要是為了計算“ sig”,而lutx目前不會返回。 作為提示,您必須計算

 delta_p = (1:length(p))-p;

並檢查delta_p是否具有偶數或奇數個非零元素。 這將確定信號的符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM