Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/math/numerical_calculation-matrix.md
T

6.1 KiB

数学函数 / 数值计算 / 矩阵运算及分解

chol(h, l, p, options, sneg)

声明:function

进行乔列斯基分解,H对称正定,则可以得到三角阵L

参数 类型 说明
h array 需要被分解的对称矩阵,正定矩阵的分解才能成功
l array 变参返回乔列斯基分解得到的三角阵
p integer 变参返回H的分解信息,-1表示全部分解成功,否则表示分解到第p步
options array 三角阵选项,默认'upper'为上三角,'lower' 为下三角
sneg array 当 H 非正定时计算曲率方向,正定时为空

返回:array

示例

h := corr(rand(100, 4));
chol(h, l, p); // 乔列斯基分解
if p = -1 then return l; // p=-1表示分解成功

cond(x)

声明:function

求矩阵 X 的条件数,最大奇异值除最小奇异值

参数 类型 说明
x array array 需要求条件数的矩阵或二维数组

返回:real

示例

x := array((9, 1), (-1, 0), (0, 2), (1, 1));
return cond(x); // 输出:4.22

det(a)

声明:function

行列式

参数 类型 说明
a array 二维数字数组 样本

返回:real

示例

a := array((1, 2), (3, 4));
return det(a); // 输出:-2

diag(a)

声明:function

对角阵

参数 类型 说明
a array array 数组

返回:array

示例

a := array((2, 1), (1, 3));
return diag(a); // 输出:array(2,3);

eigen(a, eigen, eigenvectors, isreal)

声明:function

特征根与特征向量

参数 类型 说明
a array array 特征值分解的数据
eigen array array 变参返回特征值
eigenvectors array array 变参返回特征向量
isreal integer bool 是否只输出实特征值及特征向量

返回:integer

示例

a := array((1, 2), (3, 4));
eigen(a, eigen);
return eigen;
// array(-0.37,5.37)

Eigen_Jacobi(matrix, eigen_values, eigen_vectors)

声明:function

用 Jacobi 方法计算矩阵特征值和特征向量

参数 类型 说明
matrix array 待分解矩阵
eigen_values any 接收特征值数组
eigen_vectors any 接收特征向量矩阵

返回:void

示例

matrix := array((2.0, 1.0), (1.0, 2.0));
eigen_values := array();
eigen_vectors := array();
Eigen_Jacobi(matrix, eigen_values, eigen_vectors);
return array(eigen_values, eigen_vectors);
// 输出:返回特征值数组和特征向量矩阵

isDefinite(h)

声明:function

判断矩阵是否正定、半正定,采用 Cholesky 分解方法

参数 类型 说明
h array array 样本

返回:real

示例

x := array((3, 1), (1, 4));
return isDefinite(x); // 输出:1

isSymmetry(a, tol)

声明:function

判断是否为对称矩阵

参数 类型 说明
a array array 二维数组
tol real real 精度

返回:integer

示例

a := array((2, 1), (1, 3));
return isSymmetry(a, 0.1); // 输出:1

norm2(a, flag)

声明:function

范数

参数 类型 说明
a array 二维数字数组 样本
flag string string 范数类型

返回:real

示例

a := array((2, 1), (1, 3));
return norm2(a, 'inf'); // 输出:4

orth(a)

声明:function

矩阵范围内的标准正交基向量

参数 类型 说明
a array 数组,

返回:array

示例

// 计算矩阵A的标准正交基
a := array((0, 1), (1, 1), (1, 0));
return orth(a);

pinv(a, t)

声明:function

伪逆

参数 类型 说明
a array array 矩阵
t real real 精度 默认为 2.220446049250313e-016

返回:array

示例

x := array((9, 1), (-1, 0), (0, 2), (1, 1));
return pinv(x);

reIndex2(data, flag)

声明:function

修改数组的行标或列名,主要用于字符串下标修改为数字下标等

参数 类型 说明
data array,tablearray
flag integer

返回:array,tablearray

示例

范例01:将表列标改为数字

a := array('C': ('A': 1, 'B': 'too'), 'D': ('A': 2, 'B': 'two'));
return reIndex2(a, 0);

范例02:将行列标作为首列首行

a := array('C': ('A': 1, 'B': 'too'), 'D': ('A': 2, 'B': 'two'));
return reIndex2(a, 5);

roots(p)

声明:function

一元n次方程求根

参数 类型 说明
p array array 多项式

返回:array

示例

// 求根:3x^3+x^2+x^1+0^0=0
return roots(array(0, 1, 1, 3));

Standarize_II(sample, leib)

声明:function

数据预处理,对二维数字数组进行标准化化处理;行:样本个数;列:因子个数

参数 类型 说明
sample array 二维数字数组 样本
leib any Int 标准化类型

返回:array