J-0
00m
00j
00h
00min
00s

Version interactive avec LaTeX compilé

Banque PT Modélisation PT 2019

Notez ce sujet en cliquant sur l'étoile
0.0(0 votes)
Logo banque-pt
2025_09_04_783fdb26f2f71f91b3c8g

Epreuve d'Informatique et Modélisation de Systèmes Physiques

Durée 4 h
Si, au cours de l'épreuve, un candidat repère ce qui lui semble être une erreur d'énoncé, d'une part il le signale au chef de salle, d'autre part il le signale sur sa copie et poursuit sa composition en indiquant les raisons des initiatives qu'il est amené à prendre.

L'usage de calculatrices est interdit.

La présentation, la lisibilité, l'orthographe, la qualité de la rédaction, la clarté et la précision des raisonnements entreront pour une part importante dans l'appréciation des copies. En particulier, les résultats non justifiés ne seront pas pris en compte. Les candidats sont invités à encadrer les résultats de leurs calculs.
L'épreuve comporte différentes parties permettant de mobiliser les compétences du candidat en informatique et en modélisation.
  • La partie modélisation est distribuée au début et à la fin du sujet (I-1, I-2 et I-8). Il est conseillé de ne pas y consacrer plus d'une heure et demie.
  • La partie informatique est développée au cœur du sujet (de I-3 à I-7) et sa durée de traitement conseillée est de deux heures et demie.
En dernière partie du sujet (II), vous trouverez un aide-mémoire Python et les consignes générales à respecter pour les codes exigés.
Tout code fourni en réponse à une question doit être commenté de façon claire.
Les commentaires sont à placer dans le code, ou éventuellement dans la brève introduction qui le précède.
Le poids relatif des parties est indiqué dans le titre de chaque paragraphe.

I Figures de Chladni

Introduction historique

En 1787, le physicien et musicien, Ernst Florence Friedrich Chladni de Wittenberg, alors qu'il procédait à de nombreuses expériences, fit une intéressante découverte. Il constata que lorsqu'il excitait une plaque de métal avec l'archet de son violon, il la faisait vibrer et il pouvait produire des sons de distinctes tonalités selon l'endroit où il touchait la plaque. La plaque métallique était fixée en son centre, il eut l'idée d'y disperser de la poussière. Lors des phases vibratoires, pour chaque tonalité, la poussière s'arrangeait et se distribuait selon les lignes nodales des vibrations, de magnifiques figures géométriques apparaissait alors. Expérimentateur chevronné, il prit soin de cataloguer et recenser ces différentes figures, après s'être assuré de leur caractère reproductif.
Dispositif et démonstration de Chladni
Dispositif et démonstration de Chladni
Ces figures, désormais dénommées figures de Chladni, en hommage à leur découvreur, attirèrent l'attention de nombreuses personnalités de l'époque. Scientifiques et puissants se pressaient aux nombreuses démonstrations du musicien pour admirer le phénomène. Sa compréhension échappait toutefois à l'entendement des contemporains de Chladni.
L'empereur Napoléon Bonaparte fut enthousiasmé par ces démonstrations permettant d'entendre et "voir" le son. En 1809, il invita l'académie des sciences à proposer un prix pour expliquer le phénomène et il finança la traduction en français du traité majeur d'acoustique de Chladni.
La première à proposer une explication pour ces observations fut la mathématicienne Sophie Germain dans une correspondance privée à partir de 1811. Elle publia quelques années plus tard un résumé de ces études qui constitua le premier modèle mathématique pour la déformation d'une plaque sous une contrainte de force extérieure, son travail "Recherche sur la Théorie des surfaces élastiques" sera couronné par l'Académie des Sciences en 1816. Lagrange et Poisson corrigèrent et améliorèrent ce premier modèle. Il fallut toutefois attendre l'intervention de Kirchoff pour aboutir à une modélisation permettant d'approcher de façon satisfaisante le comportement d'une plaque. Il en profita pour résoudre le problème des figures de Chladni sur une plaque circulaire où les nombreuses symétries permettent de réduire la complexité des solutions.
Figure 1 - Figures de Chladni
Á l'aube du vingtième siècle, l'expert sur la théorie des sons, John William Strut qui passa à la postérité en tant que Lord Rayleigh résuma la situation dans son traité majeur "La Théorie du Son" : Le problème de la plaque rectangulaire dont les bords sont libres est d'une extrême difficulté et a pour l'essentiel résisté à toutes les tentatives de résolution. Ce fut la spectaculaire invention de Walther Ritz qui permit en 1909 d'effectuer le premier calcul précis des vibrations d'une plaque carrée.
Nous nous proposons dans le problème suivant de reprendre en partie la démarche d'analyse du problème et de mettre en œuvre la conception du code en permettant une résolution numérique.

