数学和编程中的向量之间的差异

时间:2011-05-29 22:34:08

标签: math vector

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

Vector v (3, 1, 5);

方向和幅度在哪里?对我来说,这是一个观点,而不是一个向量...那么是什么给出了?可能我没有得到一些东西,如果有人能向我解释这将是非常感激的。

7 个答案:

答案 0 :(得分:8)

如果我们使用笛卡尔坐标,并假设(0,0,0)为原点,则点p=(3,1,5)可以写为

enter image description here

其中ijkxyz方向的单位向量。为方便起见,从编程结构中删除单位向量。

矢量的大小是

enter image description here

及其方向余弦是

enter image description here

分别可以通过编程方式完成。你也可以采用点产品和交叉产品,我相信你知道。因此编程和数学之间的用法是一致的。符号的差异主要是因为方便。

然而,作为Tomas pointed out,在编程中,定义字符串或对象的向量也很常见,它们实际上没有数学意义。您可以将此类向量视为一维数组或可通过索引轻松访问或操作的项列表。

答案 1 :(得分:6)

在数学中,很容易通过一个点来表示一个向量 - 只要说向量的“基数”就是隐含的原点。因此,所有实际用途的数学点也是数学向量的表示,并且示例中的向量具有幅度sqrt(3 ^ 2 + 1 ^ 2 + 5 ^ 2)= 6和方向(1 / 2,1 / 6,5 / 6)(来自原点的归一化矢量)。

然而,编程中的矢量通常没有几何用途,这意味着你真的对幅度或方向等事情不感兴趣。编程中的向量只是一个有序的项目列表。这里重要的是项目不一定是数字 - 它可以是由有问题的语言处理的任何东西!因此,("Hello", "little", "world")也是编程中的向量,尽管它(显然)在数学意义上没有向量解释。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

矢量也表示一组坐标。这就是它在编程中的用法。就像一组数字一样。您可能希望用vector对象表示位置矢量,速度矢量,动量矢量,力矢量,或者您可能希望以任何适合您的方式表示它。

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

我想我得到的是,计算机语言是为了表示物理模型而设计的,而是程序员用作他/她建模工具的抽象数据容器。

答案 4 :(得分:0)

实际上讲(!):

数学中的向量只是一个没有位置的方向(实际上是更通用的东西,但留在你的术语中)。在编程中,您经常使用矢量作为点。您可以将矢量视为从原点(0,0,0)指向点(3,1,5)的矢量,称为点的位置矢量。请参阅有关分析和仿射几何的文章,以获得更多见解。

答案 5 :(得分:0)

数学中的向量是某个字段上的n维空间的元素(例如,实数/复数,函数,字符串)。它可能具有无限的尺寸,例如功能空间L^2。我不记得在编程中使用了infite-dimensional向量(无限向量不是具有非限制长度的向量,而是具有有限数量元素的向量)

答案 6 :(得分:0)

最严格的陈述是数学向量是一阶张量,它根据张量变换规则从一个坐标系转换到另一个坐标系。要记住的物理想法是,向量具有大小和方向。

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