1.7. Library of exercices in Python#

Each serie of exercises is written in a file exoSxxx.py for the section Sxxx.

You can list the exercises of a section Sxxx using the following commande:

  `test_exo -l Sxxx`

For each exercice, you have to write a function with the correct arguments, and which return the value asked.

The name of the exercise is exon where n is the sum of the number of the section and the number of the exercise within the section.

- ie: exo11 for exercice 1 section 10

1.7.1. S0 Basic#

0. Given two numbers,   return the mean 
1. Given two numbers,   return the absolute value of the difference
2. Given two numbers,   return the geometric mean
3. Given two numbers,   return the two numbers swaped (as a tuple)
4. Given three numbers, return the mean
5. Given three numbers, return the geometric mean
6. Given three numbers, return the sum of the absolute value of the differences
7. Given three numbers, return the circular permutation (to the right) (as a tuple)
8. Given three numbers, return the circular permutation (to the left) (as a tuple)
9. Given three numbers, return two times the circular permutation (to the right) (as a tuple)

1.7.2. S10 Branches#

0. Given a point with integer coordinates (x, y), return the neigbhoring direction as a string 'N','E','S','W'. 
1. Given an input string, return the string with the first and last letter removed if they were equal, or the original string if they were not
2. On a chessboard, positions are marked with a letter between a and h for the column and a number between 1 and 8 for the row. Given an input string with a letter and number, return the string "corner", "border" or "inside"  whether it is in a corner, at the border, or in the inside of the chess board. 
3. On a chessboard, fields are marked with a letter between a and h for the column and a number between 1 and 8 for the row. Given a position string, return the color of the field (string "white" or "black"). 
4. Given the x and y coordinates of a point, return the string "first","second","third","fourth","x-axis","y-axis" or "origin"  whether the point lies in the first, second, third, or fourth quadrant plane, or on the x-axis, or on the y-axis, or the origin. 
5. Given three numbers x, y, z, determine if one of them is the sum of the two others, and return True or False otherwise. 
6. Given three numbers x, y, z, return 0 if they are all distinct, 2 if two are the same, or 3 if all three are the same. 
7. Given three integers x, y, z, return the sum of the odd integers. 
8. Given three integers x, y, z, return the sum of the even integers. 
9. Given three input strings, return the shortest one. 

1.7.3. S010 Functions on string#

0. Write a Python function to get a string made of the first 2 and the last 2 chars from a given a string. If the string length is less than 2, return instead the empty string.
1. Write a Python function to get a string from a given string where all occurrences of its first char have been changed to '$', except the first char itself.
2. Write a Python function that takes a list of words and returns the first longest word.
3. Write a Python function that takes a list of words and returns the length of the longest word.
4. Write a Python function that takes a list of words and returns the last longest word.
5. Write a Python function to remove the characters which have odd index values of a given string
6. Write a Python function to remove the characters which have even index values of a given string

1.7.4. S20 Functions with Decisions#

0. Given two numbers, return true if they both have the same sign. 
1. Write a function that checks whether two points with coordinates x1, y1 and x2, y2 are in the same quadrant. 
2. Given two numbers, return their distance if it less than 10, or 10 otherwise. 
3. On a chessboard, positions are marked with a letter between a and h for the column and a number between 1 and 8 for the row. Given two position strings, return true if they have the same color. 
4. Given three numbers x, y, z and a Boolean variable strict, return true if strict is false and x ≤ y ≤ z, or strict is true and x < y < z. 
5. Given four numbers a, b, c, d, return true if exactly two of them are the same. 
6. Given three numbers, return true if they are evenly spaced; that is, sorted in ascending or descending order, with the same distance between them. 
7. Repeat for four numbers. Hint: Use the previous problem. 
8. Given numbers x, y, and target, return whichever of x and y is closer to the target. If they have the same distance, return the smaller of the two. 
9. Given two integers, return the quotient and the rest of the integer division as a tuple

1.7.5. S30 Applications basiques 1#

0. Écrire une fonction qui calcule la déformation en traction dans une poutre encastrée de longueur L, de section S, de module d'Young E et soumise à une force F en x=L. (Les arguments sont a passer dans cette ordre et sont en unité SI)
1. Écrire une fonction qui a pour argument 3 valeurs (a,b,c) et qui les renvoie  triées  par ordre croissant 
2. Écrire une fonction qui convertit une température de degrés Celsius en degrés Fahrenheit et renvoie le résultat (on rappelle que f=9/5c+32)
3. Écrire une fonction qui convertit une température de degrés Celsius en degrés Fahrenheit (on rappelle que f=9/5c+32) et renvoie le résultat arrondi au centième de degré Farenheit inférieur
4. Ecrire une fonction qui calcule le PGCD de 2 nombres entiers positifs