I. 1 Introduction du modèle physique ( )

Nous considérons une plaque métallique carrée de coté , elle est d'épaisseur , de module de Young et sa masse volumique vaut .
Pour suivre les éventuelles déformation de la plaque, nous utilisons un repère cartésien . Au repos, la plaque se situe dans un plan horizontal de cote et chaque point de la plaque au repos est repéré par .
Repérage d'un point sur la plaque
Sous l'action d'une sollicitation extérieure, ou d'une contrainte, la plaque se déforme, chacun des points initialement en est alors décrit par le point . M est une fonction du champ initial de position et du temps .
Nous supposons que si les sollicitations sont modérées, nous aurons :
Dans le cadre de cette approximation, le point est à tout instant à la verticale de et sa seule variable d'espace indéterminée est son altitude . Nous pouvons, dans ce cas, considérer que la position de est décrite par la fonction :
est l'amplitude de vibration et est la fonction d'onde de vibration.
Une analyse du problème utilisant une approche de déformation élastique, permet de considérer que la fonction d'onde vérifie l'équation :
est la célérité de l'onde.
) Quelle est le nom de cette équation d'onde?
Quelles sont ces principales propriétés?
Citez au moins deux situations physiques distinctes pour lesquelles il existe une équation analogue.
) Pensez-vous que cette équation soit le reflet d'un modèle physique autorisant des pertes d'énergie? Justifiez votre réponse.
) Par analyse dimensionnelle, proposez une expression de cohérente vis à vis des paramètres physiques de la plaque.
) Application numérique : masse volumique , épaisseur module de Young et la longueur du coté de la plaque . Calculer .
) Soit une solution de l'équation (1) pour une plaque de coté possède une caractéristique temporelle .
Nous considérons, dans cette seule question, une plaque faite du même matériau, possédant la même épaisseur, et soumises aux mêmes types de conditions aux limites, mais de coté .
a) Déterminer, parmi ( ), la valeur du coefficient qui permet à la fonction d'être solution de l'équation (1) pour cette nouvelle plaque.
b) En déduire la caractéristique temporelle correspondante en fonction de .

I. 2 Modes de vibration ( )

En règle générale, les vibrations d'une plaque sont complexes et se décomposent en superposition de modes. Chacun de ces modes correspond à une vibration monochromatique (d'une seule fréquence).
) Pour résoudre l'équation (1) en , nous allons commencer par rechercher des solutions à variables séparables. C'est à dire des solutions qui seront de la forme :
a) En déduire les équations différentielles que doivent vérifier les fonctions et .
b) Pourquoi les solutions acceptables pour sont-elles seulement sinusoïdales?
c) Les solutions sont mises sous la forme , exprimez alors l'équation vérifiée par . Différerait-elle si nous avions privilégié la forme

I. 3 Simulation numérique temporelle ( )

L'équation différentielle que doit vérifier la fonction temporelle peut s'écrire après adimensionnement sous la forme :
C'est une équation différentielle linéaire d'ordre deux classique appelée équation harmonique. Nous l'utiliserons pour tester la pertinence de certaines méthodes numériques.
) Méthode d'Euler
a) Rappeler, en quelques lignes concises, le principe de la méthode d'Euler pour résoudre une équation différentielle.
b) Mettre l'équation précédente sous la forme d'un système différentiel linéaire du premier ordre et le présenter sous forme matricielle en caractérisant la matrice et en exploitant le vecteur tel que :
c) A partir de cette forme matricielle, introduire le pas de discrétisation temporel et mettre en œuvre la méthode d'Euler pour obtenir une équation aux différences correspondant au système initial.
Vous pourrez noter de façon réduite
) Méthode d'Euler à droite.
Pour obtenir , nous pouvons procéder de la façon suivante :
C'est la méthode d'Euler dite à droite, ou implicite, la version classique étant dite à gauche, ou explicite.
a) Exprimer l'équation liant dans ce cas à .
b) Le code ci-après correspond à l'implémentation de la méthode d'Euler à gauche. Le modifier pour implémenter la méthode d'Euler à droite.
# Constantes paramétriques
npoints=2**10 # indew maximal des tableaux
tporte=5*2*np.pi # durée d affichage
X0 =[1.,0] # conditions unibiales
# Initialrsation des tableaux
t=np linspace(0,tporte,npoints+1) # temps
tau=t[1]-t[0]
X=np.zeros((2,npoints+1),dtype=float) # h et h'
# Algorithme d'Euler
X[:,0]=X0 #initialisation
M=np array([[1,tau],[-tau,1]]) # matrice de l'equatron
for i in range(npoints): # Calcul iteratif
    X[:,i+1]=M,dot(X[:,i])
