Я готовлю примеры того, как якобиан прибыл с использованием преобразований из полярных/декартовых параметров. Мой вопрос двоякий. Во-первых, я хочу знать, как заставить sympy отменить условия после замены. Две матрицы:Условия отмены симпигментов в трансформации якобиана полярных координат
J1 = Matrix([[(r*cos(theta)).diff(r), (r*cos(theta)).diff(theta)],[(r*sin(theta)).diff(r),(r*sin(theta)).diff(theta)]])
J2 = Matrix([[((x**2+y**2)**(1/2.)).diff(x),((x**2+y**2)**(1/2.)).diff(y)],[atan(y/x).diff(x),atan(y/x).diff(y)]])
#substitute for x,y to have same variables for J1 and J2
J2 = trigsimp(J2.subs({x:r*cos(theta), y:r*sin(theta)}))
J2
я ожидал, что с помощью отмены(), или даже evalf() был бы удален г/(г^2)^1/2 = 1 термин, но это не так.
Во-вторых, как или может потребоваться симпять для распознавания простых тождеств, в этом случае sin^2 + cos^2 = 1? Это так, что результатом является оцененная единичная матрица из J1 * J2.
Это работает, согласно документации:
simplify(r/(r**2)**(1/2)*(sin(theta)**2+cos(theta)**2))
Это эквивалентно (МОГ) уравнение не имеет.
J = J1*J2
simplify(J[0,0])
Похоже, что вторая ошибка является следствием первого.