Files
playbook/skills/tsl-api-reference/references/codegen/builtin/math/optimization.md
T
csh 13be5ea0aa feat(tsl-api-reference): index class and unit APIs
Migrate reference pages to declaration-line storage and rebuild the
13-column index.

Add qualified member lookup plus regression and end-to-end coverage.
2026-07-29 15:47:46 +08:00

16 KiB
Raw Blame History

Builtin - 数学 / 数值方法

any(data, n)

声明:function

判断任意值或数组或数组其行列数据的真假,集合中只要有一个元素是真则为真。

参数 类型 说明
data any 当N缺省或取默认值0时,可以为任意数据,否则只能是数组。
n integer 若取值0,对Data整体判断,如果Data是数组,则对所有元素进行判断,缺省值。

返回:real/table

示例

范例一:

// 判断非数组的真假
return any('a', 0);
// 输出:
// 1

范例二:

// 判断特殊数据类型的真假
return any(array(1, '', ' ', nan, nil, inf, -inf, array()), 1);
// 结果

范例三:

// 判断二维数组的行
f := array('e': ('A': 1, 'B': 0), 'f': ('A': 2, 'B': ''), 'd': ('A': 3, 'B': nil));
return any(f, 1);
// 输出:’e’,’f’,’d’为行标,表示该行结果。其中,’d’行中,对集合(3,nil)判断为真,则该行值判断结果为1,’B’列中。

范例四:

// 判断多维数组的行
t := array('e': ('A': 0, 'B': 0), 'f': ('A': 2, 'B': array(1, 0)));
return any(t, 1);
// 输出:’f’行中对集合(0,array(1,0))->(0,1)->1,则该列结果为1

范例五:

// 判断多维数组的列
t := array('e': ('A': 1, 'B': 1), 'f': ('A': 2, 'B': array(1, 0)));
return any(t, 2);
// 结果

all(data, n)

声明:function

所有为真,判断任意值或数组或数组其行列数据的真假,集合中只要有一个元素为假则为假。

参数 类型 说明
data any 当N缺省或取默认值0时,可以为任意数据,否则只能是数组。
n integer 若值为0,则对Data整体判断,如果Data是数组,则对所有元素进行判断,缺省值。

返回:real/table

示例

范例一:

// 判断数组中所有元素是否都为真
return all(array(1, 2, -1, 1, 9));
// 输出:
// 1

范例二:

// 判断特殊数据类型的真假
return all(array(1, '', ' ', nan, nil, inf, -inf, array()), 1);
// 结果

范例三:

// 判断二维数组的行
f := array('e': ('A': 1, 'B': 0), 'f': ('A': 2, 'B': 3), 'd': ('A': 3, 'B': nil));
return all(f, 1);
// 输出:’e’,’f’,’d’为行标,表示该行判断结果。其中,’d’行中,对集合(3,nil)判断为假,因为其中nil判断为假。

范例四:

// 判断多维数组的行
t := array('e': ('A': 1, 'B': 1), 'f': ('A': 2, 'B': array(1, 0)));
return all(t, 1);
// 输出:’f’行中对集合(2,array(1,0))->(1,0)->0,则该行结果为0

范例五:

// 判断多维数组的列
t := array('e': ('A': 1, 'B': 1), 'f': ('A': 2, 'B': array(1, 0)));
return all(t, 2);
// 输出:’B’列中对集合(1,array(1,0))->(1,0)->0,则该行结果为0

conv(a, b)

声明:function

计算输入序列A、B的卷积

参数 类型 说明
a array 一维数字数组
b array 一维数字数组

返回:array

示例

a := array(0.4044, 0.32362, 0.38548, 0.17435, 0.08502, 0.41899, 0.02551, 0.46226);
b := array(0.82284, 0.7466, 0.17411, 0.85894, 0.7105, 0.51353, 0.30399, 0.01498, 0.0914, 0.36445, 0.14731, 0.1659, 0.98853, 0.44569, 0.11908);
return conv(a, b);

setSysParams(params)

声明:function

一次性设置整个系统参数。

参数 类型 说明
params array

返回:integer

示例

s0 := getSysParams();
echo toStn(s0), '\r\n';
r := setSysParams(array("StockID": "SZ000001"));
s1 := getSysParams();
echo r, ':', toStn(s1), '\r\n';
// 打印结果:

GM_Icorr(values, target_index)

声明:function

计算灰色关联分析结果。

参数 类型 说明
values array 待分析序列矩阵
target_index any 参考序列下标

返回:array

se_Gauss(a, b, x)

声明:function

用全选主元高斯消去法求解n阶线性方程组AX = B

参数 类型 说明
a array
b array
x array

返回:any

se_Gauss_Jordan(a, b, x)

声明:function

用全主元高斯-约当(Gauss-Jordan)消去法同时求解系数矩阵相同而常数向量不同的m个n阶线性方程组AX = B

参数 类型 说明
a array
b array
x array

返回:any

se_Ldl(a, b, x)

声明:function

用LU分解法求解系数矩阵为对称、右端具有m组常数向量的线性方程组 AX = B

参数 类型 说明
a array 实型二维数组,大小为NN。存放方程组的系数矩阵,此系数矩阵必须为对称矩阵(即)
b array 实型二维数组,大小为NM。存放方程组右端的常数向量
x array 实型一维数组,大小为NM。返回方程组的解向量

返回:any

se_Cholesky(a, b, x)

声明:function

用乔列斯基(Cholesky)分解法(即平方根法)求解系数矩阵为对称正定、且右端具有m组常数向量的线性方程组AX = B

参数 类型 说明
a array 实型二维数组,大小为NN。存放方程组的系数矩阵,此系数矩阵必须为对称矩阵(即)
b array 实型二维数组,大小为NM。存放方程组右端的常数向量
x array 实型一维数组,大小为NM。返回方程组的解向量

返回:any

se_Gauss_Seidel(a, b, x)

声明:function

用高斯-赛德尔迭代法求解系数矩阵具有主元占优的线性方程组AX = B

参数 类型 说明
a array 实型二维数组,NN。存放方程组的系数矩阵
b array 实型二维数组,NM。存放方程组右端的常数向量
x array 实型一维数组,NM。返回方程组的解向量

返回:any

ip_SLQ(x, y, z, xv, yv, zv)

声明:function

根据给定矩形域上的nXm个结点(i=0,1…..n-1j = 0 , 1, ….., m-1)上的函数值Zij = Z(Xi,Yj),利用二元三点插值公式计算指定插值点(u,v)处的函数值w=Z(u,v)

参数 类型 说明
x array 实型一维数组,长度为N。存放给定nXm个点的X方向上的n个坐标,要求X0<X1...<Xn-1
y array 实型一维数组,长度为N。存放给定nXm个点的X方向上的m个坐标,要求Y0<Y1...<Ym-1
z array 实型二维数组,体积为为nXm。存放给定nXm个点上的函数值
xv float 实型变量,插值点的X坐标
yv float 实型变量,插值点的Y坐标
zv float 实型变量,返回的插值结果

返回:any

ip_SLG(x, y, z, xv, yv, zv)

声明:function

根据给定矩形域上的nXm个结点(i=0,1…..n-1j = 0 , 1, ….., m-1)上的函数值Zij = Z(Xi,Yj),利用二元插值公式计算指定插值点(u,v)处的函数值w=Z(u,v)

参数 类型 说明
x array 实型一维数组,长度为N。存放给定nXm个点的X方向上的n个坐标,要求X0<X1...<Xn-1
y array 实型一维数组,长度为N。存放给定nXm个点的X方向上的m个坐标,要求Y0<Y1...<Ym-1
z array 实型二维数组,体积为为nXm。存放给定nXm个点上的函数值
xv float 实型变量,插值点的X坐标
yv float 实型变量,插值点的Y坐标
zv float 实型变量,返回的插值结果

返回:any

histc2(a, b)

声明:function

记录a中的元素在b中第几个区间的位置

参数 类型 说明
a array 一维数组
b array 一维数组

返回:array

示例

uses interp_unit; // 置顶
a := 1->10;
b := 3->7;
return histc2(a, b);
// 输出:array(0,0,1,1,2,3,4,0,0,0)

chckxy(x, y)

声明:function

合并xy后对x列正序排列。

参数 类型 说明
x array 一维数组
y array 一维数组

返回:array

示例

uses interp_unit; // 置顶
x := array(5, 1, 19, 8);
y := array(2, 3, 1, 7);
chckxy(x, y);
return x | y;
// 输出:
// Execute script error at Line:4
// function:__main__:line 4:instruction:usercall: function:chckxy compile error or not found
// function:__main__:line 4:instruction:usercall: function execute error

