Version interactive avec LaTeX compilé
E3A Mathématiques 1 PSI 2015
Notez ce sujet en cliquant sur l'étoile
0.0(0 votes)
Intégrales à paramètresProbabilités finies, discrètes et dénombrementIntégrales généraliséesInformatiquePolynômes et fractions
e3a 2015 - PSI 1
durée 4 heures - calculatrices interdites
Exercice 1
But de l'exercice
Le jeu d'echec se joue sur un échiquier, c'est à dire sur un plateau de
cases. Ces casessont référencées de
à
(voir figures).
Une pièce, appelée le cavalier, se déplace suivant un "L" imaginaire d'une longueur de deux cases et d'une largeur d'une case.
Exemple (figure 1) : un cavalier situé sur la case atteint, en un seul déplacement, une des huits cases
ou
.
Dans toute la suite de l'exercice, on appellera case permise toute case que le cavalier peut atteindre en un déplacement à partir de sa position.
Une pièce, appelée le cavalier, se déplace suivant un "L" imaginaire d'une longueur de deux cases et d'une largeur d'une case.
Exemple (figure 1) : un cavalier situé sur la case
Dans toute la suite de l'exercice, on appellera case permise toute case que le cavalier peut atteindre en un déplacement à partir de sa position.
Le but de cet exercice est d'écrire un programme faisant parcourir l'ensemble de l'échiquier à un cavalier en ne passant sur chaque case qu'une et une seule fois

Figure 1
déplacements permis
déplacements permis

