Le problème pour les étudiants de premier cycle en sciences et en génie est le calcul manuel des cours de Fourier. Il est normal de faire tous les calculs, mais il arrive souvent que les résultats soient trop sales et peu sûrs. J'ai donc écrit un code qui peut être vérifié avec Python, donc je le posterai sous forme de mémorandum.
Par exemple
f(x)=x \ \ \ \ (-\pi \le x \le \pi)
Est étendu à la série Fourier
f(x)=-\Sigma_{n=1}^{\infty}\frac{(-1)^n}{n}\sin(nx)
Sera. Vérifions ça.
import numpy as np
import matplotlib.pyplot as plt
#Définir l'axe des x
x = np.arange(-np.pi,np.pi,0.01)
#Fonctions du contenu de Sigma
def func(k):
return -1*(((-1)**k)/k)*np.sin(k*x)
#Fonction d'opération Sigma.Spécifiez la plage de somme avec un argument.
def sigma(func,frm,to):
ret = np.zeros_like(x)
for i in range(frm,to):
ret += func(i)
return ret
#Fonction d'extension de la série de Fourier
f = sigma(func,1,100)
#Voir les résultats
fig, ax = plt.subplots(1,1)
ax.set_aspect('equal')
ax.plot(x,f)
plt.show()
#Ceci est un graphique pour voir le processus d'ajout
#Jusqu'à 9 fois avec ce paramètre
"""
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()
"""
Le résultat ressemble à ceci. C'est une combinaison de 100 termes, mais elle peut être reproduite raisonnablement bien.
Si vous exécutez ensuite la partie commentée du code, le résultat sera le suivant. n = 0,1 n'est pas affiché en raison de l'instruction for, mais veuillez les modifier ici.
https://qiita.com/weedslayer/items/25c38c928ad59ba61071
Recommended Posts