Math 数学和编程中向量的区别

Math 数学和编程中向量的区别,math,vector,Math,Vector,也许这个问题更适合在网站的数学部分,但我想stackoverflow也适合。在数学中,向量有位置和方向,但在编程中,向量通常定义为: Vector v (3, 1, 5); 方向和大小在哪里?对我来说,这是一个点,不是一个向量。。。那么是什么原因呢?可能我没有得到什么东西,所以如果有人能向我解释这一点,我将不胜感激。在数学中,用点来表示向量很容易——只要说向量的“基”就是原点。因此,出于所有实际目的,数学点也是数学向量的表示形式,示例中的向量具有幅值sqrt(3^2+1^2+5^2)=6和方向

也许这个问题更适合在网站的数学部分,但我想stackoverflow也适合。在数学中,向量有位置和方向,但在编程中,向量通常定义为:

Vector v (3, 1, 5);

方向和大小在哪里?对我来说,这是一个点,不是一个向量。。。那么是什么原因呢?可能我没有得到什么东西,所以如果有人能向我解释这一点,我将不胜感激。

在数学中,用点来表示向量很容易——只要说向量的“基”就是原点。因此,出于所有实际目的,数学点也是数学向量的表示形式,示例中的向量具有幅值sqrt(3^2+1^2+5^2)=6和方向(1/2,1/6,5/6)(来自原点的归一化向量)


然而,在编程中,向量通常没有几何意义,这意味着你真的对大小或方向之类的东西不感兴趣。编程中的向量只是一个有序的项目列表。这里很重要的一点是,项目不需要是数字——它可以是任何有问题的语言处理的东西!因此,
(“Hello”、“little”、“world”)
在编程中也是一个向量,尽管它(显然)没有数学意义上的向量解释。

计算机科学中的向量是一个“一维”数据结构(数组)(可以被认为是方向),通常具有动态大小(长度/大小)。由于这个原因,它被称为向量。但它至少是一个数组

如果我们在笛卡尔坐标系下工作,并且假设
(0,0,0)
是原点,那么点
p=(3,1,5)
可以写成

其中,
i
j
k
x
y
z
方向上的单位向量。为了方便起见,单元向量从编程构造中删除

向量的大小是

它的方向余弦是

这两种方法都可以通过编程实现。你也可以用点积和交叉积,我相信你一定知道。因此,编程和数学之间的用法是一致的。符号上的差异主要是因为方便


然而,在编程中,定义字符串或对象的向量也是很常见的,它们实际上没有数学意义。你可以认为这样的向量是一维数组或可以通过索引容易访问或操作的项目列表。

< P>向量也意味着一组坐标。这就是它在编程中的使用方式。就像一组数字一样。您可能希望用
向量
对象表示位置向量、速度向量、动量向量、力向量,或者您可能希望以任何适合您的方式表示它

很多时候,矢量量可能由4个坐标表示,而不是3个坐标(参见计算机图形学中的齐次坐标),因此物理矢量由具有4个元素的计算机
矢量
表示。或者,您可以单独存储方向和幅值,或者使用3、4或更多坐标对其进行编码

我想我要说的是,计算机语言是用来表示物理模型的,但抽象数据容器是程序员用来作为建模工具的。

实际上(!):


数学中的向量只是一个没有位置的方向(实际上是更一般的东西,但用你的术语来说)。在编程中,经常使用向量表示点。可以将向量视为从原点
(0,0,0)
指向点
(3,1,5)
的向量,称为点的位置向量。有关详细信息,请参阅分析几何和仿射几何的文本。

数学中的向量是某些字段(例如实数/复数、函数、字符串)上的n维空间元素。它可能具有无限维,例如函数空间
L^2
。我不记得在编程中使用了infite维向量(无限向量不是长度不受限制的向量,而是元素数为infite的向量)最严格的说法是,数学向量是一阶张量,根据张量变换规则从一个坐标系变换到另一个坐标系。要记住的物理概念是向量既有大小也有方向


编程向量是不需要根据任何规则进行转换的数据结构,可以有坐标系的概念作为参考,也可以没有。如果您碰巧使用矢量数据结构来保存数字,它们可能符合数学定义。但是如果你有一个对象的向量,它们不太可能与坐标变换有任何关系。

我相信向量这个术语在数学和编程的上下文中有不同的含义。通过编程,它本质上就像一个动态数组。Wikipedia有这两个方面的定义和例子。+1非常好地解释了以多种方式表示同一向量。-第二段第一句为1;几乎所有与图形相关的东西(尤其是模拟和视频游戏)都依赖向量来完成所有事情。@BlueRaja-第二段谈到了数组的,不是关于欧几里德向量。我认为OP更感兴趣的是编程中3D向量的特殊形式,而不是一般数组形式的向量。@Christian:那样的话,这个问题真的很模糊,需要澄清…@Ethan我认为OP更感兴趣的是编程中3D向量的特殊形式,而不是作为一般数组的向量。