File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/Trinome-eNHhctAu.js.map
{"version":3,"file":"Trinome-eNHhctAu.js","sources":["../../src/modules/Trinome.js"],"sourcesContent":["import FractionEtendue from './FractionEtendue.js'\n\n/**\n * Gère les polynômes du second degré\n * - Définition depuis la forme développée, canonique ou factorisée\n * - Calcul du discriminant, des racines, des coordonnées du sommet\n * - Compatible avec la classe FractionEtendue pour la gestion du calcul exact avec les rationnels\n * @author Rémi Angot\n */\nclass Trinome {\n /**\n * Définit un trinôme de la forme ax^2 + bx + c\n * @param {number | FractionEtendue} a\n * @param {number | FractionEtendue} b\n * @param {number | FractionEtendue} c\n */\n constructor (a, b, c) {\n if (typeof a === 'number') this.a = new FractionEtendue(a)\n else this.a = a\n if (typeof b === 'number') this.b = new FractionEtendue(b)\n else this.b = b\n if (typeof c === 'number') this.c = new FractionEtendue(c)\n else this.c = c\n }\n\n /**\n * Modifie le polynome pour qu'il soit égal à a(x-x1)(x-x2)\n * @param {number | FractionEtendue} a\n * @param {number | FractionEtendue} x1\n * @param {number | FractionEtendue} x2\n */\n defFormeFactorisee (a, x1, x2) {\n if (a instanceof FractionEtendue === false) a = new FractionEtendue(a)\n if (x1 instanceof FractionEtendue === false) x1 = new FractionEtendue(x1)\n if (x2 instanceof FractionEtendue === false) x2 = new FractionEtendue(x2)\n this.a = a\n this.b = x1.oppose().sommeFraction(x2.oppose()).produitFraction(a)\n this.c = x1.produitFraction(x2).produitFraction(a)\n }\n\n /**\n * Modifie le polynome pour qu'il soit égal à k(ax+b)(cx+d)\n * @param {number | FractionEtendue} k\n * @param {number | FractionEtendue} a\n * @param {number | FractionEtendue} b\n * @param {number | FractionEtendue} c\n * @param {number | FractionEtendue} d\n */\n defFormeFactorisee2 (k, a, b, c, d) {\n if (k instanceof FractionEtendue === false) k = new FractionEtendue(k)\n if (a instanceof FractionEtendue === false) a = new FractionEtendue(a)\n if (b instanceof FractionEtendue === false) b = new FractionEtendue(b)\n if (c instanceof FractionEtendue === false) c = new FractionEtendue(c)\n if (d instanceof FractionEtendue === false) d = new FractionEtendue(d)\n this.a = k.produitFraction(a).produitFraction(c)\n this.b = k.produitFraction(a).produitFraction(d).sommeFraction(k.produitFraction(b).produitFraction(c))\n this.c = k.produitFraction(b).produitFraction(d)\n }\n\n /**\n * Modifie le polynome pour qu'il soit égal à a(x - alpha)^2 + beta\n * @param {number | FractionEtendue} a\n * @param {number | FractionEtendue} alpha\n * @param {number | FractionEtendue} beta\n */\n defFormeCanonique (a, alpha, beta) {\n if (a instanceof FractionEtendue === false) a = new FractionEtendue(a)\n if (alpha instanceof FractionEtendue === false) alpha = new FractionEtendue(alpha)\n if (beta instanceof FractionEtendue === false) beta = new FractionEtendue(beta)\n this.a = a\n this.b = a.produitFraction(alpha).multiplieEntier(-2)\n this.c = a.produitFraction(alpha).produitFraction(alpha).sommeFraction(beta)\n }\n\n /**\n * Nombre de chiffres après la virgule pour les valeurs approchées (dans les calculs des racines)\n * @type {number}\n */\n precision = 3\n\n /**\n * Chaine de caractères de la forme développée ax^2+bx+c\n * @type {string}\n */\n get tex () {\n let result = ''\n if (Math.abs(this.a.valeurDecimale) === 1) {\n if (this.a.s === -1) result += '-'\n result += 'x^2'\n } else if (this.a.valeurDecimale === 0) {\n result += ''\n } else {\n result += `${this.a.texFSD}x^2`\n }\n\n if (Math.abs(this.b.valeurDecimale) === 1) {\n result += `${this.b.signeString}x`\n } else if (this.b.valeurDecimale === 0) {\n result += ''\n } else {\n if (result && this.b.s === 1) result += '+'\n result += `${this.b.texFSD}x`\n }\n\n if (this.c.valeurDecimale === 0) {\n result += ''\n } else {\n if (result && this.c.s === 1) result += '+'\n result += `${this.c.texFSD}`\n }\n return result\n }\n\n /**\n * Discriminant du trinome\n * @type {FractionEtendue}\n */\n get discriminant () {\n const b2 = this.b.produitFraction(this.b)\n let ac = this.a.produitFraction(this.c)\n ac = ac.multiplieEntier(-4)\n return b2.sommeFraction(ac)\n }\n\n /**\n * Renvoie l'image de x par la fonction définie par le trinome\n * @param {number | FractionEtendue} x\n * @returns {FractionEtendue}\n */\n image (x) {\n if (x instanceof FractionEtendue === false) x = new FractionEtendue(x)\n return this.a.produitFraction(x).produitFraction(x).sommeFraction(this.b.produitFraction(x)).sommeFraction(this.c)\n }\n\n /**\n * Calcul détaillé de l'image d'un nombre\n * @param {number | FractionEtendue} x\n * @returns {string}\n */\n texCalculImage (x) {\n if (x instanceof FractionEtendue === false) x = new FractionEtendue(x)\n let result = ''\n if (this.a.valeurDecimale === -1) result = '-'\n else if (this.a.valeurDecimale !== 1) result = `${this.a.texFSD} \\\\times `\n\n if (x.s === -1 || !x.estEntiere) {\n result += `\\\\left(${x.texFSD} \\\\right)^2 `\n } else {\n result += `${x.texFSD}^2 `\n }\n\n if (this.b.valeurDecimale !== 0) {\n if (this.b.valeurDecimale === 1) result += `${x.simplifie().texFractionSignee} `\n else if (this.b.valeurDecimale === -1) result += `- ${x.texFSP} `\n else result += `${this.b.simplifie().texFractionSignee} \\\\times ${x.texFSP} `\n }\n\n if (this.c.valeurDecimale !== 0) result += `${this.c.texFractionSignee}`\n\n result += ` = ${this.image(x).simplifie().texFractionSimplifiee}`\n return result\n }\n\n /**\n * Calcul sur une ligne du discriminant du polynome\n * @example\n * const p = new Trinome(2, 3, 1)\n * p.texCalculDiscriminantSansResultat\n * // 3^2-4\\\\times2\\\\times1 = 1\n * @type {string}\n * @type {string}\n */\n get texCalculDiscriminant () {\n if (this.b.valeurDecimale === 0) return `-4\\\\times${this.a.texFSP}\\\\times${this.c.texFSP} = ${this.discriminant.texFractionSimplifiee}`\n else if (this.b.estEntiere && this.b.s === 1) return `${this.b.texFSD}^2-4\\\\times${this.a.texFSP}\\\\times${this.c.texFSP} = ${this.discriminant.texFractionSimplifiee}`\n return `\\\\left(${this.b.texFSD}\\\\right)^2-4\\\\times${this.a.texFSP}\\\\times${this.c.texFSP} = ${this.discriminant.texFractionSimplifiee}`\n }\n\n /**\n * Calcul sous la forme d'une égalité sans le résultat\n * @example\n * const p = new Trinome(2, 3, 1)\n * p.texCalculDiscriminantSansResultat\n * // 3^2-4\\\\times2\\\\times1\n * @type {string}\n */\n get texCalculDiscriminantSansResultat () {\n if (this.b.valeurDecimale === 0) return `-4\\\\times${this.a.texFSP}\\\\times${this.c.texFSP}`\n else if (this.b.estEntiere && this.b.s === 1) return `${this.b.texFSD}^2-4\\\\times${this.a.texFSP}\\\\times${this.c.texFSP}`\n return `\\\\left(${this.b.texFSD}\\\\right)^2-4\\\\times${this.a.texFSP}\\\\times${this.c.texFSP}`\n }\n\n /**\n * Calcul détaillée de la première racine avec résultat exact si on peut calculer la racine du discriminant et valeur approchée sinon\n * @type {string}\n */\n get texCalculRacine1 () {\n if (this.discriminant.s === -1) return ''\n let result = 'x_1 = '\n if (this.b.valeurDecimale === 0) result += `\\\\dfrac{-b-\\\\sqrt{\\\\Delta}}{2a}=\\\\dfrac{-\\\\sqrt{${this.discriminant.texFractionSimplifiee}}}{2\\\\times${this.a.s === -1 ? this.a.texFSP : this.a.texFractionSimplifiee}}`\n else result += `\\\\dfrac{-b-\\\\sqrt{\\\\Delta}}{2a}=\\\\dfrac{${this.b.oppose().texFractionSimplifiee}-\\\\sqrt{${this.discriminant.texFractionSimplifiee}}}{2\\\\times${this.a.s === -1 ? this.a.texFSP : this.a.texFractionSimplifiee}}`\n if (this.x1 instanceof FractionEtendue) result += `=${this.x1.texFractionSimplifiee}`\n else result += `\\\\approx${this.x1.toString().replace('.', ',')}`\n return result\n }\n\n /**\n * Calcul détaillée de la deuxième racine avec résultat exact si on peut calculer la racine du discriminant et valeur approchée sinon\n * @type {string}\n */\n get texCalculRacine2 () {\n if (this.discriminant.s === -1) return ''\n let result = 'x_2 = '\n if (this.b.valeurDecimale === 0) result += `\\\\dfrac{-b+\\\\sqrt{\\\\Delta}}{2a}=\\\\dfrac{\\\\sqrt{${this.discriminant.texFractionSimplifiee}}}{2\\\\times${this.a.s === -1 ? this.a.texFSP : this.a.texFractionSimplifiee}}`\n else result += `\\\\dfrac{-b+\\\\sqrt{\\\\Delta}}{2a}=\\\\dfrac{${this.b.oppose().texFractionSimplifiee}+\\\\sqrt{${this.discriminant.texFractionSimplifiee}}}{2\\\\times${this.a.s === -1 ? this.a.texFSP : this.a.texFractionSimplifiee}}`\n if (this.x2 instanceof FractionEtendue) result += `=${this.x2.texFractionSimplifiee}`\n else result += `\\\\approx${this.x2.toString().replace('.', ',')}`\n return result\n }\n\n /**\n * Tableau avec 2 étapes pour le développement puis le résultat\n * @return {string[]} [Étape 1, Étape 2, this.tex]\n */\n get arrayTexDevelopperFormeCanonique () {\n const alpha = this.alpha\n const beta = this.beta\n let result1 = ''\n if (this.a.valeurDecimale === -1) result1 += '-'\n else if (this.a.valeurDecimale !== 1) result1 += this.a.simplifie().texFSD\n result1 += `\\\\left(x^2 ${alpha.multiplieEntier(-2).simplifie().texFractionSignee} x ${alpha.produitFraction(alpha).simplifie().texFractionSignee} \\\\right) ${beta.simplifie().texFractionSignee}`\n let result2 = ''\n if (this.a.valeurDecimale === -1) result2 += '-x^2'\n else if (this.a.valeurDecimale !== 1) result2 += `${this.a.simplifie().texFSD} x^2`\n if (this.b.valeurDecimale === -1) result2 += '-x'\n else if (this.b.valeurDecimale === 1) result2 += 'x'\n else result2 += `${this.b.simplifie().texFractionSignee}x ${this.a.produitFraction(alpha).produitFraction(alpha).simplifie().texFractionSignee} ${beta.simplifie().texFractionSignee}`\n\n return [result1, result2, this.tex]\n }\n\n /**\n * Tableau avec 2 étapes pour le développement puis le résultat\n *\n * On considère que a est différent de 1, x1 et x2 sont non nuls\n */\n get arrayTexDevelopperFormeFactorisee () {\n const [a, x1, x2] = [this.a, this.x1, this.x2]\n const result1 = `${a.simplifie().texFractionSaufUn}\\\\left(x^2 ${x2.oppose().simplifie().texFractionSaufUnSignee}x ${x1.oppose().simplifie().texFractionSaufUnSignee}x ${x1.produitFraction(x2).simplifie().texFractionSignee} \\\\right)`\n const result2 = `${a.simplifie().texFractionSaufUn}x^2 ${a.produitFraction(x2).oppose().simplifie().texFractionSaufUnSignee}x ${a.produitFraction(x1).oppose().simplifie().texFractionSaufUnSignee}x ${a.produitFraction(x1).produitFraction(x2).simplifie().texFractionSignee}`\n return [result1, result2, this.tex]\n }\n\n /**\n * Première racine du trinome\n * @type {FractionEtendue | number}\n */\n get x1 () {\n if (this.discriminant.s === -1) return false\n const deltaNum = this.discriminant.num\n const deltaDen = this.discriminant.den\n let racineDeDelta = new FractionEtendue(1)\n if (Math.abs((Math.sqrt(deltaNum) - Math.round(Math.sqrt(deltaNum)))) < 0.000001 &&\n Math.abs(Math.sqrt(deltaDen) - Math.round(Math.sqrt(deltaDen))) < 0.000001) {\n racineDeDelta = new FractionEtendue(Math.sqrt(deltaNum), Math.sqrt(deltaDen))\n const unSurDeuxA = this.a.multiplieEntier(2).inverse()\n return this.b.oppose().sommeFraction(racineDeDelta.oppose()).produitFraction(unSurDeuxA)\n } else {\n return Math.round((-this.b.valeurDecimale - Math.sqrt(this.discriminant.valeurDecimale)) / (2 * this.a.valeurDecimale) * (10 ** this.precision)) / (10 ** this.precision)\n }\n }\n\n /**\n * Deuxième racine du trinome\n * @type {FractionEtendue | number}\n */\n get x2 () {\n if (this.discriminant.s === -1) return false\n const deltaNum = this.discriminant.num\n const deltaDen = this.discriminant.den\n let racineDeDelta\n if (Math.abs((Math.sqrt(deltaNum) - Math.round(Math.sqrt(deltaNum)))) < 0.000001 &&\n Math.abs(Math.sqrt(deltaDen) - Math.round(Math.sqrt(deltaDen))) < 0.000001) {\n racineDeDelta = new FractionEtendue(Math.sqrt(deltaNum), Math.sqrt(deltaDen))\n const unSurDeuxA = this.a.multiplieEntier(2).inverse()\n return this.b.oppose().sommeFraction(racineDeDelta).produitFraction(unSurDeuxA)\n } else {\n return Math.round((-this.b.valeurDecimale + Math.sqrt(this.discriminant.valeurDecimale)) / (2 * this.a.valeurDecimale) * (10 ** this.precision)) / (10 ** this.precision)\n }\n }\n\n /**\n * Écriture LaTeX de la valeur exacte première racine\n * @type {string}\n */\n get texX1 () {\n if (this.x1 instanceof FractionEtendue) return this.x1.simplifie().texFraction\n else {\n const num = this.b.oppose().texFraction + `- \\\\sqrt{${this.discriminant.texFraction}}`\n const den = 2 * this.a\n return `\\\\dfrac{${num}}{${den}}`\n }\n }\n\n /**\n * Écriture LaTeX de la valeur exacte première racine\n * @type {string}\n */\n get texX2 () {\n if (this.x2 instanceof FractionEtendue) return this.x2.simplifie().texFraction\n else {\n const num = this.b.oppose().texFraction + `+ \\\\sqrt{${this.discriminant.texFraction}}`\n const den = 2 * this.a\n return `\\\\dfrac{${num}}{${den}}`\n }\n }\n\n /**\n * a(x-x1)(x-x2)\n * @type {string}\n */\n get texFormeFactorisee () {\n if (this.x1 instanceof FractionEtendue) {\n if (this.x1.valeurDecimale === 0) {\n if (this.a.valeurDecimale === 1) return `x(x${this.x2.oppose().simplifie().texFractionSignee})`\n else if (this.a.valeurDecimale === -1) return `-x(x${this.x2.oppose().simplifie().texFractionSignee})`\n else return `${this.a.texFractionSimplifiee}x(x${this.x2.oppose().simplifie().texFractionSignee})`\n } else if (this.x2.valeurDecimale === 0) {\n if (this.a.valeurDecimale === 1) return `x(x${this.x1.oppose().simplifie().texFractionSignee})`\n else if (this.a.valeurDecimale === -1) return `-x(x${this.x1.oppose().simplifie().texFractionSignee})`\n else return `${this.a.texFractionSimplifiee}x(x${this.x1.oppose().simplifie().texFractionSignee})`\n }\n if (this.a.valeurDecimale === 1) return `(x${this.x1.oppose().simplifie().texFractionSignee})(x${this.x2.oppose().simplifie().texFractionSignee})`\n else if (this.a.valeurDecimale === -1) return `-(x${this.x1.oppose().simplifie().texFractionSignee})(x${this.x2.oppose().simplifie().texFractionSignee})`\n else return `${this.a.texFractionSimplifiee}(x${this.x1.oppose().simplifie().texFractionSignee})(x${this.x2.oppose().simplifie().texFractionSignee})`\n } else {\n if (this.a.valeurDecimale === 1) return '(x-x_1)(x-x_2)'\n else if (this.a.valeurDecimale === -1) return '-(x-x_1)(x-x_2)'\n else return `${this.a}(x-x_1)(x-x_2)`\n }\n }\n\n get alpha () {\n return this.b.diviseFraction(this.a.multiplieEntier(2)).oppose()\n }\n\n get beta () {\n return this.image(this.alpha)\n }\n\n get texFormeCanonique () {\n let result = ''\n if (this.a.valeurDecimale === -1) result = '-'\n else if (this.a.valeurDecimale !== 1) result = this.a.texFractionSimplifiee\n if (this.alpha.valeurDecimale === 0) result += 'x^2'\n else result += `\\\\left(x ${this.alpha.oppose().simplifie().texFractionSignee}\\\\right)^2`\n result += ` ${this.beta.simplifie().texFractionSignee}`\n return result\n }\n}\n\nexport default Trinome\n"],"names":["Trinome","a","b","c","__publicField","FractionEtendue","x1","x2","k","d","alpha","beta","result","b2","ac","x","result1","result2","deltaNum","deltaDen","racineDeDelta","unSurDeuxA","num","den","Trinome$1"],"mappings":"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"}