LAPACK 3 線性方程組求解

2022-01-28 22:39:43 字數 2233 閱讀 4348

解線性方程組a『x=b使用函式lapacke_dgesv,函式原型如下,

lapack_int lapacke_dgesv( 

intmatrix_order, lapack_int n, lapack_int nrhs,

double

*a, lapack_int lda, lapack_int

*ipiv,

double

*b, lapack_int ldb );

/*//

引數說明:

matrix_order 矩陣的順序,兩種取值,lapack_col_major或是lapack_row_major。

如果是col_major,表示a[0:n-1]是第一列,a[n:2n-1]是第二列,表明矩陣的元素儲存順序。

lapack的優先選擇是col_major,當是row_major時,會先進行轉置,然後進行計算,然後轉置回來;

n     矩陣的size,係數矩陣應該是方陣,乙個5x5的矩陣,則n=5;

nrhs   rhs的列數,lapack可以同時對乙個係數矩陣,多個rhs進行求解,

因為對係數矩陣只需要進行一次lu分解,多個rhs一起求解更方便;

a     係數矩陣;

lda    leading dimension of a,lda>=max(1,n);

ipiv   pivot的行交換記錄,第i行被交換到第ipiv[i]行;

b     rhs,可以是多列。其元素儲存順序是

ldb    leading dimension of b, ldb>=max(1,n),

本來看**中應該是ldb>=max(1,nrhs)的,ldb=nrhs的時候報錯了;

//返回值:

info = 0, 程式正常執行結束。

*/

測試**如下,參考

#include 

<

stdio.h

>

//lapacke headers

#include

"lapacke.h

"#include

"lapacke_config.h

"#include

"lapacke_utils.h

"extern

lapack_int lapacke_dgesv(

intmatrix_order, lapack_int n, lapack_int nrhs,

double

*a, lapack_int lda, lapack_int

*ipiv,

double

*b, lapack_int ldb );

intmain()

;doubleb[8

] =;int

ipiv[4];

intn =n;

intnrhs =2

;int

lda =n;

intldb =n;

intinfo

=lapacke_dgesv(lapack_col_major,n,nrhs,a,lda,ipiv,b,ldb);

printf(

"info:%d\n

",info);

if(info==0

)}}

程式執行輸出結果如下,

info:0x0

120-

1x11.375

0.375

0.375

-0.375

表示的是a =

14-2

3220

430-

1212

2-3b

=612

2138

4x =1

1.375

20.375

00.375-1

-0.375

網上可以看到的lapacke的資料好像比較少,lapacke只是在lapack的基礎上進行封裝,介面引數有些不同,呼叫lapack函式之前進行了一系列的引數檢測。所以目前可參考的就是lapacke的源**。先檢視lapacke的源**,然後檢視對應的lapack的函式引數,基本上就可以正確呼叫這些函式了。lapack的函式說明可以參考下面的**

中使用的是clapack包,clapack的函式引數與lapack一致,不像lapacke,自己新增引數。

MATLAB 線性方程組求解

clc,clear all close all 高斯消去法 a 2 3 4 3 5 2 4 3 30 線性方程組的係數矩陣 b 6 5 32 線性方程組的右端列向量 m,n size a 測量係數矩陣的維數 if m n fprint 線性方程組的係數矩陣非方陣 break end fprintf ...

MATLAB線性方程組求解

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式 a x bax b ax b 則可以用矩陣運算求解x,即x a b 求解齊次線性方程組基礎解系的函式是null z null a 表示返回矩陣a的基礎解系組成的矩陣。z還滿足ztz i z null a,r 得出的z不滿足ztz i,但得出...

SVD求解線性方程組

對於任一給定的矩陣am n boldsymbol am n 都存在這樣的分解 a u dv t boldsymbol boldsymbol boldsymbol boldsymbol t a udvt 這裡 u boldsymbol u是乙個 m m m times m m m 的正交矩陣,d bo...