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 : Sélectionner tout - Visualiser dans une fenêtre à part
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𝐿(&#119909=𝑓𝐿(&#119909, sinon 𝑓2𝐿(&#119909=−𝑓𝐿(−&#119909).


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
def f(x):
    return f_2L(x - np.floor((x + L)/ (2 * L)) * 2 * L)
Merci d'avance