c) La méthode d'Euler à droite est elle plus pertinente que celle à gauche?
) Représentations graphiques
a) A partir du code donné à la question précédente, mettre en place les instructions pour obtenir l'affichage correspondant aux figures présentées ci-après.
Vous veillerez à la présence des légendes des courbes, des axes et des titres.
Figure 2 - Méthode d'Euler
b) Commentez les courbes obtenues et corrélez leurs allures aux propriétés de la méthode d'Euler et à l'équation (2).
c) Sans modifier le principe de l'algorithme utilisé, nous pouvons néanmoins obtenir les courbes ci-après. Quelle est, selon vous, la modification apportée au code précédent? Et quel en est l'inconvénient?
Figure 3 - Méthode d'Euler - version alternative
) Méthode de Runge-Kutta d'ordre deux (aucune connaissance préalable n'est nécessaire). s'obtient exactement à partir de avec la classique relation intégrale :
Nous pouvons obtenir une version approchée de cette relation en utilisant l'approximation :
a) Quel est le nom de la méthode employée pour approximer l'intégrale ? Qualitativement, pourquoi est-elle préférable aux méthodes précédentes?
b) L'analyse est faite sur la durée .
La valeur de la dérivée de au temps demande la mise en œuvre d'une méthode de calcul implicite, nous l'éviterons en estimant la valeur de au temps par la méthode d'Euler, c'est le principe de la méthode de Runge-Kutta. L'algorithme de calcul est alors le suivant :
Reprenez le code écrit pour la méthode d'Euler et adaptez le pour mettre en œuvre la méthode de Runge-Kutta.
c) La simulation numérique dans des conditions identiques à la méthode d'Euler nous fournit les graphes ci-après. Ils semblent correspondre aux attendus usuels.
Peut-on conclure à l'adéquation de la méthode de Runge-Kutta d'ordre deux? Argumentez votre réponse.
Figure 4 - Méthode de Runge-Kutta
) Méthode "stable".
Nous implémentons désormais le code ci-après :
\# Constantes parametriques
npoints $=2 * * 10$ \# index maximal des tableaux
tporte $=100 * 2 * \mathrm{np} . \mathrm{pi}$. I durée di af fichage
$\mathrm{XO}=[1,0] \quad$ \# condutions anitiales
\# Initialisation des tableaum
$\mathrm{t}=\mathrm{np} .1$ inspace ( 0, tporte, npoints $\dagger 1$ ). \# temps
tau=t[1]-t[0]
$\mathrm{X}=\mathrm{np}$ zeros $((2$, npoints +1$)$, dtype $=1$ oat $) \quad \#$ et $h^{\prime}$
\# Algorithme XXX
$\mathrm{X}[:, 0]=\mathrm{XO}$ \#anitialisation
A=np.array([[0,1],[-1,-tau]]) \# matrice de couplage
$\mathrm{M}=\mathrm{np} . \mathrm{identity}(2)+\mathrm{tau} * \mathrm{~A}$ \# matrice d'évolution
for i in range (npoints): \# Galcul itératif
    $X[:, i+1]=M \cdot \operatorname{dot}(X[:, i])$
Il nous permet d'obtenir les courbes de la figure (5).
a) A partir du code déployé, donnez les équations itératives permettant la mise en œuvre de la simulation.
b) Quel est l'ordre de cette méthode?
Pourquoi est elle "stable"?
Figure 5 - Méthode "Stable"

I. 4 Discrétisation spatiale du problème ( )

L'équation correspondant à un mode propre de pulsation peut s'écrire, pour sous la forme :
est la valeur propre associée au mode étudié.
Nous nous proposons de résoudre numériquement cette équation en utilisant une discrétisation et la méthode des différences finies. Nous introduisons, pour cela, un maillage de la plaque étudiée, de pas régulier, uniforme représente le nombre de segments du maillage.

) Équation adimensionnée

