exercices/can/1e/can1L02.js

import Exercice from '../../Exercice.js'
import { fraction } from '../../../modules/fractions.js'
import { randint, choice, texteEnCouleur, reduirePolynomeDegre3, reduireAxPlusB, ecritureAlgebrique, ecritureParentheseSiNegatif, miseEnEvidence } from '../../../modules/outils.js'
export const titre = 'Déterminer le nombre de solutions d’une équation du second degré'
export const interactifReady = true
export const interactifType = 'mathLive'

// Les exports suivants sont optionnels mais au moins la date de publication semble essentielle
export const dateDePublication = '1/11/2021' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag

/**
 * Trouver le nombre de solutions d'une équation.
 * @author Gilles Mora
 * Référence can1L02
*/
export const uuid = 'c74ea'
export const ref = 'can1L02'
export default function NombreSolutionsSecondDegre () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.typeExercice = 'simple' // Cette ligne est très importante pour faire faire un exercice simple !
  this.nbQuestions = 1
  // Dans un exercice simple, ne pas mettre de this.listeQuestions = [] ni de this.consigne
  this.formatChampTexte = 'largeur15 inline'
  this.nouvelleVersion = function () {
    let a, b, c, d, maFraction
    switch (choice([1, 2])) {
      case 1 :
        a = randint(1, 4) * choice([-1, 1])
        b = randint(-4, 4, 0)
        c = randint(-4, 4, 0)
        d = b * b - 4 * a * c
        this.question = `Donner le nombre de solutions de l'équation  $${reduirePolynomeDegre3(0, a, b, c)}=0$.`

        if (d < 0) {
          this.correction = `Le nombre de solutions est donné par le signe de $\\Delta$ :<br>
    $\\Delta =b^2-4ac=${ecritureParentheseSiNegatif(b)}^2 - 4 \\times ${ecritureParentheseSiNegatif(a)} \\times ${ecritureParentheseSiNegatif(c)}=${d}$.<br>
    Comme $${d}$ est strictement négatif, l'équation n'a pas de solution.`
          this.correction += texteEnCouleur(`<br> Mentalement : <br>
          Il n'est pas nécessaire de faire le calcul du discriminant puisque seul 
          le signe de celui-ci permet de répondre à la question :<br>
          faites deux calculs séparés mentalement : 
          $b^2=${ecritureParentheseSiNegatif(b)}^2=${b ** 2}$ puis 
          $4ac=4 \\times ${ecritureParentheseSiNegatif(a)} \\times ${ecritureParentheseSiNegatif(c)}=${4 * a * c}$
          et évaluez le signe de leur différence.  `)

          this.reponse = 0
        }
        if (d > 0) {
          this.correction = `Le nombre de solutions est donné par le signe de $\\Delta$ :<br>
    $\\Delta =b^2-4ac=${ecritureParentheseSiNegatif(b)}^2 - 4 \\times ${ecritureParentheseSiNegatif(a)} \\times ${ecritureParentheseSiNegatif(c)}=${d}$.<br>
    Comme $${d}$ est strictement positif, l'équation a 2 solutions.`
          this.correction += texteEnCouleur(`<br> Mentalement : <br>
          Il n'est pas nécessaire de faire le calcul du discriminant puisque seul 
          le signe de celui-ci permet de répondre à la question :<br>
    par exemple, si le produit $4\\times a\\times c$ (c'est le cas lorsque $a$ et $c$ sont de signes contraires) est négatif, l'équation aura deux solutions puisque $\\Delta$ sera strictement positif.   
<br>  Dans les autres cas, faites deux calculs séparés mentalement : $b^2=${ecritureParentheseSiNegatif(b)}^2=${b ** 2}$ puis 
$4ac=4 \\times ${ecritureParentheseSiNegatif(a)} \\times ${ecritureParentheseSiNegatif(c)}=${4 * a * c}$ 
et évaluez le signe de leur différence. `)
          this.reponse = 2
        }
        if (d === 0) {
          this.correction = `Le nombre de solutions est donné par le signe de $\\Delta$ :<br>
            $\\Delta =b^2-4ac=${ecritureParentheseSiNegatif(b)}^2 - 4 \\times ${ecritureParentheseSiNegatif(a)} \\times ${ecritureParentheseSiNegatif(c)}=${d}$.<br>
            Comme $${d}$ est nul, l'équation a une unique solution.`
          this.correction += texteEnCouleur(`<br> Mentalement : <br>
               Faites deux calculs séparés mentalement : $b^2=${ecritureParentheseSiNegatif(b)}^2=${b ** 2}$ puis 
     $4ac=4 \\times ${ecritureParentheseSiNegatif(a)} \\times ${ecritureParentheseSiNegatif(c)}=${4 * a * c}$.  `)
          this.reponse = 1
        }
        break
      case 2 :
        a = randint(-10, 10, 0)
        b = randint(-5, 5, 0)
        c = randint(-5, 5)
        maFraction = fraction(-c, a)
        if (-c / a > 0) {
          this.question = `Donner le nombre de solutions de l'équation  
       $${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2${ecritureAlgebrique(c)}=0$.`
          this.correction = `On isole le carré : <br>
        $\\begin{aligned}
        ${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2${ecritureAlgebrique(c)}&=0\\\\
        ${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2${ecritureAlgebrique(c)}${miseEnEvidence(ecritureAlgebrique(-c))}&=0${miseEnEvidence(ecritureAlgebrique(-c))}\\\\`
          this.correction += a === 1
            ? ''
            : `\\dfrac{${a}}{${miseEnEvidence(a)}}(${reduireAxPlusB(1, b)})^2&=\\dfrac{${-c}}{${miseEnEvidence(a)}}\\\\`
          this.correction += `             
        (${reduireAxPlusB(1, b)})^2&=${maFraction.texFractionSimplifiee} 
                \\end{aligned}$<br>
        Puisque $${maFraction.texFractionSimplifiee}$ est strictement positif, il y a deux nombres dont le carré est égal à $${maFraction.texFractionSimplifiee}$, donc l'équation a deux solutions. `

          this.reponse = 2
        }
        if (-c / a === 0) {
          if (a === -1) {
            this.question = `Donner le nombre de solutions de l'équation  
       $-(${reduireAxPlusB(1, b)})^2=0$.`
            this.correction = `On isole le carré : <br>
             $\\begin{aligned}
             -(${reduireAxPlusB(1, b)})^2&=0\\\\
             ${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2&=0\\\\`
            this.correction += a === 1
              ? ''
              : `\\dfrac{${a}}{${miseEnEvidence(a)}}(${reduireAxPlusB(1, b)})^2&=\\dfrac{${-c}}{${miseEnEvidence(a)}}\\\\`
            this.correction += `              
             (${reduireAxPlusB(1, b)})^2&=${maFraction.texFractionSimplifiee} 
                     \\end{aligned}$<br>
             Il y a un nombre dont le carré est nul, donc l'équation a une solution. `

            this.reponse = 1
          } else {
            this.question = `Donner le nombre de solutions de l'équation  
          $${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2=0$.`
            this.correction = `On isole le carré : <br>
                $\\begin{aligned}
                ${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2&=0\\\\`
            this.correction += a === 1
              ? ''
              : `\\dfrac{${a}}{${miseEnEvidence(a)}}(${reduireAxPlusB(1, b)})^2&=\\dfrac{${-c}}{${miseEnEvidence(a)}}\\\\`
            this.correction += `
                (${reduireAxPlusB(1, b)})^2&=${maFraction.texFractionSimplifiee} 
                        \\end{aligned}$<br>
                Il y a un nombre dont le carré est nul, donc l'équation a une solution. `

            this.reponse = 1
          }
        }
        if (-c / a < 0) {
          this.question = `Donner le nombre de solutions de l'équation  
       $${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2${ecritureAlgebrique(c)}=0$.`
          this.correction = `On isole le carré : <br>
                 $\\begin{aligned}
                 ${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2${ecritureAlgebrique(c)}&=0\\\\
                 ${a === 1 ? '' : a}(${reduireAxPlusB(1, b)})^2${ecritureAlgebrique(c)}${miseEnEvidence(ecritureAlgebrique(-c))}&=0${miseEnEvidence(ecritureAlgebrique(-c))}\\\\`
          this.correction += a === 1
            ? ''
            : `\\dfrac{${a}}{${miseEnEvidence(a)}}(${reduireAxPlusB(1, b)})^2&=\\dfrac{${-c}}{${miseEnEvidence(a)}}\\\\`
          this.correction += `(${reduireAxPlusB(1, b)})^2&=${maFraction.texFractionSimplifiee} 
                         \\end{aligned}$<br>
                         Puisque $${maFraction.texFractionSimplifiee}$ est strictement négatif, il n'existe pas de nombres réels dont le carré est strictement négatif, donc l'équation n'a pas de solution. `

          this.reponse = 0
        }
        break
    }
    this.canEnonce = this.question
    this.canReponseACompleter = ''
  }
}