我想爲一個功能F(e,Eo)
一系列拓展最高達e
一定的功率和集成在Eo
變量數值。 我的想法是用SymPy使在e
電源系列,然後在Eo
使用MPMath的數值積分。Sympy級數展開與數值積分
下面是一個例子代碼。我收到它無法從表達式創建mpf的消息。我想這個問題已與來自SymPy該系列產品具有一個最後的期限O(e**5)
,後來我想要的數值積分,以顯示e
而不是數的函數的事實做。
import sympy as sp
import numpy as np
from mpmath import *
e = sp.symbols('e')
Eo = sp.symbols('Eo')
expr = sp.sin(e-2*Eo).series(e, 0, 5)
F = lambda Eo : expr
I = quad(F, [0, 2*np.pi])
print(I)
很顯然,我需要一個不同的方法,但我仍然需要爲我的實際代碼數值積分,因爲它不能被解析集成更復雜的表達式。
編輯:我應該選擇的示例代碼實際變量的複雜的功能,我想的功能,如本(擴展和集成):
expr = (cos(Eo) - e - I*sqrt(1 - e ** 2)*sin(Eo)) ** 2 * (cos(2*(Eo - e*sin(Eo))) + I*sin(2*(Eo - e*sin(Eo))))/(1 - e*cos(Eo)) ** 4
旁註1:行'F =拉姆達EO:你想要什麼expr'幾乎肯定不會做,因爲'lambda表達式Eo'不一樣'expr中使用的一個'。你可能想用'F = lambda x:expr.subs(Eo,x)'或SymPy的'lambdify'。 – Wrzlprmft
旁註2:爲什麼使用MPMath的各種各樣的問題的人呢?它適用於任意精度的數學運算,這一切都是正確的,但也是大多數問題不需要的。 – Wrzlprmft