HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/HPC103-nCx_phB7.js.map
{"version":3,"file":"HPC103-nCx_phB7.js","sources":["../../src/exercices/HP/HPC103.js"],"sourcesContent":["import { ecritureParentheseSiMoins } from '../../lib/outils/ecritures'\nimport Exercice from '../Exercice'\nimport { randint, listeQuestionsToContenu } from '../../modules/outils.js'\nimport { create, all } from 'mathjs'\n\nexport const titre = 'Produit de matrices'\nconst math = create(all)\n\n// Les exports suivants sont optionnels mais au moins la date de publication semble essentielle\nexport const dateDePublication = '25/10/2021' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\nexport const dateDeModifImportante = '24/10/2021' // Une date de modification importante au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n\n/**\n * Description didactique de l'exercice\n * @author Maxime Nguyen\n * Référence HPC103\n*/\nexport const uuid = 'a868f'\nexport const ref = 'HPC103'\nexport default class nomExercice extends Exercice {\n  constructor () {\n    super()\n    this.titre = titre\n    this.consigne = 'On définit deux matrices $A$ et $B$. Si le produit $A \\\\times B$ est possible, effectuer le calcul. Faire de même pour $B \\\\times A$.'\n    this.nbQuestions = 3 // Nombre de questions par défaut\n    this.nbCols = 2 // Uniquement pour la sortie LaTeX\n    this.nbColsCorr = 2 // Uniquement pour la sortie LaTeX\n    this.tailleDiaporama = 3 // Pour les exercices chronométrés. 50 par défaut pour les exercices avec du texte\n    this.video = '' // Id YouTube ou url\n  }\n\n  nouvelleVersion () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = []\n\n    for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) { // Boucle principale où i+1 correspond au numéro de la question\n      const matrices = [] // vecteur qui stocke les matrices\n      const matricesprint = [] // vecteur qui stocke les matrices écrites en LaTeX\n      const nbmatrice = 2\n      let n = randint(1, 4)\n      let m = randint(1, 4)\n      while (n === m & n === 1) {\n        m = randint(2, 4)\n      }\n      const nblignes = [] // vecteur qui stocke le nombre de lignes de chaque matrice\n      nblignes.push(n)\n      const nbcolonnes = [] // vecteur qui stocke le nombre de colonnes de chaque matrice\n      nbcolonnes.push(m)\n      n = math.pickRandom([m, m, m, 1, 2, 3, 4]) // on favorise la compatibilité de la deuxieme matrices\n      nblignes.push(n)\n      m = math.pickRandom([n, n, n, 1, 2, 3, 4])\n      while (n === m & n === 1) {\n        m = math.pickRandom([2, 3, 4])\n      }\n      nbcolonnes.push(m)\n      const texteligne = [] // texte pour la correction\n      const textecolonne = [] // texte pour la correction\n      for (let compteur = 0; compteur < nbmatrice; compteur++) {\n        let ligne\n        let matrice = []\n        n = nblignes[compteur]\n        if (n === 1) {\n          texteligne.push('$1$ ligne ')\n        } else {\n          texteligne.push(`$${n}$ lignes `)\n        }\n        m = nbcolonnes[compteur]\n        if (m === 1) {\n          textecolonne.push('$1$ colonne ')\n        } else {\n          textecolonne.push(`$${m}$ colonnes `)\n        }\n        for (let i = 0; i < n; i++) {\n          ligne = []\n          for (let j = 0; j < m; j++) {\n            const coef = math.pickRandom([-6, -5, -4, -3, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5, 6])\n            ligne.push(coef)\n          }\n          matrice.push(ligne)\n        }\n        matrice = math.matrix(matrice)\n        matrices.push(matrice)\n        matrice = matrice.toString()\n        matrice = math.parse(matrice).toTex().replaceAll('bmatrix', 'pmatrix')\n        matricesprint.push(matrice)\n      }\n\n      texte = `Soient $A=${matricesprint[0]}$ et $B = ${matricesprint[1]}$.` // Le LateX entre deux symboles $, les variables dans des ${ }\n      texteCorr = 'La matrice $A$ a ' + texteligne[0] + 'et ' + textecolonne[0] + '. '\n      texteCorr += 'La matrice $B$ a ' + texteligne[1] + 'et ' + textecolonne[1] + '. '\n      if (nbcolonnes[0] === nblignes[1]) {\n        const produit = math.multiply(matrices[0], matrices[1])\n        let produitprint = produit.toString()\n        produitprint = math.parse(produitprint).toTex().replaceAll('bmatrix', 'pmatrix')\n        texteCorr += `<br><br> Le produit $A \\\\times B$ est possible et c'est une matrice qui a ${nblignes[0]} lignes et ${nbcolonnes[1]} colonnes. `\n        texteCorr += `<br><br> $ \\\\begin{array}{rccl} && \\\\textcolor{blue}{${matricesprint[1]}}& =\\\\textcolor{blue}{B} \\\\\\\\ \\\\textcolor{red}{A} = &\\\\textcolor{red}{${matricesprint[0]}} & ${produitprint} & = AB \\\\end{array} $`\n        // texteCorr += `Par exemple, on obtient $${math.parse(matrices[0].subset(math.index(nblignes[0], math.range(0, nbcolonnes[0]))).toString()).toTex().replaceAll('bmatrix', 'pmatrix')} $ `\n        const l1 = matrices[0].subset(math.index(nblignes[0] - 1, math.range(0, nbcolonnes[0])))\n        const c1 = matrices[1].subset(math.index(math.range(0, nblignes[1]), nbcolonnes[1] - 1))\n        let detail = `c_{${nblignes[0]}, ${nbcolonnes[1]}}  = `\n        for (let i = 0; i < nbcolonnes[0]; i++) {\n          detail += '\\\\textcolor{red}{' + ecritureParentheseSiMoins(l1.subset(math.index(0, i)).toString()) + '} \\\\times \\\\textcolor{blue}{' + ecritureParentheseSiMoins(c1.subset(math.index(i, 0)).toString()) + '}'\n          if (i < nbcolonnes[0] - 1) { detail += '+' } else { detail += ' = ' }\n        }\n        detail += `${produit.subset(math.index(nblignes[0] - 1, nbcolonnes[1] - 1))}`\n        texteCorr += `<br> Le détail du calcul de $c_{${nblignes[0]}, ${nbcolonnes[1]}}$ où $c_{${nblignes[0]}, ${nbcolonnes[1]}}$ est le coefficient de la $${nblignes[0]}$-ème ligne et de la $${nbcolonnes[1]}$-ème colonne de la matrice $C = AB$ donne : <br> $${detail}$.`\n        texteCorr += `<br> On trouve $A \\\\times B =  ${produitprint}$.`\n      } else {\n        texteCorr += '<br><br> Le produit $A \\\\times B$ n\\'est pas possible car le nombre de colonnes de $A$ n\\'est pas égal au nombre de lignes de $B$.'\n      }\n      if (nbcolonnes[1] === nblignes[0]) {\n        const produit = math.multiply(matrices[1], matrices[0])\n        let produitprint = produit.toString()\n        produitprint = math.parse(produitprint).toTex().replaceAll('bmatrix', 'pmatrix')\n        texteCorr += `<br><br> Le produit $B \\\\times A$ est possible et c'est une matrice qui a ${nblignes[1]} lignes et ${nbcolonnes[0]} colonnes. `\n        texteCorr += `<br><br> $ \\\\begin{array}{rccl} && \\\\textcolor{red}{${matricesprint[0]}}& =\\\\textcolor{red}{A} \\\\\\\\ \\\\textcolor{blue}{B} = &\\\\textcolor{blue}{${matricesprint[1]}} & ${produitprint} & = BA \\\\end{array} $`\n        const l1 = matrices[1].subset(math.index(nblignes[1] - 1, math.range(0, nbcolonnes[1])))\n        const c1 = matrices[0].subset(math.index(math.range(0, nblignes[0]), nbcolonnes[0] - 1))\n        let detail = `c_{${nblignes[1]}, ${nbcolonnes[0]}} = `\n        for (let i = 0; i < nbcolonnes[1]; i++) {\n          detail += '\\\\textcolor{blue}{' + ecritureParentheseSiMoins(l1.subset(math.index(0, i)).toString()) + '} \\\\times \\\\textcolor{red}{' + ecritureParentheseSiMoins(c1.subset(math.index(i, 0)).toString()) + '}.'\n          if (i < nbcolonnes[1] - 1) { detail += '+' } else { detail += ' = ' }\n        }\n        detail += `${produit.subset(math.index(nblignes[1] - 1, nbcolonnes[0] - 1))}`\n        texteCorr += `<br> Le détail du calcul de $c_{${nblignes[1]}, ${nbcolonnes[0]}}$ où $c_{${nblignes[1]}, ${nbcolonnes[0]}}$ est le coefficient de la $${nblignes[1]}$-ème ligne et de la $${nbcolonnes[0]}$-ème colonne de la matrice $C = BA$ donne : <br> $${detail}$.`\n        texteCorr += `<br> On trouve $B \\\\times A =  ${produitprint}$.`\n      } else {\n        texteCorr += '<br><br> Le produit $B \\\\times A$ n\\'est pas possible car le nombre de colonnes de $B$ n\\'est pas égal au nombre de lignes de $A$.'\n      }\n      // Si la question n'a jamais été posée, on l'enregistre\n      if (this.questionJamaisPosee(i, matrices)) { // <- laisser le i et ajouter toutes les variables qui rendent les exercices différents (par exemple a, b, c, d...)\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this) // On envoie l'exercice à la fonction de mise en page\n  }\n}\n"],"names":["titre","math","create","all","dateDePublication","dateDeModifImportante","uuid","ref","nomExercice","Exercice","i","texte","texteCorr","cpt","matrices","matricesprint","n","randint","m","nblignes","nbcolonnes","texteligne","textecolonne","compteur","ligne","matrice","j","coef","produit","produitprint","l1","c1","detail","ecritureParentheseSiMoins","listeQuestionsToContenu"],"mappings":"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"}