1.7.6. S40 Applications basiques 2#

0. Écrire une fonction qui calcule les racines d’un trinôme du second degré donné par ses 3 coefficients et qui renvoie toujours les deux racines, mais en distinguant par le type des variables (réelles, complexes)
1. Une balle est tirée du haut d’un immeuble de hauteur h0, avec une vitesse initiale V0 et un angle alpha en degré par rapport l’horizontale et une gravité g=10.  Écrire une fonction qui calcule la hauteur maximale qu’atteint la balle.
2. Une balle est tirée du haut d’un immeuble de hauteur h0, avec une vitesse initiale V0 et un angle alpha en degré par rapport l’horizontale et une gravité g=10.  Écrire une fonction  qui calcule l’instant à laquelle elle atteint sa hauteuri maximum.
3. Une balle est tirée du haut d’un immeuble de hauteur h0, avec une vitesse initiale V0 et un angle alpha en degré par rapport l’horizontale et une gravité g=10.  Écrire une fonction  qui calcule la distance qu’elle a parcouru avant de retoucher le sol.
4. Une balle est tirée du haut d’un immeuble de hauteur h0, avec une vitesse initiale V0 et un angle alpha en degré par rapport l’horizontale et une gravité g=10.  Écrire une fonction  qui calcule  la vitesse au moment de l’impact.
5. Une balle est tirée du haut d’un immeuble de hauteur h0, avec une vitesse initiale V0 et un angle alpha ien degré par rapport l’horizontale et une gravité g=10.  Écrire une fonction  qui calcule  l’instant de l’impact.
6. Considérons un profil d’aile d’avion de corde L se déplaçant dans un fluide de masse volumique rho à la vitesse V sur laquelle on mesure une force d’intensité T avec un angle alpha en degré par rapport à la vitesse. Ecrire une fonction qui calcule le coefficients de portance Cp (i.e. la force de portance adimensionnée par 1/2*rho*V*V*L)
7. Considérons un profil d’aile d’avion de corde L se déplaçant dans un fluide de masse volumique rho à la vitesse V sur laquelle on mesure une force d’intensité T avec un angle alpha en degré par rapport à la vitesse. Ecrire une fonction qui calcule le coefficient de trainée Ct (i.e. la force de trainée adimensionnée par 1/2*rho*V*V*L)
8. Considérons un profil d’aile d’avion de corde L se déplaçant dans un fluide de masse volumique rho à la vitesse V sur laquelle on mesure une force d’intensité T avec un angle alpha en degré par rapport à la vitesse. Ecrire une fonction qui calcule la finesse de l aile.

1.7.7. S50 Array 1D (basic)#

0. Given an integer n, return a numpy array of length n containing 1 -1 1 -1 ... 
1. Given integers n and k, return a numpy array of length n containing 0 1 2 ... k-1 0 1 2 ... k-1 ... 
2. Given integers a and b, return a numpy array containing a, a + 1, a + 2, ..., b. 
3. Given integers a and b, return a numpy array containing all even numbers that are at least a and at most b. 
4. Given an integer n, return a numpy array containing 1 2 2 3 3 3 4 4 4 4 ... and finally n repeated n times.
5. Given a numpy array of integers, return the difference between the maximum and minimum. 
6. Given a numpy array of integers, find the shortest distance between two consecutive elements.
7. Given a numpy array of integers, find the largest distance between two consecutive elements.
8. Given a numpy array of integers, return True if all the elements are different 
9. Given a numpy array of integers, return the array of sorted elements in reverse order

1.7.8. S050 Array numpy 1D#

0. Soit un entier n > 3, renvoi un tableau de n reels egal à 1 par defaut et avec le 1er element egal à 0
1. Soit un entier n > 3, renvoi un tableau de n reels egal à 1 par defaut et avec le 2nd element egal à 0
2. Soit un entier n > 3, renvoi un tableau de n reels egal à 1 par defaut et avec le dernier element egal à 0
3. Soit un entier n > 3, renvoi un tableau de n reels egal à 1 par defaut et avec l'avant dernier element egal à 0
4. Soit un entier n, un entier k et un reel val, renvoi un tableau de n reels egal à 0 par defaut et avec le kième element egal à val
5. Soit un entier n, et un reel val, renvoi un tableau de n reels égal à 0 par defaut, et avec une valeur sur 2 égale à val, i.e. renvoi un tableau de valeurs: 0,val,0,val,0.,val ..

