6

的矢量求解線性方程系統,是否有任何內置函數其中找到x?意思是這樣 -由下式給出LU分解和鑑於<code>L</code>和常數<code>b</code>這樣<code>U</code><a href="http://en.wikipedia.org/wiki/LU_decomposition">LU decomposition</a>和向量​​<code>LU*x=b</code>常量

X = functionName(L,U,b) 

注意,在這兩種LU我們正在處理,可直接通過forward and backward substitution來解決,而無需使用Gaussian elimination過程三角矩陣。

編輯:

解決這個線性方程組應按照以下步驟 -

1. define y - s.t Ux=y 
2. solve Ly=b by forward substitution 
3. solve Ux=y by backward substitution 
4. return y 

編輯2:

我發現linalg::matlinsolveLU,但我沒有嘗試它導致我有太舊的版本(R2010a)。它爲任何人工作?

+0

您的向量和矩陣是否具有象徵意義?如果是這樣,你需要在你的問題中詳細說明。 – horchler

+0

此外,'mldivide'是[爲符號系統重載](http://www.mathworks.com/help/symbolic/arithmeticoperations.html),但不會完全相同。 – horchler

+0

什麼意思是「矩陣符號」? – URL87

回答

5

如果您有:

A = rand(3); 
b = rand(3,1); 

則解決了系統可以簡單地計算爲:

x = A\b 

或者,如果你已經有了一個LU分解,然後:

[L,U] = lu(A); 
xx = U\(L\b) 

mldivide功能是smart enough檢測矩陣是三角形,並相應地選擇了一種算法(正向/反向替換)

+0

如果你有一個固定的係數矩陣'A'但是許多不同的右邊'b',這種東西是有用的。因此,通過預先計算分解,您可以加快速度 – Amro

+0

您如何知道它「足夠聰明以檢測...」? – URL87

+0

我給出了一個文檔鏈接,說明'mldivide'如何實現不同的算法,並根據輸入矩陣的特性選擇合適的文檔。 – Amro

3

我認爲這是你在找什麼:

A = rand(3,3); % Random 3-by-3 matrix 
b = rand(3,1); % Random 3-by-1 vector 
[L,U] = lu(A); % LU decomposition 
x = U\(L\b) % Solve system of equations via mldivide (same as x = A\b or x = (L*U)\b) 
err = L*U*x-b % Numerical error 

方程組是用mldivide解決。您也可以查看執行QR decomposition而不是使用LU分解的qrqr可以直接解決A*x = b類型的問題,效率更高。也看看linsolve。對於符號系統,您仍然可以在MuPAD中使用mldivide或嘗試linalg::matlinsolveLU

+0

看到我編輯的帖子請 – URL87

+0

感謝您的鏈接@Amro。 – horchler

相關問題