Nous allons effectuer le changement de variable ci-après pour faciliter le processus de discrétisation. Nous posons, pour une plaque de coté :
L'équation vérifiée par se mettra sous la forme.
Déterminer l'expression de en fonction de la pulsation .
Que devient le pas de discrétisation initial dans ce nouveau jeu de variables?
Nous allons chercher à résoudre numériquement cette équation différentielle linéaire en la discrétisant avec le pas régulier unité. Nous découpons les axes et en sous intervalles délimités par des ensembles de points définis de la manière suivante :
La plaque sera représentée par un ensemble de points, distribués comme ci-après si .
Figure 6 - Discrétisation de la plaque
Nous noterons, selon la convention suivante, la valeur approchée de correspondant au point de coordonnées ( ) :
) Discrétisation autour d'un point central
Nous étudions la situation d'un point du maillage loin des bords. Nous supposons que ce dernier de cordonnées ( ) possède ses huit plus proches voisins comme indiqué sur la figure (7).
Figure 7 - Points voisins d'un point commun de coordonnées
a) Exprimer la relation liant à par un développement limité à l'ordre deux.
b) Faire de même avec tous les points cardinaux du maillage et démontrer la formule approchée suivante :
14 ) Discrétisation autour des bords
Les bords de la plaque doivent être considérés différemment selon les conditions aux limites que nous désirons imposer. Il nous faut gérer les configurations types suivantes que nous désignerons respectivement par les termes de côté vertical, côté horizontal et de coins.
Figure 8 - Figuration des effets de bord
Les conditions aux limites classiques sont de deux types : soit les bords sont considérés comme fixes, soit ils sont considérés comme libres.
Dans notre cas, nous allons considérer que les points de la périphérie doivent être traités comme des points centraux, en associant aux points manquants de la distribution des valeurs nulles.
a) En déduire la formule approchée de (4) pour le côté vertical ( )
b) En déduire la formule approchée de (4) pour le côté horizontal ( )
c) En déduire la formule approchée de (4) pour le coin ( )
d) Quelles sont les conditions aux limites retenues dans ce cas?
Justifiez votre réponse.
) Détermination de l'équation matricielle équivalente
Nous introduisons le vecteur tel que :
Nous utilisons l'ensemble des vecteurs pour générer le vecteur d'état de l'ensemble de la plaque :
Le système d'équations précédentes peut alors se mettre sous la forme d'une équation matricielle :
Les vecteurs solutions de ce système sont les vecteurs propres de la matrice , les correspondants sont les valeurs propres associées.
a) Combien y-a-t-il de modes propres possibles?
b) Nous nous plaçons dans le cas où (cf figure 6), déterminer la matrice .
c) Généralisation
Dans le cas ou , la matrice peut se mettre sous la forme suivante où est la matrice identité de trace , et la matrice associée nulle de même dimension.
Déterminer l'expression de .
d) La matrice est symétrique, à coefficients réels, elle est, d'après le Théorème spectral, diagonalisable. C'est une matrice tridiagonale par blocs. Nous admettrons de plus qu'aucune de ces valeurs propres n'est nulle.
Nous supposons que le code qui génère la matrice sous la forme d'un tableau 2D de flottants existe, et a été produit par d'autres.
Construire la fonction genere recevant en entrée et renvoyant .
def genereM(A):
        """Fonction dont l'objectif est de renvoyer M
            à partir de A""""
        return M # renvoie la matrice M

I. 5 Méthode de la puissance itérée ( )

Nous allons chercher l'une des solutions de l'équation aux valeurs propres (5) en utilisant la méthode dite de la puissance itérée. Soit l'ensemble des matrices de taille , et sa restriction à l'ensemble des matrices carrées.
Á chaque matrice , nous associons un nombre réel positif appelé norme de et défini par :
a) Écrire en python la fonction norme qui reçoit en entrée une matrice de taille quelconque et renvoie la norme de .
Le recours à une fonction max native de python est interdit pour cette question.
def normeM(M):
    ""Fonction dont l'objectlf est de renvoyer
    la norme de M à partir de Mu""
    return r # norme de M
