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/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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"}