数学中的向量和编程中的向量有什么区别?

14

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

Vector v (3, 1, 5);

方向和大小在哪里?对我来说,这只是一个点,而不是一个向量...所以怎么回事呢?可能是我理解有误,如果有人能解释一下,那就非常感激。


我相信在数学和编程的背景下,“向量”这个术语有不同的含义。在编程中,它基本上就像一个动态数组。维基百科对两者都有定义和示例。 - Bala R
7个回答

11
如果我们在笛卡尔坐标系中工作,并假设(0,0,0)为原点,则点p=(3,1,5)可写成:

enter image description here

其中,ijkxyz方向上的单位向量。为方便起见,在编程构造中省略了单位向量。
向量的大小为

enter image description here

它的方向余弦分别为

enter image description here

两者都可以通过程序计算。您还可以进行点积和叉积运算,我相信您已经了解。因此,在编程和数学之间使用是一致的。符号上的差异主要是出于方便考虑。
然而,正如Tomas指出的,在编程中,定义一个没有数学意义的字符串或对象向量也很常见。您可以将这样的向量视为一维数组或可以通过索引轻松访问或操作的项目列表。

10
在数学中,我们可以很容易地通过一个点表示一个向量 - 只需要假设向量的“基”是原点即可。因此,对于实际目的来说,一个数学点也是数学向量的表示,而在你的例子中,该向量的大小为sqrt(3^2+1^2+5^2)=6,方向为(1/2, 1/6, 5/6)(从原点开始的单位向量)。
然而,在编程中,向量通常没有几何用途,这意味着你真正关心的不是大小或方向之类的东西。在编程中,向量只是一组有序的项目。重要的是这些项目不一定是数字 - 它可能是任何语言所处理的内容!因此,("Hello", "little", "world")也是编程中的向量,尽管(显然)它在数学意义上没有向量解释。

非常好的写作,很好地解释了用多种方式表示同一向量的方法。 - user166390
几乎所有与图形相关的内容(特别是模拟和视频游戏)都依赖于向量来完成几乎所有的事情。-第二段第一句话为“-1”。 - BlueRaja - Danny Pflughoeft
@BlueRaja - 第二段谈论的是数组,而不是欧几里得向量。 - Ishtar
我认为OP更感兴趣的是编程中特殊形式的3D向量,而不是向量作为一般数组。 - Christian Rau
@Christian:在这种情况下,问题实际上很模糊,需要澄清... - Tomas Aschan

2

最严谨的说法是,数学向量是一个一阶张量,根据张量变换规则从一个坐标系转换到另一个坐标系。需要记住的物理概念是,向量具有大小和方向。

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


1

实际上:

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


0

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


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

@Ethan 我认为原帖作者更感兴趣的是编程中特殊形式的三维向量,而不是作为一般数组的向量。 - Christian Rau

0

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

许多时候,向量量可以用4个坐标代替3个坐标来表示(请参见计算机图形学中的齐次坐标),因此物理向量由具有4个元素的计算机vector表示。或者,您可以分别存储方向和大小,或者使用3、4或更多坐标进行编码。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接