Files
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

552 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Builtin - 数学 / 数值方法
## `any(data, n)`
声明:function
判断任意值或数组或数组其行列数据的真假,集合中只要有一个元素是真则为真。
| 参数 | 类型 | 说明 |
| ------ | ------- | ----------------------------------------------------------------------- |
| `data` | any | 当N缺省或取默认值0时,可以为任意数据,否则只能是数组。 |
| `n` | integer | 若取值0,对Data整体判断,如果Data是数组,则对所有元素进行判断,缺省值。 |
返回:real/table
### 示例
范例一:
```tsl
// 判断非数组的真假
return any('a', 0);
// 输出:
// 1
```
范例二:
```tsl
// 判断特殊数据类型的真假
return any(array(1, '', ' ', nan, nil, inf, -inf, array()), 1);
// 结果
```
范例三:
```tsl
// 判断二维数组的行
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’列中。
```
范例四:
```tsl
// 判断多维数组的行
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
```
范例五:
```tsl
// 判断多维数组的列
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
### 示例
范例一:
```tsl
// 判断数组中所有元素是否都为真
return all(array(1, 2, -1, 1, 9));
// 输出:
// 1
```
范例二:
```tsl
// 判断特殊数据类型的真假
return all(array(1, '', ' ', nan, nil, inf, -inf, array()), 1);
// 结果
```
范例三:
```tsl
// 判断二维数组的行
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判断为假。
```
范例四:
```tsl
// 判断多维数组的行
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
```
范例五:
```tsl
// 判断多维数组的列
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
### 示例
```tsl
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
### 示例
```tsl
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
### 示例
```tsl
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
### 示例
```tsl
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
### 示例
```tsl
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
### 示例
```tsl
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
### 示例
```tsl
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
### 示例
```tsl
// 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