Как извлечь аргументы?
Работаю с Sympy для решения линейных уравнений.
Что происходит:
- Я задаю координаты
x, y, z, d = sym.symbols('x, y, z, d')
A1 = np.array([x-1, y-2, z-3])
A2 = np.array([1-1, 3-2, 3-3])
A3 = np.array([0-1, 10-2, 5-3])
A4 = np.array([0, 3, 0])
- После чего решаю матрицу:
M = sym.Matrix([A1, A2, A3])
- Она решается, я нахожу ее детерминат:
Md = M.det()
- Он выдает мне следующее:
2? + ? − 5
Это то, что мне нужно, но только на половину – мне необходимо извлечь из них аргументы, типа у икса это 2, y игрека - 0, у "z" это 1 и как то осознать свободный член, что он -5.
Как я могу это сделать?
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
In [240]: x_coef = Md.coeff(x)
In [241]: y_coef = Md.coeff(y)
In [242]: z_coef = Md.coeff(z)
In [243]: print(x_coef, y_coef, z_coef)
2 0 1
или так:
In [254]: [Md.coeff(var) for var in [x, y, z]]
Out[254]: [2, 0, 1]
Автор решения: Danis
→ Ссылка
import sympy as sym
import numpy as np
def get(n, args):
n = str(n)
dict_ = {arg: 0 for arg in args}
for i in n.split():
for arg in args:
if arg in i:
if i == arg:
count = 1
else:
count = i.split("*")[0]
dict_[arg] += int(count)
break
return dict_
x, y, z = sym.symbols("x y z")
A1 = np.array([x-1, y-2, z-3])
A2 = np.array([1-1, 3-2, 3-3])
A3 = np.array([0-1, 10-2, 5-3])
A4 = np.array([0, 3, 0])
M = sym.Matrix([A1, A2, A3])
print(get(M.det(), ["x", "y", "z"]))