Files
playbook/skills/tsl-api-reference/references/codegen/builtin/math/optimization.md
T
csh 1f19954dd7 ♻️ refactor(tsl-api-reference): reorganize function reference pages
Move runtime and document pages into their correct scope, remove obsolete pending entries, and regenerate the function index.\nUpdate agent test guidance and API skill routing to match the new reference layout.
2026-07-20 09:08:38 +08:00

15 KiB
Raw Blame History

Builtin - 数学 / 数值方法

any(data, n)

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

参数 类型 说明
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)

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

参数 类型 说明
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)

计算输入序列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)

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

参数 类型 说明
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)

计算灰色关联分析结果。

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

返回:array

se_Gauss(a, b, x)

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

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

返回:any

se_Gauss_Jordan(a, b, x)

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

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

返回:any

se_Ldl(a, b, x)

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

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

返回:any

se_Cholesky(a, b, x)

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

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

返回:any

se_Gauss_Seidel(a, b, x)

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

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

返回:any

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

根据给定矩形域上的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)

根据给定矩形域上的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)

记录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)

合并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)

最邻近插值

参数 类型 说明
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)

线性插值

参数 类型 说明
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)

分段三次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)

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

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

返回:array

ppval(pp, xx)

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

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

返回:array

ig_Trapezoid_1(a, b, call_back, v)

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

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

返回:any

ig_Trapezoid_2(a, b, call_back, v)

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

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

返回:any

ig_Simpson_1(a, b, call_back, v)

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

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

返回:any

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

用变步长辛普森(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)

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

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

返回:any

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

发送命令到客户端执行。

参数 类型 说明
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)

写入全局缓存。

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

返回:any