Я пытаюсь решить простую систему уравнений в sympy, но я получаю сообщение об ошибке: «TypeError: невозможно преобразовать выражение в float».Sympy: TypeError: невозможно преобразовать выражение в float
import sympy as sy
q0,q1,x,y = sy.symbols('q_0,q_1,x,y')
s = sy.Matrix([sy.Eq(x-sy.cos(q0)-sy.cos(q0+q1),0),
sy.Eq(y-sy.sin(q0)-sy.sin(q0+q1),0)]);
sol = sy.solve(s.subs({x:2,y:0}),q0,q1)
Решение должно быть (0,0). Я использую версию sympy: 0.7.6-git.
Возможно, если вы используете идентификаторы [идентификаторы угловой суммы] (http://en.wikipedia.org/wiki/List_of_trigonometric_identities#Angle_sum_and_difference_identities) и повторно поместите 'sy.cos (qi)', 'sy.sin (qi)' с переменными, вы можете сначала решить полиномиальные уравнения. – unutbu
@unutbu, но тогда у меня было бы 4 переменных и 2 уравнения. Переменные c1, c2, s1, s2 = cos (q1), cos (q2), sin (q1), sin (q2). –
Вы можете заменить '{sin (q1): sy.sqrt (1-sy.cos (q1) ** 2)}'; Я пробовал это и получил решение sy.solve для cos (q0), cos (q1) и return (1,1), но также и сложное (фиктивное?) Решение. Я опубликую его ниже, чтобы показать, что я имею в виду, но решение является неполным. – unutbu