矢量没有由sympy中的组件定义

时间:2018-01-12 14:36:09

标签: sympy

是否可以在Sympy向量包中初始化向量而不必声明其组件?通常,当我们进行符号计算时,不需要显式化组件。

1 个答案:

答案 0 :(得分:1)

Vector模块中的Vector对象始终有三个用于组件的插槽,这些插槽必须用数字或符号表达式填充。如果您不想提供组件的名称,可以使用matrix_to_vector,传递新创建的符号列表以填充插槽。

from sympy import symbols
from sympy.vector import CoordSys3D, matrix_to_vector
N = CoordSys3D("N")
v = matrix_to_vector(symbols("v_1:4"), N)

现在v是一个包含组件v_1,v_2,v_3的向量。

在另一个方向,可以使用Matrix Expressions进行线性代数,将向量表示为具有一列的矩阵。这更符合操纵向量而不列出其组件的想法

from sympy import MatrixSymbol
v  = MatrixSymbol("v", 3, 1)
A = MatrixSymbol("A", 3, 3)
print(A*v)  # simply A*v 
(A*v).as_explicit()   # print out in components

打印

Matrix([
[A[0, 0]*v[0, 0] + A[0, 1]*v[1, 0] + A[0, 2]*v[2, 0]],
[A[1, 0]*v[0, 0] + A[1, 1]*v[1, 0] + A[1, 2]*v[2, 0]],
[A[2, 0]*v[0, 0] + A[2, 1]*v[1, 0] + A[2, 2]*v[2, 0]]])