Fre*_*a W 1 python math numpy sympy
我想查看一些向量运算,看看哪些矩阵元素进入哪个向量,例如,如果我定义一个包含元素的矩阵
mat = [["a11", "a12"], ["a21", "a22"]]
Run Code Online (Sandbox Code Playgroud)
和一个向量
vec = ["v1", "v2"]
Run Code Online (Sandbox Code Playgroud)
然后我正在寻找一些模块/库,当我计算产品时它可以给我结果:
res = mat*vec = ["a11"*"v1" + "a12"*"v2", "a21"*"v1" + "a22"*"v2"]
Run Code Online (Sandbox Code Playgroud)
我知道如果所有参数都是 numpy 的实际数字,这很容易做到,当然我可以手动计算出来,但是如果操作变得更复杂,那么有一种方法可以自动生成结果向量作为参数方程。
如果方程得到简化,例如结果在某处有 +"a11" - "a11" 并将其减少到 0,则可获得奖励积分。
这在Python中可以做到吗?Wolfram Alfa 为我提供了我正在寻找的东西,但我还需要对输入数据进行一些操作,因此使用脚本来执行此操作的方法会很棒。
您已将问题标记为“numpy”,但 numpy 是一个用于数值计算的库。
对于符号计算,请使用库sympy代替。
import sympy
v1, v2, a11, a12, a21, a22 = sympy.symbols('v1 v2 a11 a12 a21 a22')
m = sympy.Matrix([[a11, a12], [a21, a22]])
v = sympy.Matrix([v1, v2])
u = m @ v
print(u)
# Matrix([
# [a11*v1 + a12*v2],
# [a21*v1 + a22*v2]])
Run Code Online (Sandbox Code Playgroud)
几乎标准 python 中可用的任何运算符都可以在 sympy 中使用。要记住两件重要的事情:
mathsympy 函数,而是使用它们的sympy等价函数,例如sympy.sqrt代替math.sqrt平方根;1 / 3将被解释为标准 python 除法并四舍五入为0.3333333333333333,但sympy.S(1) / 3orsympy.Rational(1, 3)将表示精确的分数三分之一。