feat(trainer): P10 — контент 8 класса (степени, формулы, неравенства)
- новый тип kind:inequality: answerRel{op,bound}, парсер отношения (_parseRel/_checkInequality) — нормализация «x op c», приём обратной записи, сверка op+границы; self-check внутри/снаружи решения
- темы: Степени (aⁿ, xᵃ·xᵇ, (xᵃ)ᵇ), Формулы сокр. умножения (квадрат суммы/разности, разность квадратов), Неравенства (вкл. смену знака при делении на отрицательное) → 26 генераторов, 8 тем
- движок: simplify рендерит выражение в KaTeX (exprToLatex(srcExpr)); неравенство — в KaTeX с отношением; fallback-display учитывает op
- страница: ввод/лейбл для неравенств, isLabelKind
- смоук движка 397/397 (T15 неравенства, T16 степени/формулы; T3 ≥10 для малых пространств), страница 33/33; ROADMAP_V2 P10 → DONE
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,10 @@
|
||||
{ key: 'proportions', label: 'Пропорции', subject: 'algebra', grade: 7, order: 2 },
|
||||
{ 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 }
|
||||
{ key: 'quadratic', label: 'Квадратные', subject: 'algebra', grade: 8, order: 5 },
|
||||
{ key: 'powers', label: 'Степени', subject: 'algebra', grade: 8, order: 6 },
|
||||
{ key: 'formulas', label: 'Формулы', subject: 'algebra', grade: 8, order: 7 },
|
||||
{ key: 'inequalities', label: 'Неравенства', subject: 'algebra', grade: 8, order: 8 }
|
||||
];
|
||||
|
||||
var GENERATORS = [
|
||||
@@ -312,6 +315,133 @@
|
||||
{ note: 'Первый корень:', tex: 'x = {a}' },
|
||||
{ note: 'Второй корень:', tex: 'x = -{a}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ═══ Тема: Степени ═══ */
|
||||
|
||||
/* вычислить aⁿ */
|
||||
{
|
||||
id: 'pow-eval', topic: 'powers', order: 1, subject: 'algebra', grade: 8, kind: 'compute',
|
||||
title: 'Вычислить степень',
|
||||
pick: { a: [2, 6], n: [2, 3] },
|
||||
derive: { val: 'a^n' },
|
||||
lhs: 'x', rhs: '{a}^{n}', display: 'Вычислите {a} в степени {n}',
|
||||
answerVar: 'x', answer: 'val', integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Степень — это повторное умножение основания на себя.', tex: 'x = {a}^{n}' },
|
||||
{ note: 'Считаем:', tex: 'x = {ans}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* xᵃ · xᵇ = xᵃ⁺ᵇ */
|
||||
{
|
||||
id: 'pow-mult', topic: 'powers', order: 2, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Произведение степеней',
|
||||
pick: { a: [2, 5], b: [2, 5] },
|
||||
derive: { s: 'a + b' },
|
||||
srcExpr: 'x^{a}*x^{b}', answerExpr: 'x^{s}', answerVars: ['x'],
|
||||
display: 'Упростите: x^{a}·x^{b}',
|
||||
solution: [
|
||||
{ note: 'При умножении степеней с одинаковым основанием показатели складываются: {a} + {b} = {s}.', tex: 'x^{a}*x^{b} = x^{s}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* (xᵃ)ᵇ = xᵃᵇ */
|
||||
{
|
||||
id: 'pow-pow', topic: 'powers', order: 3, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Степень степени',
|
||||
pick: { a: [2, 4], b: [2, 3] },
|
||||
derive: { ab: 'a*b' },
|
||||
srcExpr: '(x^{a})^{b}', answerExpr: 'x^{ab}', answerVars: ['x'],
|
||||
display: 'Упростите: (x^{a})^{b}',
|
||||
solution: [
|
||||
{ note: 'При возведении степени в степень показатели перемножаются: {a}·{b} = {ab}.', tex: '(x^{a})^{b} = x^{ab}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ═══ Тема: Формулы сокращённого умножения ═══ */
|
||||
|
||||
/* (x + a)² */
|
||||
{
|
||||
id: 'sq-sum', topic: 'formulas', order: 1, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Квадрат суммы',
|
||||
pick: { a: [1, 9] },
|
||||
derive: { a2: 'a*a', a2x: '2*a' },
|
||||
srcExpr: '(x + {a})^2', answerExpr: 'x^2 + {a2x}*x + {a2}', answerVars: ['x'],
|
||||
display: 'Раскройте: (x + {a})²',
|
||||
solution: [
|
||||
{ note: 'Квадрат суммы: (x + {a})² = x² + 2·{a}·x + {a}².', tex: '(x + {a})^2 = x^2 + {a2x}*x + {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* (x − a)² */
|
||||
{
|
||||
id: 'sq-diff', topic: 'formulas', order: 2, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Квадрат разности',
|
||||
pick: { a: [1, 9] },
|
||||
derive: { a2: 'a*a', a2x: '2*a' },
|
||||
srcExpr: '(x - {a})^2', answerExpr: 'x^2 - {a2x}*x + {a2}', answerVars: ['x'],
|
||||
display: 'Раскройте: (x − {a})²',
|
||||
solution: [
|
||||
{ note: 'Квадрат разности: (x − {a})² = x² − 2·{a}·x + {a}².', tex: '(x - {a})^2 = x^2 - {a2x}*x + {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* (x − a)(x + a) = x² − a² */
|
||||
{
|
||||
id: 'diff-sq', topic: 'formulas', order: 3, subject: 'algebra', grade: 8, kind: 'simplify',
|
||||
title: 'Разность квадратов',
|
||||
pick: { a: [2, 9] },
|
||||
derive: { a2: 'a*a' },
|
||||
srcExpr: '(x - {a})*(x + {a})', answerExpr: 'x^2 - {a2}', answerVars: ['x'],
|
||||
display: 'Раскройте: (x − {a})(x + {a})',
|
||||
solution: [
|
||||
{ note: 'Произведение разности и суммы даёт разность квадратов: (x − {a})(x + {a}) = x² − {a}².', tex: '(x - {a})*(x + {a}) = x^2 - {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ═══ Тема: Линейные неравенства ═══ */
|
||||
|
||||
/* ax + b < c (a>0, знак сохраняется) */
|
||||
{
|
||||
id: 'ineq-lt', topic: 'inequalities', order: 1, subject: 'algebra', grade: 8, kind: 'inequality',
|
||||
title: 'ax + b < c',
|
||||
pick: { a: [2, 6], b: [1, 15], root: [-8, 8] },
|
||||
derive: { c: 'a*root + b', cmb: 'a*root' },
|
||||
lhs: '{a}*x + {b}', rhs: '{c}', dispOp: '<', relOp: '<', bound: 'root',
|
||||
answerVar: 'x',
|
||||
solution: [
|
||||
{ note: 'Переносим свободный член {b} вправо:', tex: '{a}x < {cmb}' },
|
||||
{ note: 'Делим обе части на {a} — число положительное, знак неравенства не меняется:', tex: 'x < {root}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* ax + b ≥ c (a>0) */
|
||||
{
|
||||
id: 'ineq-ge', topic: 'inequalities', order: 2, subject: 'algebra', grade: 8, kind: 'inequality',
|
||||
title: 'ax + b ≥ c',
|
||||
pick: { a: [2, 6], b: [1, 15], root: [-8, 8] },
|
||||
derive: { c: 'a*root + b', cmb: 'a*root' },
|
||||
lhs: '{a}*x + {b}', rhs: '{c}', dispOp: '>=', relOp: '>=', bound: 'root',
|
||||
answerVar: 'x',
|
||||
solution: [
|
||||
{ note: 'Переносим {b} вправо:', tex: '{a}x >= {cmb}' },
|
||||
{ note: 'Делим на {a} (положительное) — знак сохраняется:', tex: 'x >= {root}' }
|
||||
]
|
||||
},
|
||||
|
||||
/* −ax + b < c (коэффициент отрицательный → знак МЕНЯЕТСЯ) */
|
||||
{
|
||||
id: 'ineq-flip', topic: 'inequalities', order: 3, subject: 'algebra', grade: 8, kind: 'inequality',
|
||||
title: '−ax + b < c (смена знака)',
|
||||
pick: { a: [2, 6], b: [1, 15], root: [-8, 8] },
|
||||
derive: { c: 'b - a*root', cmb: '-a*root' },
|
||||
lhs: '-{a}*x + {b}', rhs: '{c}', dispOp: '<', relOp: '>', bound: 'root',
|
||||
answerVar: 'x',
|
||||
solution: [
|
||||
{ note: 'Переносим {b} вправо:', tex: '-{a}x < {cmb}' },
|
||||
{ note: 'Делим на отрицательное число (−{a}) — знак неравенства МЕНЯЕТСЯ на противоположный:', tex: 'x > {root}' }
|
||||
]
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user