diff --git a/frontend/textbooks/algebra_10_ch1.html b/frontend/textbooks/algebra_10_ch1.html
index 0db6af2..4c8e295 100644
--- a/frontend/textbooks/algebra_10_ch1.html
+++ b/frontend/textbooks/algebra_10_ch1.html
@@ -256,6 +256,10 @@ const ACH_LABELS = {
p6_done:'Графики tg x и ctg x — знаешь!',
p7_done:'Обратные тригонометрические — освоены!',
p8_done:'Тригонометрические уравнения — решаешь!',
+ p9_done:'Формулы приведения — мастер!',
+ p10_done:'Сумма и разность — твои!',
+ p11_done:'Двойной аргумент — лёгкость!',
+ p12_done:'Преобразование суммы — освоено!',
ch1_done:'Глава 1 — Тригонометрия пройдена!',
};
@@ -287,6 +291,10 @@ function bumpProgress(key, delta){
else if(key==='p6') achievement('p6_done');
else if(key==='p7') achievement('p7_done');
else if(key==='p8') achievement('p8_done');
+ else if(key==='p9') achievement('p9_done');
+ else if(key==='p10') achievement('p10_done');
+ else if(key==='p11') achievement('p11_done');
+ else if(key==='p12') achievement('p12_done');
else if(key==='final1') achievement('ch1_done');
}
}
@@ -364,10 +372,7 @@ function buildParaSelector(){
const BUILT=new Set();
const BUILDERS = { p1:()=>buildP1(), p2:()=>buildP2(), p3:()=>buildP3(), p4:()=>buildP4(),
p5:()=>buildP5(), p6:()=>buildP6(), p7:()=>buildP7(), p8:()=>buildP8(),
- p9:()=>buildStub('p9','§9 — Формулы приведения'),
- p10:()=>buildStub('p10','§10 — Синус, косинус, тангенс суммы и разности'),
- p11:()=>buildStub('p11','§11 — Формулы двойного аргумента'),
- p12:()=>buildStub('p12','§12 — Преобразование суммы в произведение'),
+ p9:()=>buildP9(), p10:()=>buildP10(), p11:()=>buildP11(), p12:()=>buildP12(),
final1:()=>buildStub('final1','Финал главы 1 — 6 боссов')
};
function ensureBuilt(id){ if(BUILT.has(id)) return; const fn=BUILDERS[id]; if(fn){ fn(); BUILT.add(id); } }
@@ -458,6 +463,43 @@ const SIDEBARS = {
['$\\cos x = 0$','$x = \\frac{\\pi}{2} + \\pi n$'],
['$\\cos x = 1$','$x = 2\\pi n$'],
]},
+ p9:{title:'Шпаргалка §9',rows:[
+ ['Шаг 1','Знак — по четверти исх. функции'],
+ ['Шаг 2','Имя меняется при $\\frac{\\pi}{2} \\pm \\alpha$, $\\frac{3\\pi}{2} \\pm \\alpha$'],
+ ['','Не меняется при $\\pi \\pm \\alpha$, $2\\pi \\pm \\alpha$'],
+ ['$\\sin(\\frac{\\pi}{2} - \\alpha)$','$= \\cos\\alpha$'],
+ ['$\\cos(\\frac{\\pi}{2} - \\alpha)$','$= \\sin\\alpha$'],
+ ['$\\sin(\\pi - \\alpha)$','$= \\sin\\alpha$'],
+ ['$\\cos(\\pi - \\alpha)$','$= -\\cos\\alpha$'],
+ ['$\\sin(\\pi + \\alpha)$','$= -\\sin\\alpha$'],
+ ['$\\cos(\\pi + \\alpha)$','$= -\\cos\\alpha$'],
+ ]},
+ p10:{title:'Шпаргалка §10',rows:[
+ ['$\\sin(\\alpha + \\beta)$','$= \\sin\\alpha\\cos\\beta + \\cos\\alpha\\sin\\beta$'],
+ ['$\\sin(\\alpha - \\beta)$','$= \\sin\\alpha\\cos\\beta - \\cos\\alpha\\sin\\beta$'],
+ ['$\\cos(\\alpha + \\beta)$','$= \\cos\\alpha\\cos\\beta - \\sin\\alpha\\sin\\beta$'],
+ ['$\\cos(\\alpha - \\beta)$','$= \\cos\\alpha\\cos\\beta + \\sin\\alpha\\sin\\beta$'],
+ ['$\\tg(\\alpha + \\beta)$','$= \\frac{\\tg\\alpha + \\tg\\beta}{1 - \\tg\\alpha\\tg\\beta}$'],
+ ['$\\tg(\\alpha - \\beta)$','$= \\frac{\\tg\\alpha - \\tg\\beta}{1 + \\tg\\alpha\\tg\\beta}$'],
+ ['Пример','$\\sin 75° = \\sin(45° + 30°)$'],
+ ]},
+ p11:{title:'Шпаргалка §11',rows:[
+ ['$\\sin 2\\alpha$','$= 2\\sin\\alpha\\cos\\alpha$'],
+ ['$\\cos 2\\alpha$','$= \\cos^2\\alpha - \\sin^2\\alpha$'],
+ ['','$= 1 - 2\\sin^2\\alpha$'],
+ ['','$= 2\\cos^2\\alpha - 1$'],
+ ['$\\tg 2\\alpha$','$= \\frac{2\\tg\\alpha}{1 - \\tg^2\\alpha}$'],
+ ['$\\sin^2\\alpha$','$= \\frac{1 - \\cos 2\\alpha}{2}$'],
+ ['$\\cos^2\\alpha$','$= \\frac{1 + \\cos 2\\alpha}{2}$'],
+ ]},
+ p12:{title:'Шпаргалка §12',rows:[
+ ['$\\sin\\alpha + \\sin\\beta$','$= 2\\sin\\frac{\\alpha+\\beta}{2}\\cos\\frac{\\alpha-\\beta}{2}$'],
+ ['$\\sin\\alpha - \\sin\\beta$','$= 2\\sin\\frac{\\alpha-\\beta}{2}\\cos\\frac{\\alpha+\\beta}{2}$'],
+ ['$\\cos\\alpha + \\cos\\beta$','$= 2\\cos\\frac{\\alpha+\\beta}{2}\\cos\\frac{\\alpha-\\beta}{2}$'],
+ ['$\\cos\\alpha - \\cos\\beta$','$= -2\\sin\\frac{\\alpha+\\beta}{2}\\sin\\frac{\\alpha-\\beta}{2}$'],
+ ['Польза','решение уравнений'],
+ ['Пример','$\\sin 3x + \\sin x$ → произведение'],
+ ]},
};
const TIPS=[
@@ -469,6 +511,10 @@ const TIPS=[
{sec:'p6',html:'tg x имеет вертикальные асимптоты в $\\frac{\\pi}{2} + \\pi n$ (там, где $\\cos x = 0$). ctg x — в $\\pi n$ (там, где $\\sin x = 0$). Период $\\pi$ , а не $2\\pi$ — это короче, чем у sin/cos.'},
{sec:'p7',html:'Главные значения: $\\arcsin$ и $\\arctg$ — от $-\\frac{\\pi}{2}$ до $\\frac{\\pi}{2}$ ; $\\arccos$ и $\\arcctg$ — от $0$ до $\\pi$ . Это всегда!'},
{sec:'p8',html:'Перед формулой проверь: $|a| > 1$ для sin и cos — корней НЕТ . Если $a = 0, \\pm 1$ — используй особые случаи , они проще общих формул.'},
+ {sec:'p9',html:'Шаг 1: знак в правой части — по знаку исходной функции в той четверти, куда попадает аргумент при остром $\\alpha$ . Шаг 2: имя меняется при $\\frac{\\pi}{2} \\pm \\alpha$ и $\\frac{3\\pi}{2} \\pm \\alpha$, не меняется при $\\pi \\pm \\alpha$ и $2\\pi \\pm \\alpha$.'},
+ {sec:'p10',html:'Запомнить помогает мнемоника: знаки повторяются в sin (sin·cos + cos·sin) и чередуются в cos (cos·cos − sin·sin). Для разности — наоборот.'},
+ {sec:'p11',html:'Три формы $\\cos 2\\alpha$ нужны для разных задач: $\\cos^2 - \\sin^2$ — для упрощения; $1 - 2\\sin^2$ — когда задан $\\sin\\alpha$; $2\\cos^2 - 1$ — когда задан $\\cos\\alpha$.'},
+ {sec:'p12',html:'4 формулы — все имеют вид «2 · функция полусуммы · функция полуразности». Знаки и тип функции в правой части смотри по таблице (или по правилу для каждой формулы).'},
];
function buildSidebar(id){
@@ -2242,6 +2288,538 @@ function buildP8(){
wireReadBtn('p8');
}
+/* ============================================================
+ § 9 — Формулы приведения
+ ============================================================ */
+function buildP9(){
+ const box = document.getElementById('p9-body');
+ const A = window.ALG10;
+ let html = '';
+
+ /* === SVG: единичная окружность со знаками по четвертям === */
+ let svgSigns = '';
+ if(A){
+ const c = A.tri.canvas({id:'p9-q', W:380, H:360, R:130});
+ let s = c.open
+ /* Заголовок */
+ + ' '
+ + 'ЗНАКИ ТРИГОНОМЕТРИЧЕСКИХ ФУНКЦИЙ ПО ЧЕТВЕРТЯМ '
+ + 'Шаг 1 правила приведения: какой знак ставить? '
+ + c.quadrant(1, {fill:'rgba(16,185,129,.16)'})
+ + c.quadrant(2, {fill:'rgba(245,158,11,.16)'})
+ + c.quadrant(3, {fill:'rgba(239,68,68,.13)'})
+ + c.quadrant(4, {fill:'rgba(124,58,237,.13)'})
+ + c.axes()
+ + c.circle({width:2.5})
+ + c.quadrantLabels()
+ /* Подписи знаков в каждой четверти */
+ /* I (правый верх) */
+ + 'sin + '
+ + 'cos + '
+ + 'tg, ctg + '
+ /* II (левый верх) */
+ + 'sin + '
+ + 'cos − '
+ + 'tg, ctg − '
+ /* III (левый низ) */
+ + 'sin − '
+ + 'cos − '
+ + 'tg, ctg + '
+ /* IV (правый низ) */
+ + 'sin − '
+ + 'cos + '
+ + 'tg, ctg − '
+ /* Пояснительная плашка снизу */
+ + ' '
+ + 'Запоминалка: tg и ctg положительны в I и III '
+ + '(там, где знаки sin и cos совпадают) '
+ + c.close;
+ svgSigns = s;
+ }
+
+ html += makeCard('theory', 'Зачем нужны формулы приведения', '9.1', `
+
Все таблицы значений тригонометрии — это значения для острых углов ($0;\\,\\frac{\\pi}{2}$).
+ Если в задаче встретился угол вроде $\\dfrac{3\\pi}{2} - \\alpha$ или $\\pi + \\alpha$, формулы приведения позволяют свести его к функции острого угла $\\alpha$.
+ ${svgSigns}
`);
+
+ html += makeCard('algo', 'Правило двух шагов', '9.2', `
+ Шаг 1. Знак. Поставь в правой части тот знак, который имеет исходная функция в той четверти, куда попадает аргумент, считая $\\alpha$ острым.
+ Шаг 2. Имя функции.
+
+ Если аргумент имеет вид $\\dfrac{\\pi}{2} \\pm \\alpha$ или $\\dfrac{3\\pi}{2} \\pm \\alpha$ — имя меняется (sin ↔ cos, tg ↔ ctg).
+ Если аргумент имеет вид $\\pi \\pm \\alpha$ или $2\\pi \\pm \\alpha$ — имя не меняется .
+
+ Пример. Применим правило к $\\cos\\left(\\dfrac{3\\pi}{2} - \\alpha\\right)$:
+
+ Если $\\alpha$ острый, то $\\dfrac{3\\pi}{2} - \\alpha$ попадает в III четверть . В ней $\\cos < 0$, значит ставим знак «минус» .
+ Аргумент имеет вид $\\dfrac{3\\pi}{2} - \\alpha$ — имя меняется : cos → sin.
+
+ Итог: $\\cos\\left(\\dfrac{3\\pi}{2} - \\alpha\\right) = -\\sin\\alpha$.
`);
+
+ html += makeCard('rule', 'Полная таблица формул приведения', '9.3', `
+
+
+
+ Аргумент
+ sin
+ cos
+ tg
+ ctg
+
+ $\\frac{\\pi}{2} - \\alpha$ $\\cos\\alpha$ $\\sin\\alpha$ $\\ctg\\alpha$ $\\tg\\alpha$
+ $\\frac{\\pi}{2} + \\alpha$ $\\cos\\alpha$ $-\\sin\\alpha$ $-\\ctg\\alpha$ $-\\tg\\alpha$
+ $\\pi - \\alpha$ $\\sin\\alpha$ $-\\cos\\alpha$ $-\\tg\\alpha$ $-\\ctg\\alpha$
+ $\\pi + \\alpha$ $-\\sin\\alpha$ $-\\cos\\alpha$ $\\tg\\alpha$ $\\ctg\\alpha$
+ $\\frac{3\\pi}{2} - \\alpha$ $-\\cos\\alpha$ $-\\sin\\alpha$ $\\ctg\\alpha$ $\\tg\\alpha$
+ $\\frac{3\\pi}{2} + \\alpha$ $-\\cos\\alpha$ $\\sin\\alpha$ $-\\ctg\\alpha$ $-\\tg\\alpha$
+ $2\\pi - \\alpha$ $-\\sin\\alpha$ $\\cos\\alpha$ $-\\tg\\alpha$ $-\\ctg\\alpha$
+
+
+ Учить таблицу наизусть необязательно — достаточно знать правило двух шагов и применять его.
`);
+
+ html += makeCard('example', 'Применение для вычисления', '9.4', `
+ Задача 1. Вычисли $\\sin 120°$.
+ $\\sin 120° = \\sin(180° - 60°) = \\sin 60° = \\dfrac{\\sqrt{3}}{2}$.
+ Здесь имя не менялось ($\\pi - \\alpha$), знак $+$ (II четверть, sin положителен).
+ Задача 2. Вычисли $\\cos 240°$.
+ $\\cos 240° = \\cos(180° + 60°) = -\\cos 60° = -\\dfrac{1}{2}$.
+ Имя не менялось ($\\pi + \\alpha$), знак $-$ (III четверть, cos отрицателен).
`);
+
+ /* === ИНТЕРАКТИВ 1: Приведи к острому === */
+ html += ''
+ +''
+ +'
Введи результат с правильным знаком. Например, $\\cos(\\pi - \\alpha) = -\\cos\\alpha$ — пиши «-cos a» или «-cosa».
'
+ +trainerHTML('p9-iv1', 8, 'результат')
+ +'
';
+
+ /* === ИНТЕРАКТИВ 2: Вычисли значение === */
+ html += ''
+ +''
+ +'
Сначала приведи к острому углу, затем подставь значение по таблице. Введи как дробь или десятичное число.
'
+ +trainerHTML('p9-iv2', 8, 'значение')
+ +'
';
+
+ /* === БОСС === */
+ html += 'Босс §9 — Формулы приведения ';
+ html += makeBoss('p9', {
+ color:'#0e7490',
+ title:'Босс §9 — Формулы приведения',
+ steps:[
+ { q:'$\\sin(\\pi - \\alpha) = ?$ (вид «sin a» или «-sin a»)', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='sina'||s==='sin(a)'||s==='sinα';}, hint:'$\\pi - \\alpha$: II четверть, $\\sin > 0$; имя не меняется.' },
+ { q:'$\\cos(\\frac{\\pi}{2} + \\alpha) = ?$ (имя меняется + знак)', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sina'||s==='-sin(a)'||s==='-sinα';}, hint:'II четверть, $\\cos < 0$; имя меняется cos → sin.' },
+ { q:'Вычисли $\\sin 150°$. Введи как дробь (1/2).', verify:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='1/2'||+v===0.5;}, hint:'$\\sin 150° = \\sin(180° - 30°) = \\sin 30° = 1/2$.' },
+ { q:'Вычисли $\\cos 210°$. Введи (-sqrt3/2).', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sqrt3/2'||s==='-√3/2'||Math.abs(+v - (-Math.sqrt(3)/2))<0.02;}, hint:'$\\cos 210° = \\cos(180° + 30°) = -\\cos 30° = -\\sqrt{3}/2$.' },
+ { q:'$\\tg(\\frac{3\\pi}{2} - \\alpha) = ?$ (3 варианта: ctg a, -ctg a, tg a)', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='ctga'||s==='ctg(a)'||s==='ctgα';}, hint:'III четверть, $\\tg > 0$; имя меняется tg → ctg.' },
+ ]
+ });
+
+ html += secNav('p8', 'p10') + readButton('p9');
+ box.innerHTML = html; renderMath(box);
+
+ /* IV1: приведение */
+ makeTrainer({
+ idPrefix:'p9-iv1',
+ parser:(v)=>v,
+ questions:[
+ { q:'$\\sin(\\pi + \\alpha) = ?$ (sin a или -sin a)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sina'||s==='-sin(a)'||s==='-sinα';}, show:'$-\\sin\\alpha$' },
+ { q:'$\\cos(2\\pi - \\alpha) = ?$', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='cosa'||s==='cos(a)'||s==='cosα';}, show:'$\\cos\\alpha$' },
+ { q:'$\\sin(\\frac{\\pi}{2} - \\alpha) = ?$ (имя меняется)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='cosa'||s==='cos(a)'||s==='cosα';}, show:'$\\cos\\alpha$' },
+ { q:'$\\cos(\\pi + \\alpha) = ?$', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-cosa'||s==='-cos(a)'||s==='-cosα';}, show:'$-\\cos\\alpha$' },
+ { q:'$\\tg(\\pi - \\alpha) = ?$', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-tga'||s==='-tg(a)'||s==='-tgα';}, show:'$-\\tg\\alpha$' },
+ { q:'$\\sin(\\frac{3\\pi}{2} + \\alpha) = ?$', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-cosa'||s==='-cos(a)'||s==='-cosα';}, show:'$-\\cos\\alpha$' },
+ { q:'$\\cos(\\frac{3\\pi}{2} - \\alpha) = ?$', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sina'||s==='-sin(a)'||s==='-sinα';}, show:'$-\\sin\\alpha$' },
+ { q:'$\\ctg(\\frac{\\pi}{2} + \\alpha) = ?$', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-tga'||s==='-tg(a)'||s==='-tgα';}, show:'$-\\tg\\alpha$' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(20,'p9-iv1');bumpProgress('p9',32);} else if(s>=5){addXp(10,'p9-iv1');bumpProgress('p9',15);} }
+ });
+
+ /* IV2: вычисли значение */
+ makeTrainer({
+ idPrefix:'p9-iv2',
+ parser:(v)=>v,
+ questions:[
+ { q:'$\\sin 120° = ?$ (введи sqrt3/2)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='sqrt3/2'||s==='√3/2'||Math.abs(+v - Math.sqrt(3)/2)<0.02;}, show:'$\\sqrt{3}/2$' },
+ { q:'$\\cos 150° = ?$ (введи -sqrt3/2)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sqrt3/2'||s==='-√3/2'||Math.abs(+v - (-Math.sqrt(3)/2))<0.02;}, show:'$-\\sqrt{3}/2$' },
+ { q:'$\\sin 225° = ?$ (-sqrt2/2)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sqrt2/2'||s==='-√2/2'||Math.abs(+v - (-Math.sqrt(2)/2))<0.02;}, show:'$-\\sqrt{2}/2$' },
+ { q:'$\\cos 300° = ?$ (1/2)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='1/2'||+v===0.5;}, show:'$1/2$' },
+ { q:'$\\tg 135° = ?$ (-1)', a:(v)=>+v===-1, show:'$-1$' },
+ { q:'$\\sin(-150°) = ?$ (-1/2)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='-1/2'||+v===-0.5;}, show:'$-1/2$' },
+ { q:'$\\cos 240° = ?$ (-1/2)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='-1/2'||+v===-0.5;}, show:'$-1/2$' },
+ { q:'$\\sin\\frac{5\\pi}{6} = ?$ (1/2)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='1/2'||+v===0.5;}, show:'$1/2$' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(20,'p9-iv2');bumpProgress('p9',32);} else if(s>=5){addXp(10,'p9-iv2');bumpProgress('p9',15);} }
+ });
+
+ wireReadBtn('p9');
+}
+
+/* ============================================================
+ § 10 — Синус, косинус, тангенс суммы и разности
+ ============================================================ */
+function buildP10(){
+ const box = document.getElementById('p10-body');
+ let html = '';
+
+ /* === SVG: красивая плашка с 8 формулами === */
+ const svgFormulas =
+ ''
+ + ' '
+ + '8 ФОРМУЛ СЛОЖЕНИЯ И ВЫЧИТАНИЯ УГЛОВ '
+ + 'учат наизусть — это база для всей старшей тригонометрии '
+ /* Колонка 1: sin/cos */
+ + 'sin(α + β) = sinα·cosβ + cosα·sinβ '
+ + 'sin(α − β) = sinα·cosβ − cosα·sinβ '
+ + 'cos(α + β) = cosα·cosβ − sinα·sinβ '
+ + 'cos(α − β) = cosα·cosβ + sinα·sinβ '
+ /* tg отдельно */
+ + ' '
+ + 'ТАНГЕНСЫ '
+ + 'tg(α + β) = (tgα + tgβ) / (1 − tgα·tgβ) '
+ + 'tg(α − β) = (tgα − tgβ) / (1 + tgα·tgβ) '
+ + ' ';
+
+ html += makeCard('rule', 'Формулы синуса и косинуса суммы/разности', '10.1', `
+ Сложение углов в тригонометрии — это четыре формулы. Их нужно знать наизусть.
+ ${svgFormulas}
+ Мнемоника:
+
+ В формулах для sin — знаки совпадают: $+ \\Rightarrow +$, $- \\Rightarrow -$.
+ В формулах для cos — знаки чередуются: $+ \\Rightarrow -$, $- \\Rightarrow +$.
+ В обеих формулах sin — структура «sin·cos + cos·sin»; в cos — «cos·cos $\\mp$ sin·sin».
+ `);
+
+ html += makeCard('rule', 'Формулы тангенса', '10.2', `
+ Тангенс суммы и разности выводятся делением sin на cos:
+ $\\tg(\\alpha + \\beta) = \\dfrac{\\tg\\alpha + \\tg\\beta}{1 - \\tg\\alpha \\tg\\beta}$
+ $\\tg(\\alpha - \\beta) = \\dfrac{\\tg\\alpha - \\tg\\beta}{1 + \\tg\\alpha \\tg\\beta}$
+ ОДЗ: $\\tg\\alpha$, $\\tg\\beta$ существуют, и знаменатель $\\ne 0$.
`);
+
+ html += makeCard('example', 'Применение для нестандартных углов', '10.3', `
+ Многие «неудобные» углы — это суммы или разности из таблицы:
+
+ $75° = 45° + 30°$
+ $15° = 45° - 30°$
+ $105° = 60° + 45°$
+
+ Пример. Вычисли $\\sin 75°$.
+ $\\sin 75° = \\sin(45° + 30°) = \\sin 45° \\cos 30° + \\cos 45° \\sin 30°$
+ $= \\dfrac{\\sqrt{2}}{2} \\cdot \\dfrac{\\sqrt{3}}{2} + \\dfrac{\\sqrt{2}}{2} \\cdot \\dfrac{1}{2} = \\dfrac{\\sqrt{6}}{4} + \\dfrac{\\sqrt{2}}{4} = \\dfrac{\\sqrt{6} + \\sqrt{2}}{4}$.
`);
+
+ html += makeCard('theory', 'Доказательство для cos(α − β)', '10.4', `
+ Развернуть классическое доказательство
+
+
Рассмотрим на единичной окружности точки $P_\\alpha = (\\cos\\alpha;\\sin\\alpha)$ и $P_\\beta = (\\cos\\beta;\\sin\\beta)$.
+
Квадрат расстояния между ними: $|P_\\alpha P_\\beta|^2 = (\\cos\\alpha - \\cos\\beta)^2 + (\\sin\\alpha - \\sin\\beta)^2 =$ $2 - 2(\\cos\\alpha\\cos\\beta + \\sin\\alpha\\sin\\beta)$.
+
С другой стороны, по теореме косинусов для треугольника $OP_\\alpha P_\\beta$ ($OP_\\alpha = OP_\\beta = 1$, угол между ними $\\alpha - \\beta$):
+
$|P_\\alpha P_\\beta|^2 = 1 + 1 - 2\\cos(\\alpha - \\beta) = 2 - 2\\cos(\\alpha - \\beta)$.
+
Приравниваем правые части и сокращаем: $\\cos(\\alpha - \\beta) = \\cos\\alpha\\cos\\beta + \\sin\\alpha\\sin\\beta$. ■
+
Остальные формулы выводятся отсюда заменой $\\beta \\to -\\beta$ и формулами приведения.
+
`);
+
+ /* === ИНТЕРАКТИВ 1: Вычисли нестандартный угол === */
+ html += ''
+ +''
+ +'
Разложи угол на сумму/разность табличных и применяй формулы сложения.
'
+ +trainerHTML('p10-iv1', 6, 'значение')
+ +'
';
+
+ /* === ИНТЕРАКТИВ 2: Упрости === */
+ html += ''
+ +''
+ +'
Используй формулы для свёртки выражения.
'
+ +trainerHTML('p10-iv2', 5, 'результат')
+ +'
';
+
+ /* === БОСС === */
+ html += 'Босс §10 — Сумма и разность углов ';
+ html += makeBoss('p10', {
+ color:'#0d9488',
+ title:'Босс §10 — Сумма и разность',
+ steps:[
+ { q:'Чему равно $\\sin(\\alpha + \\beta) - \\sin(\\alpha - \\beta)$? Введи в виде "2sinX·cosY", т.е. цифру (коэффициент перед $\\cos\\alpha\\sin\\beta$).', verify:(v)=>+v===2, hint:'Раскрой обе формулы — выживет $2\\cos\\alpha\\sin\\beta$.' },
+ { q:'Вычисли $\\cos 15° = \\dfrac{\\sqrt{6}+\\sqrt{2}}{?}$. Чему равен знаменатель?', verify:(v)=>+v===4, hint:'$\\cos 15° = \\cos(45° - 30°) = \\frac{\\sqrt{6}+\\sqrt{2}}{4}$.' },
+ { q:'Если $\\sin\\alpha = 3/5$ (I четв.), найди $\\sin(\\alpha + \\frac{\\pi}{2})$. (Введи дробь например 4/5)', verify:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='4/5'||+v===0.8;}, hint:'$\\sin(\\alpha + \\pi/2) = \\cos\\alpha = 4/5$.' },
+ { q:'$\\sin(\\alpha + \\pi) = ?$ Введи: «sin a», «-sin a», «cos a», «-cos a».', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='-sina'||s==='-sin(a)'||s==='-sinα';}, hint:'По формуле или приведению: $-\\sin\\alpha$.' },
+ { q:'$\\tg(45° + 45°) = ?$ (Введи число, $\\infty$ напиши как 9999)', verify:(v)=>+v===9999, hint:'$\\tg 90°$ не существует ($\\to \\infty$).' },
+ ]
+ });
+
+ html += secNav('p9', 'p11') + readButton('p10');
+ box.innerHTML = html; renderMath(box);
+
+ /* IV1 */
+ makeTrainer({
+ idPrefix:'p10-iv1',
+ parser:(v)=>v,
+ questions:[
+ { q:'$\\sin 75° = \\dfrac{\\sqrt{6}+\\sqrt{2}}{?}$. Знаменатель?', a:(v)=>+v===4, show:'$4$' },
+ { q:'$\\cos 75° = \\dfrac{\\sqrt{6}-\\sqrt{2}}{?}$. Знаменатель?', a:(v)=>+v===4, show:'$4$' },
+ { q:'$\\sin(45° + 45°) = ?$', a:(v)=>+v===1, show:'$1$' },
+ { q:'$\\cos(60° - 60°) = ?$', a:(v)=>+v===1, show:'$1$' },
+ { q:'$\\sin 30° \\cos 30° + \\cos 30° \\sin 30° = ?$ (используй формулу sin($60°$))', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='sqrt3/2'||s==='√3/2'||Math.abs(+v - Math.sqrt(3)/2)<0.02;}, show:'$\\sin 60° = \\sqrt{3}/2$' },
+ { q:'$\\cos(\\alpha + \\beta) + \\cos(\\alpha - \\beta) = ?$ (как 2cos·cos: введи 2cosα·cosβ — целое число коэф.)', a:(v)=>+v===2, show:'$2\\cos\\alpha\\cos\\beta$ — коэф. 2' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(18,'p10-iv1');bumpProgress('p10',32);} else if(s>=3){addXp(9,'p10-iv1');bumpProgress('p10',14);} }
+ });
+
+ /* IV2 */
+ makeTrainer({
+ idPrefix:'p10-iv2',
+ parser:(v)=>v,
+ questions:[
+ { q:'Если $\\sin\\alpha = 3/5$ ($\\alpha$ в I четв.), то $\\sin(\\alpha + \\pi/6) = ?$ (введи (3sqrt3+4)/10)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='(3sqrt3+4)/10'||Math.abs(+v - (3*Math.sqrt(3)+4)/10)<0.02;}, show:'$(3\\sqrt{3}+4)/10$' },
+ { q:'$\\tg(45° + 30°) = ?$ (введи (sqrt3+1)/(sqrt3-1) или 2+sqrt3)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='2+sqrt3'||s==='2+√3'||Math.abs(+v - (2+Math.sqrt(3)))<0.02;}, show:'$2+\\sqrt{3}$' },
+ { q:'$\\sin(\\alpha + \\beta)\\cos\\beta - \\cos(\\alpha + \\beta)\\sin\\beta = ?$ Введи как «sin a» (сократись по обратной формуле!)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='sina'||s==='sin(a)'||s==='sinα';}, show:'$\\sin\\alpha$' },
+ { q:'$\\cos 50° \\cos 10° + \\sin 50° \\sin 10° = ?$ (введи как cos40 или 0.766)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='cos40'||Math.abs(+v - Math.cos(40*Math.PI/180))<0.02;}, show:'$\\cos 40°$' },
+ { q:'$\\sin 105° = \\dfrac{\\sqrt{6}+\\sqrt{2}}{?}$. Знаменатель?', a:(v)=>+v===4, show:'$4$ ($\\sin 105° = \\sin 75°$, потому что $105° = 180° - 75°$)' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(18,'p10-iv2');bumpProgress('p10',32);} else if(s>=3){addXp(9,'p10-iv2');bumpProgress('p10',14);} }
+ });
+
+ wireReadBtn('p10');
+}
+
+/* ============================================================
+ § 11 — Формулы двойного аргумента
+ ============================================================ */
+function buildP11(){
+ const box = document.getElementById('p11-body');
+ const A = window.ALG10;
+ let html = '';
+
+ /* === SVG: α и 2α на единичной окружности === */
+ let svgDouble = '';
+ if(A){
+ const c = A.tri.canvas({id:'p11-d', W:360, H:380, R:120});
+ const ang = 35 * Math.PI / 180; /* α = 35° */
+ const ang2 = 2 * ang; /* 2α = 70° */
+ let s = c.open
+ + ' '
+ + 'УГОЛ α И ДВОЙНОЙ УГОЛ 2α '
+ + 'Пример: α = 35°, 2α = 70° '
+ + c.axes()
+ + c.circle({width:2.5})
+ /* Сектор α */
+ + ' '
+ + 'α '
+ /* Сектор 2α (поверх) */
+ + ' '
+ + '2α '
+ + c.radius(ang, {color:'#0d9488', width:2.5})
+ + c.radius(ang2, {color:'#7c3aed', width:2.5})
+ + c.point(ang, {color:'#0d9488', label:'P_α', labelOffset:20, fontSize:12, labelColor:'#0f766e'})
+ + c.point(ang2, {color:'#7c3aed', label:'P_{2α}', labelOffset:20, fontSize:12, labelColor:'#6d28d9'})
+ + ' '
+ + 'sin 2α = 2 sin α · cos α '
+ + 'cos 2α = cos²α − sin²α = 1 − 2sin²α = 2cos²α − 1 '
+ + c.close;
+ svgDouble = s;
+ }
+
+ html += makeCard('rule', 'Формулы двойного аргумента', '11.1', `
+ Это частный случай формул сложения при $\\beta = \\alpha$:
+ $\\sin 2\\alpha = 2\\sin\\alpha\\cos\\alpha$
+ $\\cos 2\\alpha = \\cos^2\\alpha - \\sin^2\\alpha$
+ $\\tg 2\\alpha = \\dfrac{2\\tg\\alpha}{1 - \\tg^2\\alpha}$
+ ${svgDouble}
+ Вывод. $\\sin 2\\alpha = \\sin(\\alpha + \\alpha) = \\sin\\alpha\\cos\\alpha + \\cos\\alpha\\sin\\alpha = 2\\sin\\alpha\\cos\\alpha$.
`);
+
+ html += makeCard('rule', 'Три формы для cos 2α', '11.2', `
+ Используя $\\sin^2\\alpha + \\cos^2\\alpha = 1$, переписываем по-разному:
+ $\\cos 2\\alpha = \\cos^2\\alpha - \\sin^2\\alpha$
+ $\\cos 2\\alpha = 1 - 2\\sin^2\\alpha$
+ $\\cos 2\\alpha = 2\\cos^2\\alpha - 1$
+ Когда какую использовать:
+
+ Если дано $\\sin\\alpha$ — бери $1 - 2\\sin^2\\alpha$ .
+ Если дано $\\cos\\alpha$ — бери $2\\cos^2\\alpha - 1$ .
+ Для упрощения выражений (например, разложения на множители) — бери $\\cos^2 - \\sin^2$ .
+ `);
+
+ html += makeCard('rule', 'Формулы понижения степени', '11.3', `
+ Из формул для cos 2α выражаем sin² и cos²:
+ $\\sin^2\\alpha = \\dfrac{1 - \\cos 2\\alpha}{2}$
+ $\\cos^2\\alpha = \\dfrac{1 + \\cos 2\\alpha}{2}$
+ Это нужно, когда мы хотим избавиться от квадратов синуса/косинуса (например, в интегралах или для упрощения).
`);
+
+ html += makeCard('example', 'Применение', '11.4', `
+ Задача 1. $\\sin\\alpha = \\dfrac{3}{5}$, $\\alpha$ в I четверти. Найди $\\sin 2\\alpha$ и $\\cos 2\\alpha$.
+ $\\cos\\alpha = \\sqrt{1 - 9/25} = \\dfrac{4}{5}$.
+ $\\sin 2\\alpha = 2 \\cdot \\dfrac{3}{5} \\cdot \\dfrac{4}{5} = \\dfrac{24}{25}$.
+ $\\cos 2\\alpha = 1 - 2 \\cdot \\dfrac{9}{25} = 1 - \\dfrac{18}{25} = \\dfrac{7}{25}$.
+ Задача 2. Упрости $\\sin 4x - \\sin 2x$, заменив $\\sin 4x$ через $\\sin 2 \\cdot 2x$.
+ $\\sin 4x = 2\\sin 2x\\cos 2x$, тогда $\\sin 4x - \\sin 2x = \\sin 2x(2\\cos 2x - 1)$.
`);
+
+ /* === ИНТЕРАКТИВ 1: Вычисли по данной cos α === */
+ html += ''
+ +''
+ +'
Дано: один из sin α / cos α + четверть. Найди указанную величину.
'
+ +trainerHTML('p11-iv1', 6, 'дробь')
+ +'
';
+
+ /* === ИНТЕРАКТИВ 2: Упрости === */
+ html += ''
+ +''
+ +'
Свёртывай или раскрывай 2α там, где удобно.
'
+ +trainerHTML('p11-iv2', 5, 'результат')
+ +'
';
+
+ /* === БОСС === */
+ html += 'Босс §11 — Двойной аргумент ';
+ html += makeBoss('p11', {
+ color:'#0f766e',
+ title:'Босс §11 — Двойной аргумент',
+ steps:[
+ { q:'Чему равно $2\\sin 15° \\cos 15°$? (Введи дробь как 1/2)', verify:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='1/2'||+v===0.5;}, hint:'Это $\\sin 30° = 1/2$.' },
+ { q:'Если $\\sin\\alpha = 0{,}6$, найди $\\cos 2\\alpha$. (введи 0.28)', verify:(v)=>Math.abs(+v - 0.28)<0.01, hint:'$\\cos 2\\alpha = 1 - 2(0.6)^2 = 1 - 0.72 = 0.28$.' },
+ { q:'Сколько решений у $\\sin 2x = 0$ на $[0;\\,\\pi]$?', verify:(v)=>+v===3, hint:'$2x = \\pi n$ ⇒ $x = 0, \\pi/2, \\pi$ — 3 значения.' },
+ { q:'Чему равно $\\dfrac{1 - \\cos 2\\alpha}{2}$? Введи слово: «sin²» или «cos²».', verify:(v)=>{const s=String(v).replace(/[\\s²]/g,'').toLowerCase(); return s==='sin2'||s==='sin';}, hint:'Формула понижения для $\\sin^2$.' },
+ { q:'Если $\\cos\\alpha = -4/5$, $\\alpha$ во II четв., найди $\\sin 2\\alpha$ (введи как -24/25 или -0.96)', verify:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='-24/25'||Math.abs(+v - (-0.96))<0.01;}, hint:'$\\sin\\alpha = 3/5$ (sin > 0 во II четв.), $\\sin 2\\alpha = 2 \\cdot 3/5 \\cdot (-4/5) = -24/25$.' },
+ ]
+ });
+
+ html += secNav('p10', 'p12') + readButton('p11');
+ box.innerHTML = html; renderMath(box);
+
+ /* IV1 */
+ makeTrainer({
+ idPrefix:'p11-iv1',
+ parser:(v)=>v,
+ questions:[
+ { q:'$\\sin\\alpha = 3/5$, $\\alpha$ в I четв. Найди $\\sin 2\\alpha$.', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='24/25'||+v===0.96;}, show:'$24/25 = 0{,}96$' },
+ { q:'$\\sin\\alpha = 3/5$, $\\alpha$ в I четв. Найди $\\cos 2\\alpha$.', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='7/25'||+v===0.28;}, show:'$7/25 = 0{,}28$' },
+ { q:'$\\cos\\alpha = 3/5$, $\\alpha$ в I четв. Найди $\\cos 2\\alpha$.', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='-7/25'||+v===-0.28;}, show:'$-7/25 = -0{,}28$' },
+ { q:'$\\sin\\alpha = -1/3$, $\\alpha$ в III четв. Найди $\\cos 2\\alpha$ (введи 7/9)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='7/9'||Math.abs(+v - 7/9)<0.01;}, show:'$7/9$' },
+ { q:'$\\tg\\alpha = 2$. Найди $\\tg 2\\alpha$ (введи -4/3)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='-4/3'||Math.abs(+v - (-4/3))<0.02;}, show:'$-4/3$' },
+ { q:'$\\sin\\alpha = 0{,}8$, $\\alpha$ во II четв. Найди $\\sin 2\\alpha$ (-0.96)', a:(v)=>Math.abs(+v - (-0.96))<0.02, show:'$-0{,}96$' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(20,'p11-iv1');bumpProgress('p11',32);} else if(s>=4){addXp(10,'p11-iv1');bumpProgress('p11',15);} }
+ });
+
+ /* IV2 */
+ makeTrainer({
+ idPrefix:'p11-iv2',
+ parser:(v)=>v,
+ questions:[
+ { q:'Чему равно $2\\sin 22{,}5° \\cos 22{,}5°$? (введи sqrt2/2 или 0.71)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='sqrt2/2'||s==='√2/2'||Math.abs(+v - Math.sqrt(2)/2)<0.02;}, show:'$\\sqrt{2}/2$ ($\\sin 45°$)' },
+ { q:'$1 - 2\\sin^2 15° = ?$ (введи sqrt3/2)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='sqrt3/2'||s==='√3/2'||Math.abs(+v - Math.sqrt(3)/2)<0.02;}, show:'$\\sqrt{3}/2$ ($\\cos 30°$)' },
+ { q:'$\\dfrac{\\sin 2\\alpha}{2\\sin\\alpha} = ?$ Введи как «cos a».', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='cosa'||s==='cos(a)'||s==='cosα';}, show:'$\\cos\\alpha$' },
+ { q:'$\\cos^2 30° - \\sin^2 30° = ?$ (введи 1/2)', a:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='1/2'||+v===0.5;}, show:'$1/2$ ($\\cos 60° = 1/2$)' },
+ { q:'$\\sin 100°\\cos 10° + \\cos 100°\\sin 10° = \\sin ?°$. Чему равен угол?', a:(v)=>+v===110, show:'$110°$ ($\\sin 110°$)' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(18,'p11-iv2');bumpProgress('p11',30);} else if(s>=3){addXp(9,'p11-iv2');bumpProgress('p11',14);} }
+ });
+
+ wireReadBtn('p11');
+}
+
+/* ============================================================
+ § 12 — Преобразование суммы (разности) в произведение
+ ============================================================ */
+function buildP12(){
+ const box = document.getElementById('p12-body');
+ let html = '';
+
+ const svgFormulas =
+ ''
+ + ' '
+ + '4 ФОРМУЛЫ: СУММА → ПРОИЗВЕДЕНИЕ '
+ + 'структура: 2 · функция полусуммы · функция полуразности '
+ + 'sin α + sin β = 2 · sin((α+β)/2) · cos((α−β)/2) '
+ + 'sin α − sin β = 2 · sin((α−β)/2) · cos((α+β)/2) '
+ + 'cos α + cos β = 2 · cos((α+β)/2) · cos((α−β)/2) '
+ + 'cos α − cos β = −2 · sin((α+β)/2) · sin((α−β)/2) '
+ + ' '
+ + 'МНЕМОНИКА '
+ + '• sin±sin → sin·cos (порядок «полусуммы / полуразности» зависит от знака) '
+ + '• cos+cos → cos·cos, cos−cos → −sin·sin (минус снаружи!) '
+ + ' ';
+
+ html += makeCard('rule', '4 формулы преобразования', '12.1', `
+ Эти формулы превращают сумму (или разность) тригонометрических функций в произведение .
+ ${svgFormulas}
+ Они полезны для:
+
+ Решения уравнений вида $\\sin 3x + \\sin x = 0$ — разложение на множители.
+ Упрощения выражений и доказательства тождеств.
+ Численного вычисления некоторых углов.
+ `);
+
+ html += makeCard('example', 'Применение для уравнения', '12.2', `
+ Решим $\\sin 3x + \\sin x = 0$.
+ $\\sin 3x + \\sin x = 2\\sin\\dfrac{3x + x}{2} \\cos\\dfrac{3x - x}{2} = 2\\sin 2x \\cos x$.
+ Получили $2\\sin 2x \\cos x = 0$ ⇒ $\\sin 2x = 0$ или $\\cos x = 0$.
+
+ $\\sin 2x = 0$ ⇒ $x = \\dfrac{\\pi n}{2}$.
+ $\\cos x = 0$ ⇒ $x = \\dfrac{\\pi}{2} + \\pi n$.
+
+ Заметим: вторая серия — частный случай первой ($n = 2k+1$), поэтому общее решение: $x = \\dfrac{\\pi n}{2}$, $n \\in \\mathbb{Z}$.
`);
+
+ html += makeCard('example', 'Применение для упрощения', '12.3', `
+ Упрости $\\dfrac{\\sin 5x + \\sin 3x}{\\cos 5x + \\cos 3x}$.
+ Числитель: $\\sin 5x + \\sin 3x = 2\\sin 4x \\cos x$.
+ Знаменатель: $\\cos 5x + \\cos 3x = 2\\cos 4x \\cos x$.
+ $\\dfrac{2\\sin 4x \\cos x}{2\\cos 4x \\cos x} = \\dfrac{\\sin 4x}{\\cos 4x} = \\tg 4x$.
`);
+
+ /* === ИНТЕРАКТИВ 1: преобразуй === */
+ html += ''
+ +''
+ +'
Введи результат в виде «2sinX·cosY» — числа X и Y (углы или функции от x).
'
+ +trainerHTML('p12-iv1', 5, 'результат')
+ +'
';
+
+ /* === ИНТЕРАКТИВ 2: реши уравнение === */
+ html += ''
+ +''
+ +'
Преобразуй сумму/разность в произведение и реши.
'
+ +trainerHTML('p12-iv2', 4, 'число корней')
+ +'
';
+
+ /* === БОСС === */
+ html += 'Босс §12 — Сумма → произведение ';
+ html += makeBoss('p12', {
+ color:'#7c3aed',
+ title:'Босс §12 — Сумма в произведение',
+ steps:[
+ { q:'$\\sin 30° + \\sin 90° = 2\\sin 60° \\cos 30° = ?$ (введи 3/2)', verify:(v)=>{const s=String(v).replace(/\\s/g,''); return s==='3/2'||+v===1.5;}, hint:'$2 \\cdot \\frac{\\sqrt{3}}{2} \\cdot \\frac{\\sqrt{3}}{2} = \\frac{3}{2}$.' },
+ { q:'Сколько корней у $\\sin 3x + \\sin x = 0$ на $[0;\\,2\\pi)$?', verify:(v)=>+v===4, hint:'$2\\sin 2x \\cos x = 0$. $\\sin 2x = 0$: 0, π/2, π, 3π/2 (4 шт). $\\cos x = 0$: π/2, 3π/2 — уже учтены. Итого 4.' },
+ { q:'Чему равно $\\dfrac{\\sin 5x + \\sin x}{\\cos 5x + \\cos x}$? Введи как «tg X», где X = коэффициент при x.', verify:(v)=>+v===3, hint:'$\\frac{2\\sin 3x \\cos 2x}{2\\cos 3x \\cos 2x} = \\tg 3x$.' },
+ { q:'$\\cos 80° + \\cos 20° = 2\\cos 50° \\cos 30°$. Чему равно $\\cos 50° \\cdot \\dfrac{\\sqrt{3}}{?}$? (введи 1)', verify:(v)=>+v===1, hint:'$\\cos 80° + \\cos 20° = 2\\cos 50° \\cdot \\frac{\\sqrt{3}}{2} = \\sqrt{3}\\cos 50°$. То есть с коэф. $\\sqrt{3}/1$.' },
+ ]
+ });
+
+ html += secNav('p11', 'final1') + readButton('p12');
+ box.innerHTML = html; renderMath(box);
+
+ /* IV1 */
+ makeTrainer({
+ idPrefix:'p12-iv1',
+ parser:(v)=>v,
+ questions:[
+ { q:'$\\sin 80° + \\sin 40° = 2\\sin 60° \\cos ?°$. Введи угол.', a:(v)=>+v===20, show:'$20°$' },
+ { q:'$\\sin 50° - \\sin 20° = 2\\sin 15° \\cos ?°$. Введи угол.', a:(v)=>+v===35, show:'$35°$' },
+ { q:'$\\cos 70° + \\cos 10° = 2\\cos ?° \\cos 30°$. Введи угол.', a:(v)=>+v===40, show:'$40°$' },
+ { q:'$\\sin 3x + \\sin x = 2\\sin ?x \\cos x$. Введи коэф.', a:(v)=>+v===2, show:'$2$ ($2\\sin 2x \\cos x$)' },
+ { q:'$\\cos 5x - \\cos x = -2\\sin 3x \\sin ?x$. Введи коэф.', a:(v)=>+v===2, show:'$2$ ($-2\\sin 3x \\sin 2x$)' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(18,'p12-iv1');bumpProgress('p12',32);} else if(s>=3){addXp(9,'p12-iv1');bumpProgress('p12',14);} }
+ });
+
+ /* IV2 */
+ makeTrainer({
+ idPrefix:'p12-iv2',
+ questions:[
+ { q:'Сколько корней у $\\sin 2x + \\sin 4x = 0$ на $[0;\\,\\pi)$?', a:3, show:'3 ($2\\sin 3x \\cos x = 0$: $\\sin 3x = 0$ ⇒ 0, π/3, 2π/3; $\\cos x = 0$ ⇒ π/2)' },
+ { q:'Сколько корней у $\\cos x - \\cos 3x = 0$ на $[0;\\,2\\pi)$?', a:4, show:'4 ($2\\sin 2x \\sin x = 0$: $\\sin 2x = 0$ ⇒ 0, π/2, π, 3π/2 (4 шт); $\\sin x = 0$ ⇒ уже учтено)' },
+ { q:'Сколько корней у $\\sin x + \\cos x = 0$ на $[0;\\,2\\pi)$? (используй $\\cos x = \\sin(\\pi/2 - x)$)', a:2, show:'2 ($\\tg x = -1$ ⇒ $x = 3\\pi/4, 7\\pi/4$)' },
+ { q:'Сколько корней у $\\sin 5x = \\sin x$ на $[0;\\,\\pi)$?', a:5, show:'5 (через $\\sin 5x - \\sin x = 0$ ⇒ $2\\sin 2x \\cos 3x = 0$, серии комбинируются)' },
+ ],
+ onComplete:(s,n)=>{ if(s===n){addXp(20,'p12-iv2');bumpProgress('p12',35);} else if(s>=2){addXp(10,'p12-iv2');bumpProgress('p12',16);} }
+ });
+
+ wireReadBtn('p12');
+}
+