b) Écrire en python la fonction normevecteur qui reçoit en entrée un vecteur (matrice colonne) non nul, de taille quelconque, et renvoie un vecteur de même forme défini par :
Le recours à une fonction max native de python est toujours interdit pour cette question.
def normevecteur(F):
    return Fn # wecteur norme
) Soit une matrice carrée , et soit un vecteur aléatoire de . Nous formons la suite d'éléments de définie par la relation de récurrence :
a) Écrire une fonction puissanceiter qui à partir d'une matrice carrée et un entier , choisit aléatoirement un vecteur de dimension adéquate, puis calcule et renvoie le è terme de la suite .
def puissanceiter(M,p):
    return Fp # pième vecteur
b) Nous admettrons que la suite converge dans certaines conditions vers le vecteur propre principal associé à la valeur propre maximale en valeur absolue.
Nous allons donc itérer le processus de calcul précédent jusqu'à ce que la suite se stabilise. Soit la valeur de seuil choisie pour la stabilité, il nous faut calculer les termes de la suite jusqu'à ce que .
Écrire le code de la fonction iterstabilise qui à partir d'une matrice carrée et un réel , choisit aléatoirement un vecteur de dimension adéquate, puis calcule et renvoie le premier terme vérifiant la condition de stabilité de la suite .
def iterstabilise(M,er):
    return F vecteur stabolisê
c) Pour produire le code de la question précédente, il vous faudra utiliser une boucle conditionnelle.
Ce code va donc posséder un variant et un invariant de boucle. Après avoir rappelé les définitions de ces deux grandeurs, identifiez les dans le code que vous avez produit.
) Vecteur et valeur propre principaux
a) Le vecteur renvoyé par la fonction est alors le vecteur propre principal de M. Écrire le code python pour obtenir la valeur propre associée .
b) En déduire l'expression de la fréquence propre en Hertz du mode correspondant en fonction de .

I. 6 Représentation graphique ( )

Nous supposons que, par des méthodes numériques dont nous ne donnerons pas ici le détail, nous obtenons la suite des vecteurs propres et valeurs propres correspondants aux modes propres. Ces valeurs sont stockées dans deux tableaux de taille notée .
-- Le tableau des valeurs propres est un tableau 1D où les valeurs propres sont ordonnées par ordre croissant, il est nommé valprope.
  • Le tableau des vecteur propres est un tableau 2D où les vecteurs propres sont stockés selon l'indexation des valeurs propres, il est nommé vecteurprope. Le è vecteur propre s'obtient par vecteurpropre .
#turarries complementarres
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
def graphe(Z):
    n=Z. shape [0]
    X=Y = np.arange(n)
    X, Y = np.meshgrid(X, Y)
    fig = plt.figure(0,figsize=(10,8))
    ax = fig.gca(projection='3d')
    surf = ax.plot_surface(X, Y, Z,rstride=1,cstride=1,
        cmap=cm.spectral_r, linewidth=0, antialiased=False)
    ax.set_zlim(-1, 1)
    fig.colorbar(surf, shrink=0.5, aspect=10)
    plt.tight_layout()
    fig1=plt.figure(1,figsize=(6,6))
    cont=plt.contour(Z,np.arange(21)/10-1,cmap=cm.spectral_r)
    plt.clabel(cont, cont.levels, inline=True,
        fmt= '%1.1f', fontsize=10)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('Courbes de niveau')
    plt.tight_layout()
    plt.show()
) Le code ci-dessus permet la représentation des courbes de la figure (9). Pour fonctionner, il attend la matrice des valeurs .
Il faut la fabriquer à partir du vecteur propre de type (définition en Q15).
Écrire la fonction transforme qui à partir d'un vecteur propre renvoie la matrice .
def transforme(F):
    return Z # matrice des valeurs U
) Vous trouverez en page suivante (figure 9), quelques uns des modes de résonance de la plaque. Commenter ces courbes et corréler leurs tracés aux choix de modélisation effectués.

I. 7 Distribution des valeurs propres ( )

Nous disposons du tableau des valeurs propres. C'est un tableau 1D Numpy où les valeurs propres sont ordonnées par ordre croissant, il est nommé valpropre.
) Nous cherchons à savoir si une valeur se trouve dans les valeurs propres de la plaque. Le recours à une fonction in native de python est interdit pour cette question.
a) Si le tableau n'était pas ordonné, quelle serait la complexité asymptotique d'une telle recherche?
b) Écrire le code permettant une telle recherche pour la valeur , tolérant un écart de résolution et renvoyant un booléen comme résultat.
def recherchebrute(valpropre,v,er):
    return r # booléen