Figure 2 un exemple
| 8 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
| 7 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |
| 6 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
| 5 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
| 4 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| 3 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 2 | 8 | 9 | 10 | y | 12 | 13 | 14 | 15 |
| 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Figure 3 numérotation
Motivation et méthode retenue
Une première idée est de faire parcourir toutes les cases possibles à un cavalier en listant à chaque déplacement les cases parcourues. Lorsque celui-ci ne peut plus avancer, on consulte le nombre de cases parcourues.
- Si ce nombre est égal à
, alors le problème est résolu. - Sinon, il faut revenir en arrière et tester d'autres chemins.
- Exemple : on considère le parcours suivant d'un cavalier démarrant en
(figure 2)
Avec ce début de parcours, au déplacement suivant :
(a) le cavalier va en . Peut-il accomplir sa mission?
(b) le cavalier ne va pas en . Peut-il accomplir sa mission?
(a) le cavalier va en
(b) le cavalier ne va pas en
Il convient donc dans la résolution du problème proposé d'éviter de se retrouver dans la situation repérée en cette première question.
Dans tout ce qui suit, nous nommerons coordonnées d'une case la liste d'entiers
où
représente le numéro de ligne et
le numéro de colonne (tous deux compris entre 0 et 7 ). Par exemple, la case b3 a pour coordonnées
.
D'autre part, les cases sont numérotées de 0 à 63 en partant du coin gauche comme indiqué en figure 3.
D'autre part, les cases sont numérotées de 0 à 63 en partant du coin gauche comme indiqué en figure 3.
Nous appellerons indice d'une case, l'entier
ainsi déterminé.
a, par exemple, un indice égal à 17 .
2. Ecrire une fonction indice qui prend en argument la liste des coordonnées d'une case est renvoie son indice. Ainsi, indice ( ) doit être égal à 17 .
3. Ecrire une fonction coord qui à l'indice d'une case associela liste
de ses coordonnées. Ainsi coord (17) doit être égal à
.
4. On considère la fonction Python CasA suivante :
2. Ecrire une fonction indice qui prend en argument la liste des coordonnées d'une case est renvoie son indice. Ainsi, indice (
3. Ecrire une fonction coord qui à l'indice
4. On considère la fonction Python CasA suivante :
def CasA(n):
Deplacements= [[1,-2], [2,-1], [2,1], [1,2], [-1,2], [-2,1], [-2,-1], [-1,-2]]
L= []
i,j=Coord(n)
for d in Deplacements:
u=i+d[0]
v=j+d[1]
if }\textrm{u}>=0\mathrm{ and }\textrm{u}<8\mathrm{ and }\textrm{v}>=0\mathrm{ and }\textrm{v}<8\mathrm{ :
L.append(Indice([u,v]))
return(L)
(a) Que renvoient CasA(0) et CasA(39).
(b) Expliquer en une phrase ce que fait cette fonction.
5. Ecrire une fonction Init ne prenant aucun argument et qui modifie deux variables globales ListeCA et ListeCoups. ListeCoups recevra la iste vide. ListeCA recebra une listede 64 éléments. Chaque élément listeCA (pour
) devra contenir la liste des indices des cases qu'un cavalier peut atteindre en un coup à partir de la cas d'indice
.
6. Après exécution de la fonction Init(), la commande ListeCA[n] renvoie-t-elle [5], [10,17], ou une autre valeur?
7. Au cours de la recherche, lorsqu'on déplace le cavalier vers la case d'indice , cet indice
doit être retiré de la liste des cases permises à partir de la position
.
Exemple : après exécution de la fonction Init(), la liste des cases permises depuis est
et ListeCA [1] = [16, 18, 11]. La liste des cases permises depuis
est [
] et ListeCA [16]
.
Puis, on choisit de commencer le parcours en posant le cavalier en . Cette case doit donc être retirée de la liste des cases permises de
et
. En particulier pour
, la liste ListeCA [16] devient [33,26,10].
Cette méthode nous permet de détecter les blocages : le cavalier arrive sur la case d'indice ,
est alors retiré de toutes les listes ListeCA [k] pour toute case
permise pour
. Si dès lors l'une de ces listes devient vide, nous dirons que nous somme alors dans une situation critique, cela signifiera que la case d'indice
ne peut plus être atteinte que depuis la case d'indice
. Par conséquent,
(b) Expliquer en une phrase ce que fait cette fonction.
5. Ecrire une fonction Init ne prenant aucun argument et qui modifie deux variables globales ListeCA et ListeCoups. ListeCoups recevra la iste vide. ListeCA recebra une listede 64 éléments. Chaque élément listeCA
6. Après exécution de la fonction Init(), la commande ListeCA[n] renvoie-t-elle [5], [10,17],
7. Au cours de la recherche, lorsqu'on déplace le cavalier vers la case d'indice
Exemple : après exécution de la fonction Init(), la liste des cases permises depuis
Puis, on choisit de commencer le parcours en posant le cavalier en
Cette méthode nous permet de détecter les blocages : le cavalier arrive sur la case d'indice
- si le cavalier se déplace sur une autre case que celle d'indice
, alors cette dernière ne pourra plus jamais être atteinte; - si le cavalier se déplace sur la case d'indice
, il est bloqué pour le coup suivant. Soit la mission est accomplie, soit le cavalier n'a pas parcouru toutes les cases.
Le programme va réaliser la recherche en maintenant à jour la variable globale ListeCoups afin qu'elle contienne en permanence la liste des positions successives occupées par lecavalier au cours de ses tentatives de déplacement. Nous avons alors besoin d'écrire trois fonctions.
(a) Ecrire une fonction OccupePosition qui
(a) Ecrire une fonction OccupePosition qui
- prend comme argument un entier
(indice d'une case), l'ajoute à la fin de la variable globale ListeCoups, - puis enlève
de toutes les listes ListeCA[k] pour toutes les cases permises depuis la case d'indice , - renvoie enfin la valeur True si nous sommes dans une situation critique et False sinon.
On pourra utiliser la méthode remove qui permet de retirer d'une liste le premier élément égal à l'argument fouri. Si l'argument ne fait pas partie de la liste, une erreur sera retournée
L.remove(2) # modifie en [
]
L.remove(6) # provoque une erreur
(b) Ecrire une fonction LiberePosition qui ne prend pas d'argument et qui
L.remove(2) # modifie
L.remove(6) # provoque une erreur
(b) Ecrire une fonction LiberePosition qui ne prend pas d'argument et qui
- récupère le dernier élément
de la variable globale ListeCoups (i.e. l'indice de la dernière case jouée à l'aide de la fonction OccupePosition), - puis l'enlève de ListeCoups,
- et enfin, qui ajoute
à toutes les listes ListeCA [k] pour toutes les cases d'indice permises depuis la case d'indice .
On pourra utiliser la méthode pop qui renvoie le dernier élément d'une liste et le supprime de cette même liste.
et
(c) Ecrire une fonction TestePosition d'argument un entier(indice d'une case) qui : - occupe la position d'indice
, - vérifie si la situation est critique.
Si c'est le cas, la fonction vérifiera si les 63 cases sont occupées et, dans ce cas renverra True pour indiquer que la récecherche est terminée. Si les 63 cases ne sont pas occupées, la fonction libérera la case d'indice
et renverra False.
Dans le cas contraire, la fonction vérifiera avec TestePosition toutes les cases d'indice jouables après celle d'indice
(on prendra garde à affecter une variable locale avec la liste ListeCA [n] puisque celle-ci risque d'être modifiée lors des appels suivants). La fonction retournera True dès que l'un des appels à TestePosition retourne True ou libérera la case d'indice
et retournera False sinon.
8. Afin de réduire notablement la complexité temporelle du programme, on part du proncipe qu'il faut tester en priorité les cases ayantv le moins de cases permises possibles. On appellera valuation d'une case d'indice le nombre de cases permises pour cette case.
(a) Ecrire une fonction valuation qui prend comme argument un indice de case en entrée et renvoie la valuation de cette case.
(b) Ecrire une fonction Fusion qui prend comme arguments deux listes et
d'entiers entre 0 et 63 ; on suppose ces listes triées par ordre croissant de valuation de leurs éléments; l'appel fusion (A,B) retourne comme valeur la liste fusionnée de tous les éléments de A et B triée par ordre croissant de valuation de ses éléments.
(c) Ecrire une fonction TriFusion qui prend en argument une liste L d'entiers compris entre 0 et 63 et qui retourne comme valeur la liste de tous les éléments de L triée par valuation croissante de ses éléments.
(d) Modifier la fonction TestePosition pour qu'elle agisse ainsi que l'on a décidé en début de question.
Dans le cas contraire, la fonction vérifiera avec TestePosition toutes les cases d'indice
8. Afin de réduire notablement la complexité temporelle du programme, on part du proncipe qu'il faut tester en priorité les cases ayantv le moins de cases permises possibles. On appellera valuation d'une case d'indice
(a) Ecrire une fonction valuation qui prend comme argument un indice
(b) Ecrire une fonction Fusion qui prend comme arguments deux listes
(c) Ecrire une fonction TriFusion qui prend en argument une liste L d'entiers compris entre 0 et 63 et qui retourne comme valeur la liste de tous les éléments de L triée par valuation croissante de ses éléments.
(d) Modifier la fonction TestePosition pour qu'elle agisse ainsi que l'on a décidé en début de question.
Exercice 2
- Soit
. Déterminer une condition nécessaire et suffisante pour que soit diagonalisable dans . - On note
et son complémentaire dans . Prouver que est un ensemble dénombrable. - Soient (
) un espace probabilisable et définie de dans par
Déterminer
pour qu'il existe une probabilité
tel que
soit la loi de probabilité d'une variable aléatoire
définie sur
et à valeurs dans
. Préciser
.
4. Déterminer et la loi de probabilité de
.
5. Déterminer l'espérance de la variable aléatoire
.
6. Déterminer la fonction génératrice de la variable aléatoire . Retrouver alors la valeur de
obtenue à la question précédente.
7. Soit une variable aléatoire définie sur
, indépendante de la variable aléatoire
et suivant la loi
4. Déterminer
5. Déterminer l'espérance
6. Déterminer la fonction génératrice de la variable aléatoire
7. Soit
Soit alors
la variable aléatoire définie sur
par
. Déterminer la fonction génératrice de
. En déduire sa loi de probabilité.
8. Déterminer enfin la probabilité pour que la matrice soit diagonalisable.
8. Déterminer enfin la probabilité pour que la matrice
Exercice 3
On pose, lorsque cela est possible
- Déterminer l'ensemble de définition
de . - En justifiant son existence, calculer
. - Calculer
. On pourra utiliser l'application . - Calculer
. On pourra remarquer que la dérivée de est égale . - Vérifier que
est positive sur . - Montrer que
est décroissante sur . - Prouver que
est de classe sur et préciser l'expression de . Retrouver alors le résultat de la question précédente. - Soit
. Démontrer la relation
On pourra effectuer, en la justifiant, une intégration par parties.
9. Soit . Donner l'expression de
à l'aide de factorielles.
10. Pour tout réel , on pose
9. Soit
10. Pour tout réel
Prouver que
. Calculer
pour tout
.
11. En utilisant la question précédente, déterminer un équivalent de quand
.
12. Vérifier que . En déduire que
11. En utilisant la question précédente, déterminer un équivalent de
12. Vérifier que
- En utilisant des parties entières, prouver que
- Déduire des questions précédentes le tableau des variations de
sur et tracer sa courbe représentative dans un repère orthonormé. - Prouver que la fonction
est constante sur .
Exercice 4
Dans tout l'exercice, pour tout entier naturel
, on identifie polynôme de
et fonction polynomiale associée pour la structure d'espace vectoriel normé.
- Soit
un élément de unitaire (le terme de plus haut degré de est égal à 1).
(a) Soit. Montrer que .
(b) On suppose dans cette question queest scindé sur . En utilisant une factorisation de , montrer que
où
désigne le degré du polynôme
.
(c) On prend dans cette question .
(a) Donner une factorisation de dans
.
(b) Trouver tel que
.
(d) On suppose dans cette question que . Montrer que toutes les racines de
sont réelles. En déduire que
est scindé sur
.
(e) Enoncer clairement le résultat obtenu.
2. Soient un entier naturel non nul et
une suite de matrices trigonalisables de
qui converge vers une matrice
. On appelle pour tout entier naturel
le polynôme caractéristique de
et
celui de la matrice
.
(a) Donner le degré et le coefficient dominant de .
(b) Prouver que .
(c) En déduire que est trigonalisable.
(d) Qu'en conclut-on pour l'ensemble des matrices trigonalisables de ?
3. On prend dans cette question et
où
est un entier non nul.
(a) Déterminer .
(b) Etudier la diagonalisabilité des matrices et
dans
.
(c) Conclure.
(c) On prend dans cette question
(a) Donner une factorisation de
(b) Trouver
(d) On suppose dans cette question que
(e) Enoncer clairement le résultat obtenu.
2. Soient
(a) Donner le degré et le coefficient dominant de
(b) Prouver que
(c) En déduire que
(d) Qu'en conclut-on pour l'ensemble des matrices trigonalisables de
3. On prend dans cette question
(a) Déterminer
(b) Etudier la diagonalisabilité des matrices
(c) Conclure.
