SLISC 矩阵的基本运算

             

  • 本词条处于草稿阶段.
预备知识 SLISC 的矢量和矩阵

   这里简单列出 arithmetic.h 中的函数,用于对矩阵进行基本运算.

   Long size(T_I v) 相当于 std::vector.size(),但返回 Long 类型,这是为了避免使用 unsigned 类型.

   Tr sum_abs(T_I v) 绝对值求和

   Ts max(T_I v)Ts min(T_I v) 最大元素和最小元素

   Ts max(Long_O ind, T_I v)Ts min(Long_O ind, T_I v) 最大元素和最小元素(同时求出其位置)

   Tr max_abs(T_I v) 最大绝对值

   void mod(T_O v, T1_I v1, Ts1_I s) 求余

   void mod(T1_O v, Ts1_I s) 求余

   void real(T_O v, T1_I v1) 提取实部

   void imag(T_O v, T1_I v1) 提取虚部

   void abs(T_IO v) 求绝对值

   void abs(T_O v, T1_I v1) 求绝对值

   Tret sum(T_I v) 求和

   Tret prod(T_I v) 求积

   Tr norm2(T_I v) 绝对值平方和

   Tr norm(T_I a) 绝对值平方和再开根号

   void resize_cpy(Tv_IO v, Long_I N, T_I val = 0) 矢量改变尺寸保留数据(多出数据初始化为 0)

   void resize_cpy(Tv_IO v, Long_I N0, Long_I N1, T_I val = 0) 矩阵改变尺寸保留数据(多出数据初始化为 0)

   void resize_cpy(Tv_IO v, Long_I N0, Long_I N1, Long_I N2, T_I val = 0) 3D 改变尺寸保留数据(多出数据初始化为 0)

   void linspace(Tv_O v, Ts_I first, Ts_I last) 等间距赋值

   void flip(Tv_IO v) 矢量翻转

   void flip(T_O v, T1_I v1) 矢量翻转

   void reorder(Tv_O v, To_I order) 矢量重新排序

   void trans(T_IO v) 方矩阵转置

   void trans(T_O v, T1_I v1) 矩阵转置

   void conj(T_IO v) 共轭

   void conj(T_O v, T1_I v1) 共轭

   void her(T_IO v) 厄米共轭

   void her(T_O v, T1_I v1) 厄米共轭

   void operator+=(T_IO v, Ts_I s)void operator-=(T_IO v, Ts_I s)void operator*=(T_IO v, Ts_I s)void operator/=(T_IO v, Ts_I s) 矩阵和标量的四则运算

   void operator+=(T_O &v, T1_I v1)void operator+=(T_O &v, T1_I v1)void operator-=(T_O &v, T1_I v1)void operator*=(T_O &v, T1_I v1)void operator/=(T_O &v, T1_I v1) 矩阵和矩阵的四则运算

   void plus(T_O v, T1_I v1, Ts2_I s)void minus(T_O v, T1_I v1, Ts2_I s)void times(T_O v, T1_I v1, Ts2_I s)void divide(T_O v, T1_I v1, Ts2_I s) 矩阵和标量的四则运算

   void pow(T_IO v, Ts_I s) 幂运算

   void pow(T_O v, T1_I v1, Ts_I s) 幂运算

   T dot(T1_I v1, T2_I v2) 点乘(内积)

   void cumsum(T_O v, T1_I v1) 累积求和

   void mul(T_O y, T1_I a, T2_I x) 矩阵乘矢量

   void mul(T_IO y, T1_I a, T2_I x, Ts1_I alpha, Ts_I beta) 矩阵乘矢量(慢)

   void mul(T_O &y, T1_I x, T2_I a) 行矢量乘矩阵(慢)

   void mul_gen(Ty_O y, Ta_I a, Tx_I &x) 一般矩阵乘矢量(使用 BLAS)

   void mul_gen(Ty_O &y, Ta_I a, Tx_I x, Tsa_I alpha = 1, Tsa_I beta = 0) 一般矩阵乘矢量(使用 BLAS)

   void mul_sym(Ty_IO &y, Ta_I a, Tx_I x, Tsa_I alpha = 1, Tsa_I beta = 0) 对称矩阵乘矢量(使用 BLAS)

   void uniq_elm(T_IO v) 找出不相同的元素(自动 resize)

   void uniq_rows(T_O a, T1_I a1) 找出不相同的行

   void exp(T_IO v) 指数函数

   void exp(T_O v, T1_I v1) 指数函数

致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择会员制,大量广告,内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证网站能在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

         

© 小时科技 保留一切权利