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/2F20-3-_ABeEY90.js.map
{"version":3,"file":"2F20-3-_ABeEY90.js","sources":["../../src/exercices/2e/2F20-3.js"],"sourcesContent":["import { antecedentInterpole, graphiqueInterpole, imageInterpolee } from '../../lib/2d/courbes.js'\nimport { point, tracePoint } from '../../lib/2d/points.js'\nimport { repere } from '../../lib/2d/reperes.js'\nimport { segment } from '../../lib/2d/segmentsVecteurs.js'\nimport { texteParPosition } from '../../lib/2d/textes.js'\nimport { combinaisonListes, enleveDoublonNum } from '../../lib/outils/arrayOutils'\nimport { miseEnEvidence, texteEnCouleurEtGras } from '../../lib/outils/embellissements'\nimport { arrondi, numTrie } from '../../lib/outils/nombres.js'\nimport { texNombre } from '../../lib/outils/texNombre.js'\nimport Exercice from '../Exercice.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { inferieurouegal, listeQuestionsToContenu, randint, superieurouegal } from '../../modules/outils.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { context } from '../../modules/context.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const titre = 'Déterminer graphiquement les extremums'\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\nexport const dateDePublication = '1/08/2021'\nexport const dateDeModifImportante = '5/08/2022'\n\n/**\n * Description didactique de l'exercice\n * @author Jean-Claude Lhote\n * Référence 2F32-2\n */\nexport const uuid = '573f2'\nexport const ref = '2F20-3'\nexport default function LecturesGraphiques () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.consigne = ''\n  this.correctionDetailleeDisponible = true\n  this.correctionDetaillee = true\n  this.nbQuestions = 6\n  this.nbQuestionsModifiable = false\n  this.nbCols = 2 // Uniquement pour la sortie LaTeX\n  this.nbColsCorr = 1 // Uniquement pour la sortie LaTeX\n  this.sup = 1 // Niveau de difficulté\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  this.nouvelleVersion = function () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = []\n\n    const typeFonctionsDisponibles = ['minimum', 'maximum', 'image', 'plusPetitAntécédent', 'plusGrandAntécédent', 'nombreAntécédents'] // On créé 3 types de questions\n    const listeTypeQuestions = combinaisonListes(typeFonctionsDisponibles, this.nbQuestions) // Tous les types de questions sont posés mais l'ordre diffère à chaque \"cycle\"\n    let mini = 4\n    let maxi = -4\n    let antecedentTrouve\n    let enonceAMC = ''\n    const reponses = []\n    const origine = texteParPosition('O', -0.5, -0.5, 'milieu', 'black', 1, 'middle', true)\n    let antecedents = []\n    let s = []\n    const r = repere({\n      xMin: -4,\n      yMin: -4,\n      xMax: 4,\n      yMax: 4,\n      yUnite: 2,\n      xUnite: 3,\n      grilleSecondaire: true,\n      grilleSecondaireYDistance: 0.1,\n      grilleSecondaireXDistance: 0.1,\n      grilleSecondaireXMin: -4,\n      grilleSecondaireXMax: 4,\n      grilleSecondaireYMin: -4,\n      grilleSecondaireYMax: 4\n    })\n    const noeuds = []\n    for (let x = -4, y = -5; x < 5; x += 2) {\n      y = randint(-4, 4, y)\n      noeuds.push([x, y])\n      mini = Math.min(y, mini)\n      maxi = Math.max(y, maxi)\n    }\n    const minimum = [-15, 5]\n    const maximum = [-15, -5]\n    for (let i = 0; i < noeuds.length; i++) {\n      if (minimum[1] > noeuds[i][1]) {\n        minimum[0] = noeuds[i][0]\n        minimum[1] = noeuds[i][1]\n      }\n      if (maximum[1] < noeuds[i][1]) {\n        maximum[0] = noeuds[i][0]\n        maximum[1] = noeuds[i][1]\n      }\n    }\n    const graph = graphiqueInterpole(noeuds, { repere: r, step: 0.1 })\n    this.introduction = 'Voici la représentation graphique de la fonction $f$ définie sur $[-4;4]$.<br>' + mathalea2d({\n      xmin: -13.5,\n      ymin: -9,\n      xmax: 13.5,\n      ymax: 9,\n      scale: 0.5\n    }, r, graph, origine) + '<br>'\n\n    for (let i = 0, x0, y0, k, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      switch (listeTypeQuestions[i]) { // Suivant le type de question, le contenu sera différent\n        case 'minimum':\n          texte = 'Lire graphiquement le minimum de la fonction $f$ sur l\\'intervalle $[-4;4]$.<br>'\n          if (!context.isAmc) setReponse(this, i, minimum[1])\n          reponses[i] = minimum[1]\n          texte += ajouteChampTexteMathLive(this, i)\n          texteCorr = `Le minimum de $f$ est $${minimum[1]}$ et il est atteint en $x=${minimum[0]}$.<br>`\n          if (this.correctionDetaillee) {\n            s[0] = segment(minimum[0] * 3, 0, minimum[0] * 3, minimum[1] * 2, 'blue')\n            s[0].pointilles = 5\n            s[1] = segment(minimum[0] * 3, minimum[1] * 2, 0, minimum[1] * 2, 'red')\n            s[1].pointilles = 5\n            s[2] = tracePoint(point(minimum[0] * 3, minimum[1] * 2), 'red')\n            texteCorr += mathalea2d({\n              xmin: -13.5,\n              ymin: -9,\n              xmax: 13.5,\n              ymax: 9,\n              scale: 0.5\n            }, r, graph, s, origine)\n          }\n          break\n        case 'maximum':\n          texte = 'Lire graphiquement le maximum de la fonction $f$ sur l\\'intervalle $[-4;4]$.<br>'\n          if (!context.isAmc) setReponse(this, i, maximum[1])\n          reponses[i] = maximum[1]\n          texte += ajouteChampTexteMathLive(this, i)\n          texteCorr = `Le maximum de $f$ est $${maximum[1]}$ et il est atteint en $x=${maximum[0]}$.<br>`\n          if (this.correctionDetaillee) {\n            s[0] = segment(maximum[0] * 3, 0, maximum[0] * 3, maximum[1] * 2, 'blue')\n            s[0].pointilles = 5\n            s[1] = segment(maximum[0] * 3, maximum[1] * 2, 0, maximum[1] * 2, 'red')\n            s[1].pointilles = 5\n            s[2] = tracePoint(point(maximum[0] * 3, maximum[1] * 2), 'red')\n            texteCorr += mathalea2d({\n              xmin: -13.5,\n              ymin: -9,\n              xmax: 13.5,\n              ymax: 9,\n              scale: 0.5\n            }, r, graph, s, origine)\n          }\n          break\n\n        case 'image':\n          s = []\n          x0 = randint(-4, 4)\n          k = 0\n          while (x0 > noeuds[k + 1][0]) {\n            k++\n          }\n          y0 = arrondi(imageInterpolee([[noeuds[k][0], noeuds[k][1]], [noeuds[k + 1][0], noeuds[k + 1][1]]], x0), 1)\n          texte = `Lire graphiquement l'image de $${texNombre(x0, 1)}$ par la fonction $f$.<br>Donner la réponse à 0,1 près.<br>`\n          if (!context.isAmc) setReponse(this, i, y0)\n          reponses[i] = y0\n          texte += ajouteChampTexteMathLive(this, i)\n          texteCorr = `$f(${texNombre(x0, 1)})=${texNombre(y0, 1)}$.<br>`\n          if (this.correctionDetaillee) {\n            s[0] = segment(0, y0 * 2, x0 * 3, y0 * 2, 'blue')\n            s[0].pointilles = 5\n            s[1] = segment(x0 * 3, y0 * 2, x0 * 3, 0, 'red')\n            s[1].pointilles = 5\n            s[2] = tracePoint(point(x0 * 3, y0 * 2), 'red')\n            texteCorr += mathalea2d({\n              xmin: -13.5,\n              ymin: -9,\n              xmax: 13.5,\n              ymax: 9,\n              scale: 0.5\n            }, r, graph, s, origine)\n          }\n          break\n        case 'plusPetitAntécédent':\n          s = []\n          antecedentTrouve = false\n          while (!antecedentTrouve) {\n            y0 = randint(mini * 10 + 2, maxi * 10 - 2) / 10\n            k = 0\n            while (k < noeuds.length && (y0 > Math.max(noeuds[k][1], noeuds[k + 1][1]) || y0 < Math.min(noeuds[k][1], noeuds[k + 1][1]))) {\n              k++\n            }\n            if (k < noeuds.length) antecedentTrouve = true\n          }\n          x0 = antecedentInterpole([[noeuds[k][0], noeuds[k][1]], [noeuds[k + 1][0], noeuds[k + 1][1]]], y0)\n          texte = `Lire graphiquement le plus petit antécédent de $${texNombre(y0, 1)}$ par la fonction $f$.<br>Donner la réponse à 0,1 près.<br>`\n          if (!context.isAmc) setReponse(this, i, arrondi(x0, 1))\n          reponses[i] = arrondi(x0, 1)\n          texte += ajouteChampTexteMathLive(this, i)\n          texteCorr = `Le plus petit antécédent à $0,1$ près de $${texNombre(y0, 1)}$ est $${miseEnEvidence(texNombre(x0, 1))}$.<br>`\n          if (this.correctionDetaillee) {\n            s[0] = segment(-15, y0 * 2, 15, y0 * 2, 'blue')\n            s[0].pointilles = 5\n            s[1] = segment(x0 * 3, y0 * 2, x0 * 3, 0, 'red')\n            s[1].pointilles = 5\n            texteCorr += mathalea2d({\n              xmin: -13.5,\n              ymin: -9,\n              xmax: 13.5,\n              ymax: 9,\n              scale: 0.5\n            }, r, graph, s, origine)\n          }\n          break\n        case 'plusGrandAntécédent':\n          s = []\n          antecedentTrouve = false\n          while (!antecedentTrouve) {\n            y0 = randint(mini * 10 + 2, maxi * 10 - 2) / 10\n            k = noeuds.length - 1\n            while (k > 0 && (y0 > Math.max(noeuds[k - 1][1], noeuds[k][1]) || y0 < Math.min(noeuds[k - 1][1], noeuds[k][1]))) {\n              k--\n            }\n            if (k > 0) antecedentTrouve = true\n          }\n          x0 = antecedentInterpole([[noeuds[k - 1][0], noeuds[k - 1][1]], [noeuds[k][0], noeuds[k][1]]], y0)\n          texte = `Lire graphiquement le plus grand antécédent de $${texNombre(y0, 1)}$ par la fonction $f$.<br>Donner la réponse à 0,1 près.<br>`\n          if (!context.isAmc) setReponse(this, i, arrondi(x0, 1))\n          reponses[i] = arrondi(x0, 1)\n          texte += ajouteChampTexteMathLive(this, i)\n          texteCorr = `Le plus grand antécédent de $${texNombre(y0, 1)}$ à $0,1$ près est $${miseEnEvidence(texNombre(x0, 1))}$.<br>`\n          if (this.correctionDetaillee) {\n            s[0] = segment(-15, y0 * 2, 15, y0 * 2, 'blue')\n            s[0].pointilles = 5\n            s[1] = segment(x0 * 3, y0 * 2, x0 * 3, 0, 'red')\n            s[1].pointilles = 5\n            texteCorr += mathalea2d({\n              xmin: -13.5,\n              ymin: -9,\n              xmax: 13.5,\n              ymax: 9,\n              scale: 0.5\n            }, r, graph, s, origine)\n          }\n          break\n        case 'nombreAntécédents':\n          antecedents = []\n          s = []\n          antecedentTrouve = 0\n          y0 = randint(mini * 10 + 2, maxi * 10 - 2) / 10\n          k = 0\n          while (k < noeuds.length - 1) {\n            if (inferieurouegal(y0, Math.max(noeuds[k][1], noeuds[k + 1][1])) && superieurouegal(y0, Math.min(noeuds[k][1], noeuds[k + 1][1]))) {\n              // il y a un antécédent sur l'intervalle [ymini,ymaxi]\n              x0 = antecedentInterpole([[noeuds[k][0], noeuds[k][1]], [noeuds[k + 1][0], noeuds[k + 1][1]]], y0)\n              antecedents.push(x0)\n            }\n            k++\n          }\n          antecedents = numTrie(enleveDoublonNum(antecedents, 0.1))\n          antecedentTrouve = antecedents.length\n          texte = `Lire graphiquement le nombre d'antécédents de $${texNombre(y0, 1)}$ par la fonction $f$.<br>`\n          texte += ajouteChampTexteMathLive(this, i)\n          switch (antecedentTrouve) {\n            case 0:\n              texteCorr = `$${texNombre(y0, 1)}$ ${texteEnCouleurEtGras(\"ne possède pas d'antécédent\")} sur $[-4;4]$.<br>`\n              break\n            case 1 :\n              texteCorr = `$${texNombre(y0, 1)}$ ${texteEnCouleurEtGras('possède un unique antécédent')} sur $[-4;4]$.<br>`\n              texteCorr = `L'antécédent de $${texNombre(y0, 1)}$ est aux environs de $${texNombre(antecedents[0], 1)}$.<br>`\n              break\n            default :\n              texteCorr = `$${texNombre(y0, 1)}$ possède $${miseEnEvidence(antecedentTrouve)}$ antécédents sur $[-4;4]$.<br>`\n              texteCorr += `Les antécédents de $${texNombre(y0, 1)}$ sont aux environs des nombres suivants : `\n              for (let l = 0; l < antecedentTrouve - 1; l++) {\n                texteCorr += `$${texNombre(antecedents[l], 1)}$ ; `\n              }\n              texteCorr += `$${texNombre(antecedents[antecedentTrouve - 1], 1)}$.<br>`\n              break\n          }\n          if (!context.isAmc) setReponse(this, i, antecedentTrouve)\n          reponses[i] = antecedentTrouve\n          if (this.correctionDetaillee) {\n            s[0] = segment(-15, y0 * 2, 15, y0 * 2, 'blue')\n            s[0].pointilles = 5\n            for (let l = 0; l < antecedentTrouve; l++) {\n              s[l * 2 + 1] = tracePoint(point(antecedents[l] * 3, y0 * 2), 'red')\n              s[l * 2 + 1].epaisseur = 2\n              s[l * 2 + 2] = segment(antecedents[l] * 3, 0, antecedents[l] * 3, y0 * 2, 'red')\n              s[l * 2 + 2].pointilles = 5\n            }\n            texteCorr += mathalea2d({\n              xmin: -13.5,\n              ymin: -9,\n              xmax: 13.5,\n              ymax: 9,\n              scale: 0.5\n            }, r, graph, s, origine)\n          }\n          break\n      }\n      graph.epaisseur = 2\n      if (this.questionJamaisPosee(i, listeTypeQuestions[i], x0, y0, k)) {\n        // Si la question n'a jamais été posée, on en crée une autre\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n\n    if (context.isAmc) {\n      enonceAMC = this.introduction\n      for (let i = 0; i < this.nbQuestions; i++) {\n        enonceAMC += `${i + 1}) ${this.listeQuestions[i]}<br>`\n      }\n      this.autoCorrection[0] = {\n        enonce: enonceAMC,\n        propositions: []\n      }\n      for (let i = 0; i < this.nbQuestions; i++) {\n        if (listeTypeQuestions[i] === 'nombreAntécédents') {\n          this.autoCorrection[0].propositions[i] =\n                        {\n                          type: 'AMCNum',\n                          propositions: [{\n                            texte: this.listeCorrections[i],\n                            statut: '',\n                            reponse: {\n                              texte: '',\n                              valeur: [reponses[i]],\n                              param: {\n                                digits: 1,\n                                decimals: 0,\n                                signe: false,\n                                approx: 0\n                              }\n                            }\n                          }]\n                        }\n        } else {\n          this.autoCorrection[0].propositions[i] =\n                        {\n                          type: 'AMCNum',\n                          propositions: [{\n                            texte: this.listeCorrections[i],\n                            statut: '',\n                            reponse: {\n                              texte: '',\n                              valeur: [reponses[i]],\n                              param: {\n                                digits: 2,\n                                decimals: 1,\n                                signe: true,\n                                approx: 0\n                              }\n                            }\n                          }]\n                        }\n        }\n      }\n    } else listeQuestionsToContenu(this)\n  }\n  // this.besoinFormulaireNumerique = ['Niveau de difficulté', 2,'1 : Facile\\n2 : Difficile'];\n}\n"],"names":["titre","interactifReady","interactifType","amcReady","amcType","dateDePublication","dateDeModifImportante","uuid","ref","LecturesGraphiques","Exercice","listeTypeQuestions","combinaisonListes","mini","maxi","antecedentTrouve","enonceAMC","reponses","origine","texteParPosition","antecedents","s","r","repere","noeuds","x","y","randint","minimum","maximum","i","graph","graphiqueInterpole","mathalea2d","x0","y0","k","texte","texteCorr","cpt","context","setReponse","ajouteChampTexteMathLive","segment","tracePoint","point","arrondi","imageInterpolee","texNombre","antecedentInterpole","miseEnEvidence","inferieurouegal","superieurouegal","numTrie","enleveDoublonNum","texteEnCouleurEtGras","l","listeQuestionsToContenu"],"mappings":"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"}