math-exercises 3.0.189 → 3.0.191
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/lib/exercises/math/calcul/decimals/decimalFractionToDecimal.d.ts.map +1 -1
- package/lib/exercises/math/calcul/decimals/decimalFractionToDecimal.js +5 -4
- package/lib/exercises/math/calculLitteral/equation/factorizeEquation.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/equation/factorizeEquation.js +9 -8
- package/lib/exercises/math/calculLitteral/equation/isEqualityTrue.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/equation/isEqualityTrue.js +7 -6
- package/lib/exercises/math/dataRepresentations/barChartInterpreting.d.ts.map +1 -1
- package/lib/exercises/math/dataRepresentations/barChartInterpreting.js +5 -4
- package/lib/exercises/math/dataRepresentations/scatterPlot/index.d.ts +6 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/index.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/index.js +5 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotBuildScatterPlotFromDataTable.d.ts +12 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotBuildScatterPlotFromDataTable.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotBuildScatterPlotFromDataTable.js +206 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotCommenting.d.ts +9 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotCommenting.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotCommenting.js +210 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableFromScatterPlotData.d.ts +10 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableFromScatterPlotData.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableFromScatterPlotData.js +252 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableWithDataClassesFromScatterPlotData.d.ts +12 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableWithDataClassesFromScatterPlotData.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotFillDataTableWithDataClassesFromScatterPlotData.js +352 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotInterpreting.d.ts +11 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotInterpreting.d.ts.map +1 -0
- package/lib/exercises/math/dataRepresentations/scatterPlot/scatterPlotInterpreting.js +403 -0
- package/lib/exercises/math/derivation/derivative/derivativeEquationSolving1.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/derivativeEquationSolving1.js +3 -2
- package/lib/exercises/math/derivation/derivative/derivativeEquationSolving3.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/derivativeEquationSolving3.js +3 -2
- package/lib/exercises/math/derivation/derivative/valueDerivativeFromFunctionExpression.d.ts.map +1 -1
- package/lib/exercises/math/derivation/derivative/valueDerivativeFromFunctionExpression.js +3 -2
- package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.d.ts.map +1 -1
- package/lib/exercises/math/derivation/problems/problemMaximizeProfitFindProduction.js +3 -2
- package/lib/exercises/math/derivation/problems/problemMovementOnLineFindSpeedAtPoint.d.ts.map +1 -1
- package/lib/exercises/math/derivation/problems/problemMovementOnLineFindSpeedAtPoint.js +3 -2
- package/lib/exercises/math/derivation/tangent/tangentEquationFromFunctionExpression.d.ts.map +1 -1
- package/lib/exercises/math/derivation/tangent/tangentEquationFromFunctionExpression.js +4 -3
- package/lib/exercises/math/derivation/variations/findAbscissaOfExtremaFromFunctionExpression.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/findAbscissaOfExtremaFromFunctionExpression.js +4 -3
- package/lib/exercises/math/derivation/variations/findExtremaFromFunctionExpression.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/findExtremaFromFunctionExpression.js +4 -3
- package/lib/exercises/math/derivation/variations/plausibleDerivativeGraphFromFunctionGraphByManipulatingPolynomial.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/plausibleDerivativeGraphFromFunctionGraphByManipulatingPolynomial.js +3 -2
- package/lib/exercises/math/derivation/variations/plausibleFunctionGraphFromDerivativeGraphByManipulatingPolynomial.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/plausibleFunctionGraphFromDerivativeGraphByManipulatingPolynomial.js +3 -2
- package/lib/exercises/math/derivation/variations/signVarTableFromFunctionExpression.d.ts.map +1 -1
- package/lib/exercises/math/derivation/variations/signVarTableFromFunctionExpression.js +8 -4
- package/lib/exercises/math/functions/affines/affineCompareTwoImagesFromVariations.d.ts +13 -0
- package/lib/exercises/math/functions/affines/affineCompareTwoImagesFromVariations.d.ts.map +1 -0
- package/lib/exercises/math/functions/affines/affineCompareTwoImagesFromVariations.js +205 -0
- package/lib/exercises/math/functions/affines/affineVarTableOnBoundedInterval.d.ts +9 -0
- package/lib/exercises/math/functions/affines/affineVarTableOnBoundedInterval.d.ts.map +1 -0
- package/lib/exercises/math/functions/affines/affineVarTableOnBoundedInterval.js +157 -0
- package/lib/exercises/math/functions/affines/affineVariations.d.ts +12 -0
- package/lib/exercises/math/functions/affines/affineVariations.d.ts.map +1 -0
- package/lib/exercises/math/functions/affines/affineVariations.js +176 -0
- package/lib/exercises/math/functions/affines/affineVariationsFromGraph.d.ts +8 -0
- package/lib/exercises/math/functions/affines/affineVariationsFromGraph.d.ts.map +1 -0
- package/lib/exercises/math/functions/affines/affineVariationsFromGraph.js +203 -0
- package/lib/exercises/math/functions/affines/affineVariationsFromTwoImages.d.ts +12 -0
- package/lib/exercises/math/functions/affines/affineVariationsFromTwoImages.d.ts.map +1 -0
- package/lib/exercises/math/functions/affines/affineVariationsFromTwoImages.js +259 -0
- package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.d.ts.map +1 -1
- package/lib/exercises/math/functions/affines/coordsOfPointOnAffineFindX.js +8 -6
- package/lib/exercises/math/functions/exponentials/estimateExponentialFunctionImageFromGeometricScatterplot.d.ts +2 -0
- package/lib/exercises/math/functions/exponentials/estimateExponentialFunctionImageFromGeometricScatterplot.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/estimateExponentialFunctionImageFromGeometricScatterplot.js +155 -0
- package/lib/exercises/math/functions/exponentials/exponentialFunctionImage.d.ts +9 -0
- package/lib/exercises/math/functions/exponentials/exponentialFunctionImage.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/exponentialFunctionImage.js +99 -0
- package/lib/exercises/math/functions/exponentials/exponentialsRawVariations.d.ts +8 -0
- package/lib/exercises/math/functions/exponentials/exponentialsRawVariations.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/exponentialsRawVariations.js +99 -0
- package/lib/exercises/math/functions/exponentials/index.d.ts +8 -0
- package/lib/exercises/math/functions/exponentials/index.d.ts.map +1 -1
- package/lib/exercises/math/functions/exponentials/index.js +9 -0
- package/lib/exercises/math/functions/exponentials/plausibleExponentialFunctionExpressionFromGraph.d.ts +12 -0
- package/lib/exercises/math/functions/exponentials/plausibleExponentialFunctionExpressionFromGraph.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/plausibleExponentialFunctionExpressionFromGraph.js +138 -0
- package/lib/exercises/math/functions/exponentials/readExponentialFunctionParamsOnGraph.d.ts +8 -0
- package/lib/exercises/math/functions/exponentials/readExponentialFunctionParamsOnGraph.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/readExponentialFunctionParamsOnGraph.js +142 -0
- package/lib/exercises/math/functions/exponentials/realPowersFraction.d.ts +10 -0
- package/lib/exercises/math/functions/exponentials/realPowersFraction.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/realPowersFraction.js +125 -0
- package/lib/exercises/math/functions/exponentials/realPowersMixOperations.d.ts +12 -0
- package/lib/exercises/math/functions/exponentials/realPowersMixOperations.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/realPowersMixOperations.js +148 -0
- package/lib/exercises/math/functions/exponentials/realPowersPower.d.ts +10 -0
- package/lib/exercises/math/functions/exponentials/realPowersPower.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/realPowersPower.js +128 -0
- package/lib/exercises/math/functions/exponentials/realPowersProduct.d.ts +10 -0
- package/lib/exercises/math/functions/exponentials/realPowersProduct.d.ts.map +1 -0
- package/lib/exercises/math/functions/exponentials/realPowersProduct.js +128 -0
- package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLineV2.d.ts.map +1 -1
- package/lib/exercises/math/geometry/cartesian/placeAbscissOnSemiLineV2.js +7 -6
- package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.d.ts.map +1 -1
- package/lib/exercises/math/geometry/vectors/scalarProduct/alKashi/scalarProductAlKashiBH.js +3 -2
- package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.d.ts.map +1 -1
- package/lib/exercises/math/geometry/vectors/scalarProduct/scalarProductComputeBH.js +7 -6
- package/lib/exercises/math/percent/percentToDecimal.d.ts.map +1 -1
- package/lib/exercises/math/percent/percentToDecimal.js +5 -4
- package/lib/exercises/math/probaStat/basicStats/calculateFrequencyInList.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/basicStats/calculateFrequencyInList.js +5 -4
- package/lib/exercises/math/probaStat/probaFromTableWithContext.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/probaFromTableWithContext.js +7 -8
- package/lib/exercises/math/probaStat/stats1var/medianWithList.d.ts.map +1 -1
- package/lib/exercises/math/probaStat/stats1var/medianWithList.js +5 -4
- package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindRankFromSituation.d.ts.map +1 -1
- package/lib/exercises/math/sequences/arithmetic/situations/arithmeticFindRankFromSituation.js +9 -9
- package/lib/exercises/math/sequences/geometric/geometricFindNextTermFromTwoConsecutiveTerms.d.ts +12 -0
- package/lib/exercises/math/sequences/geometric/geometricFindNextTermFromTwoConsecutiveTerms.d.ts.map +1 -0
- package/lib/exercises/math/sequences/geometric/geometricFindNextTermFromTwoConsecutiveTerms.js +217 -0
- package/lib/exercises/math/sequences/geometric/geometricFindRecurrenceFormula.d.ts +10 -0
- package/lib/exercises/math/sequences/geometric/geometricFindRecurrenceFormula.d.ts.map +1 -0
- package/lib/exercises/math/sequences/geometric/geometricFindRecurrenceFormula.js +186 -0
- package/lib/exercises/math/sequences/geometric/graph/geometricPlaceFirstPoints.d.ts +14 -0
- package/lib/exercises/math/sequences/geometric/graph/geometricPlaceFirstPoints.d.ts.map +1 -0
- package/lib/exercises/math/sequences/geometric/graph/geometricPlaceFirstPoints.js +189 -0
- package/lib/exercises/math/sequences/geometric/graph/index.d.ts +2 -0
- package/lib/exercises/math/sequences/geometric/graph/index.d.ts.map +1 -0
- package/lib/exercises/math/sequences/geometric/graph/index.js +1 -0
- package/lib/exercises/utils/options/arrayedOptions.d.ts +2 -0
- package/lib/exercises/utils/options/arrayedOptions.d.ts.map +1 -0
- package/lib/exercises/utils/options/arrayedOptions.js +16 -0
- package/lib/index.d.ts +33 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/math/utils/sequences/situations/seqArithmeticSituations.d.ts.map +1 -1
- package/lib/math/utils/sequences/situations/seqArithmeticSituations.js +20 -20
- package/lib/tree/nodes/algebraicNode.d.ts +3 -0
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/fractionNode.js +5 -3
- package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/multiplyNode.js +5 -3
- package/lib/tree/nodes/operators/powerNode.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exponentialFunctionImage.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/exponentialFunctionImage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AA2FF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,WAAW,CAmB1D,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, propWhile, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { numberVEA } from "../../../../exercises/vea/numberVEA.js";
|
|
4
|
+
import { randfloat } from "../../../../math/utils/random/randfloat.js";
|
|
5
|
+
import { round } from "../../../../math/utils/round.js";
|
|
6
|
+
import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
|
|
7
|
+
import { power } from "../../../../tree/nodes/operators/powerNode.js";
|
|
8
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
9
|
+
import { approxOrEqual } from "../../../../utils/latex/approxOrEqual.js";
|
|
10
|
+
const getPropositions = (n, { answer }) => {
|
|
11
|
+
const propositions = [];
|
|
12
|
+
addValidProp(propositions, answer);
|
|
13
|
+
propWhile(propositions, n, () => {
|
|
14
|
+
tryToAddWrongProp(propositions, randfloat(0.1, 5, 2).frenchify());
|
|
15
|
+
});
|
|
16
|
+
return shuffleProps(propositions, n);
|
|
17
|
+
};
|
|
18
|
+
const getAnswer = (identifiers) => {
|
|
19
|
+
const { aIds, xIds } = identifiers;
|
|
20
|
+
const a = reifyAlgebraic(aIds);
|
|
21
|
+
const x = reifyAlgebraic(xIds);
|
|
22
|
+
return round(power(a, x).simplify({ calculatePowers: true }).evaluate(), 2).frenchify();
|
|
23
|
+
};
|
|
24
|
+
const getInstruction = (identifiers) => {
|
|
25
|
+
const { aIds, xIds } = identifiers;
|
|
26
|
+
const a = reifyAlgebraic(aIds);
|
|
27
|
+
const x = reifyAlgebraic(xIds);
|
|
28
|
+
return `Soit $f$ la fonction définie sur $[0; +\\infty[$ par :
|
|
29
|
+
|
|
30
|
+
$$
|
|
31
|
+
f(x) = ${power(a, "x").toTex()}
|
|
32
|
+
$$
|
|
33
|
+
|
|
34
|
+
Calculer $f\\left(${x.toTex()}\\right)$ (donner une valeur arrondie au centième).`;
|
|
35
|
+
};
|
|
36
|
+
const getHint = (identifiers) => {
|
|
37
|
+
const { xIds } = identifiers;
|
|
38
|
+
const x = reifyAlgebraic(xIds);
|
|
39
|
+
return `Utilise la calculatrice, et remplace $x$ par $${x.toTex()}$ dans l'expression de la fonction.`;
|
|
40
|
+
};
|
|
41
|
+
const getCorrection = (identifiers) => {
|
|
42
|
+
const { aIds, xIds } = identifiers;
|
|
43
|
+
const a = reifyAlgebraic(aIds);
|
|
44
|
+
const x = reifyAlgebraic(xIds);
|
|
45
|
+
return `On remplace $x$ par $${x.toTex()}$ dans l'expression de la fonction, puis on utilise la calculatrice :
|
|
46
|
+
|
|
47
|
+
$$
|
|
48
|
+
f(${x.toTex()}) = ${power(a, x).toTex()} ${approxOrEqual(power(a, x).evaluate(), 2).join("")}
|
|
49
|
+
$$`;
|
|
50
|
+
};
|
|
51
|
+
const getKeys = () => {
|
|
52
|
+
return [];
|
|
53
|
+
};
|
|
54
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
55
|
+
try {
|
|
56
|
+
return numberVEA(ans, answer, 2);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
return handleVEAError(err);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const getExponentialFunctionImageQuestion = () => {
|
|
63
|
+
const aIds = randfloat(0.1, 5, 2).toTree().toIdentifiers();
|
|
64
|
+
const xIds = randfloat(0.1, 5, 2).toTree().toIdentifiers();
|
|
65
|
+
const identifiers = {
|
|
66
|
+
aIds,
|
|
67
|
+
xIds,
|
|
68
|
+
};
|
|
69
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
70
|
+
};
|
|
71
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
72
|
+
return {
|
|
73
|
+
answer: getAnswer(identifiers),
|
|
74
|
+
instruction: getInstruction(identifiers),
|
|
75
|
+
keys: getKeys(identifiers),
|
|
76
|
+
answerFormat: "tex",
|
|
77
|
+
identifiers,
|
|
78
|
+
hint: getHint(identifiers),
|
|
79
|
+
correction: getCorrection(identifiers),
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export const exponentialFunctionImage = {
|
|
83
|
+
id: "exponentialFunctionImage",
|
|
84
|
+
connector: "=",
|
|
85
|
+
label: "Calculer l'image d'un nombre par une fonction exponentielle du type $a^x$",
|
|
86
|
+
isSingleStep: true,
|
|
87
|
+
generator: (nb, opts) => getDistinctQuestions(() => getExponentialFunctionImageQuestion(opts), nb),
|
|
88
|
+
qcmTimer: 60,
|
|
89
|
+
freeTimer: 60,
|
|
90
|
+
getPropositions,
|
|
91
|
+
isAnswerValid,
|
|
92
|
+
subject: "Mathématiques",
|
|
93
|
+
getInstruction,
|
|
94
|
+
getHint,
|
|
95
|
+
getCorrection,
|
|
96
|
+
getAnswer,
|
|
97
|
+
getQuestionFromIdentifiers,
|
|
98
|
+
hasHintAndCorrection: true,
|
|
99
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
|
|
3
|
+
type Identifiers = {
|
|
4
|
+
q: NodeIdentifiers;
|
|
5
|
+
};
|
|
6
|
+
export declare const exponentialsRawVariations: Exercise<Identifiers>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=exponentialsRawVariations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exponentialsRawVariations.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/exponentialsRawVariations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAcT,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,eAAe,CAAC;CACpB,CAAC;AA6FF,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,WAAW,CAkB3D,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { RationalConstructor } from "../../../../math/numbers/rationals/rational.js";
|
|
4
|
+
import { randfloat } from "../../../../math/utils/random/randfloat.js";
|
|
5
|
+
import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
|
|
6
|
+
import { power } from "../../../../tree/nodes/operators/powerNode.js";
|
|
7
|
+
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
8
|
+
const getPropositions = (n, { answer }) => {
|
|
9
|
+
const propositions = [];
|
|
10
|
+
addValidProp(propositions, answer, "raw");
|
|
11
|
+
tryToAddWrongProp(propositions, "Strictement croissante", "raw");
|
|
12
|
+
tryToAddWrongProp(propositions, "Strictement décroissante", "raw");
|
|
13
|
+
tryToAddWrongProp(propositions, "Constante", "raw");
|
|
14
|
+
tryToAddWrongProp(propositions, "Non monotone", "raw");
|
|
15
|
+
return shuffleProps(propositions, n);
|
|
16
|
+
};
|
|
17
|
+
const getAnswer = (identifiers) => {
|
|
18
|
+
const qEv = reifyAlgebraic(identifiers.q).evaluate();
|
|
19
|
+
return qEv > 1 ? "Strictement croissante" : "Strictement décroissante";
|
|
20
|
+
};
|
|
21
|
+
const getInstruction = (identifiers) => {
|
|
22
|
+
const q = reifyAlgebraic(identifiers.q);
|
|
23
|
+
const statement = power(q, "x").simplify();
|
|
24
|
+
return `Soit $f$ la fonction définie sur $[0; +\\infty[$ par
|
|
25
|
+
|
|
26
|
+
$$
|
|
27
|
+
f(x) = ${statement.toTex()}
|
|
28
|
+
$$
|
|
29
|
+
|
|
30
|
+
Quel est le sens de variations de $f$ sur $[0; +\\infty[$ ?`;
|
|
31
|
+
};
|
|
32
|
+
const getHint = () => {
|
|
33
|
+
return `Sur $[0; +\\infty[$, la fonction $f(x) = a^x$ est :
|
|
34
|
+
|
|
35
|
+
- strictement croissante si $a>1$;
|
|
36
|
+
- strictement décroissante si $0<a<1$;
|
|
37
|
+
- constante si $a = 1$
|
|
38
|
+
`;
|
|
39
|
+
};
|
|
40
|
+
const getCorrection = (identifiers) => {
|
|
41
|
+
const q = reifyAlgebraic(identifiers.q);
|
|
42
|
+
const qEv = q.evaluate();
|
|
43
|
+
const qLessThanOne = qEv < 1;
|
|
44
|
+
return `Puisque $${qLessThanOne ? `0 < ${q.toTex()} < 1` : `${q.toTex()}>1`}$, la fonction $${power(q, "x").toTex()}$ est strictement ${qLessThanOne ? "décroissante" : " croissante"} sur $[0; +\\infty[$.
|
|
45
|
+
|
|
46
|
+
`;
|
|
47
|
+
};
|
|
48
|
+
const getKeys = () => {
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
51
|
+
const getExponentialsVariationsQuestion = () => {
|
|
52
|
+
const qLessThanOne = coinFlip();
|
|
53
|
+
let q;
|
|
54
|
+
if (qLessThanOne) {
|
|
55
|
+
q = coinFlip()
|
|
56
|
+
? randfloat(0.1, 1, 2).toTree()
|
|
57
|
+
: RationalConstructor.randomIrreductibleProba().toTree();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
q = coinFlip()
|
|
61
|
+
? randfloat(1.1, 10, 2).toTree()
|
|
62
|
+
: RationalConstructor.randomIrreductible(11, {
|
|
63
|
+
onlySupOne: true,
|
|
64
|
+
}).toTree();
|
|
65
|
+
}
|
|
66
|
+
const identifiers = {
|
|
67
|
+
q: q.toIdentifiers(),
|
|
68
|
+
};
|
|
69
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
70
|
+
};
|
|
71
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
72
|
+
const question = {
|
|
73
|
+
answer: getAnswer(identifiers),
|
|
74
|
+
instruction: getInstruction(identifiers),
|
|
75
|
+
keys: getKeys(identifiers),
|
|
76
|
+
answerFormat: "raw",
|
|
77
|
+
identifiers,
|
|
78
|
+
hint: getHint(identifiers),
|
|
79
|
+
correction: getCorrection(identifiers),
|
|
80
|
+
};
|
|
81
|
+
return question;
|
|
82
|
+
};
|
|
83
|
+
export const exponentialsRawVariations = {
|
|
84
|
+
id: "exponentialsRawVariations",
|
|
85
|
+
label: "Déterminer le sens de variations d'une fonction exponentielle du type $f(x) = a^x$",
|
|
86
|
+
isSingleStep: true,
|
|
87
|
+
generator: (nb, opts) => getDistinctQuestions(() => getExponentialsVariationsQuestion(opts), nb),
|
|
88
|
+
qcmTimer: 60,
|
|
89
|
+
freeTimer: 60,
|
|
90
|
+
getPropositions,
|
|
91
|
+
subject: "Mathématiques",
|
|
92
|
+
getInstruction,
|
|
93
|
+
getHint,
|
|
94
|
+
getCorrection,
|
|
95
|
+
getAnswer,
|
|
96
|
+
answerType: "QCU",
|
|
97
|
+
hasHintAndCorrection: true,
|
|
98
|
+
getQuestionFromIdentifiers,
|
|
99
|
+
};
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
export * from "./exponentialsVariations.js";
|
|
2
|
+
export * from "./exponentialsRawVariations.js";
|
|
3
|
+
export * from "./readExponentialFunctionParamsOnGraph.js";
|
|
4
|
+
export * from "./plausibleExponentialFunctionExpressionFromGraph.js";
|
|
5
|
+
export * from "./exponentialFunctionImage.js";
|
|
6
|
+
export * from "./realPowersProduct.js";
|
|
7
|
+
export * from "./realPowersFraction.js";
|
|
8
|
+
export * from "./realPowersPower.js";
|
|
9
|
+
export * from "./realPowersMixOperations.js";
|
|
2
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sDAAsD,CAAC;AAErE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC"}
|
|
@@ -1 +1,10 @@
|
|
|
1
1
|
export * from "./exponentialsVariations.js";
|
|
2
|
+
export * from "./exponentialsRawVariations.js";
|
|
3
|
+
export * from "./readExponentialFunctionParamsOnGraph.js";
|
|
4
|
+
export * from "./plausibleExponentialFunctionExpressionFromGraph.js";
|
|
5
|
+
// export * from "./estimateExponentialFunctionImageFromGeometricScatterplot.js";
|
|
6
|
+
export * from "./exponentialFunctionImage.js";
|
|
7
|
+
export * from "./realPowersProduct.js";
|
|
8
|
+
export * from "./realPowersFraction.js";
|
|
9
|
+
export * from "./realPowersPower.js";
|
|
10
|
+
export * from "./realPowersMixOperations.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
k: number;
|
|
4
|
+
a: number;
|
|
5
|
+
fakeParams: {
|
|
6
|
+
a: number;
|
|
7
|
+
k: number;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
export declare const plausibleExponentialFunctionExpressionFromGraph: Exercise<Identifiers>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=plausibleExponentialFunctionExpressionFromGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plausibleExponentialFunctionExpressionFromGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/plausibleExponentialFunctionExpressionFromGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AASrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxC,CAAC;AAwIF,eAAO,MAAM,+CAA+C,EAAE,QAAQ,CAAC,WAAW,CAwB/E,CAAC"}
|
package/lib/exercises/math/functions/exponentials/plausibleExponentialFunctionExpressionFromGraph.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
|
|
4
|
+
import { randfloat } from "../../../../math/utils/random/randfloat.js";
|
|
5
|
+
import { round } from "../../../../math/utils/round.js";
|
|
6
|
+
import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
7
|
+
import { power } from "../../../../tree/nodes/operators/powerNode.js";
|
|
8
|
+
import { coinFlip } from "../../../../utils/alea/coinFlip.js";
|
|
9
|
+
const getPropositions = (n, { answer, fakeParams }) => {
|
|
10
|
+
const propositions = [];
|
|
11
|
+
addValidProp(propositions, answer);
|
|
12
|
+
for (let i = 0; i < fakeParams.length; i++) {
|
|
13
|
+
tryToAddWrongProp(propositions, multiply(fakeParams[i].k, power(fakeParams[i].a, "x")).toTex());
|
|
14
|
+
}
|
|
15
|
+
return shuffleProps(propositions, n);
|
|
16
|
+
};
|
|
17
|
+
const getAnswer = (identifiers) => {
|
|
18
|
+
const { a, k } = identifiers;
|
|
19
|
+
return multiply(k, power(a, "x")).toTex();
|
|
20
|
+
};
|
|
21
|
+
const getInstruction = () => {
|
|
22
|
+
return `On donne ci-dessous la courbe représentative d'une fonction $f$ définie sur $[0; +\\infty[$ par :
|
|
23
|
+
|
|
24
|
+
$$
|
|
25
|
+
f(x) = ka^x
|
|
26
|
+
$$
|
|
27
|
+
|
|
28
|
+
où $k$ et $a$ sont des réels strictement positifs.
|
|
29
|
+
|
|
30
|
+
Parmi les propositions suivantes, laquelle peut être l'expression de la fonction $f$ ?`;
|
|
31
|
+
};
|
|
32
|
+
const getHint = () => {
|
|
33
|
+
return `Le sens de variation de la fonction peut t'aider : si $a>1$, la fonction est strictement croissante, et si $0<a<1$, la fonction est strictement décroissante.
|
|
34
|
+
|
|
35
|
+
D'autre part, tu peux lire l'image de $0$ pour obtenir une valeur approchée de $k$.`;
|
|
36
|
+
};
|
|
37
|
+
const getCorrection = (identifiers) => {
|
|
38
|
+
const { a, k } = identifiers;
|
|
39
|
+
const sens = a < 1 ? "décroissante" : "croissante";
|
|
40
|
+
return `On sait que l'expression de la fonction $f$ est de la forme :
|
|
41
|
+
|
|
42
|
+
$$
|
|
43
|
+
f(x) = ka^x
|
|
44
|
+
$$
|
|
45
|
+
|
|
46
|
+
D'après le graphique, la fonction $f$ est ${sens} sur $[0; +\\infty[$. On en déduit donc que $a ${a < 1 ? "<1" : ">1"}$. Cela permet donc d'exclure deux des propositions.
|
|
47
|
+
|
|
48
|
+
Ensuite, on lit l'image de $0$ par $f$ : on trouve $f(0) \\approx ${round(k, 1).frenchify()}$.
|
|
49
|
+
|
|
50
|
+
Or, $f(0) = ka^0 = k$. Donc $k \\approx ${round(k, 1).frenchify()}$.
|
|
51
|
+
|
|
52
|
+
On en conclut donc que la seule expression possible pour $f$ est :
|
|
53
|
+
|
|
54
|
+
$$
|
|
55
|
+
f(x) = ${getAnswer(identifiers)}
|
|
56
|
+
$$`;
|
|
57
|
+
};
|
|
58
|
+
const getGGBOptions = (identifiers) => {
|
|
59
|
+
const { a, k } = identifiers;
|
|
60
|
+
const ggb = new GeogebraConstructor({
|
|
61
|
+
commands: [`Function(${k}*${a}^x, 0, 10000)`],
|
|
62
|
+
lockedAxesRatio: false,
|
|
63
|
+
});
|
|
64
|
+
const f2 = multiply(k, power(a, 2)).evaluate();
|
|
65
|
+
return ggb.getOptions({
|
|
66
|
+
coords: [-1, 5, -1, Math.max(k, f2) + 1],
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
const getPlausibleExponentialFunctionExpressionFromGraphQuestion = () => {
|
|
70
|
+
const k = randfloat(0.5, 4, 2);
|
|
71
|
+
const a = coinFlip() ? randfloat(0.1, 1, 2, [1]) : randfloat(1.1, 5, 2);
|
|
72
|
+
let fakeParams = [];
|
|
73
|
+
if (a > 1) {
|
|
74
|
+
const firstDescA = randfloat(0.1, 1, 2, [1]);
|
|
75
|
+
const secondDescA = randfloat(0.1, 1, 2, [firstDescA]);
|
|
76
|
+
const thirdA = randfloat(1.1, 5, 2, [a]);
|
|
77
|
+
const firstK = k;
|
|
78
|
+
const secondK = randfloat(0.1, 4, 2);
|
|
79
|
+
const delta = randfloat(1, 3, 2);
|
|
80
|
+
const thirdK = k - delta > 0 ? k - delta : k + delta;
|
|
81
|
+
fakeParams = [
|
|
82
|
+
{ a: firstDescA, k: firstK },
|
|
83
|
+
{ a: secondDescA, k: secondK },
|
|
84
|
+
{ a: thirdA, k: thirdK },
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const firstAscA = randfloat(1.1, 5, 2);
|
|
89
|
+
const secondAscA = randfloat(1.1, 5, 2, [firstAscA]);
|
|
90
|
+
const thirdA = randfloat(0.1, 1, 2, [1, a]);
|
|
91
|
+
const firstK = k;
|
|
92
|
+
const secondK = randfloat(0.1, 4, 2);
|
|
93
|
+
const delta = randfloat(1, 3, 2);
|
|
94
|
+
const thirdK = k - delta > 0 ? k - delta : k + delta;
|
|
95
|
+
fakeParams = [
|
|
96
|
+
{ a: firstAscA, k: firstK },
|
|
97
|
+
{ a: secondAscA, k: secondK },
|
|
98
|
+
{ a: thirdA, k: thirdK },
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
const identifiers = {
|
|
102
|
+
a,
|
|
103
|
+
k,
|
|
104
|
+
fakeParams,
|
|
105
|
+
};
|
|
106
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
107
|
+
};
|
|
108
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
109
|
+
return {
|
|
110
|
+
answer: getAnswer(identifiers),
|
|
111
|
+
instruction: getInstruction(identifiers),
|
|
112
|
+
keys: [],
|
|
113
|
+
answerFormat: "tex",
|
|
114
|
+
identifiers,
|
|
115
|
+
hint: getHint(identifiers),
|
|
116
|
+
correction: getCorrection(identifiers),
|
|
117
|
+
ggbOptions: getGGBOptions(identifiers),
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
export const plausibleExponentialFunctionExpressionFromGraph = {
|
|
121
|
+
id: "plausibleExponentialFunctionExpressionFromGraph",
|
|
122
|
+
label: "Donner l'expression possible d'une fonction exponentielle à partir de sa courbe représentative",
|
|
123
|
+
isSingleStep: true,
|
|
124
|
+
generator: (nb, opts) => getDistinctQuestions(() => getPlausibleExponentialFunctionExpressionFromGraphQuestion(opts), nb),
|
|
125
|
+
qcmTimer: 60,
|
|
126
|
+
freeTimer: 60,
|
|
127
|
+
getPropositions,
|
|
128
|
+
answerType: "QCU",
|
|
129
|
+
subject: "Mathématiques",
|
|
130
|
+
getHint,
|
|
131
|
+
getCorrection,
|
|
132
|
+
getInstruction,
|
|
133
|
+
getAnswer,
|
|
134
|
+
getGGBOptions,
|
|
135
|
+
hasGeogebra: true,
|
|
136
|
+
getQuestionFromIdentifiers,
|
|
137
|
+
hasHintAndCorrection: true,
|
|
138
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
type Identifiers = {
|
|
3
|
+
f0: number;
|
|
4
|
+
f1: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const readExponentialFunctionParamsOnGraph: Exercise<Identifiers>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=readExponentialFunctionParamsOnGraph.d.ts.map
|
package/lib/exercises/math/functions/exponentials/readExponentialFunctionParamsOnGraph.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readExponentialFunctionParamsOnGraph.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/readExponentialFunctionParamsOnGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgBT,MAAM,6BAA6B,CAAC;AAWrC,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AA6HF,eAAO,MAAM,oCAAoC,EAAE,QAAQ,CAAC,WAAW,CA0BtE,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, propWhile, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
|
|
4
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
5
|
+
import { frac } from "../../../../tree/nodes/operators/fractionNode.js";
|
|
6
|
+
import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
7
|
+
import { power } from "../../../../tree/nodes/operators/powerNode.js";
|
|
8
|
+
import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
|
|
9
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
10
|
+
const getPropositions = (n, { answer }) => {
|
|
11
|
+
const propositions = [];
|
|
12
|
+
addValidProp(propositions, answer);
|
|
13
|
+
propWhile(propositions, n, () => {
|
|
14
|
+
const fakeK = randint(2, 10);
|
|
15
|
+
const fakeA = randint(2, 10);
|
|
16
|
+
tryToAddWrongProp(propositions, multiply(fakeK, power(fakeA, "x")).toTex());
|
|
17
|
+
});
|
|
18
|
+
return shuffleProps(propositions, n);
|
|
19
|
+
};
|
|
20
|
+
const getAnswer = (identifiers) => {
|
|
21
|
+
const { f0, f1 } = identifiers;
|
|
22
|
+
return multiply(f0, power(frac(f1, f0), "x"))
|
|
23
|
+
.simplify()
|
|
24
|
+
.toTex();
|
|
25
|
+
};
|
|
26
|
+
const getInstruction = () => {
|
|
27
|
+
return `On donne ci-dessous la courbe représentative d'une fonction $f$ définie sur $[0; +\\infty[$ par :
|
|
28
|
+
|
|
29
|
+
$$
|
|
30
|
+
f(x) = ka^x
|
|
31
|
+
$$
|
|
32
|
+
|
|
33
|
+
où $k$ et $a$ sont des réels strictement positifs.
|
|
34
|
+
|
|
35
|
+
En lisant les images par $f$ de $0$ et de $1$, déterminer l'expression de la fonction $f$.`;
|
|
36
|
+
};
|
|
37
|
+
const getHint = () => {
|
|
38
|
+
return `Lis les images par $f$ de $0$ et de $1$.
|
|
39
|
+
|
|
40
|
+
Puis, remarque que :
|
|
41
|
+
|
|
42
|
+
- $f(0) = ka^0 = k$
|
|
43
|
+
- $f(1) = ka^1 = ka$
|
|
44
|
+
|
|
45
|
+
Cela te permet de retrouver $k$ et $a$.`;
|
|
46
|
+
};
|
|
47
|
+
const getCorrection = (identifiers) => {
|
|
48
|
+
const { f0, f1 } = identifiers;
|
|
49
|
+
return `On lit les images par $f$ de $0$ et de $1$ :
|
|
50
|
+
|
|
51
|
+
- $f(0) = ${f0.frenchify()}$
|
|
52
|
+
- $f(1) = ${f1.frenchify()}$
|
|
53
|
+
|
|
54
|
+
Or, puisque $f(x) = ka^x$, on a :
|
|
55
|
+
|
|
56
|
+
$$
|
|
57
|
+
f(0) = ka^0 = k\\times 1 = k
|
|
58
|
+
$$
|
|
59
|
+
|
|
60
|
+
Donc $k = ${f0.frenchify()}$.
|
|
61
|
+
|
|
62
|
+
De même, on a :
|
|
63
|
+
|
|
64
|
+
$$
|
|
65
|
+
f(1) = ka^1 = ka = ${multiply(f0, "a").toTex()}
|
|
66
|
+
$$
|
|
67
|
+
|
|
68
|
+
Donc $a = ${frac(f1, f0).simplify().toTex()}$.
|
|
69
|
+
|
|
70
|
+
Ainsi, l'expression de $f$ est :
|
|
71
|
+
|
|
72
|
+
$$
|
|
73
|
+
f(x) = ${getAnswer(identifiers)}
|
|
74
|
+
$$
|
|
75
|
+
`;
|
|
76
|
+
};
|
|
77
|
+
const getGGBOptions = (identifiers) => {
|
|
78
|
+
const { f0, f1 } = identifiers;
|
|
79
|
+
const ggb = new GeogebraConstructor({
|
|
80
|
+
commands: [`Function(${f0}*${f1 / f0}^x, 0, 10000)`],
|
|
81
|
+
lockedAxesRatio: false,
|
|
82
|
+
});
|
|
83
|
+
return ggb.getOptions({
|
|
84
|
+
coords: [-1, 5, -1, 2 * Math.max(f0, f1)],
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
const getKeys = () => {
|
|
88
|
+
return ["x"];
|
|
89
|
+
};
|
|
90
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
91
|
+
try {
|
|
92
|
+
const parsed = parseAlgebraic(ans);
|
|
93
|
+
if (!parsed)
|
|
94
|
+
return false;
|
|
95
|
+
return parsed.simplify().toTex() === answer;
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
return handleVEAError(err);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const getReadExponentialFunctionParamsOnGraphQuestion = () => {
|
|
102
|
+
const k = randint(1, 6);
|
|
103
|
+
const a = randint(2, 6, [k]);
|
|
104
|
+
const identifiers = {
|
|
105
|
+
f0: k,
|
|
106
|
+
f1: a * k,
|
|
107
|
+
};
|
|
108
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
109
|
+
};
|
|
110
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
111
|
+
return {
|
|
112
|
+
answer: getAnswer(identifiers),
|
|
113
|
+
instruction: getInstruction(identifiers),
|
|
114
|
+
keys: getKeys(identifiers),
|
|
115
|
+
answerFormat: "tex",
|
|
116
|
+
identifiers,
|
|
117
|
+
hint: getHint(identifiers),
|
|
118
|
+
correction: getCorrection(identifiers),
|
|
119
|
+
ggbOptions: getGGBOptions(identifiers),
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
export const readExponentialFunctionParamsOnGraph = {
|
|
123
|
+
id: "readExponentialFunctionParamsOnGraph",
|
|
124
|
+
connector: "=",
|
|
125
|
+
label: "Déterminer l'expression d'une fonction exponentielle à partir de sa courbe représentative",
|
|
126
|
+
isSingleStep: true,
|
|
127
|
+
generator: (nb, opts) => getDistinctQuestions(() => getReadExponentialFunctionParamsOnGraphQuestion(opts), nb, 10),
|
|
128
|
+
qcmTimer: 60,
|
|
129
|
+
freeTimer: 60,
|
|
130
|
+
getPropositions,
|
|
131
|
+
isAnswerValid,
|
|
132
|
+
subject: "Mathématiques",
|
|
133
|
+
getHint,
|
|
134
|
+
getCorrection,
|
|
135
|
+
getInstruction,
|
|
136
|
+
getAnswer,
|
|
137
|
+
getGGBOptions,
|
|
138
|
+
hasGeogebra: true,
|
|
139
|
+
getQuestionFromIdentifiers,
|
|
140
|
+
hasHintAndCorrection: true,
|
|
141
|
+
maxAllowedQuestions: 10,
|
|
142
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
|
|
3
|
+
type Identifiers = {
|
|
4
|
+
aIds: NodeIdentifiers;
|
|
5
|
+
xIds: NodeIdentifiers;
|
|
6
|
+
yIds: NodeIdentifiers;
|
|
7
|
+
};
|
|
8
|
+
export declare const realPowersFraction: Exercise<Identifiers>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=realPowersFraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realPowersFraction.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/functions/exponentials/realPowersFraction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAa7C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AAoHF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAkBpD,CAAC"}
|