pimath 0.0.39 → 0.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/pi.js +293 -94
  2. package/dist/pi.js.map +1 -1
  3. package/dist/pi.min.js +1 -1
  4. package/dist/pi.min.js.map +1 -1
  5. package/docs/assets/search.js +1 -1
  6. package/esm/index.d.ts +2 -2
  7. package/esm/index.js +2 -2
  8. package/esm/maths/algebra/equation.d.ts +7 -2
  9. package/esm/maths/algebra/equation.js +52 -9
  10. package/esm/maths/algebra/equation.js.map +1 -1
  11. package/esm/maths/algebra/polynom.d.ts +2 -1
  12. package/esm/maths/algebra/polynom.js +98 -62
  13. package/esm/maths/algebra/polynom.js.map +1 -1
  14. package/esm/maths/algebra/rational.d.ts +10 -0
  15. package/esm/maths/algebra/rational.js +102 -11
  16. package/esm/maths/algebra/rational.js.map +1 -1
  17. package/esm/maths/coefficients/fraction.d.ts +3 -1
  18. package/esm/maths/coefficients/fraction.js +34 -5
  19. package/esm/maths/coefficients/fraction.js.map +1 -1
  20. package/esm/maths/coefficients/{nthroot.d.ts → nthRoot.d.ts} +5 -5
  21. package/esm/maths/coefficients/{nthroot.js → nthRoot.js} +5 -5
  22. package/esm/maths/coefficients/{nthroot.js.map → nthRoot.js.map} +1 -1
  23. package/esm/maths/geometry/line.js.map +1 -1
  24. package/package.json +1 -1
  25. package/src/index.ts +2 -2
  26. package/src/maths/algebra/equation.ts +61 -12
  27. package/src/maths/algebra/polynom.ts +100 -68
  28. package/src/maths/algebra/rational.ts +137 -21
  29. package/src/maths/coefficients/fraction.ts +40 -6
  30. package/src/maths/coefficients/{nthroot.ts → nthRoot.ts} +5 -5
  31. package/src/maths/geometry/line.ts +0 -1
  32. package/tests/algebra/equation.test.ts +38 -0
  33. package/tests/algebra/monom.test.ts +1 -4
  34. package/tests/algebra/rationnal.test.ts +29 -5
  35. package/tests/coefficients/fraction.test.ts +43 -1
  36. package/tests/geometry/circle.test.ts +4 -2
package/esm/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { NumExp } from "./maths/expressions/numexp";
3
3
  import { Shutingyard } from "./maths/shutingyard";
4
4
  import { Random } from "./maths/randomization/random";
5
5
  import { Fraction } from "./maths/coefficients/fraction";
6
- import { Nthroot } from "./maths/coefficients/nthroot";
6
+ import { NthRoot } from "./maths/coefficients/nthRoot";
7
7
  import { Monom } from "./maths/algebra/monom";
8
8
  import { Polynom } from "./maths/algebra/polynom";
9
9
  import { Equation } from "./maths/algebra/equation";
