Inverser une matrice
Bonjour,
j'enseigne à distance et je voudrais montrer aux étudiantes et aux étudiants comment inverser une matrice. Est-ce que vous avez des idées sur comment faire ?
Par exemple, ça pourrait être une vidéo où je mets ma matrice à côté de la matrice identité, je dis "gnagnagna là je peux chasser un terme dans cette colonne en faisant cette transformation élémentaire et patati et patata". Mais ça prendrait beaucoup de temps ! Pour que ce soit propre, il faudrait que je tape en LaTeX toutes les étapes, il faudrait que je mette en couleur les lignes sur lesquelles je fais des opérations pour que ce soit bien visible, qu'au niveau du rendu, tout apparaisse progressivement (dans Beamer on peut mettre des \pause dans le code, certes).
Bref, avez-vous des idées ?
j'enseigne à distance et je voudrais montrer aux étudiantes et aux étudiants comment inverser une matrice. Est-ce que vous avez des idées sur comment faire ?
Par exemple, ça pourrait être une vidéo où je mets ma matrice à côté de la matrice identité, je dis "gnagnagna là je peux chasser un terme dans cette colonne en faisant cette transformation élémentaire et patati et patata". Mais ça prendrait beaucoup de temps ! Pour que ce soit propre, il faudrait que je tape en LaTeX toutes les étapes, il faudrait que je mette en couleur les lignes sur lesquelles je fais des opérations pour que ce soit bien visible, qu'au niveau du rendu, tout apparaisse progressivement (dans Beamer on peut mettre des \pause dans le code, certes).
Bref, avez-vous des idées ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Vous avez donné les idées principales.
Le seul élément que je ferais à votre place, c'est mettre en gris clair les lignes sur lesquelles vous ne travaillez pas et en gris foncé les lignes sur lesquelles vous travaillez ainsi que la ligne résultat en noir, de manière séquentielle.
Cela donne une présentation plus sobre que du rouge, du vert, voire même du jaune (déjà vu, c'est très moche).
A bientôt.
Cherche livres et objets du domaine mathématique :
Intégraphes, règles log et calculateurs électromécaniques.
Oh, wait: La matrice s'écrit alors de la même façon qu'on l'écrirait dans MatLab.
Finalement, en compilant avec context on obtient alors un PDF comme sur l'image ci-après. Bon, après, c'est sûr que si on veut toujours utiliser LaTeX (pour éviter d'avoir à tout refaire...) il va falloir importer les PDF... mais ça réduit déjà pas mal le travail. (:D
En fait, le temps passe et je commence à mettre des mots sur ce que je veux. Il me faudrait un truc où je puisse faire du calcul formel et du LaTeX en même temps.
Du style, un machin où j'entre une matrice, je programme le pivot de Gauss, et le programme me sort les étapes déjà rédigées en LaTeX avec simplification de toutes mes fractions.
D'ailleurs, ce que tu proposes, de réaliser un programme qui s'occupe de générer ton pivot de Gauss, ça peut se faire aussi bien avec LaTeX à l'aide de LuaLaTeX (si je me souviens bien) qu'avec ConTeXt. Dans les deux cas tu programmes ce que tu veux en lua (que tu incorpores dans ton fichier tex) et tu appelles ta fonction lua qui réalise elle-même le tout. Tu peux alors jouer sur la composition du document pour que toutes les matrices (de toutes les étapes que tu désires) soient générées automatiquement à la compilation avec latex/context.
Si ça t'intéresse, voir (par exemple) ici pour LuaLaTeX et ici pour ConTeXt. ;-)
Si tu veux fouiller en profondeur, tu as aussi les manuels de luatex et de ConTeXt lua.
Note : les exemples avec nicematrix que j'ai donnés ici ne compilent plus avec nicematrix actuel compilent à nouveau après modification, donc attention aux changements incompatibles qui peuvent parfois se produire. Dans mon fichier d'exemples, il s'agissait :
Vite fait pour faire un petit truc en latex automatique avec sage ! Je te laisse améliorer le code, si ca t'aide ! Là c'est tous pourri mais je n'ai pas le temps !
Utilisation :
On part de $$ M= \left(\begin{array}{rr}
1 & 2 \\
3 & 4
\end{array}\right) $$, On multiplie à gauche par $$ \left(\begin{array}{rr}
1 & -2 \\
0 & 1
\end{array}\right) $$ $$ \left(\begin{array}{rr}
1 & 0 \\
3 & -2
\end{array}\right) $$, On multiplie à gauche par, ce qui echange blabla $$ \left(\begin{array}{rr}
0 & 1 \\
1 & 0
\end{array}\right) $$ $$ \left(\begin{array}{rr}
0 & 1 \\
-2 & 3
\end{array}\right) $$, On multiplie à gauche par $$ \left(\begin{array}{rr}
-\frac{1}{2} & 0 \\
0 & 1
\end{array}\right) $$ $$ \left(\begin{array}{rr}
0 & 1 \\
1 & 3
\end{array}\right) $$, On multiplie à gauche par $$ \left(\begin{array}{rr}
1 & -3 \\
0 & 1
\end{array}\right) $$ $$ \left(\begin{array}{rr}
0 & 1 \\
1 & 0
\end{array}\right) $$, On multiplie à gauche par, ce qui echange blabla $$ \left(\begin{array}{rr}
0 & 1 \\
1 & 0
\end{array}\right) $$ $$ \left(\begin{array}{rr}
1 & 0 \\
0 & 1
\end{array}\right) $$
session Xcas
@parisse : Merci, c'est vrai que pour l'enseignement j'aurais préféré un logiciel libre mais je vais partir sur le code "clés en mains" de flipflop parce que c'est un peu urgent.
« On part de M, on multiplie à gauche par A » : ça donne AM plutôt, que MA. Non ?
Juste une question toute pourrie qui n’aide personne... désolé.
Mais je suis peut-être déjà cuit par cette ambiance conjoncturelle pourrie...
-- Schnoebelen, Philippe
Je vais essayer de faire une fonction qui mange une liste de chaînes et qui crache juste la chaîne concaténée de tous ses éléments.
J'ai fait ça :
et ça fait quasiment ce que je veux (j'ai encore des espaces qui viennent de je ne sais où) !
NB : les dernières version de Sage utilisent Python 3, comme dans mes liens.
voici mon code. Il s'utilise pareil que celui de flipflop, sauf que quand on a fini, on tape renduLaTeX(la-matrice-en-question.latex).
Ca sort le code d'un beamer où les étapes apparaîtront sur différentes slides (je joins un .pdf d'exemple).
Il me reste à régler des trucs importants : comme les coefficients de la matrice changent, la taille de celle-ci aussi et ça fait pas une animation très jolie... Il faudrait arranger ça en exigeant une place fixe pour les coefficients de la matrice, mais ça devient du LaTeX un peu fastidieux, non ?
En ce qui me concerne, le bout de code qui suit est utilisable par n'importe qui (mais flipflop qui a une parenté intellectuelle a le droit de refuser !).
Si vous avez des suggestions pour améliorer ça, n'hésitez pas !
[Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. AD]
Bon, je m'arrête là pour aujourd'hui ! Encore merci aux personnes qui m'ont aidé !
[Mettre une ' ' entre [ et i sinon, l'afficheur du forum le prend pour une bannière BBcode de mise en italique. AD]
D'abord, aussi bien sagemaths que Xcas ou Xcas pour Firefox sont des logiciels libres.
Ensuite la différence principale entre les codes ci-dessus et Xcas pour Firefox, c'est que l'algorithme du pivot de Gauss se fait à la main dans le premier cas et automatiquement dans le second. Chaque approche a son intérêt, c'est la raison pour laquelle Xcas propose des commandes pour faire Gauss à la main : rowSwap, rowAdd, mRow, mRowAdd, en plus de la possibilité de le faire pas à pas automatiquement.
L'essentiel à mon avis, c'est que les étudiants soient actifs à un moment et donc manipulent eux-mêmes, que ce soit avec papier-crayon sur des exemples très simples ou en utilisant la machine pour faire les calculs arithmétiques sur les entiers ou fractions.
Je veux bien les détails.
-- Schnoebelen, Philippe
Par :
On peut même utiliser les ensembles Python pour simplifier la dernière :
Pour les parenthèses (ou crochets, barres verticales, accolades...) autour d'une matrice TikZ, j'ai donné trois techniques différentes à la section 2 du document exemple ici. La plus simple est :
@nicolas.patrois
C'est une histoire de preprocessing. Pour l'exécution interactive, voir Paste Ignores Prompts dans The Interactive Shell : Pour la programmation hors de l'interpréteur ligne à ligne (le REPL), voir Programming:
Ça m’embête bien, cette histoire de chapeau pour la puissance.
-- Schnoebelen, Philippe
puis, pour tout $i,j$,
puis
et ce que je voudrais, c'est que les coefficients de la matrice soient entre des parenthèses, mais pas le texte.
Si \matrix me permet de placer les coefficients de manière absolue au sein d'une tikzpicture où je peux également placer le texte de manière absolue, d'accord, mais je ne sais pas comment faire.
Je n'ai pas très bien compris : les parenthèses que tu veux, ce sont bien les délimiteurs de la matrice, ou bien parles-tu de mettre certains coefficients entre parenthèses ?
Je suppose le premier cas. Avec TikZ, je vois deux-trois possibilités :
1) Si tu places les coefficients les uns après les autres avec des dans n'importe quel ordre, tu peux tracer les parenthèses avec un \draw dans lequel tu fais tout à la main, ou bien avec quelque chose du genre :
2) Sinon, tu peux utiliser une matrice TikZ et avec elle, la solution que j'ai donnée plus haut ('left delimiter=('...). Ce n'est pas grave si le programme Python obtient les coefficients dans un ordre quelconque : il suffit de ne sortir le code la matrice que quand on a déjà préparé tous les coefficients dans un objet Python (liste de listes...). Les matrices TikZ sont très souples. Il s'agit d'un objet réalisant automatiquement des alignements de type quadrillage (à deux dimensions, donc) et permettant d'accéder facilement à la bordure rectangulaire et aux points intéressants (centre, nord-est, sud, etc.) du tout comme de chaque cellule. Les cellules elles-mêmes peuvent s'apparenter à des mini-'tikzpictures', à ceci près qu'il ne faut pas écrire le \begin{tikzpicture} ... \end{tikzpicture} (il est interdit d'imbriquer ces environnements ; enfin, c'est très fortement déconseillé), mais chacune a sa propre origine, par exemple. Ça, c'est la version la plus générale. Après, si l'on utilise les styles (options) 'matrix of nodes' ou 'matrix of math nodes', TikZ fait pour toi un \node par cellule, dont le contenu est ce que tu mets entre deux & ou entre un & et le \\ qui termine la ligne. La syntaxe est donc plus légère de cette manière, et c'est très souvent suffisant. Il y a un style 'nodes in empty cells' pour contrôler ce qui se passe si tu as '& &' ou '& \\' dans ta matrice : noeud vide ou pas de nœud du tout (sachant qu'un nœud peut être encadré et/ou coloré, avoir une hauteur et/ou une largeur minimale, du code TeX inséré automatiquement au début et/ou à la fin...).
Le plus simple serait peut-être que tu postes un exemple court (complet minimal) de ce que tu veux : code LaTeX minimal avec une matrice, capture d'écran ou dessin de l'aspect souhaité.
Notes :
C'est simple : il n'y a pas, formellement, de matrices. Actuellement, j'ai juste neuf nodes qui sont placés "en carré", plus un node contenant du texte qui est loin des neuf autres.
Je voudrais des parenthèses autour des neuf, pour que cela ressemble à une matrice. Je n'ai pas utilisé d'environnement \matrix car je ne sais pas si je peux fixer la position des coefficients d'une matrice moi-même.
Je joins une image. Je veux que les coefficients de ma matrice soient centrés en les coins du quadrillage rouge qui est fixé, et que les parenthèses autour de la matrice ne bougent pas, même si le coefficient en haut à gauche est $\frac{\frac{123456789}{5555555555555}}{\frac{5468432115}{2132321213132321}}$. Dans ce cas, la parenthèse serait en surimpression par rapport au coefficient.
En fait, l'idéal serait de dire à Tikz : voici une boîte que tu dois imaginer mais ne pas dessiner ; autour de cette boîte invisible, tu mets des jolies parenthèses pile-poil adaptées à cette boîte ; d'autre part, voici des trucs que tu dois dessiner, et il se trouve que tu dois les dessiner à l'intérieur de la boîte invisible, mais c'est une coïncidence (clin d'oeil clin d'oeil).
EDIT : Fraction corrigée.
merci brian !
fonctionne chez moi... Mais j'ai un mal fou à trouver par quel mot remplacer "brace" pour obtenir une parenthèse :-D
On va partir du principe que tu gardes ta solution mais veux juste l'équivalent de : avec des parenthèses. Il se trouve que « parenthèse » ne fait pas partie des décorations définies dans la bibliothèque TikZ/PGF 'decorations.pathreplacing', mais il y en a dans 'calligraphy'. Comme je l'ai dit plus haut et montré dans mon exemple, tu peux tracer des parenthèses « calligraphiques » avec : Tu peux remplacer 'calligraphic straight parenthesis' par 'calligraphic curved parenthesis' pour un aspect arrondi tout le long de la parenthèse (cf. capture d'écran à la fin de mon message déjà cité). Utilise 'mirror' pour avoir l'autre parenthèse.