1.7.9. S60 Arrays 1D#

0. Given an array of integers and a value, return the position of the element that is closest to the value. If there is more than one, return the position of the first one.
1. Given an array of integers, count how many elements are negative.
2. Given an array of integers, return the average of all negative elements.
3. Given an array of integers, return the sum of all positive elements.
4. Given an array of integers, return the sum of all odd elements.
5. Given an array of integers and two values a and b, return the sum of all elements that are at least a and at most b.
6. Given an array of integers, return the average of all positive elements.
7. Given an array of integers, return the product of all non-zero elements.
8. Given an array of integers, give the largest sum of n consecutive elements.
9. Given an array of integers and an integer n, return an array of the averages of n consecutive elements of the original array.

1.7.10. S70 Arrays 2D#

0. Ecrire une fonction qui calcule la matrice de VanderMonde pour un vecteur X d'ordre n, qui contient dans chaque colonne  j (j de 1 a n): X^(j-1).
1. Ecrire une fonction qui calcule la matrice symetrique de Toeplitz pour un vecteur X d'ordre n: i.e.  telle que A[i,j]=X[j-i]  pour j>=i (i,j de 0 a n-1).
2. Soit un vecteur X d'ordre n et un vecteur Y d'ordre n correspondant à une permutation des élements de X, écrire une fonction qui renvoie la matrice de permutation P: i.e. tq Y = P.X
3. Soit 3 matrices carrées A,B,C de dimension identique, écrire une fonction qui renvoie une matrice diagonale par blocs par assemblage de n blocs avec A sur la diagonale, B sur la diagonale supérieure et C sur la diagonale inférieure.     
4. Soit une matrice A, écrire une fonction qui calcule la serie : Id + A + A^2/2 + A^3/3 ... + A^n/n (ou Id est la matrice identitée)
5. Soit une matrice A, écrire une fonction qui calcule la serie : Id + A + A^2/2! + A^3/3! ...+ A^n/n! (ou Id est la matrice identitée)
6. Soit une matrice A et un vecteur X, écrire une fonction qui calcule le vecteur Y = X + A.X + A^2.X/2  ..A^n.X/n  
7. Soit une matrice A et un vecteur X, écrire une fonction qui calcule le vecteur Y = X + A.X + A^2.X/2! ..A^n.X/n!

1.7.11. S80 somme précision#

0. déterminer la précision machine eps, i.e. le plus grand réel tel que 1.+eps # 1. 
1. ecrire une fonction qui teste si 2 nombres reels a et b  sont égaux avec une précision eps donnée.
2. écrire une fonction qui teste si 2 vecteurs X et Y ont le même module avec une precision eps donnée.
3. écrire une fonction qui teste si 2 matrices A et B ont la meme norme L2  avec une precision eps donnée.
4. écrire une fonction qui teste si 2 matrices A et B ont les mêmes coefficients avec une precision eps donnée.
5. écrire une fonction qui teste si 2 matrices A et B ont la même trace avec une precision eps donnée.
6. écrire une fonction qui teste si 2 matrices A et B ont le même déterminant avec une precision eps donnée
7. ecrire une fonction qui teste si 2 vecteurs X et Y sont orthogonaux avec une precision  eps donnée
8. ecrire une fonction qui teste si 2 vecteurs X et Y sont colinéaires avec une precision  eps donnée

1.7.12. S90 exercice sur les tests#

0. Given a point with integer coordinates (x, y), return the neigbhoring direction as a string 'N','E','S','W'    
1. Given an input string, return the string with the first and last letter removed if they were equal, or the original string if they were not
2. On a chessboard, positions are marked with a letter between a and h for the column and a number between 1 and 8 for the row.  Given an input string with a letter and number (p.e. b3) , return the string "corner", "border" or "inside"  whether it is in a corner, at the border, or in the inside of the chess board.
3. On a chessboard, fields are marked with a letter between a and h for the column and a number between 1 and 8 for the row. Given a position string (p.e. c4), return the color of the field (string "white" or "black").
4. Given the x and y coordinates of a point, return the string "first","second","third","fourth","x-axis","y-axis" or "origin"  whether the point lies in the first, second, third, or fourth quadrant plane, or on the x-axis, or on the y-axis, or the origin.
5. On a chessboard, positions are marked with a letter between a and h for the column and a number between 1 and 8 for the row. Given two position strings (i.e. c3 b5), return true if they have the same color

1.7.13. S100 Algorithme 1 (nombre)#

