如果我有求解方程的系統中,這:C++:數學庫使用回代算法
A * f = g;
A: upper triangular matrix (n x n)
f: (n x 1)
g: (n x 1)
需要解決使用f
回代算法。我會說,自己寫一篇文章並不難,但是,如果有一個圖書館在那裏,那麼爲什麼不呢。
如果我有求解方程的系統中,這:C++:數學庫使用回代算法
A * f = g;
A: upper triangular matrix (n x n)
f: (n x 1)
g: (n x 1)
需要解決使用f
回代算法。我會說,自己寫一篇文章並不難,但是,如果有一個圖書館在那裏,那麼爲什麼不呢。
升壓uBlas應該工作。至少如果我正確理解你的問題,你可能要先看lu_substitute()
和inplace_solve()
。
使用LAPACK。它已經安裝在許多系統上,並且有許多實現可用於沒有它的系統。
具體來說,你想要的程序是dtrtrs
或strtrs
,這取決於你的數據是雙精度還是單精度。
快速瀏覽一下他們的網站:「LAPACK是用Fortran90編寫的......」並不是說你不能用C++來調用Fortran,但它可能有些不方便。 – 2010-03-22 03:40:25
庫中寫入的語言無關緊要;有一個標準化的C接口,並且該庫可在大多數平臺上使用,因此您通常不需要自己構建它。如果您確實需要基於某種原因構建它,那麼還有一個C庫版本(CLAPACK)。這是行業標準,也是迄今爲止最便攜的解決方案。 – 2010-03-22 03:42:27
它是其中之一嗎?我還沒有聽說過之前用「回代換」解決線性方程組的系統。爲什麼它必須被替換?
http://eigen.tuxfamily.org/dox/TutorialAdvancedLinearAlgebra.html
三角矩陣的特殊之處在於不需要因式分解來求解系統,如果矩陣是上三角形,解決它們的標準方法(也稱爲小學代數方法)稱爲「回代換」,因爲您首先求解x [n],然後x [n-1],然後x [n-2]等... – 2010-03-22 03:29:26
哦。我從來沒有聽說過它被稱爲之前。 用eigen做了一個快速檢查。它有它......但不管它是什麼意思,它都不是「正式的」。 http://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html#a89efaba57cb2952b65868b4d679ce954 – 2010-03-22 16:44:51
非常感謝,圖書館看起來非常健壯,但它比我需要的多一點,所以我最終寫了自己的。但是我肯定會推薦ppl來看看這個庫。 ':M1&tsm(\t M1&m1,const T&t,const M2&m2,C)' – 2010-03-23 17:01:58