pimath 0.0.60 → 0.0.63
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/.eslintrc.js +23 -23
- package/.idea/misc.xml +5 -0
- package/.idea/php.xml +1 -1
- package/.idea/shelf/Uncommitted_changes_before_Update_at_17_04_2022_12_40_[Changes]/shelved.patch +21 -0
- package/.idea/shelf/Uncommitted_changes_before_Update_at_17_04_2022_12_40__Changes_.xml +4 -0
- package/dist/pi.js +638 -351
- package/dist/pi.js.map +1 -1
- package/dist/pi.min.js +1 -1
- package/dist/pi.min.js.map +1 -1
- package/docs/assets/highlight.css +78 -78
- package/docs/assets/main.js +52 -52
- package/docs/assets/style.css +1413 -1413
- package/docs/classes/Logicalset.Logicalset-1.html +4 -4
- package/docs/classes/Polynom.Rational.html +3 -3
- package/docs/classes/algebra_equation.Equation.html +25 -25
- package/docs/classes/algebra_monom.Monom.html +113 -113
- package/docs/classes/algebra_polynom.Polynom.html +29 -29
- package/docs/classes/coefficients_fraction.Fraction.html +18 -18
- package/docs/classes/coefficients_nthroot.NthRoot.html +2 -2
- package/docs/classes/geometry_circle.Circle.html +2 -2
- package/docs/classes/geometry_line.Line.html +2 -2
- package/docs/classes/geometry_triangle.Triangle.html +16 -16
- package/docs/classes/numeric.Numeric.html +13 -13
- package/docs/classes/shutingyard.Shutingyard.html +17 -17
- package/docs/index.html +10 -10
- package/docs/interfaces/algebra_equation.ISolution.html +2 -2
- package/docs/modules/Logicalset.html +2 -2
- package/docs/modules/Polynom.html +2 -2
- package/docs/modules/Vector.html +2 -2
- package/esm/maths/algebra/linearSystem.js +0 -1
- package/esm/maths/algebra/linearSystem.js.map +1 -1
- package/esm/maths/algebra/monom.d.ts +1 -0
- package/esm/maths/algebra/monom.js +18 -0
- package/esm/maths/algebra/monom.js.map +1 -1
- package/esm/maths/algebra/polynom.d.ts +30 -11
- package/esm/maths/algebra/polynom.js +144 -258
- package/esm/maths/algebra/polynom.js.map +1 -1
- package/esm/maths/algebra/rational.d.ts +12 -15
- package/esm/maths/algebra/rational.js +14 -103
- package/esm/maths/algebra/rational.js.map +1 -1
- package/esm/maths/algebra/study/rationalStudy.d.ts +33 -0
- package/esm/maths/algebra/study/rationalStudy.js +174 -0
- package/esm/maths/algebra/study/rationalStudy.js.map +1 -0
- package/esm/maths/algebra/study.d.ts +133 -0
- package/esm/maths/algebra/study.js +275 -0
- package/esm/maths/algebra/study.js.map +1 -0
- package/package.json +1 -1
- package/src/maths/algebra/linearSystem.ts +0 -1
- package/src/maths/algebra/monom.ts +19 -0
- package/src/maths/algebra/polynom.ts +185 -278
- package/src/maths/algebra/rational.ts +24 -132
- package/src/maths/algebra/study/rationalStudy.ts +208 -0
- package/src/maths/algebra/study.ts +384 -0
- package/tests/algebra/monom.test.ts +2 -5
- package/tests/algebra/polynom.test.ts +2 -3
- package/tests/algebra/rationnal.test.ts +0 -43
- package/tests/algebra/study.test.ts +18 -0
- package/tests/numexp.test.ts +1 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rational polynom module contains everything necessary to handle rational polynoms.
|
|
3
|
+
* @module Polynom
|
|
4
|
+
*/
|
|
5
|
+
import {Rational} from "./rational";
|
|
6
|
+
import {ISolution} from "./equation";
|
|
7
|
+
import {Polynom} from "./polynom";
|
|
8
|
+
|
|
9
|
+
export declare type StudyableFunction = Rational;
|
|
10
|
+
export declare enum ZEROTYPE {
|
|
11
|
+
ZERO = "z",
|
|
12
|
+
DEFENCE = "d",
|
|
13
|
+
NOTHING = "t"
|
|
14
|
+
}
|
|
15
|
+
export interface IZero extends ISolution {
|
|
16
|
+
extrema: FUNCTION_EXTREMA;
|
|
17
|
+
type: ZEROTYPE;
|
|
18
|
+
}
|
|
19
|
+
export declare enum ASYMPTOTE {
|
|
20
|
+
VERTICAL = "av",
|
|
21
|
+
HORIZONTAL = "ah",
|
|
22
|
+
SLOPE = "ao",
|
|
23
|
+
HOLE = "hole"
|
|
24
|
+
}
|
|
25
|
+
export interface IAsymptote {
|
|
26
|
+
deltaX: StudyableFunction;
|
|
27
|
+
limits: string;
|
|
28
|
+
tex: string;
|
|
29
|
+
type: ASYMPTOTE;
|
|
30
|
+
zero: IZero;
|
|
31
|
+
}
|
|
32
|
+
export declare enum FUNCTION_EXTREMA {
|
|
33
|
+
MIN = "min",
|
|
34
|
+
MAX = "max",
|
|
35
|
+
FLAT = "flat",
|
|
36
|
+
NOTHING = ""
|
|
37
|
+
}
|
|
38
|
+
export interface IExtrema {
|
|
39
|
+
tex: {
|
|
40
|
+
x: string;
|
|
41
|
+
y: string;
|
|
42
|
+
};
|
|
43
|
+
type: FUNCTION_EXTREMA;
|
|
44
|
+
value: {
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export interface ITableOfSigns {
|
|
50
|
+
extremes: {
|
|
51
|
+
[Key: string]: IExtrema;
|
|
52
|
+
};
|
|
53
|
+
factors: Polynom[];
|
|
54
|
+
fx: StudyableFunction;
|
|
55
|
+
signs: (string[])[];
|
|
56
|
+
type: TABLE_OF_SIGNS;
|
|
57
|
+
zeroes: IZero[];
|
|
58
|
+
}
|
|
59
|
+
export declare enum TABLE_OF_SIGNS {
|
|
60
|
+
DEFAULT = 0,
|
|
61
|
+
GROWS = 1,
|
|
62
|
+
VARIATIONS = 2
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The study class is a "function study" class that will get:
|
|
66
|
+
* fx : get the function
|
|
67
|
+
* domain : string
|
|
68
|
+
* zeroes : Object (tex, IZero)
|
|
69
|
+
* signs : table of signs + tex output using tkz-tab
|
|
70
|
+
* av : vertical asymptotic
|
|
71
|
+
* ah : horizontal asymptotic
|
|
72
|
+
* ao : obliques
|
|
73
|
+
* deltaX : position relative
|
|
74
|
+
* dx : derivative
|
|
75
|
+
* grows : growing table + tex output using tkz-tab
|
|
76
|
+
* ddx : dérivée seconde
|
|
77
|
+
* variations : variation table + tex output using tkz-tab
|
|
78
|
+
*/
|
|
79
|
+
export declare class Study {
|
|
80
|
+
fx: StudyableFunction;
|
|
81
|
+
private _asymptotes;
|
|
82
|
+
private _derivative;
|
|
83
|
+
private _signs;
|
|
84
|
+
private _variations;
|
|
85
|
+
private _zeroes;
|
|
86
|
+
|
|
87
|
+
constructor(fx: StudyableFunction);
|
|
88
|
+
|
|
89
|
+
get zeroes(): IZero[];
|
|
90
|
+
|
|
91
|
+
get domain(): string;
|
|
92
|
+
|
|
93
|
+
get signs(): ITableOfSigns;
|
|
94
|
+
|
|
95
|
+
get asymptotes(): IAsymptote[];
|
|
96
|
+
|
|
97
|
+
get derivative(): ITableOfSigns;
|
|
98
|
+
|
|
99
|
+
get tex(): string;
|
|
100
|
+
|
|
101
|
+
get texGrows(): string;
|
|
102
|
+
|
|
103
|
+
get texVariations(): string;
|
|
104
|
+
|
|
105
|
+
indexOfZero: (zeroes: IZero[], zero: IZero | ISolution) => number;
|
|
106
|
+
makeGrowsResult: (fx: StudyableFunction, tos: ITableOfSigns) => {
|
|
107
|
+
growsLine: string[];
|
|
108
|
+
extremes: {
|
|
109
|
+
[Key: string]: IExtrema;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
makeOneLineForSigns: (factor: Polynom, zeroes: IZero[], zeroSign: ZEROTYPE) => string[];
|
|
113
|
+
makeSignsResult: (signs: (string[])[]) => string[];
|
|
114
|
+
makeStudy: () => void;
|
|
115
|
+
makeVariationsResult: (fx: StudyableFunction, tos: ITableOfSigns) => {
|
|
116
|
+
varsLine: string[];
|
|
117
|
+
extremes: {
|
|
118
|
+
[Key: string]: IExtrema;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
makeZeroes(): IZero[];
|
|
123
|
+
|
|
124
|
+
makeSigns(): ITableOfSigns;
|
|
125
|
+
|
|
126
|
+
makeAsymptotes(): IAsymptote[];
|
|
127
|
+
|
|
128
|
+
makeDerivative(): ITableOfSigns;
|
|
129
|
+
|
|
130
|
+
makeVariation(): ITableOfSigns;
|
|
131
|
+
|
|
132
|
+
private _makeTexFromTableOfSigns;
|
|
133
|
+
}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rational polynom module contains everything necessary to handle rational polynoms.
|
|
4
|
+
* @module Polynom
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {value: true});
|
|
7
|
+
exports.Study = exports.TABLE_OF_SIGNS = exports.FUNCTION_EXTREMA = exports.ASYMPTOTE = exports.ZEROTYPE = void 0;
|
|
8
|
+
const fraction_1 = require("../coefficients/fraction");
|
|
9
|
+
var ZEROTYPE;
|
|
10
|
+
(function (ZEROTYPE) {
|
|
11
|
+
ZEROTYPE["ZERO"] = "z";
|
|
12
|
+
ZEROTYPE["DEFENCE"] = "d";
|
|
13
|
+
ZEROTYPE["NOTHING"] = "t";
|
|
14
|
+
})(ZEROTYPE = exports.ZEROTYPE || (exports.ZEROTYPE = {}));
|
|
15
|
+
var ASYMPTOTE;
|
|
16
|
+
(function (ASYMPTOTE) {
|
|
17
|
+
ASYMPTOTE["VERTICAL"] = "av";
|
|
18
|
+
ASYMPTOTE["HORIZONTAL"] = "ah";
|
|
19
|
+
ASYMPTOTE["SLOPE"] = "ao";
|
|
20
|
+
ASYMPTOTE["HOLE"] = "hole";
|
|
21
|
+
})(ASYMPTOTE = exports.ASYMPTOTE || (exports.ASYMPTOTE = {}));
|
|
22
|
+
var FUNCTION_EXTREMA;
|
|
23
|
+
(function (FUNCTION_EXTREMA) {
|
|
24
|
+
FUNCTION_EXTREMA["MIN"] = "min";
|
|
25
|
+
FUNCTION_EXTREMA["MAX"] = "max";
|
|
26
|
+
FUNCTION_EXTREMA["FLAT"] = "flat";
|
|
27
|
+
FUNCTION_EXTREMA["NOTHING"] = "";
|
|
28
|
+
})(FUNCTION_EXTREMA = exports.FUNCTION_EXTREMA || (exports.FUNCTION_EXTREMA = {}));
|
|
29
|
+
var TABLE_OF_SIGNS;
|
|
30
|
+
(function (TABLE_OF_SIGNS) {
|
|
31
|
+
TABLE_OF_SIGNS[TABLE_OF_SIGNS["DEFAULT"] = 0] = "DEFAULT";
|
|
32
|
+
TABLE_OF_SIGNS[TABLE_OF_SIGNS["GROWS"] = 1] = "GROWS";
|
|
33
|
+
TABLE_OF_SIGNS[TABLE_OF_SIGNS["VARIATIONS"] = 2] = "VARIATIONS";
|
|
34
|
+
})(TABLE_OF_SIGNS = exports.TABLE_OF_SIGNS || (exports.TABLE_OF_SIGNS = {}));
|
|
35
|
+
/**
|
|
36
|
+
* The study class is a "function study" class that will get:
|
|
37
|
+
* fx : get the function
|
|
38
|
+
* domain : string
|
|
39
|
+
* zeroes : Object (tex, IZero)
|
|
40
|
+
* signs : table of signs + tex output using tkz-tab
|
|
41
|
+
* av : vertical asymptotic
|
|
42
|
+
* ah : horizontal asymptotic
|
|
43
|
+
* ao : obliques
|
|
44
|
+
* deltaX : position relative
|
|
45
|
+
* dx : derivative
|
|
46
|
+
* grows : growing table + tex output using tkz-tab
|
|
47
|
+
* ddx : dérivée seconde
|
|
48
|
+
* variations : variation table + tex output using tkz-tab
|
|
49
|
+
*/
|
|
50
|
+
class Study {
|
|
51
|
+
constructor(fx) {
|
|
52
|
+
this.makeStudy = () => {
|
|
53
|
+
this._zeroes = this.makeZeroes();
|
|
54
|
+
this._signs = this.makeSigns();
|
|
55
|
+
this._asymptotes = this.makeAsymptotes();
|
|
56
|
+
this._derivative = this.makeDerivative();
|
|
57
|
+
this._variations = this.makeVariation();
|
|
58
|
+
};
|
|
59
|
+
this.indexOfZero = (zeroes, zero) => {
|
|
60
|
+
for (let i = 0; i < zeroes.length; i++) {
|
|
61
|
+
if (zeroes[i].tex === zero.tex) {
|
|
62
|
+
return i;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return -1;
|
|
66
|
+
};
|
|
67
|
+
this.makeOneLineForSigns = (factor, zeroes, zeroSign) => {
|
|
68
|
+
let oneLine = [], currentZero = factor.getZeroes().map(x => x.tex);
|
|
69
|
+
// First +/- sign, before the first zero
|
|
70
|
+
oneLine.push('');
|
|
71
|
+
if (factor.degree().isZero()) {
|
|
72
|
+
oneLine.push(factor.monoms[0].coefficient.sign() === 1 ? '+' : '-');
|
|
73
|
+
} else {
|
|
74
|
+
oneLine.push(factor.evaluate(zeroes[0].value - 1).sign() === 1 ? '+' : '-');
|
|
75
|
+
}
|
|
76
|
+
for (let i = 0; i < zeroes.length; i++) {
|
|
77
|
+
// Add the zero if it's the current one
|
|
78
|
+
oneLine.push(currentZero.includes(zeroes[i].tex) ? zeroSign : ZEROTYPE.NOTHING);
|
|
79
|
+
// + / - sign after the current zero
|
|
80
|
+
if (i < zeroes.length - 1) {
|
|
81
|
+
oneLine.push(factor.evaluate((zeroes[i].value + zeroes[i + 1].value) / 2).sign() === 1 ? '+' : '-');
|
|
82
|
+
} else if (i === zeroes.length - 1) {
|
|
83
|
+
oneLine.push(factor.evaluate(zeroes[i].value + 1).sign() === 1 ? '+' : '-');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
oneLine.push('');
|
|
87
|
+
return oneLine;
|
|
88
|
+
};
|
|
89
|
+
this.makeSignsResult = (signs) => {
|
|
90
|
+
// Initialize the result line with the first line of the signs table
|
|
91
|
+
let resultLine = signs[0].map((x, index) => {
|
|
92
|
+
if (index === 0 || index === signs[0].length - 1) {
|
|
93
|
+
return '';
|
|
94
|
+
}
|
|
95
|
+
if (index % 2 === 0) {
|
|
96
|
+
return 't';
|
|
97
|
+
}
|
|
98
|
+
return '+';
|
|
99
|
+
});
|
|
100
|
+
// Go through each lines (except the first)
|
|
101
|
+
for (let current of signs) {
|
|
102
|
+
for (let i = 0; i < current.length; i++) {
|
|
103
|
+
if (i % 2 === 0) {
|
|
104
|
+
// t, z or d
|
|
105
|
+
if (resultLine[i] === 'd') {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (current[i] !== 't') {
|
|
109
|
+
resultLine[i] = current[i];
|
|
110
|
+
}
|
|
111
|
+
} else {
|
|
112
|
+
// + or -
|
|
113
|
+
if (current[i] === '-') {
|
|
114
|
+
resultLine[i] = resultLine[i] === '+' ? '-' : '+';
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return resultLine;
|
|
120
|
+
};
|
|
121
|
+
this.makeGrowsResult = (fx, tos) => {
|
|
122
|
+
// Use the last line (=> resultLine) to grab the necessary information
|
|
123
|
+
let signsAsArray = Object.values(tos.signs), resultLine = signsAsArray[signsAsArray.length - 1],
|
|
124
|
+
growsLine = [], extremes = {}, zeroes = tos.zeroes;
|
|
125
|
+
// Get the extremes
|
|
126
|
+
for (let i = 0; i < zeroes.length; i++) {
|
|
127
|
+
// Get the corresponding item in the resultLine.
|
|
128
|
+
let pos = 2 * i + 2;
|
|
129
|
+
if (resultLine[pos] === 'z') {
|
|
130
|
+
// It's a zero. Get the coordinates
|
|
131
|
+
let x, y, zero = zeroes[i].exact, pt, xTex, yTex, pointType;
|
|
132
|
+
if (zero instanceof fraction_1.Fraction) {
|
|
133
|
+
let value = zero, evalY = fx.evaluate(value);
|
|
134
|
+
x = zero.value;
|
|
135
|
+
y = evalY.value;
|
|
136
|
+
xTex = zero.tex;
|
|
137
|
+
yTex = evalY.tex;
|
|
138
|
+
} else {
|
|
139
|
+
x = zeroes[i].value;
|
|
140
|
+
y = fx.evaluate(zeroes[i].value).value;
|
|
141
|
+
xTex = x.toFixed(2);
|
|
142
|
+
yTex = y.toFixed(2);
|
|
143
|
+
}
|
|
144
|
+
// Determine the type of the zero.
|
|
145
|
+
if (resultLine[pos - 1] === resultLine[pos + 1]) {
|
|
146
|
+
pointType = FUNCTION_EXTREMA.FLAT;
|
|
147
|
+
} else if (resultLine[pos - 1] === '+') {
|
|
148
|
+
pointType = FUNCTION_EXTREMA.MAX;
|
|
149
|
+
} else {
|
|
150
|
+
pointType = FUNCTION_EXTREMA.MIN;
|
|
151
|
+
}
|
|
152
|
+
// Add the point to the list
|
|
153
|
+
extremes[zeroes[i].tex] = {
|
|
154
|
+
type: pointType,
|
|
155
|
+
tex: {x: xTex, y: yTex},
|
|
156
|
+
value: {x, y}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Create the grows line, based on tkz-tab
|
|
161
|
+
// \tkzTabLine{ , + , z , - , d , - , z , + , }
|
|
162
|
+
// \tkzTabVar{ -/ , +/$3$ , -D+/ , -/$1$ , +/ }
|
|
163
|
+
growsLine.push(resultLine[1] === '+' ? '-/' : '+/');
|
|
164
|
+
for (let i = 1; i < resultLine.length - 1; i++) {
|
|
165
|
+
if (resultLine[i] === "z") {
|
|
166
|
+
let extr = extremes[zeroes[(i - 2) / 2].tex];
|
|
167
|
+
growsLine.push(`${resultLine[i - 1]}/\\(${extr.type}(${extr.tex.x};${extr.tex.y})\\)`);
|
|
168
|
+
} else if (resultLine[i] === 'd') {
|
|
169
|
+
growsLine.push(`${resultLine[i - 1]}D${resultLine[i + 1] === '+' ? '-' : '+'}/`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
growsLine.push(`${resultLine[resultLine.length - 2]}/`);
|
|
173
|
+
return {growsLine, extremes};
|
|
174
|
+
};
|
|
175
|
+
this.makeVariationsResult = (fx, tos) => {
|
|
176
|
+
// TODO: make variations result is not yet implemented.
|
|
177
|
+
let extremes = {}, varsLine = [];
|
|
178
|
+
return {varsLine, extremes};
|
|
179
|
+
};
|
|
180
|
+
this._makeTexFromTableOfSigns = (tos) => {
|
|
181
|
+
let factors = tos.factors.map(x => `\\(${x.tex}\\)/1`), factorsFx = "\\(fx\\)/1.2", zeroes = tos.zeroes;
|
|
182
|
+
// Add the last lines "label"
|
|
183
|
+
if (tos.type === TABLE_OF_SIGNS.GROWS) {
|
|
184
|
+
factorsFx = "\\(f'(x)\\)/1.2,\\(f(x)\\)/2";
|
|
185
|
+
} else if (tos.type === TABLE_OF_SIGNS.VARIATIONS) {
|
|
186
|
+
factorsFx = "\\(f''(x)\\)/1.2,\\(f(x)\\)/2";
|
|
187
|
+
}
|
|
188
|
+
// Create the tikzPicture header
|
|
189
|
+
let tex = `\\begin{tikzpicture}
|
|
190
|
+
\\tkzTabInit[lgt=3,espcl=2,deltacl=0]{/1.2,${factors.join(',')},/.1,${factorsFx} }{{\\scriptsize \\hspace{1cm} \\(-\\infty\\)},\\(${zeroes.map(x => x.tex).join('\\),\\(')}\\),{\\scriptsize \\hspace{-1cm} \\(+\\infty\\)}}`;
|
|
191
|
+
let pos;
|
|
192
|
+
for (pos = 0; pos < tos.factors.length; pos++) {
|
|
193
|
+
tex += (`\n\\tkzTabLine{${tos.signs[pos].join(',')}}`);
|
|
194
|
+
}
|
|
195
|
+
// Add the result line
|
|
196
|
+
tex += (`\n\\tkzTabLine{${tos.signs[pos].join(',')}}`);
|
|
197
|
+
// Add the grows / vars line
|
|
198
|
+
if (tos.type === TABLE_OF_SIGNS.GROWS) {
|
|
199
|
+
tex += (`\n\\tkzTabVar{${tos.signs[pos + 1].join(',')}}`);
|
|
200
|
+
} else if (tos.type === TABLE_OF_SIGNS.VARIATIONS) {
|
|
201
|
+
// TODO: Check variations table for as tex
|
|
202
|
+
tex += (`\n\\tkzTabVar{${tos.signs[pos + 1].join(',')}}`);
|
|
203
|
+
}
|
|
204
|
+
tex += `\n\\end{tikzpicture}`;
|
|
205
|
+
return tex;
|
|
206
|
+
};
|
|
207
|
+
this.fx = fx;
|
|
208
|
+
this.makeStudy();
|
|
209
|
+
return this;
|
|
210
|
+
}
|
|
211
|
+
get zeroes() {
|
|
212
|
+
return this._zeroes;
|
|
213
|
+
}
|
|
214
|
+
get domain() {
|
|
215
|
+
return this.fx.domain();
|
|
216
|
+
}
|
|
217
|
+
get signs() {
|
|
218
|
+
return this._signs;
|
|
219
|
+
}
|
|
220
|
+
get asymptotes() {
|
|
221
|
+
return this._asymptotes;
|
|
222
|
+
}
|
|
223
|
+
get derivative() {
|
|
224
|
+
return this._derivative;
|
|
225
|
+
}
|
|
226
|
+
get tex() {
|
|
227
|
+
return this._makeTexFromTableOfSigns(this._signs);
|
|
228
|
+
}
|
|
229
|
+
get texGrows() {
|
|
230
|
+
return this._makeTexFromTableOfSigns(this._derivative);
|
|
231
|
+
}
|
|
232
|
+
get texVariations() {
|
|
233
|
+
return this._makeTexFromTableOfSigns(this._variations);
|
|
234
|
+
}
|
|
235
|
+
makeZeroes() {
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
;
|
|
239
|
+
makeSigns() {
|
|
240
|
+
return {
|
|
241
|
+
type: TABLE_OF_SIGNS.DEFAULT,
|
|
242
|
+
fx: null,
|
|
243
|
+
factors: [],
|
|
244
|
+
zeroes: [],
|
|
245
|
+
signs: [],
|
|
246
|
+
extremes: {}
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
;
|
|
250
|
+
makeAsymptotes() {
|
|
251
|
+
return [];
|
|
252
|
+
}
|
|
253
|
+
makeDerivative() {
|
|
254
|
+
return {
|
|
255
|
+
type: TABLE_OF_SIGNS.GROWS,
|
|
256
|
+
fx: null,
|
|
257
|
+
factors: [],
|
|
258
|
+
zeroes: [],
|
|
259
|
+
signs: [],
|
|
260
|
+
extremes: {}
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
makeVariation() {
|
|
264
|
+
return {
|
|
265
|
+
type: TABLE_OF_SIGNS.VARIATIONS,
|
|
266
|
+
fx: null,
|
|
267
|
+
factors: [],
|
|
268
|
+
zeroes: [],
|
|
269
|
+
signs: [],
|
|
270
|
+
extremes: {}
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
exports.Study = Study;
|
|
275
|
+
//# sourceMappingURL=study.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"study.js","sourceRoot":"","sources":["../../../src/maths/algebra/study.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -808,6 +808,9 @@ export class Monom {
|
|
|
808
808
|
}
|
|
809
809
|
|
|
810
810
|
if (typeof values === 'object') {
|
|
811
|
+
if(this.variables.length===0){
|
|
812
|
+
return this.coefficient
|
|
813
|
+
}
|
|
811
814
|
for (let L in this._literal) {
|
|
812
815
|
if (values[L] === undefined) {
|
|
813
816
|
return new Fraction().zero();
|
|
@@ -973,4 +976,20 @@ export class Monom {
|
|
|
973
976
|
return true;
|
|
974
977
|
};
|
|
975
978
|
|
|
979
|
+
isDivisible = (div:Monom):boolean => {
|
|
980
|
+
// For all variables (letters), the current monom must have a degree higher than the divider
|
|
981
|
+
if(div.degree().isStrictlyPositive()) {
|
|
982
|
+
for (let letter of div.variables) {
|
|
983
|
+
if (!this.degree(letter).geq(div.degree(letter))) {
|
|
984
|
+
return false
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
// If the coefficient is rational, we suppose we don't need to check the division by the coefficient.
|
|
990
|
+
if(this.coefficient.isRational() || div.coefficient.isRational()){return true}
|
|
991
|
+
|
|
992
|
+
return this.coefficient.clone().divide(div.coefficient).isRelative()
|
|
993
|
+
}
|
|
994
|
+
|
|
976
995
|
}
|