Существует проблема с функцией SymPy trigsimp, когда она используется для упрощения выражения, включающего суммы произвеPython

Программы на Python
Ответить
Anonymous
 Существует проблема с функцией SymPy trigsimp, когда она используется для упрощения выражения, включающего суммы произве

Сообщение Anonymous »

Используя SymPy, я пытаюсь проверить, что дискриминант -ac + b^2 квадратичной формы ax^2+ bxy + cy^2 инвариантен относительно вращений. Для этого я написал следующий скрипт Python:

Код: Выделить всё

import sympy as sp

# Define the variables and parameters
x, y, theta = sp.symbols('x y theta', real=True)
a, b, c = sp.symbols('a b c', real=True)

# Original quadratic form
Q_original = a*x**2 + 2*b*x*y + c*y**2

# Rotation matrix
x_rot = x*sp.cos(theta) - y*sp.sin(theta)
y_rot = x*sp.sin(theta) + y*sp.cos(theta)

# Substitute the rotated coordinates into the original quadratic form
Q_rotated = Q_original.subs({x: x_rot, y: y_rot})

# Expand the rotated quadratic form
Q_rotated_expanded = sp.expand(Q_rotated)

# Collect terms to identify the new coefficients
Q_rotated_collected = sp.collect(Q_rotated_expanded, [x**2, x*y, y**2])

# Extract the new coefficients
a_rot = Q_rotated_collected.coeff(x**2, 1)
b_rot = Q_rotated_collected.coeff(x*y, 1) / 2  # because the form is 2*b*x*y
c_rot = Q_rotated_collected.coeff(y**2, 1)

# Compute the discriminant for the original and rotated forms
discriminant_original = b**2 - a*c
discriminant_rotated = b_rot**2 - a_rot*c_rot
print(f"discriminant_rotated: {discriminant_rotated}\n")

# trigsimp the rotated discriminant
discriminant_rotated_simplified = sp.trigsimp(discriminant_rotated)
print(f"discriminant_rotated_simplified: {discriminant_rotated_simplified}\n")

# Check if the discriminants are equal
are_equal = sp.trigsimp(discriminant_original - discriminant_rotated_simplified) == 0
print(f"are_equal: {are_equal}")
Переменная discriminant_rotated_simplified оценивается как

Код: Выделить всё

(-a*c + b**2)*cos(theta)**4
но
должно получиться

Код: Выделить всё

-a*c + b**2.
Что я делаю не так? Будем очень признательны за любую помощь!
С уважением,
Клаус

Подробнее здесь: https://stackoverflow.com/questions/798 ... o-simplify
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»