1.介绍
2.库的使用
本章描述如何编译使用GSL的程序,介绍GSL的一般用法。
2.1例子程序
2.2编译和链接
2.3共享库
2.4与ANSI C兼容性
2.5inline函数
2.6长双精度long double
2.7可移植性函数
2.8可优化函数
2.9对不同的数据类型的支持
2.10与C++兼容性
2.11数组别名
2.12线程安全
2.13遗弃的函数
2.14代码重用
3.出错处理
本章描述GSL函数报告和处理出错的方法。通过检查每个函数返回的状态信息,您能确定它是否成功或失败,并且,如果它失败,您能发现什么是失败的精确起因。 您能也定义您自己的出错处理函数,取代库的缺省函数。
在这个部分描述的函数所在的头文件被宣称 gsl_errno.h.
3.1出错报告
3.2出错代码
3.3出错处理
3.4使用自己的出错处理函数
3.5例子
4.数学函数
本章描述基本的数学函数。 其中一些函数是已存在系统程序库里,但这里有可供选择的版本使用来替代,而不用系统函数。
在本章和宏指令描述的函数在库文件被定义 gsl_math.h.
4.1数学常量
4.2无穷和非数字
4.3初等函数
4.4小整数乘方
4.5测试数字的正负
4.6测试数字的奇偶
4.7求最大和最小函数
4.8浮点数近似比较
5.复数
在本章描述的函数支持复数。 算法尽量避免中间上溢或下溢,一样许多允许函数是被评估的复平面尽可能。
对于多值函数,分支切割在被选择跟随Abramowitz和Stegun的大会 数学函数手册 . 函数返回主值与那些在GNU Calc相同,反之是相同象那些的主值 共同的Lisp,语言(再版)1 并且计算器HP-28/48系列。
复数类型在头文件gsl_complex.h定义 ,而对应的复数函数和算术运算被定义 gsl_complex_math.h.
5.1复数的表示法
5.2复数的属性
5.3复数算术运算符
5.4基本的复数函数
5.5复数三角函数
5.6复数反三角函数
5.7复数双曲线函数
5.8复数反双曲线函数
5.9参考和进阶阅读
6.多项式
本章描述函数为评估和解决多项式。 有惯例为发现二次方和三次方程真正和复杂根运用分析方法。 一位重申多项解难题者为发现一般多项式根也是可利用的以真正的系数(任何秩序)。 函数在头文件 gsl_poly.h定义.
6.1多项式赋值
6.2多项式的均差表示法
6.3二次方程
6.4三次方程
6.5一般多项等式
6.6多项式例子
6.7多项式参考和进阶阅读
7.特殊功能
本章描述GSL特殊函数。 此库包括惯例为计算airy函数,bessel函数, Clausen的价值函数,库仑波函数,结合的系数, Dawson函数, Debye函数, Dilogarithms,椭圆积分式, Jacobi椭圆函数,误差函数,指数积分式,费密Dirac函数,伽玛函数, Gegenbauer函数,超几何函数, Laguerre函数, Legendre函数和球状泛音、Psi (古希腊字母的F)函数,同步加速器函数、运输函数、三角函数和 Zeta函数。 每个惯例也计算数字错误的估计按函数的故意的价值。
函数在本章在各自的头文件中定义,例如 gsl_sf_airy.h, gsl_sf_bessel.h等等。 头文件完整集合直接使用文件 gsl_sf.h.
7.1特殊函数用法
7.2gsl_sf_result结构
7.3特殊函数模式
7.4Airy函数及其相关函数
7.5Bessel函数
7.6Clausen函数
7.7Coulomb函数
7.8联结系数
7.9Dawson函数
7.10Debye函数
7.11反对数
7.12初等运算
7.13椭圆积分式
7.14椭圆函数(Jacobi)
7.15出错函数
7.16指数函数
7.17指数积分式
7.18Fermi-Dirac函数
7.19伽玛和beta函数
7.20Gegenbauer函数
7.21超几何函数
7.22Laguerre函数
7.23Lambert W函数
7.24Legendre函数和球函数
7.25对数及其相关函数
7.26Mathieu函数
7.27乘方函数
7.28Psi 函数
7.29同步加速器函数
7.30传输函数
7.31三角函数
7.32Zeta函数
7.33例子
7.34参考和进阶阅读
8.向量和矩阵
在本章描述的函数提供一个简单的向量和矩阵接口给普通的C数组。 这些数组的内存管理使用一个唯一部下的类型被实施,以块命名。 通过写您的函数根据向量和矩阵您能通过包含数据和维度的一个唯一结构作为论据,无需另外的函数参数。 结构是与半新的向量和矩阵格式兼容 blas 惯例。
8.1数据类型
8.2块
8.3向量
8.4矩阵
8.5参考和进阶阅读
9.排列
本章描述的函数创建和操作排列。 变更p由n 整数在范围0代表对n-1,每价值 p_i一次和只一次发生。 变更p应用到传染媒介v产生一新的传染媒介v, v'_ i = v_ {p_i}。 例如,列阵(0,1,3,2)代表交换四个元素传染媒介的前二个元素的变更。 对应的身分变更是(0,1,2,3)。
注意线性代数惯例导致的变更对应于矩阵专栏交换,和,因此应该考虑如适用于列传染媒介在形式v = v P而不是专栏传染媒介,当交换传染媒介时的元素。
在本章描述的函数在头文件中 gsl_permutation.h定义.
9.1排列结构
9.2排列分配
9.3访问排列元素
9.4排列属性
9.5排列函数
9.6应用排列
9.7读写排列
9.8循环形式中的排列
9.9例子
9.10参考和进阶阅读
10.组合
本章描述函数创造和操作组合。 组合c由k 整数在范围0代表对n-1,每价值 c_i一次发生至多。 组合c对应于 k元素索引从n元素传染媒介选择的。 组合为重复是有用的在集合的所有 k元素子集。
在本章描述的函数在头文件 gsl_combination.h中定义.
10.1组合结构
10.2组合分配
10.3访问组合元素
10.4组合属性
10.5组合函数
10.6读写组合
10.7组合例子
10.8组合参考和进阶阅读
11.排序
本章描述函数直接和间接排序数据, (使用索引)。 所有作用使用 heapsort 算法。 Heapsort是操作就地,并且不要求任何辅助存储器的 O (N /日志N)算法。 它比平均和最佳的案件不显着长期也提供一致表现,运行时间为它最坏(有序数据)是。 注意heapsort算法不保存元素它是的相对命令均等 不稳定 排序。 然而,当使用这些作用时,相等的元素发生的定货横跨不同的平台将是一致的。
11.1排序对象
11.2排序向量
11.3选择k最小或最大的元素
11.4计算等级
11.5排序例子
11.6排序参考和进阶阅读
12.BLAS支持
基本的线性代数部分程序(blas)定义一套根本操作在可以用于创造优化高水平线性代数功能的向量和矩阵。
图书馆提供对应直接地于C语言的低级层数 blas 标准,这里提到和“cblas”和一个高水平接口为操作在GSL传染媒介和矩阵。 是对简单的操作感兴趣在GSL传染媒介和矩阵对象的用户应该使用高级层数,在文件被宣称 gsl_blas.h. 这应该满足多数用户的需要。 注意 GSL矩阵使用密集存贮被实施,因此接口只包括对应的密集存贮 blas 作用。 充分 blas 功能为带格式和包装格式矩阵通过低级是可利用的 cblas 接口。
接口为 gsl_cblas 层数在文件指定 gsl_cblas.h. 这个接口对应于 blas 技术论坛的草案标准为C接口对遗产 blas 实施。 得以进入对其他一致的用户 cblas 实施可能在图书馆提供的版本位置使用这些。 注意有仅FORTRAN的用户 blas 图书馆可能使用a cblas 转换它的conformant封皮成a cblas 图书馆。 参考 cblas 作为草稿一部分,封皮为遗产FORTRAN实施存在 cblas 标准,并且能从Netlib获得。 完整集 cblas 作用在附录被列出(参见 GSL CBLAS图书馆).
有三个水平 blas 操作,
第1级
向量运算,即。 y = /阿尔法x + y
第2级
矩阵向量运算,即。 y = /阿尔法A x + / beta y
第3级
矩阵矩阵运算,即。 C = /阿尔法A B + C
每个惯例有指定操作,介入的矩阵的种类的一个名字和他们的精确度。 如下测量他们的一些最共同的操作和名字,
小点
数积, x^T y
AXPY
向量和, /阿尔法x + y
MV
矩阵向量产品, A x
SV
矩阵向量解决, inv (A) x
MM
矩阵矩阵产品, A B
SM
矩阵矩阵解决, inv (A) B
矩阵的种类是,
GE
一般
GB
一般带
SY
相称
SB
相称带
SP
被包装的相称
他
厄米
HB
厄米的带
HP
被包装的厄米
TR
三角
TB
三角带
TP
被包装的三角
每操作为四个精确度被定义,
S
唯一真正
D
双重真正
C
唯一复合体
Z
双重复合体
因此,例如,名字 sgemm 立场为“唯一精确度一般矩阵矩阵倍增”和 zgemm 立场为 “双精度复杂矩阵矩阵倍增”。
注意传染媒介和矩阵论据到BLAS作用不能是aliased,因为结果是未定义,当强调的列阵重叠(参见 列阵混淆现象 ).
12.1GSL BLAS接口
12.2BLAS例子
12.3BLAS参考和进阶阅读
13.线性代数
本章描述函数为解决线性系统。 库提供直接地在经营的线性代数操作 gsl_vector 并且 gsl_matrix 对象。 这些惯例使用标准算法从Golub &范· Loan的 矩阵计算 以级1和级2 BLAS呼叫请求效率。
在本章描述的函数在头文件gsl_linalg.h中定义.
13.1LU分解
13.2QR分解
13.3QR分解,且列在轴上旋转
13.4奇异值分解
13.5Cholesky分解
13.6真实的对称矩阵的三对角线分解
13.7厄米矩阵的三对角线分解
13.8真实矩阵的黑森贝格矩阵分解
13.9实矩阵的黑森贝格三角分解
13.10双对角化
13.11householder transformations
13.12线性系统解决householder
13.13对角线系统
13.14平衡
13.15线性代数例子
13.16线性代数参考和进阶阅读
14.Eigensystems(特征值系统)
本章描述函数为矩阵计算的本征值和特征向量。 有惯例为真正的相称,真正的nonsymmetric,复杂厄米,真正的广义相称确定,复合体广义厄米确定和真正的广义nonsymmetric eigensystems。 本征值可以计算有或没有特征向量。 厄米和真正的对称矩阵算法是QR 减少跟随的相称bidiagonalization。 nonsymmetric算法是QR双重转移的 Francis。 广义nonsymmetric算法是QZ方法由于 Moler和Stewart。
在本章描述的函数在头文件gsl_eigen.h中定义.
14.1真正的对称矩阵
14.2复杂厄米的矩阵
14.3真正的Nonsymmetric矩阵
14.4真正的广义对称确定Eigensystems
14.5复杂广义厄米确定Eigensystems
14.6真正的广义Nonsymmetric Eigensystems
14.7排序本征值和特征向量
14.8本征值和特征向量例子
14.9本征值和特征向量参考
15.快速的傅立叶变换
本章描述函数为执行的快速的傅立叶变换 (FFTs)。库包括是力量的二)的根值2 惯例(为长度和为所有长度运作)的混合基数的惯例(。 为效率有惯例的分开的版本为真正的数据和为复杂数据。 混合基数的惯例是reimplementation fftpack 保罗Swarztrauber图书馆。 FORTRAN代码为 fftpack 是可利用的在Netlib (fftpack 也包括有些惯例为正弦,并且余弦变换,但这些当前不是可利用的在GSL)。 为部下的算法的细节和派生咨询本文 GSL FFT算法 (参见 FFT参考和深层读取)
15.1数学定义
15.2复数FFTs概要
15.3复数根号2 FFT程序
15.4复数混合根号的FFT程序
15.5实数FFTs概要
15.6根值2 FFT程序为实数
15.7混合根号的FFT程序为实数
15.8FFT参考和深层读取
16.数值积分
本章描述函数为进行数值积分 (求积分法)作用在一个维度。 有惯例为一般作用的能适应和非适应综合化,以专业惯例为具体案件。 这些包括综合化无限和半无限范围,单一积分式,包括对数Cauchy主值的稀有、计算和振动积分式。 算法使用的图书馆reimplements quadpackPiessens写的一个数字综合化包裹, Doncker-Kapenga、Uberhuber和Kahaner。 FORTRAN代码为 quadpack 是可利用的在Netlib。
在本章描述的作用在头文件gsl_integration.h定义.
16.1数值积分介绍
16.2QNG非适应高斯Kronrod积分
16.3QAG能适应的积分
16.4QAGS能适应的积分伴随异常
16.5QAGP能适应的积分伴随已知的异常点
16.6QAGI能适应的积分在无限间隔时间
16.7QAWC能适应的积分为Cauchy主值
16.8QAWS能适应的积分异常函数
16.9QAWO能适应的积分为振动函数
16.10QAWF能适应的积分为傅立叶积分式
16.11积分出错代码
16.12积分例子
16.13积分参考和深层读取
17.随机数的产生
库提供可以通过一个一致的接口访问随机数发生器的大收藏量。 环境变量允许您选择不同的发电器和种子在运行时间,因此您能容易地交换在发电器之间,无需需要重新编译您的节目。 发电器的每个事例记录它自己的状态,允许发电器用于多穿线的节目。 另外的作用为变换均匀分布随机数是可利用的成样品从连续或分离概率分布例如高斯,记录正常或者泊松分布。
这些函数在头文件gsl_rng.h中定义.
17.1随机数一般注释
17.2随机数发生器接口
17.3随机数发生器初始化
17.4从一台随机数发生器采样
17.5辅助随机数发生器函数
17.6随机数的环境变量
17.7复制随机数发生器状态
17.8读写随机数发生器状态
17.9随机数发生器算法
17.10Unix随机数发生器
17.11其他随机数发生器
17.12随机数发生器性能
17.13随机数发生器例子
17.14随机号码的参考和深层读取
17.15随机号码的承认
18.拟随机序列
本章在任意维度描述函数为引起拟随机意序列。 一个类似任意序列用一致地分布的一套点进步地包括d尺寸空间。 类似任意序列是亦称低差误序列。 类似任意序列发电器使用于接口是相似的为随机数发生器的一个接口,除了播种不是要求每台发电器导致一个唯一序列。
在这个部分描述的作用在头文件 gsl_qrng.h中定义.
18.1拟随机数发生器的初始化
18.2从一台拟随机数发生器采样
18.3辅助拟随机数发生器函数
18.4保存和恢复拟随机数发生器状态
18.5拟随机数发生器算法
18.6拟随机数发生器例子
18.7拟随机数发生器参考
19.随机数的分布
本章描述函数为引起任意变量和计算他们的概率分布。 样品从在本章描述的发行在图书馆里可以使用任何随机数发生器得到作为随机性的一个部下的来源。
在最简单的案件不均匀的发行可以从一台随机数发生器的一致的发行分析获得通过申请适当的变革。 这个方法使用一个电话到随机数发生器。 更加复杂的发行是由创造的 采纳拒绝 方法,比较期望发行反对发行是相似和分析已知。 这通常要求几个样品从发电器。
图书馆也提供累积分布函数和相反累积分布函数,有时指分位点作用。 累积分布函数和他们的反面为发行的上部和更低的尾巴分开地被计算,允许充分的准确性为小结果保留。
作用为任意变量和在这个部分描述的可能性密度函数被宣称 gsl_randist.h. 对应的累积分布函数被宣称 gsl_cdf.h.
注意分离任意变量作用总退回类型的价值 未签名的int和在多数平台这有一个最大价值 2^32-1 ~=~ 4.29e9。 应该只叫他们与参量的一个安全范围(有超出这个极限)的地方变量的一个微不足道的可能性防止不正确结果由于溢出。
19.1随机数介绍
19.2高斯分布
19.3高斯尾巴分布
19.4二元高斯分布
19.5指数分布
19.6Laplace分布
19.7指数乘方分布
19.8Cauchy分布
19.9Rayleigh分布
19.10Rayleigh尾巴分布
19.11Landau分布
19.12征收阿尔法稳定的分布
19.13征收反称性阿尔法稳定的发行
19.14伽玛分布
19.15平的(一致的)分布
19.16对数正态的分布
19.17希腊字母x平方的分布
19.18F分布
19.19t分布
19.20beta分布
19.21逻辑分布
19.22Pareto分布
19.23球状向量分布
19.24Weibull分布
19.25类型一Gumbel分布
19.26类型二Gumbel分布
19.27Dirichlet分布
19.28一般离散分布
19.29泊松分布
19.30Bernoulli分布
19.31二项式分布
19.32多项式发行
19.33反二项式分布
19.34帕斯卡分布
19.35几何学分布
19.36超几何分布
19.37对数分布
19.38移动和采样
19.39随机数的发布例子
19.40随机数分布的参考和深层读取
20.统计
本章描述库中的统计函数。 基本的统计函数包括计算手段、变化和标准偏差程序。 更加高级的函数允许您计算绝对偏差、反称性和峰态并且中间和任意百分数。 算法使用递归关系计算平均数量用一个稳定的方式,不用也许溢出的大中间值。
函数是可利用的在版本为数据集在标准浮点和整数类型。 版本为双精度浮点数据有前缀 gsl_stats 并且在标头文件被宣称 gsl_statistics_double.h. 版本为整数数据有前缀 gsl_stats_int 并且在标头文件被宣称 gsl_statistics_int.h.
20.1平均,标准偏差和变化
20.2绝对偏差
20.3高级动差(反称性和峰态)
20.4自相关
20.5协方差(统计中用来计算两个变量之间的相关系数,其计算通过公式(xx)(yy),x和y是变量, x是x值的平均值y 是y值的平均)
20.6关联
20.7采用样本权重
20.8最大值和最小值
20.9中点和百分数
20.10例子
20.11统计参考和进阶阅读
21.直方图 (柱状图)
本章描述创造直方图函数。 直方图提供总结数据设置的发行一个方便方式。 直方图包括套 容器 哪些计数分成连续的可变物X.的一个特定范围的事件的数量。 在GSL直方图的容器包含浮点数,因此他们可以用于记录整数和非整数发行。 容器可能使用任意套范围(一致地间隔的容器是缺省)。 支持两一个和二维直方图。
一旦直方图被创造了它可能也被转换成概率分布作用。 图书馆为选择随意抽样提供高效率的惯例从概率分布。 这可以是有用的为引起根据真正的数据的模仿。
函数在头文件gsl_histogram.h和gsl_histogram2d.h中定义.
21.1直方图结构
21.2直方图分配
21.3复制直方图
21.4更新并访问直方图元素
21.5搜寻直方图范围
21.6直方图统计
21.7直方图运算
21.8读写直方图
21.9从直方图再次采样
21.10直方图概率分布结构
21.11直方图例子程序
21.12二维直方图
21.13二维直方图结构
21.14二维直方图分配
21.15复制二维直方图
21.16更新并访问二维直方图元素
21.17搜寻二维直方图范围
21.18二维直方图统计
21.19二维直方图运算
21.20读写二维直方图
21.21从二维直方图 再采样
21.22二维直方图例子
22.N元组
本章描述创造和操作N元组函数,N元组指一组与事件相关的数值。 ntuples 在文件被存放。 他们的价值在所有组合可以被提取和 预定 在一张直方图使用选择作用。
将被存放的价值在一种用户定义的数据结构表示,并且被创造同这种数据结构联系在一起的ntuple文件。 价值给文件然后被写(通常在圈里面)使用下述的ntuple作用。
直方图可以从ntuple数据被创造通过提供选择作用和明度函数。 选择作用指定不论在将被分析的子集应该包括事件。 明度函数计算将增加的词条到直方图为每个事件。
所有ntuple函数在头文件gsl_ntuple.h中定义。
22.1N元组结构
22.2创建N元组
22.3打开一个现有的N元组文件
22.4写N元组
22.5读N元组
22.6关闭N元组文件
22.7柱状图化N元组
22.8N元组例子程序
22.9N元组参考和进阶阅读
23.蒙特卡洛积分
本章描述多维蒙特卡洛积分函数。 这些包括传统蒙特卡洛方法和能适应的算法例如 维加斯 并且 守财奴 哪些使用重要性采样和分层取样技术。 每种算法计算形式的多维定积分的估计,
I = / int_xl^xu dx / int_yl^yu dy… f (x, y,…)
在一个hypercubic区域((x_l, x_u), (y_l, y_u),…) 使用函数调用的一个固定的数字。 惯例在结果也提供错误的一个统计估计。 应该采取这个误差估计作为指南而不是作为一个严密的错误跳起任意区域的采样可能不揭露作用的所有重要特点,造成错误的低估。
函数分别在头文件gsl_monte_plain.h, gsl_monte_miser.h和gsl_monte_vegas.h中定义.
23.1蒙特卡洛接口
23.2简单的蒙特卡洛
23.3守财奴 (miser)
23.4维加斯 (vegas)
23.5例子
23.6参考和进阶阅读
24.模拟退火法(Simulated Annealing)
使用随机查寻技术,当空间的结构不是好了解也不是光滑的时,因此技术喜欢要求计算Jacobian衍生物矩阵)的牛顿的方法(不可能使用。 特别是,这些技术频繁地用于解决组合优化问题,例如旅游推销商问题。
目标是发现点在被重视的真正的空间 能量作用 (或 价值函数)减到最小。 被模仿的焖火是在避免地方极小值给了好结果的低估技术; 它根据采取随机游动想法通过空间在连续地低温,步骤伯磁曼发行给可能性采取。
在本章描述的函数在头文件中gsl_siman.h定义.
24.1模拟退火法算法
24.2模拟退火法函数
24.3例子
24.4参考和进阶阅读
25.常微分方程
本章描述解决常微分方程初值问题的函数。 库为能适应的步大小控制提供低级方法品种,例如Runge-Kutta 和Bulirsch-Stoer惯例和高水平组分。 组分可以由用户结合达到期望解答,与全部存取到所有中间步。
这些函数在头文件gsl_odeiv.h中定义.
25.1定义常微分方程
25.2步进函数(stepping function)
25.3自适应步大小控制
25.4演变
25.5例子程序
25.6参考和进阶阅读
26.插值法
本章描述进行插值法函数。 库提供各种各样的插值法方法,包括三次样条和Akima多槽轴。 插值法类型是互换性的,允许不同的方法使用,无需重新编译。 插值法可以为正常和周期性边界条件被定义。 另外的作用为计算内插作用衍生物和积分式是可利用的。
在这个部分描述的函数在标头文件gsl_interp.h 和gsl_spline.h定义.
26.1插值法介绍
26.2插值法函数
26.3插值法类型
26.4索引查寻和加速
26.5插值法函数的评估
26.6高级接口
26.7插值法例子程序
26.8插值法参考和进阶阅读
27.数值微分
在本章描述通过有限differencing计算数字衍生物数值微分。 一种能适应的算法在衍生物用于发现有限差最佳的选择和估计错误。 这些作用在标头文件被宣称 gsl_deriv.h.
27.1函数
27.2例子
27.3参考
28.契比希夫近似法 (chebyshev approximation)
本章描述契比希夫近似法函数。 契比希夫近似法是系列f (x)的截= /总和c_n T_n (x), Chebyshev 多项式T_n (x)的地方= / COS (n / arccos x)在间隔时间供给多项式的一个正交依据[- 1,1] 权函数 1// sqrt {1-x^2}。 最初的少数Chebyshev多项式是, T_0 (x) = 1, T_1 (x) = x, T_2 (x) = 2 x^2 - 1。 欲知详情看见Abramowitz & Stegun,第22章。
在本章描述的作用在标头文件被宣称 gsl_chebyshev.h.
28.1定义
28.2契比希夫系列的创建和运算
28.3辅助函数
28.4契比希夫系列评估
28.5派生物和积分式
28.6例子
28.7参考和进阶阅读
29.连续加速(series acceleration)
在本章描述使用Levin加速系列的汇合u变换函数。 这个方法从开始采取很小数量的期限的系列并且使用系统的略计计算被外推的价值和它的错误的估计。 u变换为会聚和发散级数运作,包括渐近数列。
这些作用在标头文件被宣称 gsl_sum.h.
29.1加速函数
29.2没有错误估计的加速函数
29.3例子
29.4参考
30.微波变换(wavelet transform)
本章描述执行分离小波变换(DWTs)函数。 库在一个和二个维度包括小波为真正的数据。 小波函数在头文件gsl_wavelet.h和gsl_wavelet2d.h定义.
30.1定义
30.2初始化
30.3变换函数
30.4例子
30.5参考
31.离散汉克耳(Hankel)变换
本章描述离散汉克耳(Hankel)变换函数。 函数在头文件gsl_dht.h中定义.
31.1定义
31.2函数
31.3参考
32.一维求根法
本章描述发现任意一维作用根函数。 库为各种各样的重申解难题者和收敛性判定提供低级组分。 这些可以由用户结合达到期望解答,与全部存取到叠代的中间步。 方法每类使用同一个框架,因此您能交换在解难题者之间在运行时间,无需需要重新编译您的节目。 解难题者的每个事例记录它自己的状态,允许解难题者用于多穿线的节目。
头文件 gsl_roots.h 包含原型为发现函数和相关声明的根。
32.1概要
32.2警告
32.3初始化
32.4提供函数解决
32.5查寻边界并猜测
32.6叠代
32.7停止查寻参数
32.8根括号算法
32.9求根法算法使用衍生物
32.10例子
32.11参考和进阶阅读
33.一维最小化
本章描述发现任意一维作用极小值函数。 库为各种各样的重申 minimizers和收敛性判定提供低级组分。 这些可以由用户结合达到期望解答,与全部存取到算法的中间步。 方法每类使用同一个框架,因此您能交换在minimizers之间在运行时间,无需需要重新编译您的节目。 minimizer的每个事例记录它自己的状态,允许minimizers用于多穿线的节目。
头文件 gsl_min.h 包含原型为最小化函数和相关声明。 要使用低估算法发现作用的最大值简单地倒置它的标志。
33.1概要
33.2警告
33.3初始化Minimizer
33.4提供最小化函数
33.5叠代
33.6停止参数
33.7最小化算法
33.8例子
33.9参考和进阶阅读
34.多维求根法
本章描述多维求根法 函数(解决非线性系统以n等式在n 未知数)。 图书馆为各种各样的重申解难题者和收敛性判定提供低级组分。 这些可以由用户结合达到期望解答,与全部存取到叠代的中间步。 方法每类使用同一个框架,因此您能交换在解难题者之间在运行时间,无需需要重新编译您的节目。 解难题者的每个事例记录它自己的状态,允许解难题者用于多穿线的节目。 解难题者根据原始的FORTRAN图书馆 minpack.
头文件 gsl_multiroots.h 包含原型为多维求根法作用和相关声明。
34.1概要
34.2初始化
34.3提供函数解决
34.4叠代
34.5停止查寻参数
34.6算法使用衍生物
34.7没有衍生物的算法
34.8例子程序
34.9参考和进阶阅读
35.多维低估
本章描述惯例为发现任意多维作用极小值。 图书馆为各种各样的重申 minimizers和收敛性判定提供低级组分。 这些可以由用户结合达到期望解答,当提供全部存取给算法的中间步时。 方法每类使用同一个框架,因此您能交换在 minimizers之间在运行时间,无需需要重新编译您的节目。 minimizer的每个事例记录它自己的状态,允许 minimizers用于多穿线的节目。 低估算法可以通过倒置它的标志用于最大化作用。
标头文件 gsl_multimin.h 包含原型为低估作用和相关声明。
Multimin概要
Multimin警告
初始化多维Minimizer
提供作用减到最小
Multimin叠代
停止标准的Multimin
Multimin算法与衍生物
没有衍生物的Multimin算法
Multimin例子
Multimin参考和深层读取
36.最小二乘方拟合(least-squares fitting)
本章描述执行最小二乘方拟合到实验性数据使用作用的线性组合函数。 数据也许被衡量或无重负,即。 以已知的或未知的错误。 为被衡量的数据作用计算最佳的适合的参量和他们伴生的协方差矩阵。 为无重负的数据协方差矩阵从点的消散估计,给变化协变性矩阵。
作用被划分成分开的版本为简单一或二参量退化和多参量适合。 函数在标头文件被宣称 gsl_fit.h.
36.1概要
36.2线性复原
36.3不含一个常数项的线性拟合
36.4多参数拟合
36.5例子
36.6参考和进阶阅读
37.非线性最小二乘方拟合
本章描述多维非线性最小二乘方拟合函数。 库为重申解难题者和收敛性判定品种提供低级组分。 这些可以由用户结合达到期望解答,与全部存取到叠代的中间步。 方法每类使用同一个框架,因此您能交换在解难题者之间在运行时间,无需需要重新编译您的节目。 解难题者的每个事例记录它自己的状态,允许解难题者用于多穿线的节目。
头文件 gsl_multifit_nlin.h 包含原型为多维非线性贴合作用和相关声明。
37.1概要
37.2初始化
37.3提供最小化函数
37.4叠代
37.5停止查寻参数
37.6使用衍生物
37.7没有使用衍生物的最小化算法
37.8计算最佳的适合的参数协方差矩阵
37.9例子程序
37.10参考和进阶阅读
38.依据多槽轴 (basis slines)
本章描述使依据多槽轴的计算(B多槽轴)光滑函数。 头文件 gsl_bspline.h 包含原型为bspline作用和相关声明。
38.1概要
38.2初始化
38.3构建结(knots)向量
38.4评估
38.5多槽轴依据作用衍生物的评估
38.6例子程序
38.7参考和进阶阅读
39.物理常数
本章描述物理常量宏,例如光速, c和万有引力常数, G。 价值是可利用的用不同的单位系统,包括标准MKSA系统(米、公斤、秒钟,安培)和CGSM 系统(厘米、克、秒钟,高斯),是常用的在天文。
常数的定义在MKSA系统是可利用的在文件 gsl_const_mksa.h. 常数在CGSM系统被定义 gsl_const_cgsm.h. 无维的常数,例如精细结构常数,是纯净的数字被定义 gsl_const_num.h.
39.1基本常量
39.2天文和天体物理学
39.3原子和核物理
39.4时间单位
39.5英制单位
39.6速度和航海单位
39.7打印单位
39.8容量,地区和长度
39.9质量和重量
39.10热能和力量
39.11压力
39.12黏度
39.13光和照明
39.14放射线
39.15力量和能量
39.16前缀
39.17例子
39.18参考和进阶阅读
40.IEEE浮点算法
本章描述审查浮动小数点数字的表示法和控制您的节目的浮动小数点环境函数。 在本章描述的作用在头文件gsl_ieee_utils.h中定义.
40.1浮点数的表示法
40.2设定您的IEEE环境
40.3参考和进阶阅读
41.调试数字程序
本章描述使用GSL的调试数字程序的技巧。
41.1使用gdb
41.2检查浮点数记数器
41.3处理浮点数异常
41.4GCC警告选项
41.5参考
42.贡献者对GSL
43.Autoconf宏指令
为应用使用 autoconf 标准宏指令 AC_CHECK_LIB 能使用与GSL自动地连接从a 配置 剧本。 图书馆取决于a 出现 cblas 并且必须在连接也位于算术图书馆,因此这些与扼要之前 libgsl 文件。 在应该安置以下命令 configure.ac 归档将执行这些试飞,
AC_CHECK_LIB ([m], [COS])
AC_CHECK_LIB ([gslcblas], [cblas_dgemm])
AC_CHECK_LIB ([gsl], [gsl_blas_dgemm])
它是重要对检查对于 libm 并且 libgslcblas 以前 libgsl否则测试失败。 在配置阶段看期间似此,假设图书馆被找到产品,
检查COS - lm… 是
检查cblas_dgemm - lgslcblas… 是
检查gsl_blas_dgemm - lgsl… 是
如果图书馆那么被找到得测试将定义宏指令 HAVE_LIBGSL, HAVE_LIBGSLCBLAS, HAVE_LIBM 并且增加选择 - lgsl - lgslcblas - lm 到可变物 解放.
上面测试将发现图书馆的所有版本。 他们为一般用途是适当的,作用的版本不是重要的。 一个供选择的宏指令是可利用的在文件 gsl.m4 测试对于图书馆的一个具体版本。 要使用这个宏指令简单地增加以下线到您 configure.in 文件而不是上面测试:
AX_PATH_GSL (GSL_VERSION,
[行动如果发现了],
[行动如果没有发现了])
论据 GSL_VERSION 应该是二或三位数 major.minor 或 major.minor.micro 您需要发行的版本号。 一个适当的选择为 行动如果没有发现了 是,
AC_MSG_ERROR (不可能发现GSL的必需的版本)
然后您能增加可变物 GSL_LIBS 并且 GSL_CFLAGS 对您的Makefile.am归档获得正确编译器旗子。 GSL_LIBS 与产品是相等的 gsl设置 --解放 命令和 GSL_CFLAGS 是相等的 gsl设置 --cflags 命令。 例如,
libfoo_la_LDFLAGS = - lfoo $ (GSL_LIBS) - lgslcblas
注意宏指令 AX_PATH_GSL 需要使用C编译器,因此它应该出现于 configure.in 文件在宏指令之前 AC_LANG_CPLUSPLUS 为使用C++的节目。
对测试为 线型 在您应该安置以下测试 configure.in 文件,
AC_C_INLINE
如果测试“$ac_cv_c_inline”! =没有; 然后
AC_DEFINE (HAVE_INLINE, 1)
AC_SUBST (HAVE_INLINE)
fi
并且宏指令然后定义在编辑旗子或将通过包括文件 config.h 在任何图书馆倒栽跳水之前。
以下autoconf测试将检查 外面线型
dnl检查对于“外面线型”,使用一个修改过的版本
测试的dnl为AC_C_INLINE从acspecific.mt
dnl
AC_CACHE_CHECK ([为外面线型], ac_cv_c_extern_inline,
[ac_cv_c_extern_inline=no
AC_TRY_COMPILE ([外面$ac_cv_c_inline双重foo (双重x);
外面$ac_cv_c_inline双重foo (双重x) {回归x+1.0; };
双重foo (双重x) {回归x + 1.0; };]
[foo (1.0)],
[ac_cv_c_extern_inline= "是"])
])
如果测试“$ac_cv_c_extern_inline”! =没有; 然后
AC_DEFINE (HAVE_INLINE, 1)
AC_SUBST (HAVE_INLINE)
fi
如果您使用,轻便作用的代替可以自动地被做 autoconf. 例如,对测试是否BSD作用 hypot 是可利用的您能包括以下线在配置文件 configure.in 为您的应用,
AC_CHECK_FUNCS (hypot)
并且安置以下宏定义在文件 config.h.in
/*替补gsl_hypot为缺掉系统hypot *
#ifndef HAVE_HYPOT
#define hypot gsl_hypot
#endif
应用源文件可能然后使用包括命令 #include 替代 gsl_hypot 为每发生 hypot 当 hypot 不是可利用的。
44.GSL CBLAS图书馆
45.免费软件需要自由文献
46.GNU公众执照
47.GNU自由文献执照
48.作用索引
49.易变的索引
50.键入索引
51.概念索引