import Exercice from '../Exercice.js'
import { listeQuestionsToContenu, numAlpha, randint, shuffle2tableaux } from '../../modules/outils.js'
import Trinome from '../../modules/Trinome.js'
export const titre = 'Utiliser les différentes formes d\'un polynôme du second degré'
export const interactifReady = false
export const dateDePublication = '27/10/2022'
/**
* Forme développée, factorisée ou canonique pour résoudre équations et inéquations
* @author Rémi Angot
*/
export const uuid = '8fde1'
export const ref = '1E17'
export default class EtudeTrinome extends Exercice {
constructor () {
super()
this.nbQuestions = 1
this.nbQuestionsModifiable = false
}
nouvelleVersion () {
const a = randint(-4, 4, [-1, 0, 1])
// x1 + x2 doit êter pair pour n'avoir que des nombres entiers dans les différentes formes
const x1 = randint(-5, 5, 0)
const x2 = x1 + 2 * randint(1, 4)
const p = new Trinome()
p.defFormeFactorisee(a, x1, x2)
this.introduction = `Soit $f$ la fonction définie sur $\\R$ par $f(x)=${p.texFormeCanonique}$.`
const question1 = 'Développer $f(x)$.'
const etapesDeveloppement = p.arrayTexDevelopperFormeCanonique
let correction1 = `$f(x)=${p.texFormeCanonique}$`
correction1 += `<br><br>$f(x)=${etapesDeveloppement[0]}$`
correction1 += `<br><br>$f(x)=${etapesDeveloppement[1]}$`
correction1 += `<br><br>$f(x)=${etapesDeveloppement[2]}$`
const question2 = `Montrer que $f(x)$ se factorise sous la forme $f(x)=${p.texFormeFactorisee}$.`
let correction2 = 'On développe l\'expression : '
const etapesDeveloppement2 = p.arrayTexDevelopperFormeFactorisee
correction2 += `<br><br> $${p.texFormeFactorisee} = ${etapesDeveloppement2[0]}$`
correction2 += `<br><br> $\\phantom{${p.texFormeFactorisee}} = ${etapesDeveloppement2[1]}$`
correction2 += `<br><br> $\\phantom{${p.texFormeFactorisee}} = ${etapesDeveloppement2[2]}$`
correction2 += `<br><br> On retrouve la même forme développée que celle de la question précédente donc on a bien $f(x)=${p.texFormeFactorisee}$.`
let question3 = 'Répondre aux questions suivantes en utilisant l\'écriture de $f(x)$ la mieux adaptée :'
let correction3 = ''
const q3a = 'Résoudre l\'équation $f(x) = 0$.'
let corr3a = 'Ici, on va utiliser la forme factorisée pour se ramener à une équation produit nul. Il est aussi possible de calculer le discriminant mais cela serait plus long.'
corr3a += `<br><br>$f(x)=0 \\iff ${p.texFormeFactorisee} = 0$`
corr3a += `<br><br>$\\phantom{f(x)=0} \\iff x${p.x1.simplifie().oppose().texFractionSignee} = 0 \\text{\\quad ou \\quad} x${p.x2.simplifie().oppose().texFractionSignee} = 0$`
corr3a += `<br><br>$\\phantom{f(x)=0} \\iff x=${p.x1.simplifie().texFraction} \\text{\\quad ou \\quad} x=${p.x2.simplifie().texFraction}$`
corr3a += `<br><br>$S=\\{${p.x1.simplifie().texFraction}\\, ;\\, ${p.x2.simplifie().texFraction}\\}$`
const q3b = `Résoudre l'équation $f(x) = ${p.c.simplifie().texFraction}$.`
let corr3b = 'Ici, on va utiliser la forme développée.'
corr3b += `<br><br> $f(x) = ${p.c.simplifie().texFraction} \\iff ${p.tex} = ${p.c.simplifie().texFraction}$`
corr3b += `<br><br> $\\phantom{f(x) = ${p.c.simplifie().texFraction}} \\iff ${p.a.simplifie().texFractionSaufUn}x^2 ${p.b.simplifie().texFractionSaufUnSignee}x = 0 $`
corr3b += `<br><br> $\\phantom{f(x) = ${p.c.simplifie().texFraction}} \\iff x \\left(${p.a.simplifie().texFractionSaufUn}x ${p.b.simplifie().texFractionSaufUnSignee}\\right) = 0 $`
corr3b += `<br><br> $\\phantom{f(x) = ${p.c.simplifie().texFraction}} \\iff x = 0 \\text{\\quad ou \\quad} ${p.a.simplifie().texFractionSaufUn}x ${p.b.simplifie().texFractionSaufUnSignee} = 0 $`
corr3b += `<br><br> $\\phantom{f(x) = ${p.c.simplifie().texFraction}} \\iff x = 0 \\text{\\quad ou \\quad} x = ${p.b.oppose().diviseFraction(p.a).simplifie().texFraction} $`
corr3b += `<br><br>$S=\\{0\\, ;\\, ${p.b.oppose().diviseFraction(p.a).simplifie().texFraction}\\}$`
const q3c = `Résoudre l'inéquation $f(x) < ${p.beta.simplifie().texFraction}$.`
let corr3c = 'Ici, on va utiliser la forme canonique.'
corr3c += `<br><br>$f(x) < ${p.beta.simplifie().texFraction} \\iff ${p.texFormeCanonique} < ${p.beta.simplifie().texFraction}$`
corr3c += `<br><br>$\\phantom{f(x) < ${p.beta.simplifie().texFraction}} \\iff ${p.a.simplifie().texFractionSaufUn}\\left( x ${p.alpha.oppose().simplifie().texFractionSignee} \\right)^2 < 0$`
corr3c += `<br><br>Pour tous les nombres $x$, $${p.a.simplifie().texFraction} ${p.a.s === 1 ? '>0' : '<0'}$ et $\\left( x ${p.alpha.oppose().simplifie().texFractionSignee} \\right)^2 \\geq 0$`
corr3c += ` donc $${p.a.simplifie().texFractionSaufUn}\\left( x ${p.alpha.oppose().simplifie().texFractionSignee} \\right)^2 ${p.a.s === 1 ? '>0' : '<0'}$.`
if (p.a.s === 1) corr3c += '<br><br>$S=\\emptyset$'
else corr3c += '<br><br>$S=\\R$'
const [sousQuestions, sousCorrections] = [[q3a, q3b, q3c], [corr3a, corr3b, corr3c]]
shuffle2tableaux(sousQuestions, sousCorrections)
for (let i = 0; i < 3; i++) {
question3 += `<br><br>${numAlpha(i)} ${sousQuestions[i]}`
correction3 += `<br><br>${numAlpha(i)} ${sousCorrections[i]}`
}
this.listeQuestions = [question1, question2, question3]
this.listeCorrections = [correction1, correction2, correction3]
listeQuestionsToContenu(this)
}
}