Das Problem für Studenten in Naturwissenschaften und Ingenieurwissenschaften ist die manuelle Berechnung von Fourier-Klassen. Es ist in Ordnung, alle Berechnungen durchzuführen, aber es ist häufig der Fall, dass die Ergebnisse zu schmutzig und nicht sicher sind. Also habe ich einen Code geschrieben, der mit Python überprüft werden kann, also werde ich ihn als Memorandum veröffentlichen.
Zum Beispiel
f(x)=x \ \ \ \ (-\pi \le x \le \pi)
Wird auf Fourier-Reihen erweitert
f(x)=-\Sigma_{n=1}^{\infty}\frac{(-1)^n}{n}\sin(nx)
Wird sein. Lassen Sie uns das überprüfen.
import numpy as np
import matplotlib.pyplot as plt
#Definieren Sie die x-Achse
x = np.arange(-np.pi,np.pi,0.01)
#Funktionen des Inhalts von Sigma
def func(k):
return -1*(((-1)**k)/k)*np.sin(k*x)
#Sigma-Bedienfunktion.Geben Sie den Summenbereich mit einem Argument an.
def sigma(func,frm,to):
ret = np.zeros_like(x)
for i in range(frm,to):
ret += func(i)
return ret
#Fourier-Reihen-Erweiterungsfunktion
f = sigma(func,1,100)
#Ergebnisse anzeigen
fig, ax = plt.subplots(1,1)
ax.set_aspect('equal')
ax.plot(x,f)
plt.show()
#Dies ist ein Diagramm, um den Prozess des Hinzufügens zu sehen
#Bis zu 9 Mal mit dieser Einstellung
"""
fig, axes = plt.subplots(3,3,figsize=(7,7))
for i,ax in enumerate(axes.ravel()):
ax.set_aspect('equal')
ax.set_title('n={}'.format(i))
f = sigma(func,1,i)
ax.plot(x,f)
plt.show()
"""
Das Ergebnis sieht so aus. Es ist eine Kombination von 100 Begriffen, aber es kann ziemlich gut reproduziert werden.
Wenn Sie dann den auskommentierten Teil des Codes ausführen, lautet das Ergebnis wie folgt. n = 0,1 wird aufgrund der for-Anweisung nicht angezeigt, aber bitte ändern Sie diese hier.
https://qiita.com/weedslayer/items/25c38c928ad59ba61071
Recommended Posts