c) Le tableau étant ordonné, une recherche par dichotomie est préférable.
Quelle est la complexité asymptotique d'une recherche dichotomique?
d) Rappelez le détail d'un algorithme de dichotomie.
e) Écrire l'algorithme correspondant pour la valeur .
Pour cette implémentation, vous pouvez ignorer l'erreur de précision et la considérer comme nulle.
def recherchedicho(valpropre,v):
    return r # booldén
Figure 9 - Quelques modes propres
) En pratique, ces valeurs propres correspondent aux fréquences de résonance de la plaque. Dans l'étude d'ouvrages, il est bon de savoir si dans une plage de fréquence donnée, la structure possède des valeurs propres.
Nous pouvons alors prévoir les risques de mise en résonance de l'ouvrage. Toute résonance engendrera des oscillations de fortes amplitudes qui risquent d'amener les matériaux à sortir de leur plage de linéarité, endommageant ainsi durablement l'ouvrage.
Par exemple, le pont de la Basse-Chaîne en 1850 à Angers, et le pont de Broughton en 1831 près de Manchester, s'effondrent sous le passage d'une troupe militaire avançant au pas cadençé. Plus connu, l'effondrement du pont de Tacoma en 1940 est associé, dans la culture populaire, à l'existence d'une résonance du pont sous l'action des vents. L'exemple contemporain le plus proche est celui du pont piéton du Millénium Bridge. Inauguré en 2000 à Londres, il dut fermer deux jours plus tard en raison d'un phénomène de résonance provoqué par la marche des piétons.
a) Nous désirons disposer d'une fonction nous renvoyant sous forme de tableau 1D Numpy toutes les valeurs propres de la plaque dans un intervalle délimité ouvert par valmin et valmax. Écrire le code permettant une telle recherche et utilisant la dichotomie de la question précédente.
def rechercheplagedicho(valpropre, valmin, valmax):
    return valselect # tableautD
b) Un habitué de la librairie Numpy écrit le code python suivant qui renvoie le tableau attendu. Quel est son principe de fonctionnement? Commentez chacun des ordres présentés.
def valsearch(valpropre,valmin,valmax):
    mask=(valpropre>valmin) * (valpropre<valmax)
    return valpropre[mask]
c) Quelle est la complexité asymptotique de ce code?
d) En pratique, ce code s'avère près d'une centaine de fois plus rapide que celui de dichotomie. Comment pouvez-vous expliquer ce constat?

I. 8 Confrontation du modèle aux expériences ( )

Nous réalisons un dispositif expérimental permettant de confronter nos simulations à nos mesures. Nous considérons une plaque métallique uniforme et carrée sur laquelle nous disposons de fins grains de sable. La plaque est excitée par une onde acoustique émise par un haut parleur proche, pour certaines fréquences, la plaque entre en résonance avec l'émetteur sonore.
Nous pouvons alors distinguer, sur la plaque, la présence stable de ventres où l'amplitude de vibration est maximale, et la présence de nœuds où elle est nulle. Les grains sont expulsés des ventres et se concentrent à proximité des nœuds. Ces nœuds forment des courbes dites lignes nodales. Ce sont celles qu'a relevé Chladni et dont vous trouvez quelques exemples sur la figure 1. Nous avons relevé quelques unes des fréquences liées à ces résonances et nous les avons associées aux valeurs propres de l'équation (4) dans le tableau ci-après.
Nombre 1 2 3 4 5 6 7 8 9 10 11 12 13
valeur propre en ratio 2 5 5 8 10 10 13 13 17 17 18 20 20
fréquence en ratio 1 2,5 2,5 4 5 5 6,5 6,5 8,5 8,5 9 10 10
Pour éviter toute difficulté de calcul, les valeurs propres ont été divisées par une constante dimensionnée dont la valeur n'a pas à être connue. Il en est de même pour les fréquences relevées qui sont rapportées à la première fréquence de résonance détectée qui est de l'ordre de la dizaine de Hertz.
L'analyse, par transformée de Fourier, des courbes obtenues nous montre que les solutions spatiales caractérisées par la simulation numérique sont des familles de fonctions du type ci-après :
sont des entiers caractérisant le mode .
) Modèle initial. Il repose sur l'équation d'onde (1).
a) En considérant les formes d'ondes introduites, établir l'équation de dispersion liant la fréquence temporelle de l'onde aux entiers .
b) Application numérique.
Déterminer l'ordre de grandeur de la fréquence de résonance la plus basse . Est-il compatible avec celui donné par l'expérience?
c) La distribution des premières fréquences de résonance est elle conforme à celle prévue par l'équation de dispersion? (Une réponse argumentée est attendue)
d) Que pouvez-vous en conclure sur la pertinence du modèle utilisé ?
) Un improbable modèle.
Un étudiant suggère d'utiliser le modèle régit par l'équation d'onde ci-après :
a) Expliquez en quelques lignes pourquoi ce modèle est inadéquat.
b) Quelle est la dimension de la constante .
) Un autre modèle.
Un étudiant suggère d'utiliser le modèle régit par l'équation d'onde ci-après :
a) Quelle est la dimension de la constante .
b) Par analyse dimensionnelle, proposez une expression de la constante .
c) Quelle est l'équation de dispersion correspondant à cette équation d'onde pour les formes d'ondes introduites dans cette section?
d) La distribution des fréquences obtenue expérimentalement est elle conforme à celle prévue par cette nouvelle équation de dispersion?
e) Supposons que ce modèle soit plus pertinent que celui décrit par l'équation (1), montrer que, même dans ce cas, la recherche des solutions numériques de l'équation (3) reste adéquate.

) Dégénérescence des modes.

