Fortran Coder

查看: 119|回复: 7
打印 上一主题 下一主题

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

[复制链接]

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
跳转到指定楼层
楼主
发表于 6 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BLAS库里有能求解一般方程的函数吗?
有一个Sgtsv()函数可以求解三对角的线性方程组,但没有找到有没有函数可以求解一般的方程组呢?比如,四对角,或五对角呢?
请教大家。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

819

帖子

2

主题

0

精华

大宗师

F 币
3862 元
贡献
2301 点
沙发
发表于 5 天前 | 只看该作者
[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 点
板凳
 楼主| 发表于 4 天前 | 只看该作者
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 点
地板
 楼主| 发表于 4 天前 | 只看该作者
li913 发表于 2024-6-17 08:34
[mw_shl_code=fortran,true]! MKL库函数求解线性方程组
! 依赖 mkl_lapack95.lib
program test

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

819

帖子

2

主题

0

精华

大宗师

F 币
3862 元
贡献
2301 点
5#
发表于 3 天前 | 只看该作者
静待花开 发表于 2024-6-18 18:46
非常感谢,看到你这个代码,我想起来有用 getrf() 和 getri() 求逆矩阵的做法。还不知道可以把getrf()与g ...

sgetrs 是 getrs 的单精度版本。

819

帖子

2

主题

0

精华

大宗师

F 币
3862 元
贡献
2301 点
6#
发表于 3 天前 | 只看该作者
静待花开 发表于 2024-6-18 18:47
您了解过,求解大规模的线性方程组,用什么函数吗?

稀疏矩阵用 pardiso

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
7#
 楼主| 发表于 昨天 17:06 | 只看该作者
li913 发表于 2024-6-19 09:49
稀疏矩阵用 pardiso

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

80

帖子

26

主题

0

精华

专家

F 币
280 元
贡献
150 点
8#
 楼主| 发表于 昨天 17:07 | 只看该作者
li913 发表于 2024-6-19 09:49
sgetrs 是 getrs 的单精度版本。

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

本版积分规则

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

GMT+8, 2024-6-22 04:29

Powered by Tencent X3.4

© 2013-2024 Tencent

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