0. Écrire une fonction qui calcule le terme d'ordre N de la suite de Fibonacci. On rappelle que cette suite est une suite d'entiers dans laquelle chaque terme est la somme des deux termes qui le précèdent. Elle commence par les termes 0 et 1
1. Écrire une fonction booléenne  qui teste si un nombre entier N est premier. On utilisera pour cela le crible d'Eratosthène. L'algorithme procède par élimination. On crée la liste de tous les entiers de 2 à N et on supprime successivement tous les multiples des entiers de 2 à N. En supprimant tous les multiples, à la fin il ne restera que les entiers qui ne sont multiples d'aucun entier, et qui sont donc premiers.
2. Écrire une fonction qui détermine le plus grand entier premier inférieur ou égale à N. On utilisera pour cela le crible d'Eratosthène. L'algorithme procède par élimination. On crée la liste de tous les entiers de 2 à N et on supprime successivement tous les multiples des entiers de 2 à N. En supprimant tous les multiples, à la fin il ne restera que les entiers qui ne sont multiples d'aucun entier, et qui sont donc premiers.
3. Écrire une fonction qui détermine la somme des nombres premiers inférieur ou égale à N. On utilisera pour cela le crible d'Eratosthène. L'algorithme procède par élimination. On crée la liste de tous les entiers de 2 à N et on supprime successivement tous les multiples des entiers de 2 à N. En supprimant tous les multiples, à la fin il ne restera que les entiers qui ne sont multiples d'aucun entier, et qui sont donc premiers.
4. Écrire une fonction qui détermine le produit des nombres premiers inférieur ou égale à N. On utilisera pour cela le crible d'Eratosthène. L'algorithme procède par élimination. On crée la liste de tous les entiers de 2 à N et on supprime successivement tous les multiples des entiers de 2 à N. En supprimant tous les multiples, à la fin il ne restera que les entiers qui ne sont multiples d'aucun entier, et qui sont donc premiers.
5. Un nombre est dit tricolore s'il s’écrit  comme la somme de 3 nombres carrés parfaits non nuls. Ecrire une fonction qui test si N est tricolor.
6. Un nombre est dit tricolore s'il s’écrit  comme la somme de 3 nombres carrés parfaits non nuls. Ecrire une fonction qui calcule le nombre tricolore le plus grand inférieur ou égale à N.
7. Ecrire une fonction pour déterminer si un nombre entier N fait partie d'un triplet pythagoricien, i.e. si son carré est la somme de 2 nombres carrés parfaits non nuls.
8. Ecrire une fonction pour déterminer le plus grand entier inférieur ou égale à N qui fait partie d'un triplet pythagoricien, i.e. si son carré est la somme de 2 nombres carrés parfaits non nuls.

1.7.14. S110 Algorithme 2 (nombre)#

