feat(trainer): P5 — несколько корней, эквивалентность выражений, новые темы
- движок: gen.answers → несколько корней (_checkMultiRoot, ввод через «;», сверка мультимножеством) - kind simplify: эквивалентность выражений численным сэмплингом (_sampleEquiv, _checkEquiv), фикс. точки без Math.random - exprToLatex: знаковые коэффициенты — -5x, x²−5x+6, a−(−b)→a+b (вынос ведущего минуса, схлопывание) - темы: Упрощение (подобные, скобки) + Квадратные (Виета x²+bx+c=0, разность квадратов) → 17 генераторов, 5 тем - страница: префикс «x=»/подсказка ввода и ответ-лейбл по типу задачи - смоук движка 291/291 (T11 roots, T12 simplify, T13 latex), страница 26/26, adaptive 12/12; план P5 → DONE Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,9 @@
|
||||
var TOPICS = [
|
||||
{ key: 'linear-eq', label: 'Уравнения', subject: 'algebra', grade: 7, order: 1 },
|
||||
{ key: 'proportions', label: 'Пропорции', subject: 'algebra', grade: 7, order: 2 },
|
||||
{ key: 'percents', label: 'Проценты', subject: 'algebra', grade: 7, order: 3 }
|
||||
{ key: 'percents', label: 'Проценты', subject: 'algebra', grade: 7, order: 3 },
|
||||
{ key: 'simplify', label: 'Упрощение', subject: 'algebra', grade: 7, order: 4 },
|
||||
{ key: 'quadratic', label: 'Квадратные', subject: 'algebra', grade: 8, order: 5 }
|
||||
];
|
||||
|
||||
var GENERATORS = [
|
||||
@@ -249,6 +251,67 @@
|
||||
{ note: 'Известно, что {p}% некоторого числа равны {a}. Значит само число во столько раз больше: умножаем {a} на 100 и делим на {p}.', tex: 'x = {a}*100/{p}' },
|
||||
{ note: 'Считаем — получаем искомое число.', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ═══ Тема: Упрощение выражений (проверка эквивалентностью) ═══ */
|
||||
|
||||
/* a·x + b·x → (a+b)x */
|
||||
{
|
||||
id: 'simp-like', topic: 'simplify', order: 1, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Привести подобные',
|
||||
pick: { a: [2, 9], b: [2, 9] },
|
||||
derive: { s: 'a + b' },
|
||||
srcExpr: '{a}*x + {b}*x', answerExpr: '{s}*x', answerVars: ['x'],
|
||||
display: 'Упростите: {a}x + {b}x',
|
||||
solution: [
|
||||
{ note: 'Оба слагаемых содержат x — это подобные слагаемые. Складываем их коэффициенты: {a} + {b} = {s}.', tex: '{a}x + {b}x = {s}x' }
|
||||
]
|
||||
},
|
||||
|
||||
/* a(x + b) → ax + ab */
|
||||
{
|
||||
id: 'simp-expand', topic: 'simplify', order: 2, subject: 'algebra', grade: 7, kind: 'simplify',
|
||||
title: 'Раскрыть скобки',
|
||||
pick: { a: [2, 9], b: [1, 9] },
|
||||
derive: { ab: 'a*b' },
|
||||
srcExpr: '{a}*(x + {b})', answerExpr: '{a}*x + {ab}', answerVars: ['x'],
|
||||
display: 'Раскройте скобки: {a}(x + {b})',
|
||||
solution: [
|
||||
{ note: 'Умножаем множитель {a} на каждое слагаемое внутри скобки.', tex: '{a}(x + {b}) = {a}x + {ab}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ═══ Тема: Квадратные уравнения (несколько корней) ═══ */
|
||||
|
||||
/* x² + bx + c = 0 — разложение по Виета (два корня r1, r2) */
|
||||
{
|
||||
id: 'quad-factored', topic: 'quadratic', order: 1, subject: 'algebra', grade: 8, kind: 'roots',
|
||||
title: 'x² + bx + c = 0',
|
||||
pick: { r1: [-7, 7], r2: [-7, 7] },
|
||||
constraint: 'r1 != r2',
|
||||
derive: { b: '-(r1 + r2)', c: 'r1*r2' },
|
||||
lhs: 'x^2 + {b}*x + {c}', rhs: '0',
|
||||
answerVar: 'x', answers: ['r1', 'r2'], integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Квадратное уравнение приравнено к нулю. По теореме Виета ищем два числа: их сумма равна {r1}+{r2}, произведение — {c}. Это и есть корни. Раскладываем на множители:', tex: '(x - {r1})(x - {r2}) = 0' },
|
||||
{ note: 'Произведение равно нулю, когда обнуляется множитель. Первый корень:', tex: 'x = {r1}' },
|
||||
{ note: 'Второй корень:', tex: 'x = {r2}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* x² − a² = 0 — разность квадратов (корни ±a) */
|
||||
{
|
||||
id: 'quad-diff', topic: 'quadratic', order: 2, subject: 'algebra', grade: 8, kind: 'roots',
|
||||
title: 'x² − a² = 0',
|
||||
pick: { a: [2, 9] },
|
||||
derive: { a2: 'a*a' },
|
||||
lhs: 'x^2 - {a2}', rhs: '0',
|
||||
answerVar: 'x', answers: ['a', '-a'], integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Слева — разность квадратов: x² − {a2} = (x − {a})(x + {a}). Раскладываем:', tex: '(x - {a})(x + {a}) = 0' },
|
||||
{ note: 'Первый корень:', tex: 'x = {a}' },
|
||||
{ note: 'Второй корень:', tex: 'x = -{a}' }
|
||||
]
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user