python - sympy 中的矩阵运算错误

标签 python sympy

我正在尝试编写一个 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/

相关文章:

python - 如何在 SymPy 中求解线性方程组?

Python 如何获取特定导数点的值?

python - 如何将列表元素作为参数传递

python - 从字典中删除双引号

python - 可选的 URL 变量

python - 如何使用generate_events事件?

python - 正则表达式中的组是什么类型的容器

sympy - 在 sympy 中求解微分方程组的语法

python - SymPy 中任意精度的概率值

python - 符号计算中基本代数假设的双向识别