【发布时间】:2019-04-23 10:04:54
【问题描述】:
当存在函数积分时,我无法使用简化函数来简化三角恒等式。我举了一个简单的例子,它没有按预期工作。
from IPython.display import display
from sympy import *
# Symbolic constants
z = symbols('z')
R = symbols('R')
theta = symbols('theta')
# Functions
phi_x = Function('\phi_x')(z)
phi_y = Function('\phi_y')(z)
m = Function('m')(z)
expr = sin(theta)**2*integrate(phi_y**2*m, (z, 0, R)) + cos(theta)**2*integrate(phi_y**2*m, (z, 0, R)) + integrate(phi_x**2*m, (z, 0, R))
expr = simplify(expr)
display(expr)
我明白了:
[out]:sin(theta)**2*Integral(\phi_y(z)**2*m(z), (z, 0, R)) + cos(theta)**2*Integral(\phi_y(z)**2*m(z), (z, 0, R)) + Integral(\phi_x(z)**2*m(z), (z, 0, R))
虽然预期的是要简化的三角恒等式:
[expected]: Integral(\phi_y(z)**2*m(z), (z, 0, R)) + Integral(\phi_x(z)**2*m(z), (z, 0, R))
【问题讨论】:
-
在我的测试中,第三个积分使
simplify无法正常工作。仅将simplify应用于前两个术语。simplify是一个复杂的函数(模块),因此很难确切知道它使用了什么启发式算法。 -
上面的例子只是一个例子,虽然恒等式本质上很简单,但我正在使用的方程要长得多。所以我真的需要自动完成,手动简化违背了使用 sympy 的全部目的。我猜问题出在因子函数子程序中。
标签: python-3.x sympy simplify