本文由图雀社区认证作者 神奇的程序员 写作而成,图雀社区将连载其TypeScript 实战算法系列,点击阅读原文查看作者的掘金链接,感谢作者的优质输出,让我们的技术世界变得更加美好?
前言
作为一个对线性代数一无所知的开发者,想快速对向量和矩阵进行一个了解和认识,那么本文就正好适合你。
本文将站在开发者的角度的讲解向量和矩阵,并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。
向量
向量是线性代数研究的基本元素,将一组数放在一起其基本的表示方法就是向量,例如:一个数: 100,一组数:(25,78,101)。其中一组数就可以称为向量,示例中的这组数是一个三维向量。
下述公式,描述了一个向量。
那么,一组数有什么用?
我们通过一个例子来说明,如下表所示:
序号 | 语文 | 数学 | 英语 |
---|---|---|---|
0 | 70 | 80 | 90 |
上述表格中,(0,70,80,90) 这组数分别描述了序号、语文、数学、英语,如果将这组数中数字的顺序调换顺序,那么其所表达的意思也就完全不同了,每个数字都代表着空间中的一个点,是一组有序的数字,因此他可以用来描述一个有序的东西。
标量:向量中的数字就称为标量。
向量的更多概念
行向量与列向量
- 行向量:即横着排列的标量,如下所示
- 列向量:即竖着排列的标量,如下所示
维度
向量中标量的个数,就是这个向量的维度。
例如,向量(3,4)
其维度就是2
实现向量
接下来我们根据上面所述,先来看看我们都需要为向量实现哪些方法。
- 获取向量的维度
- 向量的长度
- 获取向量的特定元素
- 输出向量
接下来,我们来一一实现这些方法。
- 创建一个TS文件,命名为:
Vector.ts
,用于实现向量的所有方法 - 声明向量类,在构造函数中声明我们需要传的参数,向量就是一组数,因此我们用数组来表示向量
export class Vector {
constructor(private list: number[] = []) {}
}
- 实现获取向量维度函数:
getDimension
getDimension(): number {
return this.list.length;
}
- 实现向量的长度函数:
length
len = this.getDimension();
- 实现获取向量的特定元素:
getItem
/**
* 获取向量的特定元素
* @param index 目标元素索引
*/
getItem(index: number): number {
return this.list[index];
}
- 实现输出向量函数
toStr(): string {
let str = ``;
for (let i = 0; i this.list.length; i++) {
if (i !== this.list.length - 1) {
str += `${
this.list[i]},`;
} else {
str += this.list[i];
}
}
return `Vector(${str})`;
}
向量的基本运算
向量有两种基本运算:即向量加法和向量数量乘法
向量的加法
如上所示,描述了两个向量相加,它的计算规则如下:
- 相加的两个向量其维度必须相等
- 把向量中的分量(即向量中的每个数)分别想加,最终构成的向量就是其相加后的结果。