Bazı sembolik matematik işlemlerini yürütmek için sympy
kullanıyorum.Sympy ayıklamak Fourier Series katsayıları
Başlangıç dikdörtgen darbe katarı (görev çevrimi: <% 50), bir Fourier serisi temsil oluşturma, daha sonra çarpma faktörleri, yani a_n
ve standart Fourier serisi b_n
erişmeye. Özetle
from sympy import fourier_series, pi, cos, sin
from sympy.abc import t
from sympy.functions.special.delta_functions import Heaviside
T = sy.symbols('T')
s = fourier_series(Heaviside(t) - Heaviside(t-1/4), (t, 0, 1))
s.truncate(3)
1/π*sin(2πt)+1/π*sin(4πt)+1/π*cos(2πt)+0.25
Sonra baz fonksiyonlarının katsayıları erişmek istiyorum. Bu kapsamda, as_coefficient(expr)
kullanmam gerektiğini düşündüm.
Bu basit bir durumda beklenen sonuçlar üretir: fourier_series
tarafından döndürülen nesne ile,
g = 1/(pi*T)*sin(2*pi*t)
g.as_coefficient(sin(2*pi*t))
1/πT
Ancak bu işe görünmüyor:
a = s.truncate(3)
a.as_coefficient(sin(2*pi*t))
döner bir şey (hatta bir uyarı veya mesaj). s.as_Add()
veya s.as_Mul()
dönüş hem a_n
onun sin(2*pi*n*t)
terimi bağlı (veya çift için b_n
) bir tam ifade gibi
diğer yöntemler.
Vay serin görünüyor! Çiğnemem gereken birkaç şey var, birincisi çok nadiren kullandığım yineleyici kavramı. Katsayılarımı elde edebilmek için 'bir seviye daha derine inmem' ve 'a = s.truncate (3); m = a.args [1]; m.as_coeff_mul [1] [0] 'nihayet faktörümü elde etmek için ... İşaret ettiğin gibi hantal ve genel durum için bunu yapmanın otomatik bir yolunu bulamadım. Belki yineleyicileri anladıktan sonra, öğrenme etkisi için ikinci bir şans vereceğim;) –