行列式求解,高斯消元法

程序部分

 gauss.m    shell

function [x]=gauss(A,b)
  n=size(A,1);
  for k=1:n-1
    m=A(k+1:n,k)/A(k,k);
    A(k+1:n,k+1:n)-=m*A(k,k+1:n);
    A(k+1:n,k)=zeros(n-k,1);
    b(k+1:n)-=m*b(k);
  endfor
  x=zeros(n,1);
  x(n)=b(n)/A(n,n);
  for k=n-1:-1:1
    x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
  endfor
endfunction

 參數: A 輸入係數矩陣 spa

           b 右端項 .net

程序原理就是利用基礎行列式變換構造一個三角形矩陣,而後三角形矩陣按照逆序分別求出x4 x3 x2 x1獲得原始解。 code

示例

輸入
A =

   1   1   1   1
  -1   2  -3   1
   3  -3   6  -2
  -4   5   2  -3

b =

   10
   -2
    7
    0

輸出
ans =

   1
   2
   3
   4

   侷限性是 :高斯消去法沒法處理輸入矩陣A(i,i)=0的狀況,並且使用過程當中不穩定因素也比較大,屬於基本的求值法。另一種改進版的高斯消元方法是將主元進行排序而後再消元,能夠解決傳統方法的弊端。  列主元高斯消元法 blog

相關文章
相關標籤/搜索