a) Dans le tableau des relevés expérimentaux, nous constatons la présence de fréquences identiques, comment pouvez vous justifier ces dernières?
b) La prise en compte des fréquences d'index 2 et 3 nous permet de proposer une solution sous la forme :
Déterminer l'équation de la ligne nodale correspondante.

II Annexe : Rappel Python

L'objectif de cette épreuve est de modéliser des systèmes, et d'assurer, par le biais d'une approche numérique, la résolution des problématiques posées. L'étude des figures de Chladni nous amène à simuler numériquement la réponse d'une plaque métallique. Notre approche se situe dans le cadre de l'ingénierie numérique du programme et conformément aux recommandations évoquées dans ce dernier nous privilégierons l'usage de python avec les bibliothèques Numpy.
Rappel du programme officiel - extrait Ingénierie numérique et simulation :
L'objectif est de familiariser les étudiants avec un environnement de simulation numérique. Cet environnement doit permettre d'utiliser des bibliothèques de calcul numérique et leur documentation pour développer et exécuter des programmes numériques. On veillera à faire aussi programmer par les étudiants les algorithmes étudiés. Aucune connaissance des fonctions des bibliothèques n'est exigible des étudiants. Au moment de l'élaboration de ces programmes d'enseignement, l'atelier logiciel Scilab ou le langage de programmation Python, avec les bibliothèques Numpy/Scipy, sont les environnements choisis.
Scilab n'a pas été retenu pour cette épreuve et nous nous limitons au langage Python.
En accord avec les exigences officielles, les fonctions et procédures spécifiques de la bibliothèque Numpy, dont nous avons l'usage, sont rappelées dans la présente annexe.
Recommandations :
Les fonctions attendues dans le sujet n'utiliseront pas la récursivité.
Elles ne doivent disposer dans leur code d'implémentation que d'un seul return.
Les éventuelles procédures n'en auront, bien sur, aucun.

II. 1 Librairies utilisées

Nous partons du principe que tous les programmes demandés sont précédés des appels suivants :
# - * - coding:Utf-8 -*
##ibrarimes utilisées et alias
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as rd
Les codes produits s'inspireront de ces quelques lignes pour l'exploitation des alias facilitant l'usage des fonctions et procédures des librairies appelées.

II. 2 Usage courant de Numpy

