Fortran Coder

查看: 292|回复: 7

[数学库] BLAS库里有能求解一般方程(如四对角)的库函数吗?

[复制链接]

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
发表于 2024-6-16 05:08:53 | 显示全部楼层 |阅读模式
BLAS库里有能求解一般方程的函数吗?
有一个Sgtsv()函数可以求解三对角的线性方程组,但没有找到有没有函数可以求解一般的方程组呢?比如,四对角,或五对角呢?
请教大家。

822

帖子

2

主题

0

精华

大宗师

F 币
3875 元
贡献
2307 点
发表于 2024-6-17 08:34:10 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
! MKL库函数求解线性方程组
! 依赖 mkl_lapack95.lib
program test 
use lapack95
integer,parameter::n=3
integer i
real(4)::a(n,n), b(n)
integer ipiv(n)
a=reshape([1,0,1,2,1,0,3,3,0],[n,n])
b(:)=[14,11,1]
call getrf(a,ipiv,i)   !LU分解
call getrs(a,ipiv, b)  !a,b均被覆盖
print*,b !1,2,3
pause
end program 

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
 楼主| 发表于 2024-6-18 18:46:11 | 显示全部楼层
li913 发表于 2024-6-17 08:34
[mw_shl_code=fortran,true]! MKL库函数求解线性方程组
! 依赖 mkl_lapack95.lib
program test

非常感谢,看到你这个代码,我想起来有用 getrf() 和 getri() 求逆矩阵的做法。还不知道可以把getrf()与getrs()结合求解普通线性方程组。
感谢!
在新查到的资料,我看到用sgetrs()完成求解的。

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
 楼主| 发表于 2024-6-18 18:47:18 | 显示全部楼层
li913 发表于 2024-6-17 08:34
[mw_shl_code=fortran,true]! MKL库函数求解线性方程组
! 依赖 mkl_lapack95.lib
program test

您了解过,求解大规模的线性方程组,用什么函数吗?

822

帖子

2

主题

0

精华

大宗师

F 币
3875 元
贡献
2307 点
发表于 2024-6-19 09:49:02 | 显示全部楼层
静待花开 发表于 2024-6-18 18:46
非常感谢,看到你这个代码,我想起来有用 getrf() 和 getri() 求逆矩阵的做法。还不知道可以把getrf()与g ...

sgetrs 是 getrs 的单精度版本。

822

帖子

2

主题

0

精华

大宗师

F 币
3875 元
贡献
2307 点
发表于 2024-6-19 09:49:37 | 显示全部楼层
静待花开 发表于 2024-6-18 18:47
您了解过,求解大规模的线性方程组,用什么函数吗?

稀疏矩阵用 pardiso

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
 楼主| 发表于 2024-6-21 17:06:10 | 显示全部楼层
li913 发表于 2024-6-19 09:49
稀疏矩阵用 pardiso

我想解的是就是稀疏矩阵,四对角的,想着用lapack,cublas,这些。我查了您说的这个pardiso库,我学习下,以前没有了解过。

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
 楼主| 发表于 2024-6-21 17:07:36 | 显示全部楼层
li913 发表于 2024-6-19 09:49
sgetrs 是 getrs 的单精度版本。

是的,想用它来解四对角线性方程组, 不知道有没有直接法快
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-7-23 19:44

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表