Я пытаюсь подставить значения в свою матрицу (используя эти команды J.subs ({x: 0.1, y: 0.1, z: -0.1}) f.subs ({x: 0.1, y: 0.1, z: -0.1})) но это не работает. Как я могу исправить это или go вокруг этого, поскольку значения не подставляются в мои уравнения внутри матриц?
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)