exercices/1e/1E15.js

/* eslint-disable no-eval */
/* eslint-disable no-unused-vars */
import { xcas, listeQuestionsToContenu, randint, texteGras } from '../../modules/outils.js'
import Exercice from '../Exercice.js'
import { context } from '../../modules/context.js'
export const titre = 'Equation du second degré avec paramètre'
export const dateDePublication = '30/10/2021'

/**
 * Description didactique de l'exercice
 * @author Eric Schrafstetter
 * Référence 1E15
*/
export const uuid = 'fe4df'
export const ref = '1E15'
export default function EquationDuSecondDegreAvecUnParametre () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.consigne = `Discuter, suivant la valeur du paramètre $m$, le ${texteGras('nombre de solutions')} de l'équation du second degré.`
  this.nbQuestions = 2
  this.nbCols = 1 // Uniquement pour la sortie LaTeX
  this.nbColsCorr = 1 // Uniquement pour la sortie LaTeX
  this.sup = 1 // Niveau de difficulté
  this.tailleDiaporama = 3 // Pour les exercices chronométrés. 50 par défaut pour les exercices avec du texte
  this.video = '' // Id YouTube ou url
  this.typeExercice = 'XCas'
  context.isHtml ? (this.spacingCorr = 2) : (this.spacingCorr = 1)
  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées

    for (let i = 0, texte, etape, texteCorr, a, a2, b2, c2, f, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      // Boucle principale où i+1 correspond au numéro de la question
      a = randint(-5, 5, 0)
      etape = [
          `a:=${a}`,
          'b:=randint(-2,2)*m+randint(-3,3)',
          'c:=randint(-2,2)*m+randint(-3,3)',
          'P:= a*x^2+b*x+c',
          'D:=b^2-4*a*c',
          'a2:=coeff(D,m,2)',
          'b2:=coeff(D,m,1)',
          'c2:=coeff(D,m,0)',
          'd2:=simplify(b2^2-4*a2*c2)'
      ].forEach(e => `${xcas(e)}`)
      // Enoncé
      texte = `$${xcas('expand(P)')}=0$`
      // Corrigé
      texteCorr = 'Ecrivons l\'équation sous la forme $ax^2+bx+c=0$ :'
      texteCorr += `<br>$${xcas('P')}=0$`
      texteCorr += `<br>On a donc $a=${xcas('a')}$, $b=${xcas('b')}$ et $c=${xcas('c')}$`
      texteCorr += `<br>Le discriminant vaut $\\Delta=b^2-4\\times a\\times c = ${xcas('D')}$`
      texteCorr += `<br>Ou encore, sous forme développée : $\\Delta = ${xcas('simplify(D)')}$`
      a2 = +`${xcas('a2')}` // coefficient "a" dans l'écriture de Delta
      b2 = +`${xcas('b2')}` // coefficient "b" dans l'écriture de Delta
      if (a2 === 0) { // Eq du 1er degré
        etape = `${xcas('m1:=simplify(-c2/b2)')}`
        if (b2 > 0) { // Delta est une droite croissante
          texteCorr += `<br>Cherchons la valeur de $m$ qui annule cette expression du premier degré : $m=${xcas('m1')}$`
          texteCorr += `<br>$\\Delta$ est une droite croissante de coefficient directeur $${xcas('b2')}$.`
          texteCorr += '<br>$\\underline{\\text{Conclusion}}$ :'
          texteCorr += `<br>- Si $m < ${xcas('m1')}$, l'équation n'a pas de solution réelle;`
          texteCorr += `<br>- Si $m = ${xcas('m1')}$, l'équation a une unique solution réelle;`
          texteCorr += `<br>- Si $m > ${xcas('m1')}$, l'équation a 2 solutions réelles;`
        } else if (b2 < 0) { // Delta est une droite décroissante
          texteCorr += `<br>Cherchons la valeur de $m$ qui annule cette expression du premier degré : $m=${xcas('m1')}$`
          texteCorr += `<br>$\\Delta$ est une droite décroissante de coefficient directeur $${xcas('b2')}$.`
          texteCorr += '<br>$\\underline{\\text{Conclusion}}$ :'
          texteCorr += `<br>- Si $m < ${xcas('m1')}$, l'équation a 2 solutions réelles;`
          texteCorr += `<br>- Si $m = ${xcas('m1')}$, l'équation a une unique solution réelle;`
          texteCorr += `<br>- Si $m > ${xcas('m1')}$, l'équation n'a pas de solution réelle;`
        } else { // Delta est constant
          c2 = +`${xcas('c2')}` // coefficient "c" dans l'écriture de Delta
          if (c2 === 0) {
            texteCorr += '<br>Quelque soit $m$ réel, on a $\\Delta$ qui est nul. L\'équation du départ admet donc toujours une unique solution.'
          } else if (c2 > 0) {
            texteCorr += '<br>Quelque soit $m$ réel, on a $\\Delta$ qui est strictement positif. L\'équation du départ admet donc toujours 2 solutions.'
          } else {
            texteCorr += '<br>Quelque soit $m$ réel, on a $\\Delta$ qui est strictement négatif. L\'équation du départ admet jamais de solution réelle.'
          }
        }
      } else {
        texteCorr += '<br>Cherchons les valeurs de $m$ qui annulent cette expression du second degré :'
        texteCorr += `<br>Le discriminant $\\Delta^\\prime$ vaut : $\\Delta^\\prime =${xcas('d2')}$`
        a = +`${xcas('d2')}` // valeur de Delta'
        f = eval(`${xcas('ifactors(d2)')}`).some((v, i) => v > 1 && i % 2 === 1) // Y a-t-il des carrés dans Delta' ?
        if (f && a > 0) {
          texteCorr += ` (Remarquons que $\\sqrt{\\Delta^\\prime} =${xcas('simplify(sqrt(d2))')}$)`
        }
        if (a < 0) {
          texteCorr += '<br>Celui-ci étant strictement négatif, l\'équation n\'a pas de solution et $\\Delta$ ne change pas de signe.'
          if (a2 > 0) {
            texteCorr += '<br>Comme le coefficient devant $m^2$ est positif, $\\Delta > 0$.'
            texteCorr += '<br>$\\underline{\\text{Conclusion}}$ : L\'équation du départ admet toujours 2 solutions.'
          } else {
            texteCorr += '<br>Comme le coefficient devant $m^2$ est négatif, $\\Delta < 0$.'
            texteCorr += '<br>$\\underline{\\text{Conclusion}}$ : L\'équation du départ n\'a pas de solution réelle.'
          }
        } else if (a === 0) {
          etape = `${xcas('m1:=simplify(-b2/(2*a2))')}`
          texteCorr += `<br>Celui-ci étant nul, l'équation $\\Delta = 0$ a une unique solution $m=\\dfrac{-b}{2a}=${xcas('m1')}$.`
          if (a2 > 0) {
            texteCorr += `<br>De plus le coefficient $${xcas('a2')}$ devant $m^2$ étant positif, $\\Delta > 0$ si $m\\neq${xcas('m1')}$.`
            texteCorr += `<br>$\\underline{\\text{Conclusion}}$ : Si $m=${xcas('m1')}$ l'équation admet une unique solution, sinon l'équation admet 2 solutions.`
          } else {
            texteCorr += `<br>De plus le coefficient $${xcas('a2')}$ devant $m^2$ étant négatif, $\\Delta < 0$ si $m\\neq${xcas('m1')}$.`
            texteCorr += `<br>$\\underline{\\text{Conclusion}}$ : Si $m=${xcas('m1')}$ l'équation admet une unique solution, sinon l'équation n'admet pas de solution.`
          }
        } else {
          etape = `${xcas('m1:=min((-b2-sqrt(d2))/(2*a2),(-b2+sqrt(d2))/(2*a2))')}`
          etape = `${xcas('m2:=max((-b2-sqrt(d2))/(2*a2),(-b2+sqrt(d2))/(2*a2))')}`
          texteCorr += '<br>Celui-ci étant strictement positif, l\'équation $\\Delta = 0$ a 2 solutions :'
          texteCorr += `<br>$m_1=${xcas('m1')}\\simeq${xcas('approx(m1,4)')}$ et $m_2=${xcas('m2')}\\simeq${xcas('approx(m2,4)')}$`
          if (a2 > 0) {
            texteCorr += '<br>De plus le coefficient devant $m^2$ est positif, $\\Delta$ est donc une parabole avec ses branches dirigées vers le haut.'
            texteCorr += '<br>$\\Delta$ est donc positif à l\'extérieur des racines et négatif à l\'intérieur.'
            texteCorr += '<br>$\\underline{\\text{Conclusion}}$ :<br> - Si $m=m_1$ ou $m_2$, l\'équation admet une unique solution,'
            texteCorr += '<br>- Si $m\\in ]m_1,m_2[$, l\'équation n\'a pas de solution réelle,'
            texteCorr += '<br>- Si $m\\in ]-\\infty,m_1[\\cup]m_2,+\\infty[$, l\'équation admet 2 solutions réelles'
          } else {
            texteCorr += '<br>De plus le coefficient devant $m^2$ est négatif, $\\Delta$ est donc une parabole avec ses branches dirigées vers le bas.'
            texteCorr += '<br>$\\Delta$ est donc négatif à l\'extérieur des racines et positif à l\'intérieur.'
            texteCorr += '<br>$\\underline{\\text{Conclusion}}$ :<br> - Si $m=m_1$ ou $m_2$, l\'équation admet une unique solution,'
            texteCorr += '<br>- Si $m\\in ]m_1,m_2[$, l\'équation admet 2 solutions réelles,'
            texteCorr += '<br>- Si $m\\in ]-\\infty,m_1[\\cup]m_2,+\\infty[$, l\'équation admet n\'a pas de solution réelle'
          }
        }
      }

      if (this.listeQuestions.indexOf(texte) === -1) {
        // Si la question n'a jamais été posée, on en crée une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
  // this.besoinFormulaireNumerique = ['Niveau de difficulté', 3]
}

// python3 list-to-js.py pour faire apparaître l'exercice dans le menu