【发布时间】:2020-04-08 15:04:09
【问题描述】:
我正在尝试将值替换为我的矩阵(使用这些命令 J.subs({x:0.1, y: 0.1, z: -0.1}) f.subs({x:0.1, y: 0.1, z: -0.1}) ) 但它不起作用。我该如何解决这个问题或解决这个问题,因为这些值没有被替换到矩阵内的我的方程中?
import sympy as sp
# Create Symbols
x = sp.Symbol('x')
y = sp.Symbol('y')
z = sp.Symbol('z')
# Input Equations
eq1 = 3*x - sp.cos(y*z) - 1/2
eq2 = x**2 -81*(y+0.1)**2 + sp.sin(z) + 1.06
eq3 = sp.exp(-x*y) + 20*z + (10*sp.pi - 3)/3
# Create a blank matrix that works with symbols
J = sp.Matrix([[0,0,0],[0,0,0],[0,0,0]])
# Create the function matrix
f = sp.Matrix([[eq1],[eq2],[eq3]])
# Create the Jacobian Matrix
J[0,0] = sp.diff(eq1,x)
J[1,0] = sp.diff(eq1,y)
J[2,0] = sp.diff(eq1,z)
J[0,1] = sp.diff(eq2,x)
J[1,1] = sp.diff(eq2,y)
J[2,1] = sp.diff(eq2,z)
J[0,2] = sp.diff(eq3,x)
J[1,2] = sp.diff(eq3,y)
J[2,2] = sp.diff(eq3,z)
# Create the inital guess matrix
p = sp.Array([[0.1], [0.1], [-0.1]])
# Substitute the values
J.subs({x:0.1, y: 0.1, z: -0.1})
f.subs({x:0.1, y: 0.1, z: -0.1})
print(J)
# Create the loop for 5 iterations
# Intialize counter
i = 0
# THe loop itself
#for i in range(0,4):
# p = p - A*f
# i += 1
# A.subs([(x, p[0,0]), (y, p[1,0]), (z, p[2,0])])
# f.subs([(x, p[0,0]), (y, p[1,0]), (z, p[2,0])])
#print(p)
【问题讨论】:
-
subs不会就地运行。 “它不起作用”不是一个好问题的一部分。这是失败的第三个问题。
标签: python arrays matrix sympy