gpt4 book ai didi

python - sympy 中的矩阵运算错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:43 25 4
gpt4 key购买 nike

我正在尝试编写一个 sympy 脚本,但在 L1、L2 处遇到问题。欢迎任何帮助。

在 L1 处,我尝试替换前面行中矩阵乘法表达式中的值。我不能用矩阵对象替换吗?

在 L2 中,我试图评估 float 的替换值,但没有得到它。为什么 eval() 不给出浮点值?

from sympy import *
init_printing()
x, x1, x2, x3 = symbols ('x x1 x2 x3')
N1 = ((x-x2)*(x-x3))/( (x1-x2) * (x1-x3) )
N2 = ((x-x1)*(x-x3))/( (x2-x1) * (x2-x3) )
N = Matrix([ [N1,N2] ] )
expr1 = N*Transpose(N)
print expr1.subs([ (x1,0.0), (x2,2.5), (x3,5) ]) #L1
N1.evalf (subs={x1:0.0, x2:2.5, x3:5}) #L2

编辑:

在一个答案之后,我添加了一些额外的代码行。线路“L3、L4”不工作。在 L3、L4,我尝试将 f1(一个矩阵)和该矩阵的行进行积分。但两种情况都失败了。如何在 sympy 中积分矩阵?支持吗?

from sympy import *
init_printing()
x, x1, x2, x3 = symbols ('x x1 x2 x3')
N1 = ((x-x2)*(x-x3))/( (x1-x2) * (x1-x3) )
N2 = ((x-x1)*(x-x3))/( (x2-x1) * (x2-x3) )
N = Matrix([ [N1,N2] ] )
expr1 = N*Transpose(N)
print expr1.subs([ (x1,0.0), (x2,2.5), (x3,5) ]) #L1
N1s=N1.subs( [ (x1,0.0), (x2,2.5), (x3,5) ])
N2s=N2.subs( [ (x1,0.0), (x2,2.5), (x3,5) ])
Ns = Matrix([ [N1s,N2s] ] )
f1 = Ns*x**3
f2 = integrate(f1,(x,0,5)) #L3
f2 = integrate(f1.row(1),(x,0,5)) #L4

最佳答案

第一行对我有用。确保您使用的是最新版本的 SymPy(撰写本文时为 1.0)。

第二行不起作用,因为除非替换表达式中的所有变量,否则 evalf(subs={...}) 不起作用。请参阅https://github.com/sympy/sympy/issues/6974 。如果您只想替换部分变量,只需使用 subs 即可。

关于python - sympy 中的矩阵运算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42007391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com