Пытаюсь написать вычисление якобиана для решения систем нелинейных уравнений методом Ньютона. Не работает linalg.inv для матрицы А, хотя для матрицы В всё работает. Не понимаю в чем проблема. Помогите, пожалуйста, исправить. Исходный код и текст ошибки прилагаю.
Вот что выдаёт:
Traceback (most recent call last):
File "C:/Users/Lenovo/PycharmProjects/untitled2/Ньютон.py", line 58, in <module>
inv_A=np.linalg.inv(A)
File "<__array_function__ internals>", line 5, in inv
File "C:\Users\Lenovo\PycharmProjects\untitled2\venv\lib\site-packages\numpy\linalg\linalg.py", line 546, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
TypeError: No loop matching the specified signature and casting was found for ufunc inv
Вот что выдаёт:
Traceback (most recent call last):
File "C:/Users/Lenovo/PycharmProjects/untitled2/Ньютон.py", line 58, in <module>
inv_A=np.linalg.inv(A)
File "<__array_function__ internals>", line 5, in inv
File "C:\Users\Lenovo\PycharmProjects\untitled2\venv\lib\site-packages\numpy\linalg\linalg.py", line 546, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
TypeError: No loop matching the specified signature and casting was found for ufunc inv
Python:
from sympy import sin, cos, Matrix
#from sympy.abc import rho, phi
from sympy import Symbol
import numpy as np
from numpy import linalg
x=Symbol('x')
y=Symbol('y')
X = Matrix([2 * x**4, y * sin(2 * x)])
Y = Matrix([x, y])
J=X.jacobian(Y)
print(J)
M00=J[0,0]
print(M00)
p00=M00.subs({x:0.2,y:3})
print(p00)
M01=J[0,1]
print(M01)
p01=M01.subs({x:0.2,y:3})
print(p01)
M10=J[1,0]
print(M10)
p10=M10.subs({x:0.2,y:3})
print(p10)
M11=J[1,1]
print(M11)
p11=M11.subs({x:0.2,y:3})
print(p11)
# A1=[p00,p01]
# A2=[p10,p11]
# AA=[A1,A2]
# print(AA)
# A=np.matrix("p00 p01;p10 p11 ")
# print(A)
A=[[p00,p01],[p10,p11]]
# A[0,0]=p00
# A[0,1]=p01
# A[1,0]=p10
# A[1,1]=p11
print(A)
x=1
y=2
w=3
r=5
B=[[x,y],[w,r]]
inv_A=np.linalg.inv(A)
print(inv_A)
inv_B=np.linalg.inv(B)
print(inv_B)
# print(type(J))
#
# p=J.subs({x:3,y:5})
# print(p)
#print(J.subs({y:5}))
# inv_J=np.linalg.inv(p)
# print(inv_J)
# def invJ(x,y):
# int(x)
# int(y)
# inv_J = np.linalg.inv(J)
# print(inv_J)
#
# iJ=invJ(3,5)
# print(iJ)