Получаю ошибку:TypeError: No loop matching the specified signature and casting was found for ufunc inv

Ника

Новичок
Пользователь
Окт 17, 2020
26
0
1
Пытаюсь написать вычисление якобиана для решения систем нелинейных уравнений методом Ньютона. Не работает 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

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)
 

Форум IT Специалистов