活图DLL数值计算函数库的构成和使用
活图DLL数值计算函数库目录
"活图"DLL数值计算函数库(中文版活图ver8.1现在是常州微识自动化科技有限公司产品之一http://www.microverify.com/col.jsp?id=114):
特点:支持360种函数,包括有点集、曲线交线计算、可圆滑表示等高线的三次元插值和从136种常用曲线检出最佳拟合曲线等特殊独有函数。与其他数值函数库不同的是,内有构文解析功能,包含了可以处理类似"0.7*(1-cos(2*x)*exp(-x))"这样的F(x)函数表现式的函数。
同时具有DLL内部自动保持结果数值列的机能,呼出方无必要确保缓存领域,使DLL数值计算函数库的使用更为便利。
处理数值的个数无限制,并能进行数百万个数值的高速富里叶变换。
保持了"活图"紧凑的特征,DLL文件cut32fun.dll 本身仅420KB。
"活图"DLL数值计算函数库文件的组成:
由下述5个文件组成
cut32fun.h Visual C++用函数定义头文件
cut32fun.lib Visual C++用输入库文件
cut32fun.dll DLL函数库本体文件
cut32dll.hlp DLL函数库帮助文件
cut32dll.cnt 帮助文件CUT32DLL.HLP的目录定义文件
正常情况下,把DLL文件cut32fun.dll复制到Windows/目录或Windows/System/目录即可。
另外,在cut32fun.h文件内,是这样记述DLL函数 F_val_fx()的(例):
....
#define DllImport extern "C" __declspec( dllimport )
....
DllImport int _stdcall F_val_fx(const char* Fx, double *o_x, double *o_y, double xs, double xe, double xstep);
....
函数名指定方式:
"活图"DLL数值计算函数库,是用Visual C++制作的,按照Visual C++的固有规则,呼出DLL库的函数时,用下述两种方法之一指定函数名。
函数呼名方式1:
在"活图"函数名的先头追加半角F_
例如,原函数是val_fx(),则变成F_val_fx()。
在Visual C++的输入库方法中,使用这种呼名方式。
函数呼名方式2:
在"活图"函数名先头追加半角_F_,在函数名后头追加半角@和数字(参数的合计字节数)。
例如,原函数是val_fx(),则变成_F_val_fx@36
在使用LoadLibrary(), GetProcAddress() 等API函数进行动态链接时,使用这种呼名方式。
取得DLL函数结果数值列的指针型参数:
"活图"DLL数值计算函数库,呼函数一次可以返回数列大量的结果数值。为了取得这些结果数值列,DLL函数设置了指针型参数。如果呼出方把准备好的缓存领域的开始指针设定成取得DLL函数结果数值列的指针型参数的话,DLL函数会把所求的结果数值列保存在指针参数指定的缓存领域。
例如,求y=F(x)的F_val_fx()时,第二项是o_x指针型参数,第三项是o_y指针型参数,使用这两个参数,所求得的X和Y的结果数值列会返回给呼出方的。
int F_val_fx(const char* Fx, double *o_x, double *o_y, double xs, double xe, double xstep);
用缓存传递值法取得结果数值列:
缓存传递值法,就是呼出DLL的一方预先要准备好存放结果数值列的缓存领域,一旦设定好了这个缓存领域的开始指针,结果数值列就会传递到这个缓存领域的方法。
呼出DLL的一方在准备缓存领域时,一定要保证存放的领域足够大,传递缓存领域不足的话,程序就出现死机现象。
对能取得数值结果具备指针型参数的DLL函数,有取得其结果数值个数的方法。一般情况下,函数返回值返回的是结果数值列的个数。如果函数返回的两种类的结果数值列的个数不一样时,其中一种存放成个数的参数,传递给整数指针,这样可以获得结果的数值个数。
在确保结果数值的缓存领域时,必须预先知道个数值。推荐使用两回呼出的方法,第一次呼出函数时,在DLL函数把NULL指针传递给为取得结果数值列的指针参数,首先返回结果数值的个数,用这个个数确保缓存领域。第二回呼出时,确保传递缓存领域的开始指针接受结果数值列。
DLL内部自动保持结果数值列的机能
在呼出DLL函数库中的函数时,由于取得结果数值列的指针型参数传递给了NULL指针,所以不会返回结果数值列,而是自动保持在DLL内部的缓存中。
例如,用F_val_fx()计算F(x)时,本来第二项和第三项是容纳结果X和Y数值列的缓存开始指针,如果变成两个NULL指针,则结果X和Y数值列被保持在DLL内部缓存中(倍精度,小数)。
F_val_fx("0.7*(1-cos(2*x)*exp(-x))",NULL,NULL,0.0,5.0,0.01);
特征:使用DLL内部自动保持结果数值列的机能,呼出方无必要确保缓存领域,在Visual Basic的不定变量领域开发环境下比较方便。
DLL内部自动保持结果数值列的个数和顺序,和NULL指针传递的参数的数和顺序是一致的。
为了取得DLL内部自动保持结果数值,呼出函数后,请使用后述的4个专用辅助函数用直接值法取得。
下次用其他DLL数值函数(不包含辅助函数)呼出后,因为内部保持数值则全被清除。因此之前必须使用辅助函数取完结果数值列。在用API函数FreeLibrary()释放了DLL时,内部保存的结果数值被消除。
取结果数值列的DLL辅助函数:
要想知道DLL内部保持的结果数列的数值时,要使用下面四个辅助这个函数:
F_result_types:.resulttype 取得DLL内部保持的结果数列的列数.resulttype
F_result_type_num:.resulttypenum 取得指定的DLL内部保持的结果数列的数值个数
F_result_data:.resultdata 取得指定的DLL内部保持的结果数列的数值的值
F_result_buf:.resultbuf 取得指定的DLL内部保持的结果数列的缓存的开始指针
用直接值法取得结果数值列:
直接取值法就是为了获得DLL函数的结果数值列,将NULL指针传递给指针参数,把结果数值列保持在DLL内部缓存后,用上述的专用辅助函数取出内部保持的数值的方法。其最大特点是呼出方不必为取得结果数值准备缓存领域的。
例:用Visual C++输入库法呼出DLL函数F_val_fx()
void DllCallSamp2_val_fx()
{
int n = F_val_fx("0.7*(1-cos(2*x)*exp(-x))", NULL, NULL, 0.0, 5.0, 0.01);
//把参数o_x和o_y传递给NULL,把X和Y结果数值保持在DLL的内部缓存
int nType = F_result_types();
//取得内部保持的数值的列数
int nNum = F_result_type_num(0);
//取得内部保持的第一列X结果数值的个数
double *xp = new double[nNum];
//确保X结果数值的存放缓存
for( int i = 0 ; i < nNum; i ++) *(xp + i) = F_result_data(0,i);
//由F_result_data()顺次取得X的结果数值(直接值取得方法:第一步)
nNum = F_result_type_num(1);
//取得内部保持的第二列Y结果数值的个数
double *yp = new double[nNum];
//确保Y结果数值的存放缓存
double *dp = F_result_buf(1);
//由F_result_buf()取得内部保持Y结果数值缓存的开始指针(直接值取得方法:第二步)
if (dp != NULL) memcopy(yp, dp, nNum*sizeof(double));
//把Y结果数值复制到缓存yp内
………
delete xp; delete yp; //解放xp和 yp
}
用Vsual Basic 呼出DLL函数 F_val_fx的例子
Declare Function F_val_fx Lib "cut32fun.dll" Alias "_F_val_fx@36" (ByVal fx As String, ByRef x As Double, ByRef y As Double, ByVal sx As Double, ByVal ex As Double, ByVal xstep As Double) As Long
Declare Function F_val_fx_null Lib "cut32fun.dll" Alias "_F_val_fx@36" (ByVal fx As String, ByVal x As Long, ByVal y As Long, ByVal sx As Double, ByVal ex As Double, ByVal xstep As Double) As Long
Declare Function F_result_types Lib "cut32fun.dll" Alias "_F_result_types@0" () As Long
Declare Function F_result_type_num Lib "cut32fun.dll" Alias "_F_result_type_num@4" (ByVal No As Long) As Long
Declare Function F_result_data Lib "cut32fun.dll" Alias "_F_result_data@8" (ByVal No As Long, ByVal nIndex As Long) As Double
Sub calc2_val_fx()
Dim n As Integer
n = F_val_fx_null("0.7*(1-cos(2*x)*exp(-x))", ByVal 0&, ByVal 0&, 0, 360, 1)
Dim No As Integer
No = F_result_types()
Dim x(400) As Double
Dim nNum As Integer
nNum = F_result_type_num(0)
If nNum > 400 Then nNum = 400
For i = 1 To nNum
x(i) = F_result_data(0, i - 1)
Next i
Dim y(400) As Double
nNum = F_result_type_num(1)
If nNum > 400 Then nNum = 400
For i = 1 To nNum
y(i) = F_result_data(1, i - 1)
Next i
………
End Sub
C语言和Visual Basic的 Declare 文变量宣言对应规则
C函数参数宣言 VB Declare文的函数参数宣言
char * X ByVal X As String
int X ByVal X As Long
int * X ByRef X As Long
double X ByVal X As Double
double * X ByRef X As Double
double * X (NULL传递指针) ByVal X As Long (传递给NULL时,在VB的程序中使用 ByVal 0&)
用缓存传递值法取得结果数值列:
缓存传递值法,就是呼出DLL的一方预先要准备好存放结果数值列的缓存领域,一旦设定好了这个缓存领域的开始指针,结果数值列就会传递到这个缓存领域的方法。
呼出DLL的一方在准备缓存领域时,一定要保证存放的领域足够大,传递缓存领域不足的话,程序就出现死机现象。
对能取得数值结果具备指针型参数的DLL函数,有取得其结果数值个数的方法。一般情况下,函数返回值返回的是结果数值列的个数。如果函数返回的两种类的结果数值列的个数不一样时,其中一种存放成个数的参数,传递给整数指针,这样可以获得结果的数值个数。
在确保结果数值的缓存领域时,必须预先知道个数值。推荐使用两回呼出的方法,第一次呼出函数时,在DLL函数把NULL指针传递给为取得结果数值列的指针参数,首先返回结果数值的个数,用这个个数确保缓存领域。第二回呼出时,确保传递缓存领域的开始指针接受结果数值列。
例:用Visual C++输入库法呼出DLL函数F_val_fx()
………
#include "cut32fun.h" //DLL函数的头定义文件
………
void DllCallSamp1_val_fx()
{
int n = F_val_fx("0.7*(1-cos(2*x)*exp(-x))", NULL, NULL, 0.0, 5.0, 0.01);
//把参数o_x和o_y传递给NULL,取得X和Y结果数值的个数n
double *xp = new double[n], *yp = new double[n];
//然后,确保X和Y结果数值的存放缓存
F_val_fx("0.7*(1-cos(2*x)*exp(-x))", xp, yp, 0.0, 5.0, 0.01);
//最后,把xp和 yp传递给DLL函数,X和Y的结果数值存放在这里
………
delete xp; delete yp; //解放xp和 yp
}
用Vsual Basic 呼出DLL函数 F_val_fx的例子
Declare Function F_val_fx Lib "cut32fun.dll" Alias "_F_val_fx@36" (ByVal fx As String, ByRef x As Double, ByRef y As Double, ByVal sx As Double, ByVal ex As Double, ByVal xstep As Double) As Long
Declare Function F_val_fx_null Lib "cut32fun.dll" Alias "_F_val_fx@36" (ByVal fx As String, ByVal x As Long, ByVal y As Long, ByVal sx As Double, ByVal ex As Double, ByVal xstep As Double) As Long
Sub calc1_val_fx()
Dim x(400) As Double
Dim y(400) As Double
Dim n As Integer
n = F_val_fx_null("0.7*(1-cos(2*x)*exp(-x))", ByVal 0&, ByVal 0&, 0, 360, 1)
If n < 400 Then n = F_val_fx("0.7*(1-cos(2*x)*exp(-x))", x(0), y(0), 0, 360, 1)
………
End Sub
C语言和Visual Basic的 Declare 文变量宣言对应规则
C函数参数宣言 VB Declare文的函数参数宣言
char * X ByVal X As String
int X ByVal X As Long
int * X ByRef X As Long
double X ByVal X As Double
double * X ByRef X As Double
double * X (NULL传递指针) ByVal X As Long (传递给NULL时,在VB的程序中使用 ByVal 0& )
DLL函数种类:
0.DLL用辅助函数
F_result_types(): 返回DLL内部保存的数值结果的列数
F_result_type_num(No): 返回指定的DLL内部保存数值结果列的数值个数
F_result_data(No,nIndex): 返回指定的DLL内部保存数值结果列的指定数值
F_result_buf(No): 返回指定的DLL内部保存数值结果列缓存的开始指针
F_return_data(): 获取要执行函数的原来的返回值
F_return_string(): 获取要执行函数的文字近似式
F_set_judg_data(d): 设定解收敛判定的基准值
F_error_message(): 获取当前执行的出错信息
F_fit_report(type): 获取拟合曲线族全曲线近似结果的文字报告
F_fit_curve_info(type,ibuf): 获取拟合曲线族的计算曲线的设定信息
1.三角函数
double F_sin(double d): 返回正弦(弧度) |
|
double F_sind(double d): 返回正弦(度) |
|
double F_cos(double d): 返回余弦(弧度) |
|
double F_cosd(double d): 返回余弦(度) |
|
double F_tan(double d): 返回正切(弧度) |
|
double F_tand(double d): 返回正切(度) |
|
double F_asin(double d): 返回反正弦(弧度) |
|
double F_asind(double d): 返回反正弦(度) |
|
double F_acos(double d): 返回反余弦(弧度) |
|
double F_acosd(double d): 返回反余弦(度) |
|
double F_atan(double d): 返回反正切(弧度,-PAI/2 - PAI/2) |
|
double F_atand(double d): 返回反正切(度,-90 - 90) |
|
double F_atan2(double y, double x): 返回y/x的反正切(弧度,-PAI - PAI) |
|
double F_atan2d(double y, double x): 返回y/x的反正切(度-180 - 180) |
|
2.平方根,指数,对数函数
double F_sqrt(double d): 返回平方根 |
|
double F_exp(double d): 返回自然指数 |
|
double F_pow(double x, double y): 返回x的y次方 |
|
double F_ln(double d): 返回自然对数 (d > 0) |
|
double F_log(double d): 返回常用对数(d > 0) |
|
3.双曲线函数
double F_sinh(double d): 返回双曲线正弦 |
|
double F_cosh(double d): 返回双曲线余弦 |
|
double F_tanh(double d): 返回双曲线正切 |
|
double F_asinh(double d): 返回反双曲线正弦 |
|
double F_acosh(double d): 返回反双曲线余弦(d ≧ 1.0) |
|
double F_atanh(double d): 返回反双曲线正切(-1 < d < 1) |
|
4.其他常用数学函数
double F_abs(double d): 返回绝对值 |
|
int F_int(double d): 返回四舍五入后的整数值 |
|
int F_fix(double d): 返回整数部分(余部扔掉) |
|
int F_ceil(double d): 返回不小于d的最小整数值 |
|
int F_floor(double d): 返回不大于d的最大整数值 |
|
int F_sign(double d): 符号函数(1:d>0, 0:d等于0, -1:d<0) |
|
int F_sign1(double d): 符号函数(1:d≧0, -1:d<0) |
|
int F_sign2(double d): 符号函数(1:d>0, -1:d≦0) |
|
double F_hypot(double x, double y): 返回以x和y为直角边的三角形的斜边长 |
|
double F_degtorad(double d): 返回角度变换值(度到弧度) |
|
double F_radtodeg(double d): 返回角度变换值(弧度到度) |
|
int F_euclid(int n1, int n2): 返回正整数n1和n2的最大公约数 |
|
int F_euclid1(int n1, int n2): 返回正整数n1和n2的最小公倍数 |
|
int F_euclid_n(int nun, int* ip): 返回N个正整数n1,n2,.的最大公约数 |
|
int F_euclid1_n(int num, int* ip): 返回N个正整数n1,n2,.的最小公倍数 |
|
int F_factoring(double n, double* dp): 正整数n的因数分解 |
|
int F_prime(double n, int N, double* dp): 求大于正整数n的N个连续素数 |
|
int F_combin(int n, int k): 返回由n个要素选择k个组合的组合数 |
|
int F_days(int year, int month, int day): 返回元旦开始的天数 |
|
int F_weekday(int year, int month, int day): 返回星期的日子 |
|
int F_weeks(int year, int month, int day): 返回元旦开始的周数 |
|
int F_delta(double d): 返回delta函数值(1:d=0,0:d!=0) |
|
double F_round(double d, int n): 小数点后指定位n的四舍五入 |
|
double F_round1(double d, int n): 返回到有效位数n的四舍五入的结果 |
|
unsigned int F_bit_and(unsigned int n1,unsigned int n2): 返回两32位整数的位AND计算结果(正整数) |
|
unsigned int F_bit_or(unsigned int n1, unsigned int n2): 返回两32位整数的位OR计算结果(正整数) |
|
unsigned int F_bit_xor(unsigned int n1,unsigned int n2): 返回两32位整数的位XOR计算结果(正整数) |
|
unsigned int F_bit_not(unsigned int n): 返回32位整数n的位32反转计算结果(正整数) |
|
5.乱数函数
int F_rand(): 返回正整数1-32767之间的一样乱数 |
|
double F_rand1(): 返回0.0-1.0 之间的一样乱数 |
|
void F_rand_init(int n): 初始化乱数系列(n:乱数的种子) |
|
double F_rand_normal(): 返回正规乱数 |
|
double F_rand_exp(): 返回指数乱数 |
|
double F_rand_triang(): 返回三角乱数 |
|
double F_rand_cauchy(): 返回柯西乱数 |
|
double F_rand_logic(): 返回逻辑乱数 |
|
int F_rand_geo(double d)(p): 返回几何乱数 |
|
int F_rand_poisson(double d): 返回泊松乱数 |
|
double F_rand_weibull(double d)(α): 返回韦布尔乱数 |
|
6.特殊函数
double F_sf_bessel1(int n, double x): 返回n次的贝塞尔第一种函数值 (|n|<30000, |x|<30000= |
|
double F_sf_bessel1a(int n, double x): 返回n次的变形贝塞尔第一种函数值 (n≧0) |
|
double F_sf_bessel2(int n, double x): 返回n次的变形贝塞尔第二种函数值|n|<30000, |x|<30000= |
|
double F_sf_bessel2a(int n, double x): 返回n次的变形贝塞尔第二种函数值 (n≧0, x>0) |
|
double F_sf_gamma(double x): 返回佳玛函数值 (0<x≦170= |
|
double F_sf_gamma1(double x, double v): 返回不完全佳玛函数值 (0<x≦170, v≧0= |
|
double F_sf_gamma_ln(double x): 返回对数佳玛函数值(0<x≦170= |
|
int F_sf_gamma_cpx(double Re, double Im, double *dp): 复数佳玛函数值)([r][k]+i[r][k+1]) |
|
double F_sf_beta(double a, double b): 返回贝塔函数值(a>0,b>0) (a>0, b>0) |
|
double F_sf_beta1(double a, double b, double x): 返回不完全贝塔函数值 (a>0, b>0, 0≦x≦1) |
|
double F_sf_error(double x): 返回误差函数值 |
|
double F_sf_error1(double x): 返回补误差函数值 |
|
int F_sf_poly_leg(double x, int n, double* dp): n次的鲁彊多尔多项式系数[r] |
|
int F_sf_poly_lag(double x, int n, double* dp): n次的拉盖尔多项式系数[r] |
|
int F_sf_poly_her(double x, int n, double* dp): n次的艾尔米多多项式系数[r] |
|
int F_sf_poly_tch(double x, int n, double* dp): n次的柴比雪夫多项式系数[r] |
|
double F_sf_exp_intg(double x): 返回指数积分函数值 (x>0) |
|
double F_sf_sin_intg(double x): 返回正弦积分函数值 |
|
double F_sf_cos_intg(double x): 返回余弦积分函数值 (x>0) |
|
double F_sf_fre_sin(double x): 返回菲涅尔正弦积分函数值 |
|
double F_sf_fre_cos(double x): 返回菲涅尔余弦积分函数值 |
|
double F_sf_ellips1(double x): 返回第一种完全椭圆积分函数值 (0≦x≦1) |
|
double F_sf_ellips2(double x): 第二种完全椭圆积分函数值 (0≦x≦1) |
|
double F_sf_normal(double x): 返回概率变量x的标准正规分布值 (-∞<x<∞= |
|
double F_sf_normal_inv(double d): 返回对应于概率百分率0%-100%的标准正规分布的概率变量值 |
|
7.复数函数
int F_cpx_add(double Re1, double Im1, double Re2, double Im2, double *o_cpx): 両两复数的加([r][k]+i[r][k+1]) |
|
int F_cpx_sub(double Re1, double Im1, double Re2, double Im2, double *o_cpx): 两复数的减([r][k]+i[r][k+1]) |
|
int F_cpx_mul(double Re1, double Im1, double Re2, double Im2, double *o_cpx): 两复数的乘([r][k]+i[r][k+1]) |
|
int F_cpx_div(double Re1, double Im1, double Re2, double Im2, double *o_cpx): 两复数的除([r][k]+i[r][k+1]) |
|
int F_cpx_pow(double Re, double Im, double d, double *o_cpx): 复数(Re+iIm)的d次方值([r][k]+i[r][k+1]) |
|
int F_cpx_exp(double Re, double Im, double *o_cpx): 复数(Re+iIm)的指数值([r][k]+i[r][k+1]) |
|
int F_cpx_root(double Re, double Im, int n, int m, double *o_cpx): 复数(Re+iIm)的n跟中的第m个根([r][k]+i[r][k+1])(m=1,2..n) |
|
double F_cpx_abs(double Re, double Im): 返回复数(Re+iIm)的绝对值 |
|
double F_cpx_arg(double Re, double Im): 返回复数(Re+iIm)的偏角(-π~π) |
|
int F_cpx_inv(double Re, double Im, double *o_cpx): 复数的逆([r][k]+i[r][k+1]) |
|
int F_cpx_ln(double Re, double Im, double *o_cpx): 复数(Re+iIm)的自然对数值([r][k]+i[r][k+1]) |
|
int F_cpx_sin(double Re, double Im, double *o_cpx): 复数(Re+iIm)的正弦值([r][k]+i[r][k+1]) |
|
int F_cpx_cos(double Re, double Im, double *o_cpx): 复数(Re+iIm)的余弦值([r][k]+i[r][k+1]) |
|
int F_cpx_tan(double Re, double Im, double *o_cpx): 复数(Re+iIm)的正切值([r][k]+i[r][k+1]) |
|
int F_cpx_sinh(double Re, double Im, double *o_cpx): 复数(Re+iIm)的双曲正弦值([r][k]+i[r][k+1]) |
|
int F_cpx_cosh(double Re, double Im, double *o_cpx): 复数(Re+iIm)的双曲余弦值([r][k]+i[r][k+1]) |
|
int F_cpx_tanh(double Re, double Im, double *o_cpx): 复数(Re+iIm)的双曲正切值([r][k]+i[r][k+1]) |
|
8.多项式演算函数
int F_poly_add(double *ap, int na, double *bp, int nb, double *rp): 两多项式的加[r]等于[a]+[b] |
|
int F_poly_sub(double *ap, int na, double *bp, int nb, double *rp): 两多项式的减[r]等于[a]-[b] |
|
int F_poly_mul(double *ap, int na, double *bp, int nb, double *rp): 两多项式的乘[r]等于[a]*[b] |
|
int F_poly_div(double *ap, int na, double *bp, int nb, double *rp1, int *o_n1, double *rp2): 两多项式的除[r1]*[b]+[r2]等于[a] |
|
int F_poly_pow(double *ap, int na, int n, double *rp): 多项式的乘方[r]等于[a]^n |
|
int F_poly_trans(double *ap, int na, double *rp): 多项式[a]的转置 |
|
int F_poly_subst(double *ap, int na, double *bp, int nb, double *rp): 多项式[b]代入多项式[a] |
|
int F_poly_dif(double *ap, int na, double *rp): 多项式[a]的微分 |
|
int F_poly_intg(double *ap, int na, double *rp): 多项式[a]的积分 |
|
double F_poly_val(const double *ap, int na, double d): 返回实数d代入多项式[a]的值 |
|
int F_poly_valc(const double *ap, int na, double Re, double Im, double *o_cpx): 复数([r][k]+i[r][k+1])代入多项式[a]的值 |
|
double F_poly_valc_abs(double *ap, int na, double Re, double Im): 返回复数(Re+iIm)代入[a]的绝对值 |
|
double F_poly_valc_arg(double *ap, int na, double Re, double Im): 返回复数(Re+iIm)代入[a]的偏角值(-π~π) |
|
int F_polycpx_trans(double *ap, int na, double *rp): 复数多项式[a]的转置([a],[r]:用连续两组元的一对表示复数) |
|
int F_polycpx_valc(const double *ap, int na, double Re, double Im, double *o_cpx): 复数代入复数多项式[a]的值 |
|
9.分式演算函数
int F_frac_add(const double *i_f1poly, int f1poly_num, const double *i_g1poly, int g1poly_num, const double *i_f2poly, int f2poly_num, const double *i_g2poly, int g2poly_num, double *o_fpoly, int *o_fpoly_num, double *o_gpoly): 两分数多项式的加[of]/[og]等于([f1]/[g1])+([f2]/[g2]) |
|
int F_frac_sub(const double *i_f1poly, int f1poly_num, const double *i_g1poly, int g1poly_num, const double *i_f2poly, int f2poly_num, const double *i_g2poly, int g2poly_num, double *o_fpoly, int *o_fpoly_num, double *o_gpoly): 两分数多项式的减[of]/[og]等于([f1]/[g1])-([f2]/[g2]) |
|
int F_frac_mul(const double *i_f1poly, int f1poly_num, const double *i_g1poly, int g1poly_num, const double *i_f2poly, int f2poly_num, const double *i_g2poly, int g2poly_num, double *o_fpoly, int *o_fpoly_num, double *o_gpoly): 两分数多项式的乘[of]/[og]等于([f1]/[g1])*([f2]/[g2] |
|
int F_frac_div(const double *i_f1poly, int f1poly_num, const double *i_g1poly, int g1poly_num, const double *i_f2poly, int f2poly_num, const double *i_g2poly, int g2poly_num, double *o_fpoly, int *o_fpoly_num, double *o_gpoly): 两分数多项式的除[of]/[og]等于([f1]/[g1])/([f2]/[g2]) |
|
int F_frac_isubst(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double *o_fRe_poly, int *o_fRe_poly_num, double *o_fIm_poly, int *o_fIm_poly_num, double *o_gpoly): 纯虚数ix代入分式多项式([f]/[g])的分解 |
|
int F_frac_feedbk(const double *i_f1poly, int f1poly_num, const double *i_g1poly, int g1poly_num, const double *i_f2poly, int f2poly_num, const double *i_g2poly, int g2poly_num, double *o_fpoly, int *o_fpoly_num, double *o_gpoly): 分数多项式传递函数的反馈演算Z |
|
double F_frac_val(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double d): 返回实数代入分式多项式([f]/[g])的值 |
|
int F_frac_valc(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double Rm, double Im, double *o_cpx): 复数(Re+iIm) 代入分式多项式([f]/[g])的值 |
|
double F_frac_valc_abs(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double Rm, double Im): 返回复数(Re+iIm) 代入分式多项式([f]/[g])的绝对值 |
|
double F_frac_valc_arg(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double Rm, double Im): 返回复数(Re+iIm) 代入分式多项式([f]/[g])的偏角(-π~π) |
|
10.函数值的计算
int F_val_fx(const char* Fx, double *o_x, double *o_y, double xs, double xe, double xstep): 求函数y=F(x)一连的函数值 |
|
int F_val_zfxy(const char* zFxy, double *o_x, double *o_y, double *o_z, double xs, double xe, double xstep, double ys, double ye, double ystep): 求3次元阳函数z等于F(x,y) 的函数值 |
|
int F_val_fit_func(int curve_no, const double* i_c, int n, double *o_x, double *o_y, double xs, double xe, double xstep): 求指定编号No的拟合曲线值(系数[c]) |
|
double F_val_sigma(const char* Fx, double xs, double xe, double xstep): 求F(x)的连续和(x始,x终) |
|
double F_val_seki(const char* Fx, double xs, double xe, double xstep): 求F(x)的连续积(x始,x终) |
|
int F_valc_fx(const char* Fx, double Re, double Im, double *o_cpx): 返求复数(Re+iIm)代入F(x)的值([r][k]+i[r][k+1]) |
|
double F_valc_fx_abs(const char* Fx, double Re, double Im): 返回复数(Re+iIm)代入F(x)的绝对值 |
|
double F_valc_fx_arg(const char* Fx, double Re, double Im): 回复数(Re+iIm)代入F(x)的偏角值(-π~π) |
|
int F_val_overlap(int peek_num, const double* i_c, int n, double *o_x, double *o_y, double xs, double xe, double xstep, int sum_or_single, int gauss_or_lorentz): 孤立波形系数的计算[c] |
|
11.Bode线图向量轨迹图函数
int F_val_fx_bode(const char *Fs, double *o_w, double *o_dB, double *o_phase, double sw, double ew): 传递函数F(s)的Bode线 |
|
int F_val_frac_bode(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double *o_w, double *o_dB, double *o_phase, double sw, double ew): 分数多项式传递函数([f]/[g]) 的Bode线图 |
|
int F_val_fx_vect(const char *Fs, double *o_w, double *o_Re, double *o_Im, double sw, double ew): 传递函数F(s)的向量轨迹 |
|
int F_val_fx_vect1(const char *Fs, const double *i_w, int iw_num, double *o_Re, double *o_Im): 传递函数F(s)的向量轨迹图 |
|
int F_val_frac_vect(const double *i_fpoly, int fpoly_num, const double *i_Gpoly, int gpoly_num, double *o_w, double *o_Re, double *o_Im, double sw, double ew): 分数多项式传递函数([f]/[g]) 的向量轨迹图 |
|
int F_val_frac_vect1(const double *i_fpoly, int fpoly_num, const double *i_Gpoly, int gpoly_num, const double *i_w, int iw_num, double *o_Re, double *o_Im) : 分数多项式传递函数([f]/[g]) 的向量轨迹图 |
|
12.行列演算函数
int F_mtx_pdt(const double *i_mtx, double *o_mtx, double d): 行列的常数乘R(m,n)等于d*A(m,n) |
|
int F_mtx_add(const double *i_mtxA, const double *i_mtxB, double *o_mtx): 行列加R(m,n))=A(m,n)+B(m,n) |
|
int F_mtx_sub(const double *i_mtxA, const double *i_mtxB, double *o_mtx): 行列减R(m,n)=A(m,n)-B(m,n) |
|
int F_mtx_mul(const double *i_mtxA, const double *i_mtxB, double *o_mtx): 行列乘R(m,l)=A(m,n)*B(n,l) |
|
int F_mtxcpx_mul(const double *i_mtxA, const double *i_mtxB, double *o_mtx): 复数行列乘R(m,l)=A(m,n)*B(n,l) ([A],[B],[R]:用连续2组元表示一个复数) |
|
double F_mtx_det(const double *i_mtx): 返回正方行列的行列式A(n,n) |
|
int F_mtxcpx_det(const double *i_mtx, double *o_cpx): 复数正方行列的行列式A(n,n) ([r][k]+i[r][k+1])([A]: 用连续2组元表示一个复数) |
|
int F_mtx_inv(const double *i_mtx, double *o_mtx): 正则行列A(n,n)的逆行列R(n,n)=1/A(n,n) |
|
int F_mtx_trid_inv(const double *i_sub, int n_sub, const double *i_diag, int n_diag, const double *i_sup, int n_sup, double *o_mtx): 3重对角行列的逆行列 |
|
int F_mtxcpx_inv(const double *i_mtx, double *o_mtx): 复数正则行列A(n,n)的逆行列([A],[R]: 用连续2组元表示一个复数) |
|
double F_mtx_trace(const double *i_mtx): 返回正方行列A(n,n)的迹 |
|
int F_mtx_eigen(const double *i_mtx, double *o_mtx): 实对称行列的固有值固有向量 |
|
int F_mtx_eigen1(const double *i_diag, int n_diag, const double *i_sup, int n_sup, double *o_mtx): 3重实对称行列的固有值固有向量 |
|
int F_mtx_eigen2(const double *i_mtx, double *o_cpx): 任意实正方行列的复数固有值 |
|
int F_mtx_from_trid(const double *i_sub, int n_sub, const double *i_diag, int n_diag, const double *i_sup, int n_sup, double *o_mtx): 3重对角行列变换成一般行列 |
|
int F_mtx_to_trid(const double *i_mtx, double* o_sub, int *o_nsub, double* o_diag, int *o_ndiag, double* o_sup): 一般行列变换成3重对角行列 |
|
int F_mtx_from_vander(const double *i_d, int nd, double *o_mtx): Vandermonde行列变换成一般行列 |
|
int F_mtx_to_vander(const double *i_mtx, double *o_d): 一般行列变换成Vandermonde行列 |
|
13.方程式解函数
double F_fx_one(const char *Fx, double x0, double e): 返回F(x)等于0在x0的一个实数解 |
|
int F_fx_equ(const char *Fx, double xs, double xe, double xstep, double e, double *o_x): 求F(x)等于0在区间[x始,x终]的全实数解 |
|
double F_poly_one(const double *i_a, int na, double x0, double e): 返回高次代数方程式x0的一个实数解 |
|
int F_poly_cpx_one(const double *i_a, int na, double Re, double Im, double e, double *o_cpx): 求高次代数方程式的值(Re+iIm)的一个复数解([r][k]+i[r][k+1]) |
|
int F_poly_equ(const double *i_a, int na, double *o_cpx): 求高次代数方程式的全复数解([r]: 用连续2组元表示一个复数) |
|
int F_polycpx_equ(const double *i_a, int na, double e, double *o_cpx): 复数代数方程式的复数解([a],[r]: 用连续2组元表示一个复数) |
|
int F_root_locus(const double *i_a, int na, double *o_K, int *o_nK, double *o_Re, double *o_Im, double Ks, double Ke, double Kstep): 复数代数方程式的根轨迹 |
|
int F_root_locus1(const double *i_a, int na, const double *i_K, int nK, double *o_Re, double *o_Im): 复数代数方程式的根轨迹(iK指定) |
|
14.连立方程式解函数
int F_mtxequ_lu(const double *i_mtxA, const double *i_B, int nB, double *o_R): 求连立方程式的实数解(LU分解法)A(n,n)*R(n)等于B(n) |
|
int F_mtxequ_chol(const double *i_mtxA, const double *i_B, int nB, double *o_R): 求连立方程式的实数解(考莱丝基法) A(n,n)*R(n)等于B(n) |
|
int F_mtxequ_gauss(const double *i_mtxA, const double *i_B, int nB, double *o_R): 求连立方程式的实数解(高斯约旦法) A(n,n)*R(n)等于B(n) |
|
int F_mtxequ_trid(const double *i_sub, int n_sub, const double *i_diag, int n_diag, const double *i_sup, int n_sup, const double *i_B, int nB, double *o_R): 求3重对角连立方程式的实数解 |
|
int F_mtxequ_vander(const double *i_d, const double *i_B, int n, double *o_R): 求Vandermonde连立方程式的实数解 |
|
int F_mtxcpxequ_gauss(const double *i_mtxA, const double *i_B, int nB, double *o_R): 複求复数连立方程式的复数解([A],[B],[R]: 用连续2组元表示一个复数) |
|
15.常微分方程式数值解函数
int F_dif_equn(const char *Fxy, double *i_a, int ns, double *i_t, int nt, int n, double x0, double h, double *o_x, double *o_y, double xs, double xe, double xstep): 求高次常微分方程式的解(初值问题) |
|
int F_dif_equ1(const char *Fxy, double x0, double y0, double h, double *o_x, double *o_y, double xs, double xe, double xstep): 求任意一次常微分方程式的解(初值问题) |
|
int F_dif_equ2(const char *Fxyy1, double x0, double y0, double y01, double h, double *o_x, double *o_y, double xs, double xe, double xstep): 求任意二次常微分方程式的解(初值问题) |
|
int F_dif_equ3(const char *Fxyy1y2, double x0, double y0, double y01, double y02, double h, double *o_x, double *o_y, double xs, double xe, double xstep): 求任意三次常微分方程式的解(初值问题) |
|
16.数值微分函数
int F_dif_xiyi(const double *i_x, const double *i_y, int n, double *o_x, double *o_dydx, double xs, double xe, double xstep): X单调数值曲线的三次样条一次微分 |
|
int F_dif_curve(const double *i_x, const double *i_y, int n, double *o_dydx, int Free0_Close1): 任意数值曲线的三次样条一次微分 |
|
int F_dif_fx(const char *Fx, double *o_x, double *o_dydx, double xs, double xe, double xstep): 函数曲线F(x)的数值微分 |
|
int F_taylor(const char *Fx, double x0, double dx, int n, double *o_c): 函数F(x)在x0的n次台劳展开 |
|
17.数值积分函数
double F_intg_trape(const double *i_x, const double *i_y, int nxy): 返回数值曲线的数值积分值(台形法) |
|
int F_intg_trape1(const double *i_x, const double *i_y, int nxy, double *o_dxdy): 求数值曲线的数值积分值曲线(台形法) |
|
double F_intg_simp2(const double *i_x, const double *i_y, int nxy): 求数值曲线的数值积分值(2次辛谱森法) |
|
int F_intg_simp21(const double *i_x, const double *i_y, int nxy, double *o_dxdy): 求数值曲线的数值积分值曲线(2次辛谱森法) |
|
double F_intg_simp3(const double *i_x, const double *i_y, int nxy): 求数值曲线的数值积分值(3次辛谱森法) |
|
int F_intg_simp31(const double *i_x, const double *i_y, int nxy, double *o_dxdy): 求数值曲线的数值积分值曲线(3次辛谱森法) |
|
double F_intg_spline(const double *i_x, const double *i_y, int nxy, double sx, double ex): 求X单调的数值曲线的三次样条数值积分值 |
|
double F_intg_fx(const char *i_Fx, double sx, double ex, double xstep): 求函数曲线F(x)的数值积分值(台形法) |
|
int F_intg_fx1(const char *i_Fx, double sx, double ex, double xstep, double *o_x, double *o_dxdy): 求函数曲线F(x)的数值积分值曲线(台形法) |
|
18.拉谱拉斯逆变换函数
int F_lapinv_fx(const char *Fs, double *o_t, double *o_y, double st, double et, double tstep): 任意式F(s)的拉谱拉斯逆变换 |
|
int F_lapinv_frac(const double *i_fpoly, int fpoly_num, const double *i_gpoly, int gpoly_num, double *o_t, double *o_y, double st, double et, double tstep): 分数多项式([f]/[g]) 的拉谱拉斯逆变换 |
|
int F_lapinv_fx1(const char *Fs, double *o_t, double *o_y, double st, double et, double tstep, int n): 任意式F(s)的拉谱拉斯逆变换精度(0-5)指定 |
|
19.高速富里叶变换、窗口函数
int F_fft(const double *i_Re, const double *i_Im, int i_num, double *o_Re, double *o_Im, int k): 高速富里叶正逆变换(复数输入) |
|
int F_fft_hz(const double *i_Re, const double *i_Im, int i_num, double *o_Re, double *o_Im, double *o_Hz, double dt): 高速富里叶正变换(复数输入,对应Hz输出) |
|
int F_tfft(const double *i_Re, int i_num, double *o_A,double *o_Phase): 高速富里叶正变换(实数输入,振幅相位输出) |
|
int F_tfft_inv(const double *i_A, const double *i_Phase, int i_num, double *o_Re, double *o_Im): 高速富里叶逆变换(振幅相位输入,复数输出) |
|
int F_tfft_hz(const double *i_Re, int i_num, double *o_A, double *o_Phase, double *o_Hz, double dt): 高速富里叶正变换(实数输入, 振幅相位对应Hz输出) |
|
int F_dft(const double *i_Re, const double *i_Im, int i_num, double *o_Re, double *o_Im, int k): 离散富里叶正逆变换(个数任意,复数输入出) |
|
int F_dft_2d(const double *i_Re, const double *i_Im, int i_num, int Nx, int Ny, double *o_Re, double *o_Im, int k): 二次元富里叶正逆变换(复数输入出) |
|
int F_tdft_2d(const double *i_Re, int i_num, int Nx, int Ny, double *o_Re, double *o_Im): 二次元富里叶正变换(实数输入,振幅相位输出) |
|
int F_filter(const double *i_d, int i_num, double *o_d, double dt, double L_Hz, double H_Hz): 理想型带通滤波器[L_Hz,H_Hz]( 使用高速富里叶变换) |
|
int F_filter1(const double *i_d, int i_num, double *o_d, double dt, double L_Hz, double H_Hz): 理想型带止滤波器[L_Hz,H_Hz]( 使用高速富里叶变换) |
|
int F_wn_hanning(const double *i_d, int i_num, int centerCell, int width, double *o_d): 时系列[i]的Hanning窗口处理 |
|
int F_wn_hamming(const double *i_d, int i_num, int centerCell, int width, double *o_d): 时系列[i]的Hamming 窗口处理 |
|
int F_wn_triangle(const double *i_d, int i_num, int centerCell, int width, double *o_d): 时系列[i]的Triangle 窗口处理 |
|
int F_wn_blackman(const double *i_d, int i_num, int centerCell, int width, double *o_d): 时系列[i]的Blackman 窗口处理 |
|
int F_wn_square(const double *i_d, int i_num, int centerCell, int width, double *o_d): 时系列[i]的Square 窗口处理 |
|
int F_wn_tsg(const double *i_d, int i_num, int centerCell, int width, double *o_d): 时系列[i]的Three Sigma Gauss 窗口处理 |
|
int F_win_center(const double *i_d, int i_num, double *o_d, int half_width, int add_cells, int type): 时系列的中心对称窗口处理(种类:0-5) |
|
int F_win_left(const double *i_d, int i_num, double *o_d, int half_width, int add_cells, int type): 时系列的[i]的左侧对称窗口处理(种类:0-5) |
|
int F_win_right(const double *i_d, int i_num, double *o_d, int half_width, int add_cells, int type): 时系列的[i]的右侧对称窗口处理(种类:0-5) |
|
20.频谱推定函数
int F_pow_spect(const double *i_d, int i_num, double *o_d): 时系列[i]的能率频谱推定(自相关后富里叶变换) |
|
int F_pow_spect_hz(const double *i_d, int i_num, double *o_d, double *o_Hz, double dt): 时系列[i]的能率频谱推定(自相关后富里叶变换) |
|
int F_mem_spect(const double *i_d, int i_num, double *o_Hz, double *o_d, double dt, double sHz, double eHz, double stepHz, int N): 时系列[i]的频谱推定(最大安拖罗皮法,对应Hz输出) |
|
int F_mem_spect1(const double *i_d, int i_num, double *o_c, int N): 时系列[i]的频谱推定(最大安拖罗皮法,系数输出) |
|
21.平面、空间插值函数
int F_lagrange(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 有序点列的拉哥郎日插值 |
|
int F_spline(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 有序点列的自然三次样条插值(X单调) |
|
int F_spline1(const double *i_x, const double *i_y, int i_num, double *o_c): 求自然三次样条插值的区分多项式系数 |
|
int F_spline_curve(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int s_div, int f): 有序点列的自然三次样条插值(任意曲线) |
|
int F_b_spline(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int s_div): 有序点列的B自然三次样条插值(1次2次微分连续) |
|
int F_draft_spline(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int s_div): 有序点列的云形自然三次样条插值(通过数据点,1次微分连续 |
|
int F_mix_spline(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int s_div): 有序点列的混合自然三次样条插值(通过数据点,2次微分连续) |
|
int F_bezier(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int s_div): 有序点列的贝塞尔插值 |
|
int F_nbezier(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int s_div, int n): 有序点列的N次贝塞尔插值 |
|
int F_full_bezier(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int w_div): 有序点列的完全贝塞尔插值 |
|
int F_spline_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, int i_nx, int i_ny, double *o_x, double *o_y, double *o_z, int o_Nx, int o_Ny): 列型行列形式数据的三次元插值(小四角形内指定均分数) |
|
int F_spline_3d1(const double *i_x, const double *i_y, const double *i_z, int i_num, int i_nx, int i_ny, double *o_x, double *o_y, double *o_z, int o_tNx, int o_tNy): 列型行列形式数据的三次元插值(指定均分总数) |
|
int F_fem_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, int i_nx, int i_ny, double *o_x, double *o_y, double *o_z, int o_Nx, int o_Ny): 列型行列形式数据的三次元插值(FEM法, 小四角形内指定均分 |
|
int F_fem_3d1(const double *i_x, const double *i_y, const double *i_z, int i_num, int i_nx, int i_ny, double *o_x, double *o_y, double *o_z, int o_tNx, int o_tNy): 列型行列形式数据的三次元插值(FEM法, 小四角形内指定 |
|
int F_spline_3d2(const double *i_x, const double *i_y, const double *i_z, int i_num, int i_nx, int i_ny, double *o_x, double *o_y, double *o_z, double x1, double y1, double x2, double y2, int o_tNx, int o_tNy): 三次元插值(输出范围指定,可扩张) |
|
double F_spline_3d3(const double *i_x, const double *i_y, const double *i_z, int i_num, int i_nx, int i_ny, double ox, double oy): 列型行列形式数据的任意点的三次元插值(范围外可) |
|
int F_auto_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, int nx, int ny, double *o_x, double *o_y, double *o_z, double x1, double y1, double x2, double y2, int o_tNx, int o_tNy): 无规则点集规则自动化后三次元插值 |
|
int F_auto_3d1(const double *i_x, const double *i_y, const double *i_z, int i_num, int o_nx, int o_ny, double *o_x, double *o_y, double *o_z, double x1, double y1, double x2, double y2): 无规则空间点集规则自动化 |
|
22.近似、曲线拟合函数
int F_fit_poly(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep, int N): N次多项式近似,返回文字近似式 |
|
int F_fit_poly1(const double *i_x, const double *i_y, int i_num, double *o_c, int N): N次多项式近似,系数输出 |
|
int F_fit_poly2(const double *i_x, const double *i_y, int i_num, const double *i_ox, int ox_num, double *o_y, int N): N次多项式近似,指定[oix], 返回文字近似式 |
|
int F_fit_poly3(const double *i_x, const double *i_y, int i_num, double alpha, const double *i_ox, int ox_num, double *o_yl, double *o_yh, int N): 推定N次多项式近似的信赖区间 |
|
int F_fit_poly4(const double *i_x, const double *i_y, int i_num, double alpha, const double *i_ox, int ox_num, double *o_yl, double *o_yh, int N): 预测N次多项式近似的信赖区间 |
|
double F_fit_poly5(const double *i_x, const double *i_y, int i_num, int N): 返回近似的零假说检定值(计算有意水准S) |
|
int F_fit_npoly(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep, const double *i_c, int c_num): 任意指定次数多项式近似, 返回文字近似式 |
|
int F_fit_npoly1(const double *i_x, const double *i_y, int i_num, double *o_c, const double *i_c, int c_num):任意指定次数多项式近似,系数输出 |
|
int F_fit_npoly2(const double *i_x, const double *i_y, int i_num, const double *i_ox, int ox_num, double *o_y, const double *i_c, int c_num): 任意指定次数多项式近似, 指定[oix], 返回文字近似式 |
|
int F_fit_exp(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 指数y等于A*exp(Bx)近似, 返回文字近似式 |
|
int F_fit_ln(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 自然对数y等于A*ln(Bx)近似, 返回文字近似式 |
|
int F_fit_log(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 常用对数y等于A*log(Bx)近似, 返回文字近似式 |
|
int F_fit_10exp(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 指数y等于A*10^(Bx)近似, 返回文字近似式 |
|
int F_fit_pow(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep): 乘方y等于A*x^B近似, 返回文字近似式 |
|
int F_fit_ellips(const double *i_x, const double *i_y, int i_num, double *o_c): 椭圆近似([o][1]:圆心x[o][2]:圆心y[o][3]:半径x[o][4]:半径y), 返回文字近似式 |
|
int F_fit_best(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep, double *o_c,int *oc_num): 最适曲线拟合近似([残差]:连续的曲线编号和残差的对), 返回文 |
|
int F_fit_best1(const double *i_x, const double *i_y, int i_num, double *o_c, int *oc_num): 最适曲线拟合近似, 最适曲线的系数[o系数]输出(A,B,C,D,..的顺) |
|
int F_fit_best2(const double *i_x, const double *i_y, int i_num, const double *i_ox, int ox_num, double *o_y, double *o_c, int *oc_num): 最适曲线拟合近似,指定[OIX]([残差]:连续的曲线编号和残差的对), 返回文 |
|
int F_fit_one(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep, int No): 指定编号拟合曲线近似, 返回文字近似式 |
|
int F_fit_one1(const double *i_x, const double *i_y, int i_num, double *o_c, int No): 指定编号拟合曲线近似, 曲线的系数[o系数]输出(A,B,C,D,..的顺) |
|
int F_fit_one2(const double *i_x, const double *i_y, int i_num, const double *i_ox, int ox_num, double *o_y, int No): 指定编号拟合曲线近似, 指定[OIX] 返回文字近似式 |
|
int F_fit_one3(const double *i_x, const double *i_y, int i_num, double alpha, const double *i_ox, int ox_num, double *o_yl, double *o_yh, int No): 推定指定编号拟合曲线的信赖区间 |
|
int F_fit_one4(const double *i_x, const double *i_y, int i_num, double alpha, const double *i_ox, int ox_num, double *o_yl, double *o_yh, int No): 预测指定编号拟合曲线的信赖区间 |
|
double F_fit_one5(const double *i_x, const double *i_y, int i_num, int No):返回指定编号拟合曲线的零假说检定值(计算有意水准S) |
|
int F_fit_frac(const double *i_x, const double *i_y, int i_num, double *o_f, int *of_num, double *o_g, int f_N, int g_N): 次数指定的分数多项式近似 |
|
int F_multi_reg(const double *i_mtx, const double *i_y, double *o_c): 多重回归近似 |
|
int F_fit_univ(const char *FxABC, const double *i_x, const double *i_y, int i_num, const double *i_c, int ic_num, double e, double *o_x, double *o_y, double xs, double ex, double xstep, double *o_c, int *oc_num): 任意式近似(A,B,C:要求的系数) |
|
int F_fit_univ1(const char *FxABC, const double *i_x, const double *i_y, int i_num, const double *i_c, int ic_num, double e, double *o_c): 任意式近似(A,B,C: 要求的系数),系数输出 |
|
int F_fit_univ2(const char *FxABC, const double *i_x, const double *i_y, int i_num, const double *i_c, int ic_num, double e, const double *i_ox, int ox_num, double *o_y): 任意式近似(A,B,C: 要求的系数),指定[oix] |
|
int F_fit_normal(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double xs, double ex, double xstep, double *o_c,int *oc_num): 正规分布曲线近似 |
|
int F_fit_overlap_init(const double *i_x, const double *i_y, int i_num, double *o_c, int type): 重叠波形的个数判断(初系数输出) |
|
int F_fit_overlap(const double *i_x, const double *i_y, int i_num, double e, double *o_x, double *o_y, double xs, double ex, double xstep, double *o_c,int *oc_num, int type): 重叠波形分离(自动决定初系数) |
|
int F_fit_overlap1(const double *i_x, const double *i_y, int i_num, const double *i_c, int ic_num, double e, double *o_x, double *o_y, double xs, double ex, double xstep, double *o_c,int *oc_num, int type): 重叠波形分离(自动决定初) |
|
23..相关、平滑函数
int F_auto_cor(const double *i_d, int i_num, double *o_d, int f1, int f2): 数值组的自相关 |
|
int F_xiyi_cor(const double *i_x, int ix_num, const double *i_y, int iy_num, double *o_d): 两数值组的互相关 |
|
int F_fxyi_cor(const char *Fx, const double *i_y, int iy_num, double *o_d, double dx): 函数和数值组的互相关 |
|
int F_smooth(int n, const double *i_d, int i_num, double *o_d): 按多项式适用法移动平滑(有重叠) |
|
int F_smooth1(int n, const double *i_d, int i_num, double *o_d): 移动平滑法的平滑(同一重叠) |
|
int F_smooth_fft(double p, const double *i_d, int i_num, double *o_d): 富里叶变换平滑化(消除振幅比p%以下的频谱成分,0% |
|
int F_smooth_fft1(double p, const double *i_d, int i_num, double *o_d): 富里叶变换平滑化(只保留先头p%的频谱成分,0% |
|
24.数值统计计算函数
double F_sum(const double *i_d, int i_num): 返回数值组[i]的和 |
|
double F_abs_sum(const double *i_d, int i_num): 返回数值组[i]的绝对值和 |
|
double F_mean(const double *i_d, int i_num): 返回数值组[i]的平均值 |
|
double F_meandev(const double *i_d, int i_num): 返回数值组[i]的平均绝对偏差 |
|
double F_stddev(const double *i_d, int i_num): 返回数值组[i]的标准偏差(/n) |
|
double F_stddev1(const double *i_d, int i_num): 返回数值组[i]的标准偏差(/(n-1)) |
|
double F_abs_mean(const double *i_d, int i_num): 返回数值组[i]的绝对值的平均值 |
|
double F_square_mean(const double *i_d, int i_num): 返回数值组[i]的平方值的平均值 |
|
double F_geo_mean(const double *i_d, int i_num): 返回数值组[i]的(正实数)几何平均值 |
|
double F_ham_mean(const double *i_d, int i_num): 返回数值组[i]的(非零数)调和平均值 |
|
double F_variance(const double *i_d, int i_num): 返回数值组[i]的分散 |
|
int F_histgram(const double *i_d, int i_num, double *o_val, double *o_count): 求数值组[i]的直方图([o]: 值,[o个数]: 值,[o]对应的个数) |
|
int F_histgram1(const double *i_d, int i_num, const double *i_ref, int ref_num, double *o_count): 按照数值组[ref]区间分割, 求数值组[i]的直方图(邻接两组元定义一个区间) |
|
double F_correlation(const double *i_x, const double *i_y, int i_num): 返回两数值组的相关系数 |
|
double F_test_t(const double *i_x, int x_num, const double *i_y, int y_num): 返回两分布平均差的T检定(等分散) |
|
double F_test_tu(const double *i_x, int x_num, const double *i_y, int y_num): 返回两分布平均差的T检定(异分散) |
|
double F_test_tp(const double *i_x, const double *i_y, int i_num): 返回两分布平均差的T检定(对标本) |
|
double F_test_f(const double *i_x, int x_num, const double *i_y, int y_num): 返回两分布平均差的F检定 |
|
double F_t_distrib(int n, double alpha): 返回自由度n时概率的T分布 |
|
double F_f_distrib(int m, int n, double alpha): 返回自由度m和n时概率T的F分布 |
|
double F_chi_distrib(int n, double alpha): 返回自由度n时概率的K2乘分布 |
|
int F_linear_prog(const double *i_mtx, int m1, int m2, int m3, double *o_c) : 线性计划法(辛谱赖枯斯法) |
|
28.数据形式变换函数
int F_xiyi_to_xyi(const double *i_x, const double *i_y, int i_num, double *o_d): 在[o]内将[ix]和[iy]一个一个交替放入 |
|
int F_xiyizi_to_xyzi(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_d): 在[o]内将[ix]和[iy] [iz]一个一个交替放入[o] |
|
int F_xyi_to_xiyi(const double *i_d, int i_num, double *o_x, double *o_y): 将[i]的组元一个一个交替放入[ox]和[oy] |
|
int F_xyzi_to_xiyizi(const double *i_d, int i_num, double *o_x, double *o_y, double *o_z): 将[i]的组元一个一个交替放入[ox]和[oy][oz] |
|
int F_mtx_to_net(const double *i_mtx, double *o_d): 行列变换成列型行列 |
|
int F_net_to_mtx(const double *i_d, int i_num, double *o_d, int m, int n): 列型行列变换成行列 |
|
int F_xy_to_net(const double *i_x, int ix_num, const double *i_y, int iy_num, double *o_x, double *o_y): XY的2单列坐标变换成能表示四角網目的2个列型行列 |
|
int F_net_to_xy(const double *i_x, const double *i_y, int i_num, double *o_x, int *ox_num, double *o_y): 能表示四角網目的2个列型行列变换成XY的2单列坐标 |
|
int F_xiyi_to_x2y2(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y): 曲线分解成平面线段(连续两组元表示一根线段) |
|
int F_xiyizi_to_x2y2z2(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_x, double *o_y, double *o_z): 空间曲线分解成空间线段(连续两组元表示一根线段) |
|
int F_x2y2_to_xiyi(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y): 平面线段(连续两组元表示一根线段)连接成曲线 |
|
int F_x2y2z2_to_xiyizi(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_x, double *o_y, double *o_z): 空间线段(连续两组元表示一根线段)连接成空间曲线 |
|
int F_net_to_x4y4(const double *i_x, const double *i_y, int i_num, int m, int n, double *o_x, double *o_y): 列型行列分解成平面独立四角形群(连续4组元表示一个四角形) |
|
int F_net_to_x4y4z4(const double *i_x, const double *i_y, const double *i_z, int i_num, int m, int n, double *o_x, double *o_y, double *o_z): 列型行列分解成空间独立四角形群 |
|
int F_ary_to_net(double sx, double ex, double xstep, double sy, double ey, double ystep, double *o_x, double *o_y): 做成表示四角網目的2个列型行列 |
|
int F_ary_to_x4y4(double sx, double ex, double xstep, double sy, double ey, double ystep, double *o_x, double *o_y): 做成平面独立四角形群(连续4组元表示一个四角形) |
|
int F_fem_to_x3y3z3(const double *i_x, const double *i_y, const double *i_z, int i_num, const double *i_n1, const double *i_n2, const double *i_n3, int in_num, double *o_x, double *o_y, double *o_z): FEM型3D数据变换成独立三角形群 |
|
int F_fem_to_x4y4z4(const double *i_x, const double *i_y, const double *i_z, int i_num, const double *i_n1, const double *i_n2, const double *i_n3, const double *i_n4, int in_num, double *o_x, double *o_y, double *o_z): FEM型3D数据变换成独立四角形群 |
|
int F_x3y3z3_to_fem(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_x, double *o_y, double *o_z, int *o_num, double *o_n1, double *o_n2, double *o_n3): 独立三角形群3D数据变换成 |
|
int F_x4y4z4_to_fem(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_x, double *o_y, double *o_z, int *o_num, double *o_n1, double *o_n2, double *o_n3, double *o_n4): 独立四角形群3D数据变换成FEM |
|
int F_mtx_trans1(const double *i_mtx, double *o_mtx, int type): 行列的纵横排列 |
|
int F_net_trans(const double *i_d, int i_num, int m, int n, double *o_d, int type): 列型行列的纵横排列 |
|
int F_arrange_2d(const double *i_x, const double *i_y, int i_num, int type, double x0, double y0, double *o_x, double *o_y): 靠近(x0,y0)对平面三角形群/四角形群再整列 |
|
int F_arrange_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, int type, double x0, double y0, double *o_x, double *o_y, double *o_z): 靠近(x0,y0)对空间三角形群/四角形群再整列 |
|
29.峰值检出(包络线)函数
int F_peak_xiyi(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int type): 峰值检出(包络线) |
|
int F_peak1_xiyi(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int type, double yd): 峰值检出(包络线)(指定阈值yd) |
|
int F_peak2_xiyi(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, int type, double dx, double dy): 峰值检出(包络线)(带延迟x,y) |
|
int F_peak_fx(const char *Fx, double *o_x, double *o_y, double xs, double xe, double xstep, int type): F(x) 峰值检出(包络线) |
|
int F_peak_num(const double *i_x, const double *i_y, int i_num, int type): 返回峰值的数目 |
|
int F_peak1_num(const double *i_x, const double *i_y, int i_num, int type, double yd): 返回峰值的数目(指定阈值yd) |
|
int F_peak2_num(const double *i_x, const double *i_y, int i_num, int type, double dx, double dy): 返回峰值的数目(带延迟x,y) |
|
int F_peak_cell(const double *i_x, const double *i_y, int i_num, int type, int No): 返回指定峰值的组元编号 |
|
int F_peak1_cell(const double *i_x, const double *i_y, int i_num, int type, double yd, int No): 返回指定峰值的组元编号(指定阈值yd) |
|
int F_peak2_cell(const double *i_x, const double *i_y, int i_num, int type, double dx, double dy, int No): 返回指定峰值的组元编号(带延迟x,y) |
|
31.等高线、交线演算函数
int F_contour(const double *i_x, const double *i_y, const double *i_z, int i_num, int type, double z, double *o_x, double *o_y): (z等于z0)时3D数据的等高线 |
|
int F_contour_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, int type, double A, double B, double C, double D, double *o_x, double *o_y): 3D数据和面Ax+By+Cz等于D的2点交线段(面上交线) |
|
int F_contour_3d1(const double *i_x, const double *i_y, const double *i_z, int i_num, int type, double A, double B, double C, double D, double *o_x, double *o_y, double *o_z): 3D数据和面Ax+By+Cz等于D的空间2点交线段 |
|
int F_trans_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, double A, double B, double C, double D, double *o_x, double *o_y, double *o_z, int type): 面Ax+By+Cz等于D直角坐标系和普通直角坐标系的变换 |
|
32.点集的三角、四角分割函数
int F_dots_bound(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y): 平面点集的境界(凸包) |
|
int F_dots_bound1(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y, double angle): 平面点集的境界(凹包) |
|
int F_quad_2d(const double *i_x, const double *i_y, int i_num, int Nx, int Ny, double *o_x, double *o_y): 平面点集分割成规则平面四角形群 |
|
int F_quad_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, int Nx, int Ny, double *o_x, double *o_y, double *o_z): 空间点集分割成规则空间四角形群 |
|
int F_delaunay_2d(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y): 平面点集分割成平面delaunay三角形網 |
|
int F_delaunay_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_x, double *o_y, double *o_z): 空间点集分割成空间delaunay三角形網 |
|
int F_delaunay1_3d(const double *i_x, const double *i_y, const double *i_z, int i_num, double *o_x, double *o_y, double *o_z, int n): 空间点集细分割成空间delaunay三角形網(n=1~5) |
|
int F_varonoi(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y): 由delaunay三角形網作出varonoi图 |
|
33.其它曲线演算函数
int F_triang_circle(double x1, double y1, double x2, double y2, double x3, double y3, double *o_d): 三角形的外接圆圆心([o][1],[o][2])和半径[o][3] |
|
int F_triang_circle1(double x1, double y1, double x2, double y2, double x3, double y3, double *o_d): 三角形的内接圆圆心([o][1],[o][2])和半径[o][3] |
|
double F_area_triang(double a, double b, double c): 3边长的三角形面积 |
|
double F_area_poly(const double *i_x, const double *i_y, int i_num): 返回平面多角形的面积(有序) |
|
int F_barycenter(const double *i_x, const double *i_y, int i_num, double *o_x, double *o_y): 平面多角形的重心位置([ox][1],[oy][1]) |
|
double F_length_2d(const double *i_x, const double *i_y, int i_num): 返回平面曲线全长 |
|
double F_length_3d(const double *i_x, const double *i_y, const double *i_z, int i_num): 返回空间曲线全长 |
|
int F_distance(const double *i_x, const double *i_y, int i_num, double px, double py, double *o_x, double *o_y): 返回点和直线间的最短直线([ox][1],[oy][1]-[ox][2],[oy][2]),返回距离 |
|
int F_rotate_2d(const double *i_x, const double *i_y, int i_num, double angle_x, double angle_y, double *o_x, double *o_y): 平面点集的旋转演算(度) |
|