nearest(x, y, xi)

声明:function

最邻近插值

参数 类型 说明
x array 一维数组 横坐标序列
y array 一维数组 纵坐标序列
xi array 一维数组 插值点序列

返回:array

示例

uses interp_unit; // 置顶
x := array(5, 1, 19, 8);
y := array(2, 3, 1, 7);
xi := array(4, 12);
return nearest(x, y, xi);
// 输出:array(3,1)

linear(x, y, xi)

声明:function

线性插值

参数 类型 说明
x array 一维数组 横坐标序列
y array 一维数组 纵坐标序列
xi array 一维数组 插值点序列

返回:array

示例

uses interp_unit; // 置顶
x := array(5, 1, 19, 8);
y := array(2, 3, 1, 7);
xi := array(4, 12);
return linear(x, y, xi);
// 输出:array(2.6667,1.7778)

pchip(x, y, xx)

声明:function

分段三次hermite插值

参数 类型 说明
x array 一维数组 横坐标序列
y array 一维数组 纵坐标序列
xx array 一维数组 插值点序列

返回:array

示例

uses interp_unit; // 置顶
x := array(5, 1, 19, 8);
y := array(2, 3, 1, 7);
xx := array(4, 12);
return pchip(x, y, xx);
// 输出:array(3.3403,6.9345)

pwch(x, y, s, dx, divdif)

声明:function

计算下xy所对应的不同间隔区间。

参数 类型 说明
x array 一维数组
y array 一维数组
s array 一维数组
dx array 一维数组
divdif array 一维数组

返回:array

ppval(pp, xx)

声明:function

对插值点列的值数据区间中计算出插值。

参数 类型 说明
pp array 二维数组 包含列"x","coefs
xx array 一维数组 插值点序列

返回:array

ig_Trapezoid_1(a, b, call_back, v)

声明:function

用变步长梯形求积法计算定积分

参数 类型 说明
a float 实型变量。积分下限
b float 实型变量。积分上限
call_back string 计算被积函数值的回调
v float 实型变量,返回的积分结果

返回:any

ig_Trapezoid_2(a, b, call_back, v)

声明:function

用自适应梯形求积法计算定积分

参数 类型 说明
a float 实型变量。积分下限
b float 实型变量。积分上限
call_back string 计算被积函数值的回调
v float 实型变量,返回的积分结果

返回:any

ig_Simpson_1(a, b, call_back, v)

声明:function

用变步长辛普森(Simpson)计算定积分

参数 类型 说明
a float 实型变量。积分下限
b float 实型变量。积分上限
call_back string 计算被积函数值的回调
v float 实型变量,返回的积分结果

返回:any

ig_Simpson_2(a, b, call_back1, call_back2, call_back3, v)

声明:function

用变步长辛普森(Simpson)计算二重积分

参数 类型 说明
a float 实型变量。积分下限
b float 实型变量。积分上限
call_back1 string 计算积分下限的回调
call_back2 string 计算积分上限的回调
call_back3 string 计算被积函数f(x,y)函数值的回调
v float 实型变量,返回的积分结果

返回:any

ig_Romberg(a, b, call_back, v)

声明:function

用龙贝格(Romberg)求积法计算定积分,

参数 类型 说明
a float 实型变量。积分下限
b float 实型变量。积分上限
call_back string 计算被积函数值的回调
v float 实型变量,返回的积分结果

返回:any

sendToClient(cmd_type, cmd_text, cmd_param, cmd_data, time_out)

声明:function

发送命令到客户端执行。

参数 类型 说明
cmd_type string 命令类型。
cmd_text string 命令串。
cmd_param any 命令参数。
cmd_data any 命令数据。
time_out integer=300 超时的秒数。默认是300s超时

返回:any

示例

// 1)执行命令:return 100+1
return sendToClient("getdo", "return 100 + 1;", nil, nil);
// 输出:101
// 2)采用系统参数取得数据,将取得的数据相加,并设置超时时间为30s
return sendToClient("getdo", "return getsysparam('a') + getsysparam('b');", nil, array("a": 10, "b": 30), 30);
// 输出:40

setGlobalCache(name, value)

声明:function

写入全局缓存。

参数 类型 说明
name string 缓存键
value any 写入缓存的值

返回:any