js实现矩阵

矩阵在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合最早来自于方程组的系数及常数所构成的方阵,这一概念由19世纪英国数学家凯利首先提出。多元计算时候,矩阵很常见人工智能中,多元计算很常见,现在我们来实现一下矩阵的计算代码实现python代码numpy自己就有,但是我们现在给没有矩阵类的javascript添加一个矩阵类/** * 数学矩阵 */class Matrix { constructor(arr) { this._arr = arr; }
摘要由CSDN通过智能技术生成

矩阵

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合

最早来自于方程组的系数及常数所构成的方阵,这一概念由19世纪英国数学家凯利首先提出。

多元计算时候,矩阵很常见

人工智能中,多元计算很常见,现在我们来实现一下矩阵的计算

代码实现

python代码numpy自己就有,但是我们现在给没有矩阵类的javascript添加一个矩阵类

/**
 * 数学矩阵
 */
class Matrix {
   
  constructor(arr) {
   
    this._arr = arr;
  }
  /**
   * 矩阵数组
   */
  get arr() {
   
    return this._arr;
  }
  /**
   * 行
   */
  get m() {
   
    return this._arr.length;
  }
  /**
   * 列
   */
  get n() {
   
    return this._arr[0].length;
  }
  /**
   * 转置
   */
  get T() {
   
    const arr = new Array(this.n);
    for (let i = 0; i < this.n; i++) {
   
      arr[i] = new Array(this.m);
      for (let j = 0; j < this.m; j++) {
   
        arr[i][j] = this._arr[j][i];
      }
    }
    return new Matrix(arr);
  }
  /**
   * 克隆矩阵
   * @returns {Array} 矩阵数组
   */
  clone() {
   
    const arr = new Array(this.m);
    for (let i = 0; i < this.m; i++) {
   
      arr[i] = new Array(this.n);
      for (let j = 0; j < this.n; j++) {
   
        arr[i][j] = this._arr[i][j];
      }
    }
    return new Matrix(arr);
  }
  /**
   * 获取整列
   * @param {int} n 索引
   * @returns {Array} 列
   */
  col(index) {
   
    const arr = [];
    this._arr.forEach(row => {
   
      arr.push(row[index]);
    });
    return arr;
  }
}

我们可以用一个二维数组创建一个矩阵

// node --experimental-modules mat-init.mjs
import Matrix from './matrix.mjs';
const a = new Matrix([[1,3], [5,7], [9,1]]);
console.log('矩阵类', a);
console.log('矩阵尺寸', a.m, a.n);
console.log('矩阵第一行', a.row(0));
console.log('矩阵第一列', a.col(0));
console.log('转置', a.T);

可以看到我们的输出

矩阵类 Matrix { _arr: [ [ 1, 3 ], [ 5, 7 ], [ 9, 1 ] ] }
矩阵尺寸 3 2
矩阵第一行 [ 1, 3 ]
矩阵第一列 [ 1, 5, 9 ]
转制 Matrix { _arr: [ [ 1, 5, 9 ], [ 3, 7, 1 ] ] }

矩阵加法(Matrix addition)

矩阵加法,数学术语,定义为在数学里,矩阵加法一般是指两个矩阵把其相对应元素加在一起的运算

矩阵还有个定义叫“直和”(⊕)千万别跟加法弄混了

加法

通常的矩阵加法被定义在两个相同大小的矩阵

两个m×n矩阵A和B的和,标记为A+B,一样是个m×n矩阵,其内的各元素为其相对应元素相加后的值

例如:

[ 1 3 5 7 9 1 ] + [ 2 2 4 0 6 8 ] = [ 1 + 2 3 + 2 5 + 4 7 + 0 9 + 6 1 + 8 ] = [ 3 5 9 7 15 9 ] \begin{bmatrix}1&3\\5&7\\9&1\end{bmatrix} + \begin{bmatrix}2&2\\4&0\\6&8\end{bmatrix} = \begin{bmatrix}1+2&3+2\\5+4&7+0\\9+6&1+8\end{bmatrix} = \begin{bmatrix}3&5\\9&7\\15&9\end{bmatrix} 159371+246208=1+25+49+63+27

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值