Bienvenue sur Laurentvidal.fr, le site où vous trouverez des réponses rapides et précises à toutes vos questions. Explorez des milliers de questions et réponses fournies par une communauté d'experts prêts à vous aider à trouver des solutions. Posez vos questions et recevez des réponses détaillées de professionnels ayant une vaste expérience dans divers domaines.
Sagot :
Bonjour
Les matrices en Python
En Python pour représenter une matrice, on concatène (on "combine") des listes dans une liste.
Par exemple, pour une matrice comme ça
[tex]\[ M = \begin{pmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{pmatrix}\][/tex]
On va créer une liste pour chaque ligne et enfermer toutes ces liste dans une grande liste.
[tex]\[ M = \begin{bmatrix} [1 &2 &3]\\ [4 & 5 & 6]\\ [7 & 8 & 9]\\ \end{bmatrix}\][/tex]
Là j'ai gardé une présentation mathématique mais évidement en Python tout est écrit à la suite, donc ça donnera:
▌ M = [[1,2,3],[4,5,6],[7,8,9]]
Et tu dois savoir qu'en Python pour accéder à éléments provenant d'une liste on l'indique par son index entre [], comme:
▌ Liste[2]
Ici c'est pareil sauf que si on ne fourni qu'une seule indication, on aura juste la liste qui correspond à l'index.
(Rappel: les listes comptent à partir de 0, 1, 2, 3...)
▌ M[1] = [4,5,6]
On doit donc fournir 2 indications, la ligne (si c'est dans la première, la deuxième, ou la troisième liste) et la colonne (quel élément de la ligne on souhaite)
▌ M[1][1] = 5
Ces quelques explications servent juste à expliquer le concept, maintenant c'est facile de le faire pour la matrice de ton exercice.
a) Créer une matrice M (...)
C'est pareil que pour l'exemple
▌ M = [[-3,1,0],[1,-1,2],[0,-3,5]]
b) Écrire une fonction val_abs(liste)
L'énoncé nous donne déjà un très bon indice en nous parlant de la fonction native de Python: abs(x).
Cette fonction abs(x) n'admet comme argument qu'un entier (un objet de type integer en Python), il n'est donc pas question de simplement faire:
▌ val_abs = abs(liste)
Il va falloir passer sur tous les éléments compris dans la liste, un par un et de renvoyer la valeur absolue à chaque fois.
Qui dit passages rémanents dit: boucle. Il existe deux types de boucle: while et for.
Tu as sûrement déjà vu en classe la différence entre les deux:
- While, sert à répéter une action tant que une condition n'est pas remplie
- For, permet de répéter un nombre défini de fois une action ou de passer sur tous les éléments d'une liste.
Donc notre fonction val_abs(liste) va simplement devoir exécuter une boucle for qui servira à récupérer la valeur absolue de tous les éléments de la liste.
Une fois obtenue, il faudra alors ajouter cette valeur absolue à une liste vierge précédemment créée, au début de la fonction.
Après être passée sur tous les éléments, la fonction va juste return (renvoyer) la liste finale.
▌ Code ci-joint
Liste par compréhension
Créer une liste par compréhension c'est une manière raccourcie de définir une liste avec des conditions.
Exemple
Voici une liste des nombres pairs entre 1 et 12:
▌ pairs = [2, 4, 6, 8, 10, 12]
Si je veux trouver tous les nombres impairs correspondants à cette plage, il va me falloir utiliser une boucle for
▌ imp = []
▌ for p in pairs:
▌ imp.append(p-1)
Ce qui me donnera
▌ imp = [1, 3, 5, 7, 9, 11]
Et bien je peux raccourcir ce procéder en créant la liste impairs par compréhension, ça donne:
▌ imp = [p-1 for p in pairs]
c) Construire une liste N par compréhension (...)
Après mes quelques explications tu es sensé avoir compris le principe des liste par compréhension.
Sauf qu'ici c'est beaucoup plus complexe que mon exemple !
L'énonce demande de construire la liste N pour qu'elle soit identique à la liste initiale M sauf que tous les coefficients doivent être positifs.
Je te rappelles deux choses:
- En Python les matrices sont des listes empilées dans une grande liste
- À la question b) on a créer une fonction qui permet de rendre tous les éléments d'une liste positifs
Le plus simple pour bien comprendre comment faire la liste par compréhension, c'est de d'abord l'écrire sous forme longue (comme à l'exemple), ça nous donnerait:
▌ M = [[-3,1,0],[1,-1,2],[0,-3,5]]
▌ N = []
▌ for n in range(3):
▌ N.append(val_abs(M[n]))
NB: On met in range(3) car il y a 3 listes dans M.
Maintenant il faut obtenir la liste par compréhension:
▌ M_abs = [val_abs(M[i]) for i in range (3)]
d) Créer une fonction moyenne(matrice) (...)
Je vois difficilement comment expliquer étape par étape donc je vais plutôt poser une série d'indications et le code final ci-joint
- Pour calculer la moyenne on aura besoin du total (définit par t) et de l'effectif (le nombre de valeurs définit par e)
- Pour passer sur chaque élément, il va falloir d'abord poser une boucle for pour chaque liste (= les lignes de la matrice). Puis passer sur chacun des éléments de ces listes (= les colonnes).
- Si le coefficient est négatif l'énoncé demande de ne pas le considérer, il ne doit donc pas être compris dans le total ni dans l'effectif, puisque cela rendrait la moyenne incorrecte
- Sinon il faut l'ajouter à l'effectif et au total pour qu'il soit pris en compte.
- On finit par calculer la moyenne et print le résultat final.
Bonne soirée :)
Si tu n'as pas tout compris n'hésite pas à me le demander en commentaire
Nous apprécions votre visite. Nous espérons que les réponses trouvées vous ont été bénéfiques. N'hésitez pas à revenir pour plus d'informations. Merci de votre visite. Nous nous engageons à fournir les meilleures informations disponibles. Revenez quand vous voulez pour plus. Merci d'utiliser Laurentvidal.fr. Continuez à nous rendre visite pour trouver des réponses à vos questions.