@@ -21,7 +21,7 @@ export declare const PiMath: {
21
21
  Numeric: typeof Numeric;
22
22
  NumExp: typeof NumExp;
23
23
  Fraction: typeof Fraction;
24
- Root: typeof Nthroot;
24
+ Root: typeof NthRoot;
25
25
  Monom: typeof Monom;
26
26
  Polynom: typeof Polynom;
27
27
  Equation: typeof Equation;
package/esm/index.js CHANGED
@@ -6,7 +6,7 @@ const numexp_1 = require("./maths/expressions/numexp");
6
6
  const shutingyard_1 = require("./maths/shutingyard");
7
7
  const random_1 = require("./maths/randomization/random");
8
8
  const fraction_1 = require("./maths/coefficients/fraction");
9
- const nthroot_1 = require("./maths/coefficients/nthroot");
9
+ const nthRoot_1 = require("./maths/coefficients/nthRoot");
10
10
  const monom_1 = require("./maths/algebra/monom");
11
11
  const polynom_1 = require("./maths/algebra/polynom");
12
12
  const equation_1 = require("./maths/algebra/equation");
@@ -25,7 +25,7 @@ exports.PiMath = {
25
25
  Numeric: numeric_1.Numeric,
26
26
  NumExp: numexp_1.NumExp,
27
27
  Fraction: fraction_1.Fraction,
28
- Root: nthroot_1.Nthroot,
28
+ Root: nthRoot_1.NthRoot,
29
29
  Monom: monom_1.Monom,
30
30
  Polynom: polynom_1.Polynom,
31
31
  Equation: equation_1.Equation,
@@ -4,11 +4,15 @@ import { Fraction } from "../coefficients/fraction";
4
4
  /**
5
5
  * Equation is a class to manage equations...
6
6
  */
7
- interface ISolution {
7
+ export interface ISolution {
8
8
  tex: string;
9
9
  value: number;
10
10
  exact: unknown;
11
11
  }
12
+ export declare enum PARTICULAR_SOLUTION {
13
+ real = "\\mathbb{R}",
14
+ varnothing = "\\varnothing"
15
+ }
12
16
  export declare class Equation {
13
17
  private _polynom;
14
18
  private _varnothing;
@@ -40,6 +44,7 @@ export declare class Equation {
40
44
  get raw(): string;
41
45
  get variables(): string[];
42
46
  get numberOfVars(): number;
47
+ hasVariable: (letter: string) => boolean;
43
48
  private _randomizeDefaults;
44
49
  get randomizeDefaults(): {
45
50
  [key: string]: number | string | boolean;
@@ -97,6 +102,7 @@ export declare class Equation {
97
102
  isMultiVariable: () => boolean;
98
103
  letters: () => string[];
99
104
  solve: () => Equation;
105
+ static makeSolutionsUnique(solutions: ISolution[], sorted?: boolean): ISolution[];
100
106
  test: (values: literalType) => Boolean;
101
107
  private _findSign;
102
108
  private _formatSign;
@@ -108,4 +114,3 @@ export declare class Equation {
108
114
  private _solveDegree2;
109
115
  private _solveDegree3plus;
110
116
  }
111
- export {};
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Equation = void 0;
3
+ exports.Equation = exports.PARTICULAR_SOLUTION = void 0;
4
4
  const polynom_1 = require("./polynom");
5
5
  const numeric_1 = require("../numeric");
6
6
  const fraction_1 = require("../coefficients/fraction");
7
- const nthroot_1 = require("../coefficients/nthroot");
7
+ const nthRoot_1 = require("../coefficients/nthRoot");
8
+ var PARTICULAR_SOLUTION;
9
+ (function (PARTICULAR_SOLUTION) {
10
+ PARTICULAR_SOLUTION["real"] = "\\mathbb{R}";
11
+ PARTICULAR_SOLUTION["varnothing"] = "\\varnothing";
12
+ })(PARTICULAR_SOLUTION = exports.PARTICULAR_SOLUTION || (exports.PARTICULAR_SOLUTION = {}));
8
13
  class Equation {
9
14
  /**
10
15
  * Create an Equation using two polynoms.
@@ -13,8 +18,11 @@ class Equation {
13
18
  */
14
19
  constructor(...equations) {
15
20
  // Undetermined texSolutions.
16
- this._varnothing = '\\varnothing';
17
- this._real = '\\mathbb{R}';
21
+ this._varnothing = PARTICULAR_SOLUTION.varnothing;
22
+ this._real = PARTICULAR_SOLUTION.real;
23
+ this.hasVariable = (letter) => {
24
+ return this.variables.includes(letter);
25
+ };
18
26
  // ------------------------------------------
19
27
  // Creation / parsing functions
20
28
  // -----------------------------------------------
@@ -209,6 +217,8 @@ class Equation {
209
217
  default:
210
218
  this._solveDegree3plus();
211
219
  }
220
+ // cleanup the solutions.
221
+ this._solutions = Equation.makeSolutionsUnique(this._solutions);
212
222
  return this;
213
223
  };
214
224
  this.test = (values) => {
@@ -339,7 +349,7 @@ class Equation {
339
349
  }
340
350
  else {
341
351
  this._solutions = [{
342
- tex: v.display,
352
+ tex: v.tex,
343
353
  value: v.value,
344
354
  exact: v
345
355
  }];
@@ -399,7 +409,7 @@ class Equation {
399
409
  ];
400
410
  }
401
411
  else {
402
- nthDelta = new nthroot_1.Nthroot(delta).reduce();
412
+ nthDelta = new nthRoot_1.NthRoot(delta).reduce();
403
413
  if (nthDelta.hasRadical()) {
404
414
  // -b +- coeff\sqrt{radical}
405
415
  // -------------------------
@@ -573,9 +583,27 @@ class Equation {
573
583
  }
574
584
  return this._solutions;
575
585
  };
576
- this._solveDegree3plus = () => {
577
- // TODO: try to resolve equations with a degree superior than 2.
578
- this._solutions = [{ tex: 'solve x - not yet handled', value: NaN, exact: false }]; // ESLint remove system :(
586
+ this._solveDegree3plus = (letter) => {
587
+ // Push everything to the left
588
+ // factorize
589
+ // solve each factors.
590
+ let equ = this.clone().moveLeft();
591
+ equ.left.factorize();
592
+ this._solutions = [];
593
+ equ.left.factors.forEach(factor => {
594
+ if (factor.degree(letter).leq(2)) {
595
+ let factorAsEquation = new Equation(factor, 0);
596
+ factorAsEquation.solve();
597
+ factorAsEquation.solutions.forEach(solution => {
598
+ this._solutions.push(solution);
599
+ });
600
+ }
601
+ else {
602
+ console.log(factor.tex, ': cannot actually get the solution of this equation');
603
+ }
604
+ });
605
+ // TODO: check equation resolution for more than degree 2
606
+ // this._solutions = [{tex: 'solve x - not yet handled', value: NaN, exact: false}]; // ESLint remove system :(
579
607
  return this._solutions;
580
608
  };
581
609
  // Default equation
@@ -690,6 +718,21 @@ class Equation {
690
718
  set randomizeDefaults(value) {
691
719
  this._randomizeDefaults = value;
692
720
  }
721
+ static makeSolutionsUnique(solutions, sorted) {
722
+ let solutionAsTex = [], uniqueSolutions = solutions.filter(sol => {
723
+ if (!solutionAsTex.includes(sol.tex)) {
724
+ solutionAsTex.push(sol.tex);
725
+ return true;
726
+ }
727
+ else {
728
+ return false;
729
+ }
730
+ });
731
+ if (sorted === true) {
732
+ uniqueSolutions.sort((a, b) => a.value - b.value);
733
+ }
734
+ return uniqueSolutions;
735
+ }
693
736
  }
694
737
  exports.Equation = Equation;
695
738
  //# sourceMappingURL=equation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"equation.js","sourceRoot":"","sources":["../../../src/maths/algebra/equation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"equation.js","sourceRoot":"","sources":["../../../src/maths/algebra/equation.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  import { literalType, Monom } from './monom';
5
5
  import { Token } from '../shutingyard';
6
6
  import { Fraction } from "../coefficients/fraction";
7
+ import { ISolution } from "./equation";
7
8
  export declare type PolynomParsingType = string | Polynom | number | Fraction | Monom;
8
9
  /**
9
10
  * Polynom class can handle polynoms, reorder, resolve, ...
@@ -100,7 +101,7 @@ export declare class Polynom {
100
101
  * @param maxValue Defines the greatest value to search to (default is 20).
101
102
  */
102
103
  factorize: (letter?: string) => Polynom[];
103
- getZeroes: () => (Fraction | boolean)[];
104
+ getZeroes: () => ISolution[];
104
105
  monomByDegree: (degree?: Fraction | number, letter?: string) => Monom;
105
106
  monomsByDegree: (degree?: number | Fraction, letter?: string) => Monom[];
106
107
  monomByLetter: (letter: string) => Monom;
@@ -8,6 +8,7 @@ const monom_1 = require("./monom");
8
8
  const shutingyard_1 = require("../shutingyard");
9
9
  const numeric_1 = require("../numeric");
10
10
  const fraction_1 = require("../coefficients/fraction");
11
+ const equation_1 = require("./equation");
11
12
  /**
12
13
  * Polynom class can handle polynoms, reorder, resolve, ...
13
14
  * ```
@@ -510,6 +511,7 @@ class Polynom {
510
511
  P = P.euclidian(tempPolynom).quotient;
511
512
  }
512
513
  let securityLoop = P.degree().clone().multiply(2).value;
514
+ let result;
513
515
  // securityLoop = 0
514
516
  while (securityLoop >= 0) {
515
517
  securityLoop--;
@@ -525,7 +527,7 @@ class Polynom {
525
527
  for (let m1d of m1) {
526
528
  for (let m2d of m2) {
527
529
  // if(m1d.degree()===m2d.degree()){continue}
528
- let dividerPolynom = new Polynom(), result;
530
+ let dividerPolynom = new Polynom();
529
531
  dividerPolynom.monoms = [m1d.clone(), m2d.clone()];
530
532
  result = P.euclidian(dividerPolynom);
531
533
  if (result.reminder.isZero()) {
@@ -543,72 +545,103 @@ class Polynom {
543
545
  }
544
546
  }
545
547
  }
548
+ if (!P.isOne()) {
549
+ factors.push(P.clone());
550
+ }
546
551
  this.factors = factors;
547
552
  return factors;
548
553
  };
549
554
  // TODO: get zeroes for more than first degree and for more than natural degrees
550
555
  this.getZeroes = () => {
551
- const Z = [];
552
- switch (this.degree().value) {
553
- case 0:
554
- if (this._monoms[0].coefficient.value === 0) {
555
- return [true];
556
- }
557
- else {
558
- return [false];
559
- }
560
- case 1:
561
- // There is only one monoms,
562
- if (this._monoms.length === 1) {
563
- return [new fraction_1.Fraction().zero()];
564
- }
565
- else {
566
- const P = this.clone().reduce().reorder();
567
- return [P.monoms[1].coefficient.opposed().divide(P.monoms[0].coefficient)];
568
- }
569
- // TODO: Determine the zeros of an equation of second degree.
570
- //case 2:
571
- default:
572
- // Make sure the polynom is factorized.
573
- if (this._factors.length === 0) {
574
- this.factorize();
575
- }
576
- let zeroes = [], zeroesAsTex = [];
577
- for (let P of this._factors) {
578
- if (P.degree().greater(2)) {
579
- // TODO: Handle other polynom.
580
- }
581
- else if (P.degree().value === 2) {
582
- let A = P.monomByDegree(2).coefficient, B = P.monomByDegree(1).coefficient, C = P.monomByDegree(0).coefficient, D = B.clone().pow(2).subtract(A.clone().multiply(C).multiply(4));
583
- if (D.value > 0) {
584
- /*console.log('Two zeroes for ', P.tex); */
585
- let x1 = (-(B.value) + Math.sqrt(D.value)) / (2 * A.value), x2 = (-(B.value) - Math.sqrt(D.value)) / (2 * A.value);
586
- zeroes.push(new fraction_1.Fraction(x1.toFixed(3)).reduce());
587
- zeroes.push(new fraction_1.Fraction(x2.toFixed(3)).reduce());
588
- }
589
- else if (D.value === 0) {
590
- /*console.log('One zero for ', P.tex); */
591
- }
592
- else {
593
- console.log('No zero for ', P.tex);
594
- }
595
- }
596
- else {
597
- for (let z of P.getZeroes()) {
598
- // Check if the zero is already in the list.
599
- if (z === false || z === true) {
600
- continue;
601
- }
602
- if (zeroesAsTex.indexOf(z.frac) === -1) {
603
- zeroes.push(z);
604
- zeroesAsTex.push(z.frac);
605
- }
606
- }
607
- }
608
- }
609
- return zeroes;
610
- }
611
- return Z;
556
+ let equ = new equation_1.Equation(this.clone(), 0);
557
+ equ.solve();
558
+ return equ.solutions;
559
+ //
560
+ // const Z: Fraction[] = [];
561
+ //
562
+ // // ISolution: {tex: string, value: number, exact: boolean|Fraction|...}
563
+ //
564
+ // switch (this.degree().value) {
565
+ // case 0:
566
+ // if (this._monoms[0].coefficient.value === 0) {
567
+ // return [{
568
+ // tex: '\\mathbb{R}',
569
+ // value: NaN,
570
+ // exact: false
571
+ // }];
572
+ // } else {
573
+ // return [{
574
+ // tex: '\\varnothing',
575
+ // value: NaN,
576
+ // exact: false
577
+ // }];
578
+ // }
579
+ // case 1:
580
+ // // There is only one monoms,
581
+ // if (this._monoms.length === 1) {
582
+ // return [{
583
+ // tex: '0',
584
+ // value: 0,
585
+ // exact: new Fraction().zero()
586
+ // }];
587
+ // } else {
588
+ // const P = this.clone().reduce().reorder();
589
+ // const coeff = P.monoms[1].coefficient.opposed().divide(P.monoms[0].coefficient)
590
+ // return [{
591
+ // tex: coeff.tex,
592
+ // value: coeff.value,
593
+ // exact: coeff
594
+ // }];
595
+ // }
596
+ // // TODO: Determine the zeros of an equation of second degree.
597
+ // //case 2:
598
+ // default:
599
+ // // Make sure the polynom is factorized.
600
+ // if (this._factors.length === 0) {
601
+ // this.factorize()
602
+ // }
603
+ //
604
+ // let zeroes:Fraction[] = [], zeroesAsTex = [];
605
+ // for (let P of this._factors) {
606
+ // if (P.degree().greater(2)) {
607
+ // // TODO: get zeroes of polynom with a degree greater than 2.
608
+ //
609
+ // } else if (P.degree().value === 2) {
610
+ // let A = P.monomByDegree(2).coefficient,
611
+ // B = P.monomByDegree(1).coefficient,
612
+ // C = P.monomByDegree(0).coefficient,
613
+ // D = B.clone().pow(2).subtract(A.clone().multiply(C).multiply(4));
614
+ //
615
+ // if (D.value > 0) {
616
+ // /*console.log('Two zeroes for ', P.tex); */
617
+ // let x1 = (-(B.value) + Math.sqrt(D.value)) / (2 * A.value),
618
+ // x2 = (-(B.value) - Math.sqrt(D.value)) / (2 * A.value);
619
+ //
620
+ // zeroes.push(new Fraction(x1.toFixed(3)).reduce());
621
+ // zeroes.push(new Fraction(x2.toFixed(3)).reduce());
622
+ // } else if (D.value === 0) {
623
+ // /*console.log('One zero for ', P.tex); */
624
+ // } else {
625
+ // console.log('No zero for ', P.tex);
626
+ // }
627
+ // } else {
628
+ // for (let z of P.getZeroes()) {
629
+ // // Check if the zero is already in the list.
630
+ // // if (z === false || z === true) {
631
+ // // continue;
632
+ // // }
633
+ // if (zeroesAsTex.indexOf(z.frac) === -1) {
634
+ // zeroes.push(z);
635
+ // zeroesAsTex.push(z.frac);
636
+ // }
637
+ // }
638
+ // }
639
+ // }
640
+ //
641
+ //
642
+ // return zeroes;
643
+ // }
644
+ // return Z;
612
645
  };
613
646
  // TODO: analyse the next functions to determine if they are useful or not...
614
647
  this.monomByDegree = (degree, letter) => {
@@ -980,6 +1013,9 @@ class Polynom {
980
1013
  }
981
1014
  get texFactors() {
982
1015
  this.factorize();
1016
+ if (this.factors.length === 0) {
1017
+ return this.tex;
1018
+ }
983
1019
  let tex = '';
984
1020
  for (let f of this.factors) {
985
1021
  if (f.monoms.length > 1) {