# Builtin - 数学 / 矩阵 ## 矩阵运算 ### `mInit(size_or_shape, value)` 生成指定尺寸并填充指定值的 FMArray。 | 参数 | 类型 | 说明 | | --------------- | ----- | ----------------------------------------------- | | `size_or_shape` | array | 一维长度,或形如 `array(rows, cols)` 的尺寸数组 | | `value` | float | 填充值;值的类型决定 FMArray 单元格类型 | 返回:fmarray ### `mInitDiag(rows, cols, value)` 生成对角线填充值的 FMArray。 | 参数 | 类型 | 说明 | | ------- | ------- | ------------ | | `rows` | integer | 行数 | | `cols` | integer | 列数 | | `value` | float | 对角线填充值 | 返回:fmarray ### `mRand(rows, cols)` 生成随机 FMArray。 | 参数 | 类型 | 说明 | | ------ | ------- | ---- | | `rows` | integer | 行数 | | `cols` | integer | 列数 | 返回:fmarray ## 数值微积分 ### `frameMean_JS(data, b_type, equal_var, alpha)` 均值JS压缩估计 | 参数 | 类型 | 说明 | | ----------- | ------ | -------------------------------------------------------------------------------------- | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `b_type` | string | 字符串,压缩目标均值向量,b0:零向量,b1:均值,b2:波动率加权均值,b3:样本均值的均方误差 | | `equal_var` | bool | object | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见JS均值压缩估计 | 返回:array ### `frameMean_BS(data, alpha)` 均值BS压缩估计 | 参数 | 类型 | 说明 | | ------- | ----- | ------------------------------------------------------------------------ | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见BS均值压缩估计 | 返回:array ### `frameMean_BOP(data, b_type, alpha)` 均值BOP压缩估计 | 参数 | 类型 | 说明 | | -------- | ------ | -------------------------------------------------------------------------------------- | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `b_type` | string | 字符串,压缩目标均值向量,b0:零向量,b1:均值,b2:波动率加权均值,b3:样本均值的均方误差 | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见BOP均值压缩估计 | 返回:array ### `frameCov_LW(data, alpha)` 协方差LW压缩估计 | 参数 | 类型 | 说明 | | ------- | ----- | -------------------------------------------------------------------------- | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见LW协方差压缩估计 | 返回:array ### `frameCov_OAS(data, alpha)` 协方差OAS压缩估计 | 参数 | 类型 | 说明 | | ------- | ----- | --------------------------------------------------------------------------- | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见OAS协方差压缩估计 | 返回:array ### `frameCov_BS(data, alpha)` 协方差BS压缩估计 | 参数 | 类型 | 说明 | | ------- | ----- | -------------------------------------------------------------------------- | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见BS协方差压缩估计 | 返回:array ### `frameIndex_filter(rawkeys, filter_cond, filter_type, dz_valuetokey)` 数组筛选器,用于下标数组行名或列名的筛选器 | 参数 | 类型 | 说明 | | --------------- | ------ | ---------------------------------------- | | `rawkeys` | array | 一维字符串数组,下标数组(0开始的自增下标) | | `filter_cond` | string | 字符串,筛选条件 | | `filter_type` | any | 用户自定义,筛选类型 | | `dz_valuetokey` | any | 整数,Out:类型1时,输出ivalue对照用 | 返回:array ### `frameIndex_getilocDZ(raw_data_cols)` 用于方便获取 下标值 与 字段位置 下标数组对照(下标值->下标位置) | 参数 | 类型 | 说明 | | --------------- | ----- | ---------------------------------------- | | `raw_data_cols` | array | 一维字符串数组,下标数组(从0开始自增数组) | 返回:array ### `mt_Multiplication(a, b, c)` 求N×M阶矩阵A与M×L阶矩阵B的乘积矩阵,即C=A×B | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------------- | | `a` | array | 实型二维数组,体积为N×M。被乘矩阵 | | `b` | array | 实型二维数组,体积为M×L。乘矩阵 | | `c` | array | 实型二维数组,体积为N×L。返回的结果矩阵 | 返回:any ### `mt_Addition(a, b, c)` 求N×M阶矩阵A与N×M阶矩阵B的和矩阵,即C=A+B | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------------- | | `a` | array | 实型二维数组,体积为N×M。被加矩阵 | | `b` | array | 实型二维数组,体积为N×M。加矩阵 | | `c` | array | 实型二维数组,体积为N×M。返回的结果矩阵 | 返回:any ### `mt_Subtraction(a, b, c)` 求N×M阶矩阵A与N×M阶矩阵B的差矩阵,即C=A-B | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------------- | | `a` | array | 实型二维数组,体积为N×M。被减矩阵 | | `b` | array | 实型二维数组,体积为N×M。减矩阵 | | `c` | array | 实型二维数组,体积为N×M。返回的结果矩阵 | 返回:any ### `mt_Transposition(a, c)` 求m×n阶矩阵A的转置矩阵,即C= | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------------------- | | `a` | array | 实型二维数组,体积为N×M。转置前矩阵 | | `c` | array | 实型二维数组,体积为M×N。返回转置后的结果矩阵 | 返回:any ### `mt_iv_Gauss_Jordan(a, x)` 用高斯-约当(Gauss-Jordan)法求解n阶方阵A的逆矩阵 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------------------------- | | `a` | array | 实型二维数组,体积为N×N。原矩阵 | | `x` | array | 实型二维数组,体积为N×N。返回的逆矩阵 | 返回:any ### `mt_iv_Ldl(a, x)` 求n阶对称正定矩阵A的逆矩阵 | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------------------------- | | `a` | array | 实型二维数组,体积为N×N。原矩阵,必须为一个对称矩阵 | | `x` | array | 实型二维数组,体积为N×N。返回的逆矩阵 | 返回:any ### `mt_va_Gauss_Jordan(a, v)` 用高斯-约当(Gauss-Jordan)法求解n阶方阵A的行列式值 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------------- | | `a` | array | 实型二维数组,体积为N×N。 | | `v` | float | 实型数。返回的行列式值 | 返回:any ### `mt_va_Cholesky(a, v)` 求对称正定矩阵的行列式值平方根 | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------------------------- | | `a` | array | 实型二维数组,体积为N×N。原矩阵,必须为一个对称矩阵 | | `v` | float | 实型数。返回矩阵行列式值的平方根 | 返回:any ### `Mt_decompose_lu(h, l, u)` 进行lu分解,H方阵,则可以得到下三角阵L,上三角矩阵U | 参数 | 类型 | 说明 | | ---- | ----- | -------------------- | | `h` | array | 需要被分解的对称矩阵 | | `l` | array | 下三角阵 | | `u` | array | 上三角阵 | 返回:any ### `mt_decompose_qr(m, q, r, e, qr_type)` E缺省的时候,对矩阵进行QR分解,M=Q :\*R,不缺省E的时候对矩阵进行QRe分解,M:\*e=Q:\*R.该分解使得R矩阵的对角元按绝对值从大倒小排列 | 参数 | 类型 | 说明 | | --------- | ----- | ------------------------------------------------------------------------------------------------------------- | | `m` | array | 待分解矩阵 | | `q` | array | 可选参数,变参返回正交矩阵Q | | `r` | array | 可选参数,变参返回上三角矩阵R | | `e` | array | 可选参数,变参返回列置换矩阵E,默认E的结构是一个方阵,当有qr_Type参数时,0:E方阵,1:E为1维数组,2:忽略E参数。 | | `qr_type` | any | 可选参数,整数,为0,1,2之一,用于设定E参数的行为。 | 返回:array ### `mt_decompose_eig(a, wr, wi, vr)` 计算特征值及特征向量 | 参数 | 类型 | 说明 | | ---- | ----- | --------------------------------- | | `a` | array | 需要被计算的n\*m矩阵 | | `wr` | array | 变参返回A的特征值的实部,一维数组 | | `wi` | array | 变参返回A的特征值的虚部,一维数组 | | `vr` | array | 变参返回A的特征向量,二维数组 | 返回:array ### `mt_decompose_svd(a, s, u, d)` 矩阵的奇异值(SVD)分解 | 参数 | 类型 | 说明 | | ---- | ----- | ------------------------------- | | `a` | array | 待分解的m\*n矩阵 | | `s` | array | 变参返回A的奇异值,一维数组 | | `u` | array | 变参返回A的左奇异矩阵,二维数组 | | `d` | array | 变参返回A的右奇异矩阵,二维数组 | 返回:any ### `mt_decompose_chol(a, ra, flag)` cholesky分解基础函数;如果不担心效率可以使用公用函数chol | 参数 | 类型 | 说明 | | ------ | ----- | ----------------------------------------- | | `a` | array | 待分解的方正矩阵(二维数字数组,行列数相同) | | `ra` | array | 分解结果返回 | | `flag` | bool | object | 返回:array ### `mt_decompose_ldl(a, ra, p)` ldl 分解基础函数,如果a正定L\*D\*`L=A; | 参数 | 类型 | 说明 | | ---- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `a` | array | 待分解的方正矩阵(二维数字数组,行列数相同) | | `ra` | array | 分解结果返回,包括,三角矩阵,对角矩阵 | | `p` | array | 分解结果的行列信息.a如果为正定矩阵那么p为1到length(a)递增序列.此时,ra的下三角为 L矩阵,对角元为D矩阵.当p为非递增序列,时表示行列置换信息.如果p\[i\]=k>0 and k<> i+1,那么a的i行和k-1行互换,i列与k-1列互换,p\[i\]=k<0 那么d在此处为2\*2的块,在ra的i-1,i行列的4个元,a的第i行和k-1行互换,i列和k-1列互换. | 返回:array