0. Ecrire une fonction qui pour un entier N, calcule le nombre d'occurence d'un chiffre p (charactère '0' à '9') dans la représentation décimale de N.
1. Ecrire une fonction qui pour un entier N, calcule le nombre d'occurence d'un chiffre p (charactère '0'-'9' 'a'-'f') dans la représentation hexadécimale de N.
2. Ecrire une fonction qui renvoie la représentation binaire sur 32 bits (sous forme d'une chaine de 32 caractères  '0' ou '1') d'un nombre entier N.
3. Ecrire une fonction qui pour un entier N calcule le nombre d'occurrences d'un chiffre binaire d ('0' ou '1') dans sa représentation binaire sur 32 bits.
4. Écrire une fonction qui détermine les diviseurs premiers d'un entier N. On renvoie une liste de diviseurs classée par ordre croissant
5. Écrire une fonction qui détermine le plus grand nombre premier diviseur d'un entier N.
6. Écrire une fonction qui détermine le plus petit nombre premier (>=2) diviseur d'un entier N.
7. Ecrire une fonction qui renvoie le coté du plus grand carré permettant de paver 

exactement une piece de cotés a et b (entiers)

1.7.15. S120 Algorithme 3 (codage)#

0. Ecrire une fonction qui chiffre un texte (en minuscule sans accent) en utilisant le codage de César, i.e. en décalant chaque caractère minuscule vers la gauche de p positions (permutation circulaire).
1. Ecrire une fonction qui déchiffre un texte codé (en minuscule sans accent) avec le codage de César, i.e. obtenu en décalant chaque caractère minuscule vers la gauche de p positions (permutation circulaire).
2. Ecrire une fonction qui chiffre un texte (en minuscule sans accent) en utilisant le codage de Vigenère avec un mot clé (string), qui donne le decalage successif ivers la droite de chaque caractère minuscule (permutation circulaire).
3. Ecrire une fonction qui déchiffre un texte (en minuscule sans accent) codé en utilisant le codage de Vigenère avec un mot clé (string), qui donne le decalage successif ivers la droite de chaque caractère minuscule (permutation circulaire).

1.7.16. S130 Algorithme numerique#

0. Calculer par dichotomie l'approximation de la racine d'une fonction f(x) se trouvant dans l'intervalle [a,b] après N iterations.
1. Calculer l'approximation du cosinus d'un angle theta en radian (entre 0 et pi/2) en utilisant l'algorithme de CORDIC (voir wikipedia ou on prendra x0=0.60725) au bout de N iterations
2. Calculer l'approximation du sinus d'un angle theta en radian (entre 0 et pi/2) en utilisant l'algorithme de CORDIC (voir wikipedia ou on prendra x0=0.60725) au bout de N iterations
3. Calculer l'approximation du cosh(x) (cosinus hyperbolique) pour 0<x<1 en utilisant l'algorithme de CORDIC (voir wikipedia ou on prendra x0=1.20513) au bout de N iterations
4. Calculer l'approximation du sinh(x) (sinus hyperbolique) pour 0<x<1 en utilisant l'algorithme de CORDIC (voir wikipedia ou on prendra x0=1.20513) au bout de N iterations

1.7.17. S140 exercice dictionnaire#

0. A partir d'un texte en français (string) et de sa traduction (mot à mot) en anglais, renvoyer un dictionnaire français:anglais
1. Avec un dictionnaire et un texte en français (string), renvoyer sa traduction (mot à mot) en anglais. Si un mot ne se trouve dans le dictionnaire, on le laisse en français
2. A partir d'une liste d'objets (string), créer un dictionnaire qui a pour clé le nom de l'objet et pour valeur le nombre d'occurrence de l'objet dans la liste.
3. A partir d'un texte (string), créer un dictionnaire qui a pour clé un mot du texte et pour valeur le nombre d'occurrence du mot dans le texte.
4. Creer un dictionnaire pour representer les pièces sur un échiquier en début de partie. La clé est la position  sur l'échiquier (avec la notation standard a1 a2 ... f8) et la valeur le nom de la pièce (on notera les pièces T C F D R P pour tour, cavalier, fou, dame, roi et pion) et sa couleur (n pour noir et b pour blanc): en e1 on a Rb (rem: les cases vides n'ont pas d'entrée dans le dictionnaire)
5. Avec un dictionnaire representant les pièces sur un échiquier, déterminer la (ou les) position(s) d'une piece passée en argument. La clé du dictionnaire est la position sur l'échiquier (avec la notation standard a1 a2 ... f8) et la valeur le nom de la pièce (on notera les pièces T C F D R P pour tour, cavalier, fou, dame, roi et pion) et sa couleur (n pour noir et b pour blanc): Rb en e1 pour roix blanc sur la case e1 (rem: les cases vides n'ont pas d'entrée dans le dictionnaire)
6. Avec un dictionnaire representant les pièces sur un échiquier, déterminer le nombre de pièces présentes sur l'échiquier du type donné passé en argument. La clé du dictionnaire est la position sur l'échiquier (avec la notation standard a1 a2 ... f8) et la valeur le nom de la pièce (on notera les pièces T C F D R P pour tour, cavalier, fou, dame, roi et pion) et sa couleur (n pour noir et b pour blanc): Rb en e1 pour roix blanc sur la case e1 (rem: les cases vides n'ont pas d'entrée dans le dictionnaire)
7. Avec un dictionnaire representant les pièces sur un échiquier, déterminer le nombre de pièces de couleur noire présentes sur l'échiquier. La clé du dictionnaire est la position sur l'échiquier (avec la notation standard a1 a2 ... f8) et la valeur le nom de la pièce (on notera les pièces T C F D R P pour tour, cavalier, fou, dame, roi et pion) et sa couleur (n pour noir et b pour blanc): Rb en e1 pour roix blanc sur la case e1 (rem: les cases vides n'ont pas d'entrée dans le dictionnaire)
8. Avec un dictionnaire representant les pièces sur un échiquier, déterminer le nombre de pièces de couleur blanche présentes sur l'échiquier. La clé du dictionnaire est la position sur l'échiquier (avec la notation standard a1 a2 ... f8) et la valeur le nom de la pièce (on notera les pièces T C F D R P pour tour, cavalier, fou, dame, roi et pion) et sa couleur (n pour noir et b pour blanc): Rb en e1 pour roix blanc sur la case e1 (rem: les cases vides n'ont pas d'entrée dans le dictionnaire)

1.7.18. S200 gestion de fichier#

0. Soient 2 vecteurs reels X et Y, les écrire (en colonne) dans un fichier (dont on donne le nom) et avec une entete (que l'on spécifie) sur la première ligne commençant par un #
1. Lire dans un fichier (dont on donne le nom) les 2 premieres colonnes et les renvoyer comme comme 2 vecteurs numpy. Le fichier a une premiere ligne d'entete commencant par #
2. Soient 2 vecteurs reels X et Y, les écrire (en colonne) avec un format cvs (compatible avec un tableur) dans un fichier (dont on donne le nom). Les valeurs dansle fichier doivent être séparées par une virgule.
3. Lire dans un fichier au format cvs (dont on donne le nom) les 2 premieres colonnes et les renvoyer comme comme 2 vecteurs numpy. Les valeurs dans le fichier sont séparées par une virgule.
4. Soient 2 vecteurs reels X et Y, les écrire (en colonne) avec un format cvs français (compatible avec un tableur) dans un fichier (dont on donne le nom). Les valeurs réelles sont écrites avec une virgule (à la place du point) et séparées par un point virgule.
5. Lire dans un fichier (dont on donne le nom) au format cvs français (compatible avec un tableur) les 2 premieres colonnes et les renvoyer comme comme 2 vecteurs numpy. dans un fichier (dont on donne le nom). Les valeurs réelles sont écrites avec une virgule (à la place du point) et séparées par un point virgule.
6. Soient un tableau XY de réels de dimension (nn,2) et un tableau d'entiers TBC de dimension (ne,3), écrire ces 2 tableaux dans un fichier (dont on spécifie le nom) sous la forme suivante: sur la première ligne valeur de nn et de ne, ensuite les valeurs de XY par colonne puis les valeurs de TBC par colonne
7. Lire dans un fichier (dont on spécifie le nom) un tableau XY de réels de dimension (nn,2) et un tableau d'entiers TBC de dimension (ne,3) et les renvoyer comme 2 vecteurs numpy. La première ligne du fichier contiens la valeur de nn et de ne, ensuite les valeurs de XY par colonne puis les valeurs de TBC par colonne.

1.7.19. S210 traitement de données (TP 1)#

0. renvoie la valeur du parametre alpha contenu dans le fichier
1. renvoie le nombre de valeurs contenues dans le fichier
2. renvoie les tableaux X,Y contenues dans le fichier à la colonne num
3. renvoie la moyenne de X,Y 
4. lissage de X,Y par Y=aX**b

1.7.20. S220 traitement de données (TP 2)#

0. renvoie les tableaux T,X,Y contenus dans le fichier 
1. trie les 3 tableaux T,X,Y par rapport a T (sur place)
2. retourne l'amplitude, la phase et la frequence fondamentale d'un signal echantillonée sur T et a valeurs X
3. ecrit les tableaux T,X,Y dans le fichier fichier

1.7.21. S250 éléments finis 1D (TP)#

0. matrice elementaire P1
1. second membre elementaire P1
2. calcule matrice P1
3. calcule second membre P1
4. calcule solution P1
5. interpolation solution P1 en un pt x
6. calcule erreur aux pts X avec N elts 

1.7.22. S300 EDO oscillateur harmonique(TP)#

résolution EDO pendule simple non lineaire et oscillateur anharmonique

0. Calculer la position d'un pendule simple non linéaire de pulsation omega, laché sans vitesse initiale avec un angle theta0, avec la méthode d'Euler avec un pas en temps dt au bout de n itérations.
1. Calculer la position d'un pendule simple non linéaire de pulsation omega, laché sans vitesse initiale avec un angle theta0, avec la méthode de runge kutta d'ordre 2 avec un pas en temps dt au bout de n itérations.
2. Calculer la position d'un pendule simple non linéaire de pulsation omega, laché sans vitesse initiale avec un angle theta0, avec la méthode de runge kutta d'ordre 4 avec un pas en temps dt au bout de n itérations.
3. Calculer la position d'un pendule simple non linéaire de pulsation omega, laché sans vitesse initiale avec un angle theta0 au bout d'un temps tf en utilisant odeint de scipy
4. Calculer la periode d'oscillation d'un pendule simple non linéaire de pulsation omega, laché sans vitesse initiale avec un angle theta0
5. Calculer la position d'un oscillateur anharmonique de parametres omega et a (solution de l'EDO: x'' + omega^2 (x - a x^2)=0 , laché sans vitesse initiale à la position x0 au bout d'un temps tf en utilisant odeint de scipy
6. Calculer la periode d'un oscillateur anharmonique de parametres omega et a (solution de l'EDO: x'' + omega^2 (x - a x^2)=0 , laché sans vitesse initiale à la position x0 
7. Calculer la position moyenne d'un oscillateur anharmonique de parametres omega et a (solution de l'EDO: x'' + omega^2 (x - a x^2)=0 , laché sans vitesse initiale à la position x0

1.7.23. S400 exercise sur les classes#

0. Ecrire une classe pour manipuler les paraboles définies par 3 points non alignés, à qui on fournit les coordonnées X et Y (tableaux numpy de dim 3) et qui possède une méthode coeff() qui renvoie les coefficients a,b,c de l'équation y=ax**2+bx+c de la parabole. On passe le nom de la classe pour la validation
1. Ecrire une classe pour manipuler les paraboles définies par 3 points non alignés, à qui on fournit les coordonnées X et Y (tableaux numpy de dim 3) et qui possède une méthode concave() qui renvoie True si la parabole est concave. On passe le nom de la classe pour la validation
2. Ecrire une classe pour manipuler les paraboles définies par 3 points non alignés, à qui on fournit les coordonnées X et Y (tableaux numpy de dim 3) et qui possède une méthode sommet() qui renvoie les coordonnées xs,ys de son sommet. On passe le nom de la classe pour la validation
3. Ecrire une classe pour manipuler les paraboles définies par 3 points non alignés, à qui on fournit les coordonnées X et Y (tableaux numpy de dim 3) et qui possède une méthode foyer() qui renvoie les coordonnées xf,yf de son foyer. On passe le nom de la classe pour la validation
4. Ecrire une classe pour manipuler les paraboles définies par 3 points non alignés, à qui on fournit les coordonnées X et Y (tableaux numpy de dim 3) et qui possède une méthode distance(x) qui renvoie la distance au foyer du point de coordonnée x de la parabole. On passe le nom de la classe pour la validation

1.7.24. S500 Classe Points (TP)#

0. Ecrire une classe pour manipuler des points en 2D, à qui on fournit les coordonnees x,y pour créer un point et qui surcharge l'operateur égalité ==  (methode __eq__) pour tester si deux points sont confondus (si leur distance est inférieure à 1.e-05).  On passe le nom de la classe pour la validation
1. Ecrire une classe pour manipuler des points en 2D, à qui on fournit les coordonnees x,y pour créer un point et qui posséde une méthode rayon qui renvoie la distance du point à l'origine.  On passe le nom de la classe pour la validation
2. Ecrire une classe pour manipuler des points en 2D, à qui on fournit les coordonnees x,y pour créer un point et qui posséde une méthode angle qui renvoie l'angle / a Ox en degre entre -180 et +180 On passe le nom de la classe pour la validation
3. Ecrire une classe pour manipuler des points en 2D, à qui on fournit les coordonnees x,y pour créer un point et qui posséde une méthode distance qui renvoie la distance du point à un autre point passé en argument.  On passe le nom de la classe pour la validation
4. Ecrire une classe pour manipuler des points en 2D, à qui on fournit les coordonnees x,y pour créer un point et qui surcharge l'operateur égalité ==  (methode __eq__) pour tester si deux points sont confondus (si leur distance est inférieure à 1.e-05) et qui possède une methode rotation qui effectue a rotation du point par rapport un point O d'un angle alpha en degré.  On passe le nom de la classe pour la validation
5. Ecrire une classe pour manipuler des points en 2D, à qui on fournit les coordonnees x,y pour créer un point, qui surcharge l'operateur égalité ==  (methode __eq__) pour tester si deux points sont confondus (si leur distance est inférieure à 1.e-05) et qui définit une méthode translation pour translater le point de dx et dy. On passe le nom de la classe pour la validation

1.7.25. S510 Manipulation triangle (TP)#

0. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle et qui surcharge l'operateur égalité ==  (methode __eq__) pour tester si deux triangles sont confondus (à 1.e-05 près).  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
1. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode barycentre qui renvoie le point barycentre du traingle.On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
2. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode perimetre qui renvoie le perimetre du triangle.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
3. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode coordbary qui renvoie les coordonnes barycentriques d'un point P par rapport au triangle.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
4. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode inside qui détermine si un point P est a l'intérieur ou non du triangle.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
5. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode translation qui translate le triangle de dx et dy.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
6. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode rotation qui effectue une rotation par rapport a un point avec une angle en degré.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
7. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode rayon qui calcule le rayon du plus petit cercle contenant le triangle et centré au barycentre de celui-ci. (attention ce n'est pas le cercle circonscrit).  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
8. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode intersection qui détermine si le triangle a une intersection non nulle avec un autre triangle.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation
9. Ecrire une classe pour manipuler des triangles en 2D, à qui on fournit 3 points pour créer un triangle avec une methode surface qui renvoie la surface du triangle.  On passe le nom de la classe ainsi que le nom de la classe Point (comme définie dans la serie 500) pour la validation

1.7.26. S520 gestion classe planete (TP)#

1. Écrire une fonction distance(planete1,planete2) permettant de calculer la distance minimale et maximale entre 2 planètes planete1 planete2.  On passe le nom de la classe Planete lors de la validation.
2. Écrire une fonction periode(planete1,planete2) permettant de déterminer la période où les 2 planètes planete1 et planete2 se trouvent alignées et en opposition de phase par rapport au soleil.  On passe le nom de la classe Planete lors de la validation.
3. Écrire une fonction indice(SystemSolaire,nom) qui renvoi l’indice de la planète nom dans la liste des planetes SystemSolaire. On renverra None si la planete nom n’existe pas.  On passe le nom de la classe Planete lors de la validation.
4. Écrire une fonction trie(SystemSolaire) qui renvoie la liste triée par rapport à la distance au soleil des planetes dans la liste SystemSolaire.  On passe le nom de la classe Planete lors de la validation.

1.7.27. S600 Classe Treillis (TP 1)#

0. Ecrire une classe pour manipuler un treillis en 2D. On fournit un fichier de donnees pour créer un treillis.  Cette classe doit contenir une methode dimension qui renvoie le nombre de noeuds et le nombre de barre.  On passe le nom de la classe et le nom du fichier de données pour la validation
1. Ecrire une classe pour manipuler un treillis en 2D. On fournit un fichier de donnees pour créer un treillis.  Cette classe doit posséder une méthode "longueur" qui retourne la longueur des barres du treillis.  On passe le nom de la classe et le nom du fichier de données pour la validation
2. Ecrire une classe pour manipuler un treillis en 2D. On fournit un fichier de donnees pour créer un treillis.  Cette classe doit posséder une méthode "assemblage" qui retourne la matrice de rigidité (sans prise en compte des CL).  On passe le nom de la classe et le nom du fichier de données pour la validation
3. Ecrire une classe pour manipuler un treillis en 2D. On fournit un fichier de donnees pour créer un treillis. Cette classe doit posséder une méthode "secondmembre" qui retourne le second membre (sans prise en compte des CL). On passe le nom de la classe et le nom du fichier de données pour la validation
4. Ecrire une classe pour manipuler un treillis en 2D. On fournit un fichier de donnees pour créer un treillis. Cette classe doit posséder une méthode "climite" qui retourne la matrice de rigidité et le second membre (apres prise en compte des CL).  On passe le nom de la classe et le nom du fichier de données pour la validation
5. Ecrire une classe pour manipuler un treillis en 2D. On fournit un fichier de donnees pour créer un treillis. Cette classe doit posséder une méthode "deplacement" qui retourne le vecteur deplacement. On passe le nom de la classe et le nom du fichier de données pour la validation

1.7.28. S610 treillis version avec strucure (classe simplifiée)#

0. lit les données du treillis dans un fichier et renvoie une structure Treillis remplie
1. renvoie un vecteur numpy contenant la longueur de chaques barres du treillis tr passé en argument
2. pour un treillis tr, calcule la matrice de rotation (4x4) pour la barre l (de 0 a ne-1) 
3. pour un treillis tr, calcule par assemblage la matrice de rigidite du système linéaire avant application des cdts aux limites
4. pour un treillis tr, une matrice AA et un second membre BB, applique les CL sur la matrice AA et le second membre BB, et renvoie la matrice A et le second membre B après application des CL
5. pour un treillis tr, calcule par assemblage la matrice de masse du système linéaire avant application des cdts aux limites

1.7.29. S620 effet magnus (TP)#

0. à partir d'un fichier de données de simulation COMSOL et de U0  renvoie une structure cylindre remplie
1. calcule la portance a partir d'une structure cylindre 
2. calcule la trainee a partir d'une structure cylindre 
3. calcule la pression exacte pour un point d'arret x1,y1 et une structure cylindre 
4. calcule la circulation a partir d'une structure cylindre 

1.7.30. S630 portance autour d’un profil (TP)#

0. lit les données de simulation COMSOL dans un fichier et renvoie une structure remplie
1. calcule la portance a partir d'une structure naca 
2. lecture de la vitesse autour du profil
3. calcule la circulation autour du profil