La librairie Numpy privilégie l'usage du type tableau. Ces derniers seront ici essentiellement des tableaux à une dimension ou deux dimensions. A l'occasion, les premiers seront parfois désignés comme des vecteurs, et les seconds comme des matrices.
Nous n'utiliserons toutefois pas le type spécifique python Matrix.
## commandes de base
# definir un tableau nul de tarlle nxp
A=np.zeros(shape=(n,p))
# définir un tableau identité de taille nxn
B=np.eye(n)
# défintr un tableau nempli de 1 unvformément nop
C=np.ones(shape=(n,p))
# obtenir les dimensions d'un tableau A = nop
n,p=A.shape # usage de l'attribut shape
# obtenir le nombre d'élements d'un tableau A
nb_elements=A.size # usage de l'attribut size
Les tableaux se prêtent à de nombreuses opérations arithmétiques. Par défaut, chaque opération est effectuée sur l'ensemble des cellules contenues dans le tableau.
## Opérations élémentaires sur les tableaux
# Addibron d'un scalarre y a chaque terme du tableau
j=1
D=A+j
# multiplication par un scalaire k
k=2
D=k*D
# additron, soustrotion, prodututerme à terme
AddBC=B+C
SubBC=B-C
ProdBC=B*C
Attention le produit de base est un produit terme à terme de chaque élément du tableau. Il ne correspond pas au produit matriciel dont certains ont coutume.
Pour effectuer un produit matriciel, il faut utiliser la méthode dot.
## Opératrons "matricuelles" courantes
# produit matriciel B x C
PmatBC=B.dot(C)
# Tranposée dut tableau C
C.T
# Lecture de la cellule [%,j] du tableau C à 2 dimensions
i,j=1,2
r=C[i,j]
Nous rappelons à cette occasion que l'indexation d'un tableau 2D à éléments couvre en python la distribution .

II. 3 Manipulation et copies de tableaux

Pour assurer la copie complète d'un tableau, il faut utiliser la méthode copy. Le simple égal est, à l'instar des listes de base, l'occasion de définir des alias
# Alias
F = C # F et C référencent le même tableau
## Copie d'un tableau
F=C.copy() # F réference une copre du tobleau C
la Librairie propose le redimensionnement d'un tableau avec la fonction reshape. Il faut bien sur que la forme visée ait le même nombre d'éléments que la forme initiale.
## Rejormage
% un tableau peut être réorganisé par la méthode reshape
E=np.ones(9) 犎 vecteur 1D de neuf 1
print(E)
[ 1. 1. 1. 1. 1. 1. 1. 1. 1.]
F=E.reshape(3,3) # reforme E en tableau 2D 303
print(F)
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1, 1, 1,]]
G=F.flatten() % renvore le tableau sous forme 1D
print (G)
[ 1.1.1.1.1.1.1.1.1.]
Numpy permet d'assembler les vecteurs et les matrices, de les concaténer en utilisant la fonction correspondante concatenate. Par défaut l'assemblage se fait selon la 1ère dimension (les lignes, donc assemblage vertical). L'option axis assemble "horizontalement".
$\mathrm{a}=\mathrm{np}$. arange (4) .reshape $(2,2)$
    array([[0, 1],
        [2, 3]])
$\mathrm{b}=4+\mathrm{np}$. arange (4) .reshape $(2,2)$
    array([[4, 5],
        [6, 7]])
np.concatenate((a,b))
    array ([[0, 1],
        [2, 3],
        [4, 5] ,
        [6, 7]])
np.concatenate((a,b),axis=0)
    array ([[0, 1],
        $[2,3]$,
        [4, 5] ,
        [6, 7]])
np.concatenate((a,b),axis=1)
    array ( $[[0,1,4,5]$,
        [2, 3, 6, 7]])
Les plus coutumiers d'entre vous pourront utiliser les techniques de slicing et de masquage qui ne seront pas rappelées ici. Si la librairie favorise le traitement en masse, nous acceptons néanmoins tous les codes utilisant de simples boucles.

II. 4 Utilisation du générateur aléatoire - numpy.random

Python dispose de plusieurs librairies permettant la génération aléatoire de nombres. Pour des raisons pratiques évidentes(vectorisation), nous exploitons ici la librairie random intégrée au sein de Numpy. Les utilisations correctes d'autres librairies, correctement introduites et exploitées seront bien sur acceptées.
La fonction rand() crée un tableau d'un format donné de réels aléatoires dans [ 0,1 [. La dimension du tableau est donnée par le paramètre passé dans le champ argument de la fonction, qui n'est autre que la forme shape du tableau renvoyé.
Exemple:
import numpy.random as rd # Appel de la librarrie
# tableau 1D comportant 10 éléments
print (rd.rand(10))
>>> [0.16653536 0.37216705 0.56565704 0.62948842 0.65555812 0.38543034
    0.1486412 0.52610282 0.4686787 0.81558018]
# tableau 2D comportant 3X2 ézénents
print(rd.rand(3,2))
>>> [[0.98992966 0.58907376]
    [0.6404654}0.53852321
    [0.12416014 0.28279454]}
FIN DE L'ÉPREUVE
Banque PT Modélisation PT 2019 - Version Web LaTeX | WikiPrépa | WikiPrépa