feat(trainer): полные решения систем + шапка «Математика»; решения по всем темам
- Шапка-пилюля теперь УНИВЕРСАЛЬНАЯ и не мигает: всегда «Математика · 5–9 класс» (не переключается на «Алгебра»; предмет выбирается сегментом Алгебра/Геометрия) - Системы 2 ур-ний — ПОЛНОЕ решение методом сложения (6 шагов): уравнять коэффициенты при x, вычесть (исключить x → coefY·y=rhsY), найти y, подставить, найти x, ответ-пара. Коэффициенты 2..4 / |коэф|≥2 — без «1x» в шагах - Аудит решений по ВСЕМ темам: 7 «тонких» (1 шаг) генераторов (simp-like/expand, pow-mult/pow, sq-sum/diff, diff-sq) развёрнуты в 2 шага (правило → итог) - смоук T21: у каждого из 60 генераторов решение ≥2 шагов; движок 1214/1214, страница 42/42; эмодзи 0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -280,7 +280,8 @@
|
||||
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' }
|
||||
{ note: 'Слагаемые {a}x и {b}x подобны (одинаковая буквенная часть x). Складываем коэффициенты: {a} + {b} = {s}.', tex: '{a}x + {b}x' },
|
||||
{ note: 'Получаем:', tex: '{s}x' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -293,7 +294,8 @@
|
||||
srcExpr: '{a}*(x + {b})', answerExpr: '{a}*x + {ab}', answerVars: ['x'],
|
||||
display: 'Раскройте скобки: {a}(x + {b})',
|
||||
solution: [
|
||||
{ note: 'Умножаем множитель {a} на каждое слагаемое внутри скобки.', tex: '{a}(x + {b}) = {a}x + {ab}' }
|
||||
{ note: 'Умножаем множитель {a} на каждое слагаемое в скобке: {a}·x и {a}·{b}.', tex: '{a}(x + {b})' },
|
||||
{ note: 'Получаем:', tex: '{a}x + {ab}' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -355,7 +357,8 @@
|
||||
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}' }
|
||||
{ note: 'Основание одинаковое (x) — при умножении степеней показатели складываются: {a} + {b} = {s}.', tex: 'x^{a} * x^{b}' },
|
||||
{ note: 'Получаем:', tex: 'x^{s}' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -368,7 +371,8 @@
|
||||
srcExpr: '(x^{a})^{b}', answerExpr: 'x^{ab}', answerVars: ['x'],
|
||||
display: 'Упростите: (x^{a})^{b}',
|
||||
solution: [
|
||||
{ note: 'При возведении степени в степень показатели перемножаются: {a}·{b} = {ab}.', tex: '(x^{a})^{b} = x^{ab}' }
|
||||
{ note: 'При возведении степени в степень показатели перемножаются: {a}·{b} = {ab}.', tex: '(x^{a})^{b}' },
|
||||
{ note: 'Получаем:', tex: 'x^{ab}' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -383,7 +387,8 @@
|
||||
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}' }
|
||||
{ note: 'Это квадрат суммы. Формула: (a + b)² = a² + 2ab + b² (здесь a = x, b = {a}).', tex: '(x + {a})^2' },
|
||||
{ note: 'Раскрываем и приводим к стандартному виду:', tex: 'x^2 + {a2x}*x + {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -396,7 +401,8 @@
|
||||
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}' }
|
||||
{ note: 'Это квадрат разности. Формула: (a − b)² = a² − 2ab + b² (здесь a = x, b = {a}).', tex: '(x - {a})^2' },
|
||||
{ note: 'Раскрываем и приводим к стандартному виду:', tex: 'x^2 - {a2x}*x + {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -409,7 +415,8 @@
|
||||
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}' }
|
||||
{ note: 'Произведение разности и суммы — формула разности квадратов: (a − b)(a + b) = a² − b².', tex: '(x - {a})*(x + {a})' },
|
||||
{ note: 'Получаем:', tex: 'x^2 - {a2}' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -609,14 +616,18 @@
|
||||
{
|
||||
id: 'sys-2x2', topic: 'systems', order: 1, subject: 'algebra', grade: 7, kind: 'system',
|
||||
title: 'Система 2×2',
|
||||
pick: { a1: [1, 4], b1: [1, 4], a2: [1, 4], b2: [1, 4], sx: [-6, 6], sy: [-6, 6] },
|
||||
pick: { a1: [2, 4], b1: [2, 4], a2: [2, 4], b2: [2, 4], sx: [-6, 6], sy: [-6, 6] },
|
||||
constraint: 'a1*b2 - a2*b1 != 0',
|
||||
derive: { c1: 'a1*sx + b1*sy', c2: 'a2*sx + b2*sy' },
|
||||
derive: { c1: 'a1*sx + b1*sy', c2: 'a2*sx + b2*sy', coefY: 'b1*a2 - b2*a1', rhsY: 'c1*a2 - c2*a1' },
|
||||
eqs: [{ lhs: '{a1}*x + {b1}*y', rhs: '{c1}' }, { lhs: '{a2}*x + {b2}*y', rhs: '{c2}' }],
|
||||
answers: { x: 'sx', y: 'sy' }, answerVars: ['x', 'y'], integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Исключите одну переменную: умножьте уравнения так, чтобы коэффициенты при x (или y) совпали, и сложите/вычтите — найдёте одну переменную.', tex: '' },
|
||||
{ note: 'Подставьте найденное в любое уравнение. Решение системы: x = {sx}, y = {sy}.', tex: '' }
|
||||
{ note: 'Решаем методом сложения. Уравняем коэффициенты при x: умножим первое уравнение на {a2}, а второе — на {a1}.', tex: '' },
|
||||
{ note: 'Вычтем из первого уравнения второе — слагаемые с x сократятся, останется только y:', tex: '{coefY}*y = {rhsY}' },
|
||||
{ note: 'Разделим обе части на коэффициент при y:', tex: 'y = {sy}' },
|
||||
{ note: 'Подставим y = {sy} в первое уравнение системы:', tex: '{a1}*x + {b1}*{sy} = {c1}' },
|
||||
{ note: 'Решим его относительно x:', tex: 'x = {sx}' },
|
||||
{ note: 'Ответ: x = {sx}, y = {sy}.', tex: '' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -625,13 +636,17 @@
|
||||
id: 'sys-2x2-neg', topic: 'systems', order: 2, subject: 'algebra', grade: 8, kind: 'system',
|
||||
title: 'Система (с отрицательными)',
|
||||
pick: { a1: [-4, 4], b1: [-4, 4], a2: [-4, 4], b2: [-4, 4], sx: [-7, 7], sy: [-7, 7] },
|
||||
constraint: 'a1 != 0 && b1 != 0 && a2 != 0 && b2 != 0 && a1*b2 - a2*b1 != 0',
|
||||
derive: { c1: 'a1*sx + b1*sy', c2: 'a2*sx + b2*sy' },
|
||||
constraint: 'abs(a1) >= 2 && abs(b1) >= 2 && abs(a2) >= 2 && abs(b2) >= 2 && a1*b2 - a2*b1 != 0',
|
||||
derive: { c1: 'a1*sx + b1*sy', c2: 'a2*sx + b2*sy', coefY: 'b1*a2 - b2*a1', rhsY: 'c1*a2 - c2*a1' },
|
||||
eqs: [{ lhs: '{a1}*x + {b1}*y', rhs: '{c1}' }, { lhs: '{a2}*x + {b2}*y', rhs: '{c2}' }],
|
||||
answers: { x: 'sx', y: 'sy' }, answerVars: ['x', 'y'], integerAnswer: true,
|
||||
solution: [
|
||||
{ note: 'Будьте внимательны со знаками. Исключите переменную методом сложения, найдите одну, подставьте во второе уравнение.', tex: '' },
|
||||
{ note: 'Решение системы: x = {sx}, y = {sy}.', tex: '' }
|
||||
{ note: 'Метод сложения (внимательно со знаками). Уравняем коэффициенты при x: умножим первое уравнение на {a2}, второе — на {a1}.', tex: '' },
|
||||
{ note: 'Вычтем из первого уравнения второе — переменная x исключается:', tex: '{coefY}*y = {rhsY}' },
|
||||
{ note: 'Разделим обе части на коэффициент при y:', tex: 'y = {sy}' },
|
||||
{ note: 'Подставим y = {sy} в первое уравнение системы:', tex: '{a1}*x + {b1}*{sy} = {c1}' },
|
||||
{ note: 'Найдём x:', tex: 'x = {sx}' },
|
||||
{ note: 'Ответ: x = {sx}, y = {sy}.', tex: '' }
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
@@ -686,15 +686,14 @@
|
||||
return out;
|
||||
}
|
||||
var SUBJ_LBL = { algebra: 'Алгебра', geometry: 'Геометрия' };
|
||||
// подпись в шапке: предмет + диапазон классов текущего предмета (универсально 5–9)
|
||||
// подпись в шапке — УНИВЕРСАЛЬНАЯ: «Математика · 5–9 класс» (предмет выбирается
|
||||
// отдельным сегментом Алгебра/Геометрия, шапка его не дублирует).
|
||||
function updateSubjectPill() {
|
||||
var pill = $('tr-subject'); if (!pill) return;
|
||||
var gr = topics.filter(function (t) { return (t.subject || 'algebra') === curSubject && t.grade; })
|
||||
.map(function (t) { return t.grade; });
|
||||
var name = SUBJ_LBL[curSubject] || 'Математика';
|
||||
if (!gr.length) { pill.textContent = name; return; }
|
||||
var gr = topics.filter(function (t) { return t.grade; }).map(function (t) { return t.grade; });
|
||||
if (!gr.length) { pill.textContent = 'Математика'; return; }
|
||||
var lo = Math.min.apply(null, gr), hi = Math.max.apply(null, gr);
|
||||
pill.textContent = name + ' · ' + (lo === hi ? (lo + ' класс') : (lo + '–' + hi + ' класс'));
|
||||
pill.textContent = 'Математика · ' + (lo === hi ? (lo + ' класс') : (lo + '–' + hi + ' класс'));
|
||||
}
|
||||
function renderSubjects() {
|
||||
updateSubjectPill();
|
||||
|
||||
Reference in New Issue
Block a user