當我嘗試簡化sympy
中的以下積分時,它不會進行評估,即輸出爲$ \ int _ { - 1}^1 | z | DZ $,而我期望輸出爲1sympy:如何評估絕對值的積分
z = symbols('z', real=True)
a = integrate(abs(z), (z, -1, 1))
simplify(a)
不會對z
絕對值將評估類似積分。
我怎樣才能得到sympy
來評估這個積分?
當我嘗試簡化sympy
中的以下積分時,它不會進行評估,即輸出爲$ \ int _ { - 1}^1 | z | DZ $,而我期望輸出爲1sympy:如何評估絕對值的積分
z = symbols('z', real=True)
a = integrate(abs(z), (z, -1, 1))
simplify(a)
不會對z
絕對值將評估類似積分。
我怎樣才能得到sympy
來評估這個積分?
integrate
已經盡其所能來評估積分。如果你得到一個Integral
對象,這意味着它無法評估它。唯一可能的幫助是以SymPy可識別的方式重寫被積函數。
看着this issue,它看起來像一個解決方法是把它改寫爲亥:
In [201]: z = symbols('z', real=True)
In [202]: a = integrate(abs(z).rewrite(Heaviside), (z, -1, 1))
In [203]: a
Out[203]: 1
我的印象是sympy的簡化是沒有好,因爲它可能是。 simpy中還有其他幾種簡化方法(trigsimp,ratsimp,powsimp,combsimp,...),但我不會指望它們能夠簡化積分。有時簡化失敗,儘管它對humna看起來很簡單。您也可以在這種情況下使用.evalf()方法。看看這裏:http://docs.sympy.org/latest/tutorial/simplification.html – dnalow