如何在Mathematica中计算由向量形成的矩阵

3

我需要获取由列向量v形成的矩阵vvT。即,列向量v的矩阵乘以其转置。

我发现Mathematica不支持列向量,请帮忙。


1
请加入我们的新网站:http://mathematica.stackexchange.com,Qiang Li。 - Mr.Wizard
Mr.W已经回答了你的问题,但是为了澄清:列向量是一个1n矩阵,而行向量是一个n1矩阵。那么你要寻找的外积就是矩阵乘法。 - Simon
1个回答

7

这个能满足你的要求吗?

v = List /@ Range@5;
vT = Transpose[v];
vvT = v.vT;

v // MatrixForm
vT // MatrixForm
vvT // MatrixForm

Mathematica graphics

要将{1, 2, 3, 4, 5}转换为{{1}, {2}, {3}, {4}, {5}},可以使用以下任一方法:

List /@ {1, 2, 3, 4, 5}

{ {1, 2, 3, 4, 5} }\[Transpose]

Partition[{1, 2, 3, 4, 5}, 1]

在长列表中,您可能会发现Partition是最快的选择之一。

另外,您的具体操作可以通过不同的方式完成:

x = {1, 2, 3, 4, 5};

Outer[Times, x, x]

句法最短:

{Range@5}; %[转置].%


是的,这正是我想要的! - Qiang Li
@QiangLi 好的,那我会用一些有用的提示来更新我的回答。 - Mr.Wizard
@Mr.Wizard 为什么v = List / @ Range @5;在矩阵形式下是列向量而不是行向量?据我所知,在Mathematica中每个向量默认都是行向量。 - Ka Wa Yip
通过将每个元素包装在List中,我们得到{{1}, {2}, {3}, {4}, {5}},按照 Mathematica 的惯例,这是一个包含单个元素的五行矩阵。据我所知,在 Mathematica 中并不存在列向量这种概念。 - Mr.Wizard
@Mr.Wizard 哦,所以 List 不会产生 {1, 2, 3, 4, 5} 而是 {{1}, {2}, {3}, {4}, {5}}?在这种情况下,我理解为什么矩阵形式返回列向量了。 - Ka Wa Yip

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