是否可以在Sympy向量包中初始化向量而不必声明其组件?通常,当我们进行符号计算时,不需要显式化组件。
答案 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]]])