EN
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

?gesv

求解线性方程组,其中的矩阵,的矩阵。求解过程中,对使用具有部分旋转和行交换的LU分解,将其分解为的形式,其中是置换矩阵,是单位下三角矩阵,是上三角矩阵。并通过LU分解的结果来求解线性方程组。

接口定义

C Interface:

void sgesv_(const int *n,const int *nrhs,float *a,const int *lda,int *ipiv, float *b, const int *ldb,int *info);

void dgesv_(const int *n,const int *nrhs,double *a,const int *lda,int *ipiv, double *b, const int *ldb,int *info);

void cgesv_(const int *n,const int *nrhs,float_Complex *a,const int *lda,int *ipiv, float_Complex *b, const int *ldb,int *info);

void zgesv_(const int *n,const int *nrhs, double_Complex *a,const int *lda,int *ipiv, double_Complex *b, const int *ldb,int *info);

Fortran Interface:

SGESV(n, nrhs, a, lda, ipiv, b, ldb, info);

DGESV(n, nrhs, a, lda, ipiv, b, ldb, info);

CGESV(n, nrhs, a, lda, ipiv, b, ldb, info);

ZGESV(n, nrhs, a, lda, ipiv, b, ldb, info);

参数

参数名

类型

描述

输入/输出

n

整数型

矩阵A的阶数,要求n≥0。

输入

nrhs

整数型

右端项的数量,即矩阵B的列数,要求nrhs≥0。

输入

a

  • 在sgesv中为单精度浮点型数组。
  • 在dgesv中为双精度浮点型数组。
  • 在cgesv中为单精度复数型数组。
  • 在zgesv中为双精度复数型数组。

矩阵维度为(lda,n)。

  • 输入:n*n的系数矩阵A。
  • 输出:储存了中的,其中的单位对角线元素不存储。

输入/输出

lda

整数型

A的leading dimension大小,要求lda≥max(1, n)。

输入

ipiv

整数型数组

数组维度为n。

存放了置换矩阵P的主元索引,即矩阵第i行与第ipiv(i)行交换。

输出

b

  • 在sgesv中为单精度浮点型数组。
  • 在dgesv中为双精度浮点型数组。
  • 在cgesv中为单精度复数型数组。
  • 在zgesv中为双精度复数型数组。

矩阵维度为(ldb,nrhs)。

  • 输入:的右端矩阵B。
  • 输出:在info=0的情况下,为的解矩阵X。

输入/输出

ldb

整数型

B的leading dimension大小,要求ldb≥max(1, n)。

输入

info

整数型

执行结果:

  • 等于0:成功。
  • 小于0:第-info个参数值不合法。
  • 大于0:,分解已经完成,但是因为奇异,所以无法完成求解。

输出

依赖

#include "klapack.h"

示例

C Interface:

int n = 5; 
int nrhs = 2; 
int lda = 5; 
int ldb = 5; 
int ipiv[5]; 
int info = 0; 
double a[]={72.1673 , 66.1857 , 64.7644 , 28.0199 , 91.4151, 
            6.5180 , 62.8483 , 72.4323 , 46.5760 ,  8.6928, 
            28.9821 , 42.1828 , 18.6437 , 99.8612 , 35.6972, 
            67.9812 ,  5.0880 , 85.5035 ,79.2945 , 54.5920, 
            28.6869 , 49.7512 ,  7.5186 ,28.6929 , 84.6041}; 
double b[]={ 9.4532 ,  1.5204 ,  2.2127 ,  0.9891, 7.1778, 
             6.8955 ,   7.2465,  3.5019 ,  8.2268, 3.5287}; 
dgesv_(&n,&nrhs,a,&lda,ipiv,b,&ldb,&info); 
/* 
* Output: 
* 0.17538061067669766        0.16637572403098155 
* -0.11183914210321674       -3.7758100714851153E-002 
* 5.5415093265516101E-002    0.15550950667724139 
* -1.4901096204948673E-002   -7.3593964815566168E-002 
* -0.10693481055391466       -0.15230871441871899 
*/

Fortran Interface:

PARAMETER(n=5) 
PARAMETER(nrhs=2) 
PARAMETER(lda=5) 
PARAMETER(ldb=5) 
INTEGER::info =0 
INTEGER :: ipiv(n) 
REAL(8) :: a(n*n) 
        DATA a / 72.1673 , 66.1857 , 64.7644 , 28.0199 , 91.4151, 
     $           6.5180 , 62.8483 , 72.4323 , 46.5760 ,  8.6928, 
     $           28.9821 , 42.1828 , 18.6437 , 99.8612 , 35.6972, 
     $           67.9812 ,  5.0880 , 85.5035 ,79.2945 , 54.5920, 
     $           28.6869 , 49.7512 ,  7.5186 ,28.6929 , 84.6041 / 
        REAL(8) :: b(n, nrhs) 
        DATA b /9.4532 ,  1.5204 ,  2.2127 ,  0.9891, 7.1778, 
     $           6.8955 ,   7.2465,  3.5019 ,  8.2268, 3.5287 / 
        EXTERNAL DGESV 
        CALL DGESV(n, nrhs, a, lda, ipiv, b, ldb, info); 
*       Output: 
*       0.17538061067669766        0.16637572403098155 
*       -0.11183914210321674       -3.7758100714851153E-002 
*       5.5415093265516101E-002    0.15550950667724139  
 *      -1.4901096204948673E-002   -7.3593964815566168E-002 
*       -0.10693481055391466       -0.15230871441871899
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词