||
IMSL(International Mathematics and Statistics Library)是由Visual Numerics,Inc从20世纪70年代开始开发的包含全面的数学和统计函数的软件包,拥有超过300个已证明且精准的数学统计算法,IDL Advanced中包含了除金融方面函数之外的整个C语言库。
IDL Advanced为科学家和专业领域的工程师提供了185个经过证明的运算函数,在IDL环境下,用户只需要简单地调用这些函数到自己的应用程序中,就可以实现复杂的数学和统计运算,并可以进行运算结果的快速可视化。
详情可参考博客:
http://blog.sina.com.cn/s/blog_764b1e9d0100qe4g.html
IMSL数学库中包含的线性系统函数有矩阵求逆、线性方程组、线性最小二乘方程租和稀疏矩阵四类函数。
类型 | 函数名称 | 功能描述 |
矩阵求逆函数 | IMSL_INV | 求逆矩阵 |
线性方程组 | IMSL_LUSOL | 求逆矩阵 |
IMSL_LUFAC | 矩阵的LU因式分解 | |
IMSL_CHSOL | 对称正定线性方程组求解 | |
IMSL_CHFAC | Cholesky系数计算 | |
线性最小二乘方程租 | IMSL_QRSOL | 求逆矩阵 |
IMSL_QRFAC | 实矩阵因子分解 | |
IMSL_SVDCOMP | 奇异值分解(SVD) | |
IMSL_CHNNDSOL | 实对称非负矩阵线性方程组求解 | |
IMSL_CHNNDFAC | 实矩阵的Cholesky分解 | |
IMSL_LINLSQ | 线性约束最小二乘求解(见例) | |
稀疏矩阵 | IMSL_SP_LUSOL | 线性稀疏矩阵求解(见例) |
IMSL_SP_LUFAC | 稀疏矩阵的LU分解 | |
IMSL_SP_BDSOL | 线性方程求解 | |
IMSL_SP_BDFAC | 计算LU分解 | |
IMSL_SP_PDSOL | 稀疏对称正定矩阵求解 | |
IMSL_SP_PDFAC | 对称正定矩阵因式分解 | |
IMSL_SP_BDPDSOL | 线性对称正定方程求解 | |
IMSL_SP_BDPDFAC | Cholesky分解 | |
IMSL_SP_GMRES | 广义最小残差求解线性方程 | |
IMSL_SP_CG | 共轭梯度方法求解实对称矩阵方程 | |
IMSL_SP_MVMUL | 稀疏矩阵的向量积 |
例1:
利用最小二乘法求解方程组:
Result = IMSL_LINLSQ( b, a, c, bl, bu, contype [, ABS_TOLERANCE=value] [, /DOUBLE] [, ITMAX=value] [, REL_TOLERANCE=value] [, RESIDUAL=variable] [, XLB=array] [, XUB=array])
程序:
a = TRANSPOSE([[3.0, 2.0, 1.0], [4.0, 2.0, 1.0], $
[2.0, 2.0, 1.0], [1.0, 1.0, 1.0]])
b = [3.3, 2.3, 1.3, 1.0]
c = [[1.0], [1.0], [1.0]]
xub = [0.5, 0.5, 0.5]
xlb = [0.0, 0.0, 0.0]
contype = [1]
bc = [1.0]
sol = IMSL_LINLSQ(b, a, c, bc, bc, contype, Xlb = xlb, $
Xub = xub, Residual = residual)
PM, sol, Title = 'Solution'
Solution
0.500000
0.300000
0.200000
PM, residual, Title = 'Residual'
Residual
-1.00000
0.500000
0.500000
0.00000
PRINT, 'Norm of Residual =', IMSL_NORM(residual)
Norm of Residual = 1.22474
例2:IMSL_SP_LUSOL:线性稀疏矩阵求解 Ax = b
Result =IMSL_SP_LUSOL(b, [, a] [, CONDITION=variable] [, /CSC_COL] [, /CSC_ROW] [, /CSC_VAL] [, FACTOR_COORD=variable] [, GWTH_FACTOR=value] [, GWTH_LIM=value] [, /HYBRID_DENSITY] [, /HYBRID_ORDER] [,/ITER_REFINE=value] [, MEMORY_BLOCK=value] [, N_NONZERO=variable] [, N_SEARCH_ROWS=value] [, PIVOTING=value] [, SMALLEST_PVT=variable] [, STABILITY=value] [, TOL_DROP=value] [, TRANSPOSE=value])
程序:
Let xT = (1, 2, 3, 4, 5, 6) so that Ax = (10, 7, 45, 33, –34, 31)T. The number of nonzeros in A is 15.
A = replicate(imsl_f_sp_elem, 15)
; Define the sparse matrix A using coordinate storage format.
a(*).row = [0, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5]
a(*).col = [0, 1, 2, 3, 2, 0, 3, 4, 0, 3, 4, 5, 0, 1, 5]
a(*).val = [10, 10, -3, -1, 15, -2, 10, -1, -1, -5, $
1, -3, -1, -2, 6]
b = [10, 7, 45, 33, -34, 31]
; Define the right-hand side.
x = IMSL_SP_LUSOL(b, a)
; Call IMSL_SP_LUSOL, then print out result and the residual.
PM, x
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
6.0000000
PM, IMSL_SP_MVMUL(6, 6, a, x) - b
0.0000000
-8.8817842e-16
0.0000000
0.0000000
0.0000000
0.0000000
Linear Eigensystem Problems 线性特征系统问题
IMSL_EIG: 矩阵特征值
Generalized Eigensystem Problems 广义特征系统问题
IMSL_EIGSYMGEN: A=λBx的广义特征值,其中A、B为实对称矩阵
IMSL_GENEIG:A=λBx的广义特征值,
例:求解矩阵的特征值:eigval = IMSL_EIG(a)
函数名称 | 功能描述 |
IMSL_CSINTERP | 三次样条插值 |
IMSL_CSSHAPE | shape-preserving三次样条插值 |
IMSL_BSINTERP | 一维或二维的样条插值 |
IMSL_BSKNOTS | 样条插值的节点 |
IMSL_SPVALUE | 样条曲线值或导数 |
IMSL_SPINTEG | 一维或二维的样条积分 |
IMSL_FCNLSQ | 最小二乘拟合 |
IMSL_BSLSQ | 一维或二维的样条的最小二乘逼近 |
IMSL_CONLSQ | 约束样条逼近 |
IMSL_CSSMOOTH | 三次样条平滑 |
IMSL_SMOOTHDATA1D | 基于误差检测的一维或二维数据平滑 |
IMSL_SCAT2DINTERP | 离散点进行插值平滑 |
IMSL_RADBF | 基于径向基线计算离散数据的逼近值 |
IMSL_RADBE | 基于径向基线的拟合 |
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-24 01:24
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社