pimath 0.0.62 → 0.0.65
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.
- package/dist/pi.js +520 -0
- package/dist/pi.js.map +1 -1
- package/dist/pi.min.js +1 -1
- package/dist/pi.min.js.map +1 -1
- package/esm/maths/algebra/polynom.d.ts +0 -6
- package/esm/maths/algebra/rational.d.ts +6 -10
- package/esm/maths/algebra/rational.js +8 -8
- package/esm/maths/algebra/rational.js.map +1 -1
- package/esm/maths/algebra/study/rationalStudy.d.ts +2 -8
- package/esm/maths/algebra/study/rationalStudy.js +15 -20
- package/esm/maths/algebra/study/rationalStudy.js.map +1 -1
- package/esm/maths/algebra/study.d.ts +24 -27
- package/esm/maths/algebra/study.js +48 -23
- package/esm/maths/algebra/study.js.map +1 -1
- package/package.json +1 -1
- package/src/maths/algebra/rational.ts +4 -0
- package/src/maths/algebra/study/rationalStudy.ts +14 -14
- package/src/maths/algebra/study.ts +59 -8
- package/tests/algebra/study.test.ts +20 -1
|
@@ -7,12 +7,10 @@ import {Fraction} from "../coefficients/fraction";
|
|
|
7
7
|
import {ISolution} from "./equation";
|
|
8
8
|
|
|
9
9
|
export declare type PolynomParsingType = string | Polynom | number | Fraction | Monom;
|
|
10
|
-
|
|
11
10
|
export interface IEuclidian {
|
|
12
11
|
quotient: Polynom;
|
|
13
12
|
reminder: Polynom;
|
|
14
13
|
}
|
|
15
|
-
|
|
16
14
|
/**
|
|
17
15
|
* Polynom class can handle polynoms, reorder, resolve, ...
|
|
18
16
|
* ```
|
|
@@ -28,24 +26,20 @@ export declare class Polynom {
|
|
|
28
26
|
private _rawString;
|
|
29
27
|
private _texString;
|
|
30
28
|
private _zeroes;
|
|
31
|
-
|
|
32
29
|
/**
|
|
33
30
|
*
|
|
34
31
|
* @param {string} polynomString (optional) Default polynom to parse on class creation
|
|
35
32
|
* @param values
|
|
36
33
|
*/
|
|
37
34
|
constructor(polynomString?: PolynomParsingType, ...values: unknown[]);
|
|
38
|
-
|
|
39
35
|
get euclidianCache(): {
|
|
40
36
|
[p: string]: IEuclidian;
|
|
41
37
|
};
|
|
42
38
|
set euclidianCache(value: {
|
|
43
39
|
[p: string]: IEuclidian;
|
|
44
40
|
});
|
|
45
|
-
|
|
46
41
|
get dirty_zeroes(): boolean;
|
|
47
42
|
set dirty_zeroes(value: boolean);
|
|
48
|
-
|
|
49
43
|
get dirty_factors(): boolean;
|
|
50
44
|
set dirty_factors(value: boolean);
|
|
51
45
|
get monoms(): Monom[];
|
|
@@ -5,30 +5,26 @@
|
|
|
5
5
|
import {IEuclidian, Polynom} from "./polynom";
|
|
6
6
|
import {Fraction} from "../coefficients/fraction";
|
|
7
7
|
import {literalType} from "./monom";
|
|
8
|
+
import {RationalStudy} from "./study/rationalStudy";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Rational class can handle rational polynoms
|
|
11
12
|
*/
|
|
12
13
|
export declare class Rational {
|
|
13
|
-
euclidian: () => IEuclidian;
|
|
14
14
|
private _denominator;
|
|
15
|
+
euclidian: () => IEuclidian;
|
|
15
16
|
private _rawString;
|
|
16
|
-
|
|
17
17
|
/**
|
|
18
18
|
*
|
|
19
19
|
* @param numerator
|
|
20
20
|
* @param denominator
|
|
21
21
|
*/
|
|
22
22
|
constructor(numerator?: Polynom | string, denominator?: Polynom | string);
|
|
23
|
-
|
|
24
23
|
get numerator(): Polynom;
|
|
25
|
-
|
|
26
24
|
get denominator(): Polynom;
|
|
27
|
-
|
|
28
25
|
get tex(): string;
|
|
29
26
|
get texFactors(): string;
|
|
30
|
-
|
|
31
|
-
private _numerator;
|
|
27
|
+
study: () => RationalStudy;
|
|
32
28
|
clone: () => Rational;
|
|
33
29
|
domain: () => string;
|
|
34
30
|
amplify: (P: Polynom) => Rational;
|
|
@@ -38,9 +34,9 @@ export declare class Rational {
|
|
|
38
34
|
opposed: () => Rational;
|
|
39
35
|
add: (R: Rational) => Rational;
|
|
40
36
|
subtract: (R: Rational) => Rational;
|
|
41
|
-
|
|
42
|
-
get plotFunction(): string;
|
|
43
|
-
|
|
37
|
+
private _numerator;
|
|
44
38
|
limits: (value: Fraction | number, offset?: string, letter?: string) => Fraction;
|
|
45
39
|
evaluate: (values: literalType | Fraction | number) => Fraction;
|
|
40
|
+
|
|
41
|
+
get plotFunction(): string;
|
|
46
42
|
}
|
|
@@ -8,6 +8,7 @@ exports.Rational = void 0;
|
|
|
8
8
|
const polynom_1 = require("./polynom");
|
|
9
9
|
const fraction_1 = require("../coefficients/fraction");
|
|
10
10
|
const equation_1 = require("./equation");
|
|
11
|
+
const rationalStudy_1 = require("./study/rationalStudy");
|
|
11
12
|
/**
|
|
12
13
|
* Rational class can handle rational polynoms
|
|
13
14
|
*/
|
|
@@ -132,22 +133,21 @@ class Rational {
|
|
|
132
133
|
let N = this._numerator.evaluate(values), D = this._denominator.evaluate(values);
|
|
133
134
|
return N.divide(D);
|
|
134
135
|
};
|
|
136
|
+
this.study = () => {
|
|
137
|
+
return new rationalStudy_1.RationalStudy(this);
|
|
138
|
+
};
|
|
135
139
|
if (numerator instanceof polynom_1.Polynom) {
|
|
136
140
|
this._numerator = numerator.clone();
|
|
137
|
-
}
|
|
138
|
-
else if (typeof numerator === 'string') {
|
|
141
|
+
} else if (typeof numerator === 'string') {
|
|
139
142
|
this._numerator = new polynom_1.Polynom(numerator);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
143
|
+
} else {
|
|
142
144
|
this._numerator = new polynom_1.Polynom();
|
|
143
145
|
}
|
|
144
146
|
if (denominator instanceof polynom_1.Polynom) {
|
|
145
147
|
this._denominator = denominator.clone();
|
|
146
|
-
}
|
|
147
|
-
else if (typeof denominator === 'string') {
|
|
148
|
+
} else if (typeof denominator === 'string') {
|
|
148
149
|
this._denominator = new polynom_1.Polynom(denominator);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
150
|
+
} else {
|
|
151
151
|
this._denominator = new polynom_1.Polynom();
|
|
152
152
|
}
|
|
153
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rational.js","sourceRoot":"","sources":["../../../src/maths/algebra/rational.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA8C;AAC9C,uDAAkD;AAElD,
|
|
1
|
+
{"version":3,"file":"rational.js","sourceRoot":"","sources":["../../../src/maths/algebra/rational.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,18 +16,12 @@
|
|
|
16
16
|
import {IAsymptote, ITableOfSigns, IZero, Study, StudyableFunction} from "../study";
|
|
17
17
|
|
|
18
18
|
export declare class RationalStudy extends Study {
|
|
19
|
-
private _getSigns;
|
|
20
|
-
private _getZeroes;
|
|
21
|
-
|
|
22
19
|
constructor(fx: StudyableFunction);
|
|
23
|
-
|
|
24
20
|
makeZeroes(): IZero[];
|
|
25
|
-
|
|
26
21
|
makeSigns(): ITableOfSigns;
|
|
27
|
-
|
|
28
22
|
makeAsymptotes(): IAsymptote[];
|
|
29
|
-
|
|
30
23
|
makeDerivative(): ITableOfSigns;
|
|
31
|
-
|
|
32
24
|
makeVariation(): ITableOfSigns;
|
|
25
|
+
private _getZeroes;
|
|
26
|
+
private _getSigns;
|
|
33
27
|
}
|
|
@@ -19,25 +19,21 @@ exports.RationalStudy = void 0;
|
|
|
19
19
|
const study_1 = require("../study");
|
|
20
20
|
const rational_1 = require("../rational");
|
|
21
21
|
const fraction_1 = require("../../coefficients/fraction");
|
|
22
|
-
|
|
22
|
+
const polynom_1 = require("../polynom");
|
|
23
23
|
class RationalStudy extends study_1.Study {
|
|
24
24
|
constructor(fx) {
|
|
25
|
-
console.log('RATIONAL STUDY');
|
|
26
25
|
super(fx);
|
|
27
26
|
return this;
|
|
28
27
|
}
|
|
29
|
-
|
|
30
28
|
makeZeroes() {
|
|
31
|
-
console.log('GETTING ZEROES');
|
|
32
29
|
return this._getZeroes(this.fx);
|
|
33
30
|
}
|
|
34
31
|
;
|
|
35
|
-
|
|
36
32
|
makeSigns() {
|
|
37
|
-
|
|
33
|
+
let tos = this._getSigns(this.fx, this.zeroes);
|
|
34
|
+
return tos;
|
|
38
35
|
}
|
|
39
36
|
;
|
|
40
|
-
|
|
41
37
|
makeAsymptotes() {
|
|
42
38
|
const reduced = this.fx.clone().reduce();
|
|
43
39
|
// Vertical
|
|
@@ -58,6 +54,7 @@ class RationalStudy extends study_1.Study {
|
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
56
|
asymptotes.push({
|
|
57
|
+
fx: null,
|
|
61
58
|
type: Ztype,
|
|
62
59
|
tex: tex,
|
|
63
60
|
zero: zero,
|
|
@@ -68,17 +65,20 @@ class RationalStudy extends study_1.Study {
|
|
|
68
65
|
// Sloped asymptote
|
|
69
66
|
let NDegree = this.fx.numerator.degree(), DDegree = this.fx.denominator.degree();
|
|
70
67
|
if (NDegree.isEqual(DDegree)) {
|
|
71
|
-
let H = this.fx.numerator.monomByDegree().coefficient.clone().divide(this.fx.denominator.monomByDegree().coefficient)
|
|
68
|
+
let H = this.fx.numerator.monomByDegree().coefficient.clone().divide(this.fx.denominator.monomByDegree().coefficient),
|
|
69
|
+
Htex = H.tex;
|
|
72
70
|
let {reminder} = reduced.euclidian();
|
|
73
71
|
asymptotes.push({
|
|
72
|
+
fx: new polynom_1.Polynom(H),
|
|
74
73
|
type: study_1.ASYMPTOTE.HORIZONTAL,
|
|
75
|
-
tex: `y=${
|
|
74
|
+
tex: `y=${Htex}`,
|
|
76
75
|
zero: null,
|
|
77
|
-
limits: `\\lim_{x\\to\\infty}\\ f(x) = ${
|
|
76
|
+
limits: `\\lim_{x\\to\\infty}\\ f(x) = ${Htex}`,
|
|
78
77
|
deltaX: new rational_1.Rational(reminder, reduced.denominator)
|
|
79
78
|
});
|
|
80
79
|
} else if (DDegree.greater(NDegree)) {
|
|
81
80
|
asymptotes.push({
|
|
81
|
+
fx: new polynom_1.Polynom('0'),
|
|
82
82
|
type: study_1.ASYMPTOTE.HORIZONTAL,
|
|
83
83
|
tex: `y=0`,
|
|
84
84
|
zero: null,
|
|
@@ -89,6 +89,7 @@ class RationalStudy extends study_1.Study {
|
|
|
89
89
|
// Calculate the slope
|
|
90
90
|
let {quotient, reminder} = reduced.euclidian();
|
|
91
91
|
asymptotes.push({
|
|
92
|
+
fx: quotient.clone(),
|
|
92
93
|
type: study_1.ASYMPTOTE.SLOPE,
|
|
93
94
|
tex: `y=${quotient.tex}`,
|
|
94
95
|
zero: null,
|
|
@@ -99,30 +100,25 @@ class RationalStudy extends study_1.Study {
|
|
|
99
100
|
return asymptotes;
|
|
100
101
|
}
|
|
101
102
|
;
|
|
102
|
-
|
|
103
103
|
makeDerivative() {
|
|
104
104
|
let dx = this.fx.clone().derivative(),
|
|
105
105
|
tos = this._getSigns(dx, this._getZeroes(dx), study_1.TABLE_OF_SIGNS.GROWS);
|
|
106
|
-
|
|
107
|
-
let result = this.makeGrowsResult(this.fx, tos);
|
|
106
|
+
let result = this.makeGrowsResult(tos);
|
|
108
107
|
tos.signs.push(result.growsLine);
|
|
109
108
|
tos.extremes = result.extremes;
|
|
110
|
-
console.log(tos.signs.length);
|
|
111
109
|
return tos;
|
|
112
110
|
}
|
|
113
111
|
;
|
|
114
|
-
|
|
115
112
|
makeVariation() {
|
|
116
113
|
// Get the zeroes, make signs.
|
|
117
114
|
let dx = this.derivative.fx.clone().derivative(),
|
|
118
115
|
tos = this._getSigns(dx, this._getZeroes(dx), study_1.TABLE_OF_SIGNS.VARIATIONS);
|
|
119
|
-
let result = this.makeVariationsResult(
|
|
116
|
+
let result = this.makeVariationsResult(tos);
|
|
120
117
|
tos.signs.push(result.varsLine);
|
|
121
118
|
tos.extremes = result.extremes;
|
|
122
119
|
return tos;
|
|
123
120
|
}
|
|
124
121
|
;
|
|
125
|
-
|
|
126
122
|
_getZeroes(fx) {
|
|
127
123
|
// All zeroes.
|
|
128
124
|
let zeroes = [];
|
|
@@ -155,7 +151,6 @@ class RationalStudy extends study_1.Study {
|
|
|
155
151
|
zeroes.sort((a, b) => a.value - b.value);
|
|
156
152
|
return zeroes;
|
|
157
153
|
}
|
|
158
|
-
|
|
159
154
|
_getSigns(fx, zeroes, typeOfTable) {
|
|
160
155
|
// Factorize the rational
|
|
161
156
|
let signs = [], factors = [];
|
|
@@ -174,10 +169,10 @@ class RationalStudy extends study_1.Study {
|
|
|
174
169
|
factors,
|
|
175
170
|
zeroes,
|
|
176
171
|
signs,
|
|
177
|
-
extremes: {}
|
|
172
|
+
extremes: {},
|
|
173
|
+
tex: ''
|
|
178
174
|
};
|
|
179
175
|
}
|
|
180
176
|
}
|
|
181
|
-
|
|
182
177
|
exports.RationalStudy = RationalStudy;
|
|
183
178
|
//# sourceMappingURL=rationalStudy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rationalStudy.js","sourceRoot":"","sources":["../../../../src/maths/algebra/study/rationalStudy.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,
|
|
1
|
+
{"version":3,"file":"rationalStudy.js","sourceRoot":"","sources":["../../../../src/maths/algebra/study/rationalStudy.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,40 +7,35 @@ import {ISolution} from "./equation";
|
|
|
7
7
|
import {Polynom} from "./polynom";
|
|
8
8
|
|
|
9
9
|
export declare type StudyableFunction = Rational;
|
|
10
|
-
|
|
11
10
|
export declare enum ZEROTYPE {
|
|
12
11
|
ZERO = "z",
|
|
13
12
|
DEFENCE = "d",
|
|
14
13
|
NOTHING = "t"
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
export interface IZero extends ISolution {
|
|
18
16
|
extrema: FUNCTION_EXTREMA;
|
|
19
17
|
type: ZEROTYPE;
|
|
20
18
|
}
|
|
21
|
-
|
|
22
19
|
export declare enum ASYMPTOTE {
|
|
23
20
|
VERTICAL = "av",
|
|
24
21
|
HORIZONTAL = "ah",
|
|
25
22
|
SLOPE = "ao",
|
|
26
23
|
HOLE = "hole"
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
export interface IAsymptote {
|
|
26
|
+
fx: Polynom;
|
|
30
27
|
deltaX: StudyableFunction;
|
|
31
28
|
limits: string;
|
|
32
29
|
tex: string;
|
|
33
30
|
type: ASYMPTOTE;
|
|
34
31
|
zero: IZero;
|
|
35
32
|
}
|
|
36
|
-
|
|
37
33
|
export declare enum FUNCTION_EXTREMA {
|
|
38
34
|
MIN = "min",
|
|
39
35
|
MAX = "max",
|
|
40
36
|
FLAT = "flat",
|
|
41
37
|
NOTHING = ""
|
|
42
38
|
}
|
|
43
|
-
|
|
44
39
|
export interface IExtrema {
|
|
45
40
|
tex: {
|
|
46
41
|
x: string;
|
|
@@ -52,7 +47,6 @@ export interface IExtrema {
|
|
|
52
47
|
y: number;
|
|
53
48
|
};
|
|
54
49
|
}
|
|
55
|
-
|
|
56
50
|
export interface ITableOfSigns {
|
|
57
51
|
extremes: {
|
|
58
52
|
[Key: string]: IExtrema;
|
|
@@ -62,14 +56,13 @@ export interface ITableOfSigns {
|
|
|
62
56
|
signs: (string[])[];
|
|
63
57
|
type: TABLE_OF_SIGNS;
|
|
64
58
|
zeroes: IZero[];
|
|
59
|
+
tex: string;
|
|
65
60
|
}
|
|
66
|
-
|
|
67
61
|
export declare enum TABLE_OF_SIGNS {
|
|
68
62
|
DEFAULT = 0,
|
|
69
63
|
GROWS = 1,
|
|
70
64
|
VARIATIONS = 2
|
|
71
65
|
}
|
|
72
|
-
|
|
73
66
|
/**
|
|
74
67
|
* The study class is a "function study" class that will get:
|
|
75
68
|
* fx : get the function
|
|
@@ -87,25 +80,8 @@ export declare enum TABLE_OF_SIGNS {
|
|
|
87
80
|
*/
|
|
88
81
|
export declare class Study {
|
|
89
82
|
fx: StudyableFunction;
|
|
90
|
-
indexOfZero: (zeroes: IZero[], zero: IZero | ISolution) => number;
|
|
91
|
-
makeGrowsResult: (fx: StudyableFunction, tos: ITableOfSigns) => {
|
|
92
|
-
growsLine: string[];
|
|
93
|
-
extremes: {
|
|
94
|
-
[Key: string]: IExtrema;
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
makeOneLineForSigns: (factor: Polynom, zeroes: IZero[], zeroSign: ZEROTYPE) => string[];
|
|
98
|
-
makeSignsResult: (signs: (string[])[]) => string[];
|
|
99
|
-
makeStudy: () => void;
|
|
100
|
-
makeVariationsResult: (fx: StudyableFunction, tos: ITableOfSigns) => {
|
|
101
|
-
varsLine: string[];
|
|
102
|
-
extremes: {
|
|
103
|
-
[Key: string]: IExtrema;
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
83
|
private _asymptotes;
|
|
107
84
|
private _derivative;
|
|
108
|
-
private _makeTexFromTableOfSigns;
|
|
109
85
|
private _signs;
|
|
110
86
|
private _variations;
|
|
111
87
|
private _zeroes;
|
|
@@ -122,12 +98,29 @@ export declare class Study {
|
|
|
122
98
|
|
|
123
99
|
get derivative(): ITableOfSigns;
|
|
124
100
|
|
|
125
|
-
|
|
101
|
+
drawCode: () => string;
|
|
126
102
|
|
|
127
103
|
get texGrows(): string;
|
|
128
104
|
|
|
129
105
|
get texVariations(): string;
|
|
130
106
|
|
|
107
|
+
makeGrowsResult: (tos: ITableOfSigns) => {
|
|
108
|
+
growsLine: string[];
|
|
109
|
+
extremes: {
|
|
110
|
+
[Key: string]: IExtrema;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
indexOfZero: (zeroes: IZero[], zero: IZero | ISolution) => number;
|
|
114
|
+
makeOneLineForSigns: (factor: Polynom, zeroes: IZero[], zeroSign: ZEROTYPE) => string[];
|
|
115
|
+
makeSignsResult: (signs: (string[])[]) => string[];
|
|
116
|
+
makeStudy: () => void;
|
|
117
|
+
makeVariationsResult: (tos: ITableOfSigns) => {
|
|
118
|
+
varsLine: string[];
|
|
119
|
+
extremes: {
|
|
120
|
+
[Key: string]: IExtrema;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
131
124
|
makeZeroes(): IZero[];
|
|
132
125
|
|
|
133
126
|
makeSigns(): ITableOfSigns;
|
|
@@ -137,4 +130,8 @@ export declare class Study {
|
|
|
137
130
|
makeDerivative(): ITableOfSigns;
|
|
138
131
|
|
|
139
132
|
makeVariation(): ITableOfSigns;
|
|
133
|
+
|
|
134
|
+
private _makeTexFromTableOfSigns;
|
|
135
|
+
|
|
136
|
+
get texSigns(): string;
|
|
140
137
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", {value: true});
|
|
7
7
|
exports.Study = exports.TABLE_OF_SIGNS = exports.FUNCTION_EXTREMA = exports.ASYMPTOTE = exports.ZEROTYPE = void 0;
|
|
8
8
|
const fraction_1 = require("../coefficients/fraction");
|
|
9
|
+
const numexp_1 = require("../expressions/numexp");
|
|
9
10
|
var ZEROTYPE;
|
|
10
11
|
(function (ZEROTYPE) {
|
|
11
12
|
ZEROTYPE["ZERO"] = "z";
|
|
@@ -32,7 +33,6 @@ var TABLE_OF_SIGNS;
|
|
|
32
33
|
TABLE_OF_SIGNS[TABLE_OF_SIGNS["GROWS"] = 1] = "GROWS";
|
|
33
34
|
TABLE_OF_SIGNS[TABLE_OF_SIGNS["VARIATIONS"] = 2] = "VARIATIONS";
|
|
34
35
|
})(TABLE_OF_SIGNS = exports.TABLE_OF_SIGNS || (exports.TABLE_OF_SIGNS = {}));
|
|
35
|
-
|
|
36
36
|
/**
|
|
37
37
|
* The study class is a "function study" class that will get:
|
|
38
38
|
* fx : get the function
|
|
@@ -56,6 +56,9 @@ class Study {
|
|
|
56
56
|
this._asymptotes = this.makeAsymptotes();
|
|
57
57
|
this._derivative = this.makeDerivative();
|
|
58
58
|
this._variations = this.makeVariation();
|
|
59
|
+
this._signs.tex = this.texSigns;
|
|
60
|
+
this._derivative.tex = this.texGrows;
|
|
61
|
+
this._variations.tex = this.texVariations;
|
|
59
62
|
};
|
|
60
63
|
this.indexOfZero = (zeroes, zero) => {
|
|
61
64
|
for (let i = 0; i < zeroes.length; i++) {
|
|
@@ -119,7 +122,7 @@ class Study {
|
|
|
119
122
|
}
|
|
120
123
|
return resultLine;
|
|
121
124
|
};
|
|
122
|
-
this.makeGrowsResult = (
|
|
125
|
+
this.makeGrowsResult = (tos) => {
|
|
123
126
|
// Use the last line (=> resultLine) to grab the necessary information
|
|
124
127
|
let signsAsArray = Object.values(tos.signs), resultLine = signsAsArray[signsAsArray.length - 1],
|
|
125
128
|
growsLine = [], extremes = {}, zeroes = tos.zeroes;
|
|
@@ -130,15 +133,17 @@ class Study {
|
|
|
130
133
|
if (resultLine[pos] === 'z') {
|
|
131
134
|
// It's a zero. Get the coordinates
|
|
132
135
|
let x, y, zero = zeroes[i].exact, pt, xTex, yTex, pointType;
|
|
136
|
+
// TODO: NumExp should parse something that isn't yet plotFunction
|
|
137
|
+
let exp = new numexp_1.NumExp(this.fx.plotFunction);
|
|
133
138
|
if (zero instanceof fraction_1.Fraction) {
|
|
134
|
-
let value = zero, evalY = fx.evaluate(value);
|
|
139
|
+
let value = zero, evalY = this.fx.evaluate(value);
|
|
135
140
|
x = zero.value;
|
|
136
141
|
y = evalY.value;
|
|
137
142
|
xTex = zero.tex;
|
|
138
143
|
yTex = evalY.tex;
|
|
139
144
|
} else {
|
|
140
145
|
x = zeroes[i].value;
|
|
141
|
-
y =
|
|
146
|
+
y = exp.evaluate({x});
|
|
142
147
|
xTex = x.toFixed(2);
|
|
143
148
|
yTex = y.toFixed(2);
|
|
144
149
|
}
|
|
@@ -173,7 +178,7 @@ class Study {
|
|
|
173
178
|
growsLine.push(`${resultLine[resultLine.length - 2]}/`);
|
|
174
179
|
return {growsLine, extremes};
|
|
175
180
|
};
|
|
176
|
-
this.makeVariationsResult = (
|
|
181
|
+
this.makeVariationsResult = (tos) => {
|
|
177
182
|
// TODO: make variations result is not yet implemented.
|
|
178
183
|
let extremes = {}, varsLine = [];
|
|
179
184
|
return {varsLine, extremes};
|
|
@@ -205,48 +210,69 @@ class Study {
|
|
|
205
210
|
tex += `\n\\end{tikzpicture}`;
|
|
206
211
|
return tex;
|
|
207
212
|
};
|
|
213
|
+
this.drawCode = () => {
|
|
214
|
+
// Function as string
|
|
215
|
+
let code = `f(x)=${this.fx.plotFunction}`;
|
|
216
|
+
// Asymptotes
|
|
217
|
+
let i = 1;
|
|
218
|
+
this.asymptotes.forEach(asymptote => {
|
|
219
|
+
if (asymptote.type === ASYMPTOTE.VERTICAL) {
|
|
220
|
+
code += `\nav_${i}=line x=${asymptote.zero.value}->red,dash`;
|
|
221
|
+
i++;
|
|
222
|
+
} else if (asymptote.type === ASYMPTOTE.HORIZONTAL) {
|
|
223
|
+
code += `\nah=line y=${asymptote.fx.monoms[0].coefficient.value}->orange,dash`;
|
|
224
|
+
} else if (asymptote.type === ASYMPTOTE.SLOPE) {
|
|
225
|
+
code += `\nao=line y=${asymptote.fx.plotFunction}->red,dash`;
|
|
226
|
+
}
|
|
227
|
+
i++;
|
|
228
|
+
});
|
|
229
|
+
// Extremes
|
|
230
|
+
for (let zero in this.derivative.extremes) {
|
|
231
|
+
let extreme = this.derivative.extremes[zero];
|
|
232
|
+
code += `\nM_${i}(${extreme.value.x},${extreme.value.y})*`;
|
|
233
|
+
i++;
|
|
234
|
+
}
|
|
235
|
+
// Zeroes
|
|
236
|
+
this.zeroes.forEach(zero => {
|
|
237
|
+
if (zero.type === ZEROTYPE.ZERO) {
|
|
238
|
+
code += `\nZ_${i}(${zero.value},0)*`;
|
|
239
|
+
i++;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
return code;
|
|
243
|
+
};
|
|
208
244
|
this.fx = fx;
|
|
209
245
|
this.makeStudy();
|
|
210
246
|
return this;
|
|
211
247
|
}
|
|
212
|
-
|
|
213
248
|
get zeroes() {
|
|
214
249
|
return this._zeroes;
|
|
215
250
|
}
|
|
216
|
-
|
|
217
251
|
get domain() {
|
|
218
252
|
return this.fx.domain();
|
|
219
253
|
}
|
|
220
|
-
|
|
221
254
|
get signs() {
|
|
222
255
|
return this._signs;
|
|
223
256
|
}
|
|
224
|
-
|
|
225
257
|
get asymptotes() {
|
|
226
258
|
return this._asymptotes;
|
|
227
259
|
}
|
|
228
|
-
|
|
229
260
|
get derivative() {
|
|
230
261
|
return this._derivative;
|
|
231
262
|
}
|
|
232
|
-
|
|
233
|
-
get tex() {
|
|
263
|
+
get texSigns() {
|
|
234
264
|
return this._makeTexFromTableOfSigns(this._signs);
|
|
235
265
|
}
|
|
236
|
-
|
|
237
266
|
get texGrows() {
|
|
238
267
|
return this._makeTexFromTableOfSigns(this._derivative);
|
|
239
268
|
}
|
|
240
|
-
|
|
241
269
|
get texVariations() {
|
|
242
270
|
return this._makeTexFromTableOfSigns(this._variations);
|
|
243
271
|
}
|
|
244
|
-
|
|
245
272
|
makeZeroes() {
|
|
246
273
|
return [];
|
|
247
274
|
}
|
|
248
275
|
;
|
|
249
|
-
|
|
250
276
|
makeSigns() {
|
|
251
277
|
return {
|
|
252
278
|
type: TABLE_OF_SIGNS.DEFAULT,
|
|
@@ -254,15 +280,14 @@ class Study {
|
|
|
254
280
|
factors: [],
|
|
255
281
|
zeroes: [],
|
|
256
282
|
signs: [],
|
|
257
|
-
extremes: {}
|
|
283
|
+
extremes: {},
|
|
284
|
+
tex: ''
|
|
258
285
|
};
|
|
259
286
|
}
|
|
260
287
|
;
|
|
261
|
-
|
|
262
288
|
makeAsymptotes() {
|
|
263
289
|
return [];
|
|
264
290
|
}
|
|
265
|
-
|
|
266
291
|
makeDerivative() {
|
|
267
292
|
return {
|
|
268
293
|
type: TABLE_OF_SIGNS.GROWS,
|
|
@@ -270,10 +295,10 @@ class Study {
|
|
|
270
295
|
factors: [],
|
|
271
296
|
zeroes: [],
|
|
272
297
|
signs: [],
|
|
273
|
-
extremes: {}
|
|
298
|
+
extremes: {},
|
|
299
|
+
tex: ''
|
|
274
300
|
};
|
|
275
301
|
}
|
|
276
|
-
|
|
277
302
|
makeVariation() {
|
|
278
303
|
return {
|
|
279
304
|
type: TABLE_OF_SIGNS.VARIATIONS,
|
|
@@ -281,10 +306,10 @@ class Study {
|
|
|
281
306
|
factors: [],
|
|
282
307
|
zeroes: [],
|
|
283
308
|
signs: [],
|
|
284
|
-
extremes: {}
|
|
309
|
+
extremes: {},
|
|
310
|
+
tex: ''
|
|
285
311
|
};
|
|
286
312
|
}
|
|
287
313
|
}
|
|
288
|
-
|
|
289
314
|
exports.Study = Study;
|
|
290
315
|
//# sourceMappingURL=study.js.map
|