GSL
文章平均质量分 76
没有啥的昵称
这个作者很懒,什么都没留下…
展开
-
GSL中的IEEE浮点算术
IEEE浮点算术 本章描述用于检查浮点数表示和控制程序的浮点环境的函数。本章描述的函数声明在头文件gsl_ieee_utils.h中。47.1 浮点数的表示 IEEE二进制浮点算法标准定义了单精度数和双精度数的二进制格式。每个数字由三部分组成:一个符号位(s),一个指数(E)和一个分数(f)。组合(s, E, f)的数值由下式给出: 符号位不是0就是1。指数范围从最小值Emin到最大值Emax,这取决于精度。指数被转换成一个无符号数e,称为有偏指数,通过添加一个偏置参...原创 2021-10-04 07:23:05 · 144 阅读 · 0 评论 -
GSL中的物理常数
物理常数 这一章描述了物理常数的值的宏,如光速,c,引力常数,G。这些值在不同的单位系统中都是可用的,包括标准MKSA系统(米,千克,秒,安培)和CGSM系统(厘米,克,秒,高斯),常用在天文学。MKSA系统中常量的定义可以在文件gsl_const_mksa.h中找到。CGSM系统中的常量定义在gsl_const_cgsm.h中。在gsl_const_num.h中定义了纯数的无量纲常数,如精细结构常数。下面给出简要描述常量的完整列表。查阅头文件本身来获取库中使用的常量的值。46.1...原创 2021-10-04 07:19:25 · 468 阅读 · 0 评论 -
GSL中的稀疏线性代数
稀疏线性代数 本章描述求解稀疏线性方程组的函数。本库提供了直接操作gsl_spmatrix和gsl_vector对象的线性代数函数。本章描述的函数声明在头文件gsl_splinalgh中。45.1 概述 本章主要讨论如下线性系统的解, Ax=b 其中A是一个一般矩形n乘n非奇异稀疏矩阵,x是一个未知的n乘1向量,b是一个给定的n乘1右边的向量。求解稀疏线性系统...原创 2021-10-04 07:18:08 · 310 阅读 · 0 评论 -
GSL中稀疏BLAS支持
稀疏BLAS支持稀疏基本线性代数子程序(BLAS)定义了向量和稀疏矩阵的一组基本操作,可用于创建优化的高级线性代数功能。GSL为稀疏矩阵支持有限数量的BLAS操作。头文件gsl_spblas.h包含稀疏BLAS函数的原型和相关声明。44.1 稀疏BLAS操作int gsl_spblas_dgemv(const CBLAS_TRANSPOSE_t TransA, const double alpha,const gsl_spmatrix * A, const gsl_vector * x,原创 2021-10-04 07:15:35 · 228 阅读 · 0 评论 -
GSL中的稀疏矩阵
稀疏矩阵本章描述的函数是用来构造和操作稀疏矩阵,稀疏矩阵有大量的零,只包含少量的非零元素。稀疏矩阵经常出现在偏微分方程的解中。使用专门的数据结构和算法来存储和处理稀疏矩阵是有益的,因为当应用于稀疏矩阵时,密集矩阵算法和结构可能非常慢,并使用大量内存。头文件gsl_spmatrix.h包含稀疏矩阵函数的原型和相关声明。43.1 数据类型所有函数都可用于每种标准数据类型。double的版本有前缀gsl_spmatrix,类似于单精度浮点数组的版本有前缀gsl_spmatrix_float。可用类原创 2021-10-04 07:14:16 · 228 阅读 · 0 评论 -
GSL中的基样条曲线
基样条曲线 本章描述用于计算平滑基样条(B样条)的函数。平滑样条与插值样条的区别在于,生成的曲线不需要经过每个数据点。有关插值样条的信息,请参见插值。头文件gsl_bspline.h包含了bspline函数的原型和相关声明。42.1 概述B样条是一种常用的用于拟合大数据集平滑曲线的基函数。为了做到这一点,横轴被分成若干个区间,每个区间的端点称为断点。通过在每个界面施加各种连续性和平滑度条件,将这些断点转换为结点。给定一个非递减的结向量,定义了n个k阶基样条,对于...原创 2021-10-04 07:10:08 · 414 阅读 · 0 评论 -
GSL中的非线性最小二乘拟合
非线性最小二乘拟合 本章描述多维非线性最小二乘拟合的函数。求解非线性最小二乘问题一般有两类算法,即行搜索法和信赖域法。GSL目前只实现信赖域法,并为用户提供对迭代中间步骤的完全访问。用户还能够调优一些参数,这些参数会影响算法的底层参数,有助于加快当前特定问题的收敛速度。GSL为非线性最小二乘拟合提供了两个独立的接口。第一个是为小到中等规模的问题设计的,第二个是为非常大的问题设计的,这些问题可能有也可能没有显著的稀疏结构。头文件gsl_multifit_nlinear.h包含多维非线性拟合函数的...原创 2021-10-03 08:23:34 · 1485 阅读 · 0 评论 -
GSL中的线性最小二乘拟合
线性最小二乘拟合本章描述使用线性组合函数对实验数据进行最小二乘拟合的例程。数据可以是加权的,也可以是未加权的,即带有已知的或未知的错误。对于加权数据,函数计算最佳拟合参数及其相关的协方差矩阵。对于未加权数据,由点的离散度估计协方差矩阵,给出一个方差-协方差矩阵。这些函数分为简单单参数或双参数回归和多参数拟合的版本。40.1 概述最小二乘拟合是,通过χ2 (卡方分布)的最小化得出的,卡方分布是模型Y (c, x)的n个实验数据(xi, yi)的残差平方的加权和。模型的p参数为c = .原创 2021-10-03 08:12:49 · 1740 阅读 · 0 评论 -
GSL中的多维最小值
多维最小值本章描述了寻找任意多维函数最小值的函数。本库为各种迭代求最小值器和收敛测试提供了低级组件。用户可以将这些组合起来以实现所需的解决方案,同时提供对算法中间步骤的完全访问。每一类方法都使用相同的框架,因此可以在运行时在最小化器之间切换,而不需要重新编译程序。求最小值器的每个实例都跟踪自己的状态,允许在多线程程序中使用求最小值器。最小值算法可以通过反转函数的符号来实现函数的最大化。头文件gsl_multimin.h包含求最小值函数和相关声明的原型。39.1 概述多维最小值问题要求找到一个原创 2021-10-03 08:02:41 · 412 阅读 · 0 评论 -
GSL中的多维求根
多维求根 本章介绍多维求根(用n个未知数中的n个方程求解非线性系统)的函数。 本库为各种迭代求解器和收敛测试提供了低级组件。用户可以将它们组合起来以实现所需的解决方案,同时可以完全访问迭代的中间步骤。每类方法都使用相同的框架,因此您可以在运行时在求解器之间切换,而无需重新编译程序。求解器的每个实例都会跟踪自己的状态,从而允许将求解器用于多线程程序中。求解器是基于原始的Fortran库MINPACK。 头文件gsl_multiroot.h包含多维求根函数和相关声明的原型。38.1 概述...原创 2021-10-03 08:00:22 · 369 阅读 · 0 评论 -
GSL中的一维最小值
一维最小值 本章描述了求解任意一维函数最小值的函数。本库为各种迭代求最小值器和收敛测试提供了低级组件。用户可以将这些组合起来以实现所需的解决方案,并完全访问算法的中间步骤。每一类方法都使用相同的框架,因此您可以在运行时在最小化器之间切换,而不需要重新编译程序。求最小值器的每个实例都跟踪自己的状态,允许在多线程程序中使用求最小值器。 头文件gsl_min.h包含求最小值的函数和相关原型的声明。要使用求最小值算法来找到一个函数的最大值,只需将它的符号反置即可。37.1 概述 求...原创 2021-10-03 07:57:55 · 272 阅读 · 0 评论 -
GSL中的一维求根
一维求根 本章描述了寻找任意一维函数根的程序。本库提供了用于各种迭代求解器和收敛测试的低级组件。用户可以将这些组合起来以实现所需的解决方案,并完全访问迭代的中间步骤。每一类方法都使用相同的框架,因此您可以在运行时在求解器之间切换,而不需要重新编译程序。求解器的每个实例都跟踪自己的状态,允许在多线程程序中使用求解器。 头文件gsl_root .h包含根查找函数和相关声明的原型。36.1 概述一维寻根算法可分为两类:根交叉法和根修正法。通过交叉求根的算法保证收敛。根交叉法从已知包含一...原创 2021-10-03 07:55:08 · 368 阅读 · 0 评论 -
GSL中的离散汉克尔变换
离散汉克尔变换 本章描述进行离散汉克尔变换(Discrete Hankel transformation, DHTs)的函数。这些函数声明在头文件gsl_dht.h中。35.1 定义 离散的汉克尔变换作用于采样数据的向量,其中样本被假定在与固定阶贝塞尔函数的零点相关的点上取;将它与离散傅里叶变换的情况相比较,在离散傅里叶变换中,采样点与正弦或余弦函数的零点有关。 从它的定义开始,函数f 定义为一个ν阶汉克尔变换(或贝塞尔变换),其中ν >−1/2,(见Johnson,...原创 2021-10-03 07:53:02 · 495 阅读 · 0 评论 -
GSL中的小波变换
小波变换 本章描述进行离散小波变换(DWTs)的函数。本库包括用于一维和二维实时数据的小波。小波函数声明在头文件gsl_wavelet.h和gsl_wavet2d .h中。34.1 定义 连续小波变换及逆由以下关系定义:且其中基函数ψs,τ 是由单个函数进行比例变换得到的,称为母小波。小波变换的离散版本作用于等间距的样本,具有固定的尺度和平移步长(s,τ)。频率轴和时间轴通过水平参数j在2j的尺度上进行并向采样。 由此得到的函数族{ψj,n }构...原创 2021-10-03 07:48:59 · 508 阅读 · 0 评论 -
GSL中的级数加速
级数加速 本章描述的函数利用莱文u变换加速了级数的收敛。这种方法从级数的开始取少量项,并使用系统的近似来计算外推值其误差的估计。u变换适用于收敛级数和发散级数,包括渐近级数。 这些函数声明在头文件gsl_sum.h中。33.1 加速函数下面的函数计算级数的完整莱文u变换及其误差估计。误差估计是通过将舍入误差从每一项传播到最后的外推来计算的。这些函数用于对每一项精度都很高的解析级数求和,并假定舍入误差来源于有限的精度。取每一项的相对误差为GSL_DBL_EPSILON阶。外...原创 2021-10-03 07:43:55 · 97 阅读 · 0 评论 -
GSL中的切比雪夫逼近
切比雪夫逼近 本章描述计算单变量函数切比雪夫逼近的函数。切比雪夫逼近是级数f(x)=cnTn(x)的截断,其中切比雪夫多项式Tn(x)=cos(n arccosx)提供了多项式在区间[−1,1]上的正交基,权函数为1/1-x2。前几个切比雪夫多项式是,T0(x) = 1, T1(x) = x, T2(x) = 2x2−1。更多信息,请参阅第22章Abramowitz和Stegun。 本章描述的函数声明在头文件gsl_chebyshev.h中。32.1 定义gsl_cheb_ser...原创 2021-10-03 07:42:38 · 871 阅读 · 0 评论 -
GSL中的数值微分
数值微分本章描述的函数通过有限差分计算数值导数。采用一种自适应算法来寻找有限差分的最佳选择,并估计导数中的误差。这些函数声明在头文件gsl_derivative .h中。31.1 函数int gsl_deriv_central(const gsl_function * f, double x, double h, double * result,double * abserr) 本函数使用步长为h的自适应中心差分算法,计算函数f在x点的数值导数。导数返回到result中,其绝对...原创 2021-10-02 09:32:32 · 191 阅读 · 0 评论 -
GSL中的插值
插值 本章描述的是进行插值的函数。本库提供了各种插值方法,包括Cubic、Akima和Steffen样条。插补类型是可互换的,不需要重新编译就可以使用不同的方法。插值可以定义为正规边界条件和周期边界条件。附加函数可用于计算插值函数的导数和积分。例程提供了插值一维和二维数据集。这些插值方法产生通过每个数据点的曲线。用平滑曲线插值噪声数据参见基样条。本节中描述的函数声明在头文件gsl_interp.h和gsl_spline.h中。30.1 一维插值介绍 给定一组数据点(x1, y...原创 2021-10-02 09:31:37 · 1863 阅读 · 0 评论 -
GSL中的常微分方程
常微分方程 本章描述求解常微分方程初值问题的函数。本库提供了各种低级方法,如Runge-Kutta和Burirsch-Stoer例程,以及用于自适应步长控制的高级组件。用户可以组合这些组件来实现所需的解决方案,并完全访问任何中间步骤。驱动程序对象可以用作高级包装器,以便于使用低级函数。 这些函数声明在头文件gsl_odeiv2.h中。这是版本1.15中的一个新接口,所有函数都使用前缀gsl_odeiv2。推荐使用gsl_odeiv.h中定义的以前的gsl_odeiv开头的实现。为了向后兼...原创 2021-10-02 09:27:47 · 463 阅读 · 0 评论 -
GSL中的模拟退火
模拟退火 当一个空间的结构不能很好地被理解或不光滑时,常常使用随机搜索技术,因此不能使用像牛顿法(需要计算雅可比矩阵的导数)这样的技术。特别是,这些技术经常被用于解决组合优化问题,如旅行推销员问题。 模拟退回的目的是在空间中找到一个点,这个点上的实值能量函数(或成本函数)是最小的。模拟退火是一种极小化技术,在避免局部极小化方面取得了良好的效果;它是基于在连续较低的温度下在空间中进行随机行走的想法,其中玻尔兹曼分布给出迭代一步的概率。 本章描述的函数声明在头文件gsl_siman...原创 2021-10-02 09:24:23 · 185 阅读 · 0 评论 -
GSL中的蒙特卡罗积分
蒙特卡罗积分 本章描述了多维蒙特卡罗积分的例程。其中包括传统的蒙特卡罗方法和自适应算法,如VEGAS和MISER,这些算法使用重要抽样和分层抽样技术。每个算法计算一个多维定积分的估计值, 在一个超立方区域((xl, xu),(yl, yu),…)上使用固定数量的函数调用。例程还提供了结果误差的统计估计。这个误差估计应该作为一个指导,而不是作为一个严格的误差界-随机抽样的区域,可能不会发现函数所有重要特性,导致误差的低估。 这些函数定义在每个例程的独立头文件中,分别是gsl...原创 2021-10-02 09:19:37 · 290 阅读 · 0 评论 -
GSL中的N元组
N元组本章描述用于创建和操作元组(与事件关联的值集)的函数。n元组存储在文件中。它们的值可以用任意组合提取,并使用选择函数在直方图中记录。 要存储的值保存在用户定义的数据结构中,创建一个n元组将该数据结构与文件关联起来。然后使用下面描述的n元组函数将值写入文件(通常在一个循环中)。可以通过提供一个选择函数和一个值函数从n元组数据中创建直方图。选择函数指定是否应该将事件包含在要分析的子集中。值函数为每个事件计算要添加到柱状图的条目。所有的n元组函数都定义在头文件gsl_ntuple.h中...原创 2021-10-02 09:14:48 · 191 阅读 · 0 评论 -
GSL中的直方图
直方图 本章介绍创建直方图的功能。直方图提供了一种汇总一组数据分布的方便方法。直方图由一系列组构成,组对落入连续变量x的给定范围内的事件数进行计数。在GSL中,直方图的组包含浮点数,所以它们可以用来记录整数和非整数分布。组可以使用任意的范围集合(默认是均匀间隔的组)。支持一维直方图和二维直方图。一旦直方图被创建,它也可以被转换成概率分布函数。本库提供了从概率分布中选择随机样本的有效例程。这对于基于真实数据生成模拟非常有用。这些函数声明在头文件gsl_histogram.h和gsl_hist...原创 2021-10-02 09:12:56 · 218 阅读 · 0 评论 -
GSL中的数字滤波
数字滤波24.1 介绍 本章中讨论的滤波器是基于以下以第i个样本为中心的滑动数据窗口: 这里,H是非负整数,称为窗口半长,表示样本i前后的样本个数,总窗口长度为K = 2H + 1。24.2 处理端点 当处理接近输入信号末端的样本时,将没有足够的样本来填充WiH定义的窗口。因此,用户必须指定如何构造靠近端点的窗口。这是通过传递一个类型为gsl_filter_end_t的输入参数来实现的:gsl_filter_end_t 本数据类型指定如何在端点附近构造窗口...原创 2021-10-02 09:09:55 · 496 阅读 · 0 评论 -
GSL中的滑动窗口统计
滑动窗口统计 本章描述计算滑动窗口统计(也称为滚动统计和运行统计)的例程,使用一个窗口围绕一个用于计算输入数据流的各种本地统计属性的样本。然后窗口向前滑动一个样本来处理下一个数据点,以此类推。 本章描述的函数在头文件gsl_movstat.h中声明。23.1 介绍 本章涉及从给定数据集的子集计算各种统计数据。其主要思想是通过定义一个window来计算给定数据样本附近的统计数据,该窗口包括样本本身以及在所讨论的样本之前和之后的特定数量的样本。对于示例xi,我们定义窗口WiH,...原创 2021-10-02 09:05:21 · 409 阅读 · 0 评论 -
GSL中的运行统计
运行统计本章描述了计算数据运行统计(也称为在线统计)的例程。这些例程适用于处理大型数据集,对于这些数据集,一次性存储在内存中可能不方便或不实用。数据可以采用单遍算法一次处理一个点。每次将一个数据点添加到累加器时,都会更新内部参数,以计算当前的平均值、方差、标准差、偏度和峰度。这些统计数据是精确的,并通过数值稳定的单遍算法进行更新。中位数和任意分位数也可用,但是这些计算使用提供近似的算法,并随着向累加器添加更多数据而变得更精确。本章描述的函数都声明在头文件gsl_rstat.h中。22.1 初始化原创 2021-10-02 09:00:39 · 210 阅读 · 0 评论 -
GSL中的统计
统计本章描述了本库中的统计函数。基本统计函数包括计算均值、方差和标准偏差的例程。更高级的函数允许您计算绝对偏差、偏度、峰度以及中位数和任意百分位数。算法使用递归关系以稳定的方式计算平均值,而不会有可能溢出的大中间值。这些函数对不同数据集有标准浮点和整数类型两种版本。双精度浮点数据的版本具有gsl_stats前缀,并在头文件gsl_statistics_double.h中声明。整数数据的版本前缀为gsl_stats_int,并在头文件gsl_statistics_int.h中声明。所有函数都对C数组进原创 2021-09-30 13:21:12 · 401 阅读 · 0 评论 -
GSL的随机数分布
随机数分布本章描述生成随机变量和计算其概率分布的函数。本章描述的分布样本可以使用库中的任意随机数生成器作为随机性的基础来源来获得。在最简单的情况下,通过适当的变换,可以从随机数产生器的均匀分布解析得到非均匀分布。这个方法使用一次对随机数生成器的调用。更复杂的分布是由接受-拒绝方法产生的,该方法将期望的分布与相似的、解析已知的分布进行比较。这通常需要从生成器中提取几个样本。本库还提供累积分布函数和逆累积分布函数,有时称为分位数函数。对于分布的上尾和下尾分别计算累积分布函数及其逆函数,允许对较小的结原创 2021-09-30 13:17:42 · 419 阅读 · 0 评论 -
GSL的拟随机数列
拟随机数列本章描述生成任意维数的拟随机数列的函数。拟随机数列用一组均匀分布的点逐步覆盖d维空间。拟随机数列也被称为低差异数列。拟随机数列生成器使用的接口类似于随机数生成器的接口,不同之处是不需要种子——每个生成器生成单个数列。本章描述的函数在头文件gsl_qrng.h中声明。19.1 拟随机数生成器初始化gsl_qrng 这是为了计算拟随机数列的工作空间。gsl_qrng * gsl_qrng_alloc(const gsl_qrng_type * T, unsigned ...原创 2021-09-30 13:12:52 · 133 阅读 · 0 评论 -
GSL中的随机数生成
随机数生成 本库提供了大量随机数生成器,可以通过统一接口访问它们。通过改变环境变量,允许您在运行时选择不同的生成器和种子,这样您就可以在生成器之间轻松切换,而不需要重新编译程序。生成器的每个实例都跟踪自己的状态,从而允许在多线程程序中使用生成器。其他函数用于将均匀随机数转换为连续或离散概率分布(如高斯分布、对数正态分布或泊松分布)的样本。 这些函数都声明在头文件gsl_rng.h中。18.1 关于随机数的一般性意见1988年,帕克和米勒写了一篇题为《随机数生成器:好的很难找到》...原创 2021-09-28 08:27:21 · 796 阅读 · 0 评论 -
GSL中的数值积分
数值积分本章描述了对一维函数进行数值积分(求积)的程序。常用函数有自适应和非自适应集成的例程,具体情况有专门的例程。这些包括在无限和半无限范围内的积分,奇异积分,包括对数奇点,柯西主值的计算和振荡积分。本库重新实现了在QUADPACK中使用的算法,数值积分包由Piessens、de donker - kapenga、Ueberhuber和Kahaner编写。在Netlib上可以找到Fortran版的QUADPACK代码。包括具有高精度系数的非自适应、定阶Gauss-Legendre积分例程,以及IQPA原创 2021-09-28 08:24:48 · 978 阅读 · 0 评论 -
GSL中的快速傅里叶变换(FFTS)
快速傅里叶变换(FFTS) 本章描述了执行快速傅里叶变换(FFTs)的函数。库中包含了radix-2例程(长度为2的幂)和混合基数例程(长度不限)。为了提高效率,对于真实数据和复杂数据,有不同版本的例程。混合基数例程是对Paul Swarztrauber的FFTPACK库的重新实现。FFTPACK的Fortran代码在Netlib上是可用的(FFTPACK也包括一些用于正弦和余弦变换的例程,但这些例程目前在GSL中不可用)。有关底层算法的详细信息和派生,请参阅文档“GSL FFT算法”(参见参考资...原创 2021-09-28 08:20:49 · 1577 阅读 · 0 评论 -
GSL中的特征系统
特征系统本章描述计算矩阵特征值和特征向量的函数。实对称特征系统、实非对称特征系统、复埃尔米特(自共轭矩阵)特征系统、实广义对称定特征系统、复广义埃尔米特(自共轭矩阵)定特征系统、实广义非对称特征系统的例程。特征值可以用特征向量计算,也可以不用特征向量计算。埃尔米特(自共轭矩阵)和实对称矩阵的算法是对称双对角化和QR约简。非对称算法是弗朗西斯QR双移。广义非对称算法是由Moler和Stewart提出的QZ方法。 本章描述的函数都声明在头文件gsl_eigen.h中。15.1 实对称矩阵...原创 2021-09-28 08:13:47 · 272 阅读 · 0 评论 -
GSL中的线性代数
线性代数本章描述了求解线性系统的函数。本库提供了直接作用于gsl_vector和gsl_matrix对象的线性代数操作。这些例程使用Golub & Van Loan的《矩阵计算》的标准算法,对有效率要求的可以使用一级和二级BLAS。本章描述的函数声明在头文件gsl_linalg.h中。14.1 LU分解一个一般的m×n矩阵A有一个LU分解PA = LU 其中P为M×M置换矩阵,L为M×min(M,N), U为min(M,N)×N。对于方阵,L是下单位三角形矩阵,U是上三...原创 2021-09-28 08:12:58 · 301 阅读 · 0 评论 -
GSL中的BLAS支持
BLAS支持 基本线性代数子程序(BLAS)定义了一套向量和矩阵的基本操作,可以用来创建优化的高级线性代数函数。本库提供了低层级直接对应于C语言的BLAS标准,这里称作“CBLAS”,也有高级接口可对GSL向量和矩阵进行操作。对使用GSL向量和矩阵对象进行简单操作感兴趣的用户可以使用本章介绍的高层级接口。函数声明在gsl_blas.h中,能满足大部分用户的需要。注意,GSL矩阵是用密集存储实现的,因此接口包括相应的密集存储BLAS函数。通过低层级CLBAS接口可以使用全部BLAS功能,包括...原创 2021-09-28 08:08:44 · 474 阅读 · 0 评论 -
GSL中的排序
排序 本章描述了直接和间接(使用索引)排序数据的函数。所有函数都使用堆排序算法。堆排序是一种O(N logN)算法,在执行时不需要任何额外的存储空间。它还提供了一致的性能,其最差情况(有序数据)的运行时间并不比平均情况和最佳情况长多少。请注意,堆排序算法并不保留相等元素的相对顺序—它是一种不稳定的排序。但是,在使用这些函数时,相同元素的结果顺序在不同平台上是一致的。12.1 排序对象 下面的函数提供了标准库函数qsort()的简单替代。它用于缺少qsort()的系统,而不是作为...原创 2021-09-28 08:02:43 · 237 阅读 · 0 评论 -
GSL中的组合
组合 本章介绍用于创建和操作组合的函数。组合c由范围在0到n-1之间的k个整数组成的数组表示,其中每个值ci最多出现一次。组合c对应于从n个元素向量中选择的k个元素的索引。组合对于迭代集合的所有k个元素子集很有用。 本章描述的函数定义在头文件gsl_combination.h中。10.1 组合的结构体 组合定义为一个包含三个组件的结构体,n和k的值,以及指向组合数组的指针。组合数组的元素都是size_t类型的,并按递增顺序存储。gsl_combination结构看起来...原创 2021-09-24 22:08:43 · 101 阅读 · 0 评论 -
GSL中的排列
排列 本章描述用于创建和操作排列的函数。置换p由0到n-1范围内的n个整数组成的数组表示,其中每个值pi发生一次,且只有一次。将排列p应用于向量v,得到一个新的向量v',其中v'i = vpi。例如,数组(0,1,3,2)表示一个排列,它交换一个四元素向量的最后两个元素。对应的恒等式排列是(0,1,2,3)。 注意,线性代数例程产生的排列对应于矩阵列的交换,因此在遍历向量的元素时,应该将其视为应用于v' = vP形式的行向量,而不是列向量。 本章描述的函数定义在头文...原创 2021-09-24 22:06:34 · 143 阅读 · 0 评论 -
GSL中的向量和矩阵
向量和矩阵 本章描述的函数为普通C数组提供了一个简单的向量和矩阵接口。这些数组的内存管理使用一个称为块的单一底层类型实现。通过将函数写成向量和矩阵的形式,可以传递一个包含数据和维度的单一结构作为参数,而不需要额外的函数参数。这些结构与BLAS例程使用的向量和矩阵格式兼容。8.1 数据类型 每种标准数据类型都可用于所有函数。double的版本有前缀gsl_block、gsl_vector和gsl_matrix。同样,单精度float数组的版本也有前缀gsl_block_f...原创 2021-09-24 21:58:03 · 315 阅读 · 0 评论 -
GSL的特殊函数
特殊函数 本章描述了GSL特殊函数库。库里包括的计算值例程有艾里函数、贝塞尔函数、克劳森函数、库仑波函数、耦合系数、道森函数、德拜函数、二重对数、椭圆积分、雅可比椭圆函数、误差函数、指数积分、费米狄拉克函数、伽马函数、盖根堡函数、埃尔米特多项式和函数、超几何函数、拉盖尔函数、勒让德函数和球面谐波、Psi(Digamma)函数、同步加速器函数、传递函数、三角函数和泽塔函数。每个例程还计算函数计算值中数值误差的估计值。 本章中的函数都声明在单独的头文件中,如gsl_sf_airy...原创 2021-09-24 21:54:24 · 463 阅读 · 0 评论