Fonction périodique en Python
Bonjour,
Commençons par définir la fonction f_L définie sur l'intervalle [0,𝐿]. Je choisis ici la forme d'une corde de guitare pincée à une distance 𝛼𝐿 (alpha * L) avec un champ d'élongation 𝑎 (a). Il s'agit d'une fonction affine par morceaux. Je prends 𝐿=1m dans toute la suite.
Code:
1 2 3 4 5 6 7 8 9 10
|
L = 1 # m
alpha = .25
a = .1 # m
def f_L(x):
if x < alpha * L:
return a * x / alpha
else:
return (a / (alpha - 1)) * ( x / L - 1) |
Ensuite, on définit la fonction f_2L définie sur l'intervalle [−𝐿,𝐿] comme ( (si 𝑥∈[0,𝐿], alors 𝑓2𝐿(𝑥)=𝑓𝐿(𝑥), sinon 𝑓2𝐿(𝑥)=−𝑓𝐿(−𝑥)).
Code:
1 2 3 4 5
| def f_2L(x):
if x >= 0:
return f_L(x)
else:
return -f_L(-x) |
C'est là que mes difficultés commencent Enfin, on définit la fonction f définie sur ]−∞,+∞[ comme décrit dans la vidéo en périodisant la fonction 𝑓2𝐿. Pour cela, on utilise la fonction partie entière (np.floor) qui permet de ramener un réel 𝑥 dans l'intervalle [−𝐿,𝐿].
Pourquoi écrit-on la relation suivante ?
Code:
1 2 3
|
def f(x):
return f_2L(x - np.floor((x + L)/ (2 * L)) * 2 * L) |
Merci d'avance