feat(alg10 W3): §8 главы 1 (тригонометрические уравнения)

Самый большой параграф главы 1:

§8 Тригонометрические уравнения:

Карточки теории (8 шт):
- 8.1 Зачем геометрия — мотивация
- 8.2 sin x = a (геометрия + объединённая формула (-1)^n)
- 8.3 cos x = a (геометрия + ±arccos)
- 8.4 tg x = a (через ось тангенсов)
- 8.5 Особые случаи (a = 0, ±1) — полная таблица
- 8.6 Метод замены переменной
- 8.7 Метод разложения на множители
- 8.8 Однородные уравнения 1-й и 2-й степени

SVG (через ALG10.tri.canvas):
- sin x = a: окружность + горизонтальная линия y=a + 2 точки
- cos x = a: окружность + вертикальная линия x=a + 2 точки
- tg x = a: окружность + ось тангенсов + точка A_a + прямая через O

Интерактивы:
- ИВ1: 10 простейших уравнений (sin/cos/tg = a)
- ИВ2: 6 заданий 'сколько корней в промежутке'
- ИВ3: 5 заданий на замену переменной (квадратные относительно sin/cos)

Босс §8 — 6 этапов:
- 1: проверка |a|>1 → нет корней
- 2: подсчёт корней в [0;2π]
- 3: простейшее cos x = -1
- 4: квадратное относительно cos
- 5: проверка подстановкой
- 6: tg x = 1 → серия π/4 + πn

Обновлены ACH_LABELS (+p8_done), bumpProgress, SIDEBAR §8
(10 строк с формулами и особыми случаями), TIP §8.

Файл вырос со 141 KB до 160 KB (1888 → 2189 строк).
This commit is contained in:
Maxim Dolgolyov
2026-05-29 11:07:03 +03:00
parent cfcb233b6c
commit e63c05cc34
+250 -2
View File
@@ -255,6 +255,7 @@ const ACH_LABELS = {
p5_done:'Графики sin x и cos x — мастер!',
p6_done:'Графики tg x и ctg x — знаешь!',
p7_done:'Обратные тригонометрические — освоены!',
p8_done:'Тригонометрические уравнения — решаешь!',
ch1_done:'Глава 1 — Тригонометрия пройдена!',
};
@@ -285,6 +286,7 @@ function bumpProgress(key, delta){
else if(key==='p5') achievement('p5_done');
else if(key==='p6') achievement('p6_done');
else if(key==='p7') achievement('p7_done');
else if(key==='p8') achievement('p8_done');
else if(key==='final1') achievement('ch1_done');
}
}
@@ -361,8 +363,7 @@ function buildParaSelector(){
const BUILT=new Set();
const BUILDERS = { p1:()=>buildP1(), p2:()=>buildP2(), p3:()=>buildP3(), p4:()=>buildP4(),
p5:()=>buildP5(), p6:()=>buildP6(), p7:()=>buildP7(),
p8:()=>buildStub('p8','§8 — Тригонометрические уравнения'),
p5:()=>buildP5(), p6:()=>buildP6(), p7:()=>buildP7(), p8:()=>buildP8(),
p9:()=>buildStub('p9','§9 — Формулы приведения'),
p10:()=>buildStub('p10','§10 — Синус, косинус, тангенс суммы и разности'),
p11:()=>buildStub('p11','§11 — Формулы двойного аргумента'),
@@ -445,6 +446,18 @@ const SIDEBARS = {
['Нечётные','$\\arcsin(-a) = -\\arcsin a$, $\\arctg$'],
['Не нечётные','$\\arccos(-a) = \\pi - \\arccos a$'],
]},
p8:{title:'Шпаргалка §8',rows:[
['$\\sin x = a$','$x = (-1)^n\\arcsin a + \\pi n$'],
['','при $|a| > 1$ — нет корней'],
['$\\cos x = a$','$x = \\pm\\arccos a + 2\\pi n$'],
['','при $|a| > 1$ — нет корней'],
['$\\tg x = a$','$x = \\arctg a + \\pi n$'],
['$\\ctg x = a$','$x = \\arcctg a + \\pi n$'],
['$\\sin x = 0$','$x = \\pi n$'],
['$\\sin x = 1$','$x = \\frac{\\pi}{2} + 2\\pi n$'],
['$\\cos x = 0$','$x = \\frac{\\pi}{2} + \\pi n$'],
['$\\cos x = 1$','$x = 2\\pi n$'],
]},
};
const TIPS=[
@@ -455,6 +468,7 @@ const TIPS=[
{sec:'p5',html:'$\\cos x$ — это $\\sin x$, сдвинутый <b>влево на $\\frac{\\pi}{2}$</b>. Графики выглядят одинаково, но смещены: где у sin ноль — у cos максимум, и наоборот.'},
{sec:'p6',html:'<b>tg x</b> имеет вертикальные асимптоты в $\\frac{\\pi}{2} + \\pi n$ (там, где $\\cos x = 0$). <b>ctg x</b> — в $\\pi n$ (там, где $\\sin x = 0$). Период <b>$\\pi$</b>, а не $2\\pi$ — это короче, чем у sin/cos.'},
{sec:'p7',html:'Главные значения: $\\arcsin$ и $\\arctg$ — <b>от $-\\frac{\\pi}{2}$ до $\\frac{\\pi}{2}$</b>; $\\arccos$ и $\\arcctg$ — <b>от $0$ до $\\pi$</b>. Это всегда!'},
{sec:'p8',html:'Перед формулой проверь: <b>$|a| > 1$ для sin и cos — корней НЕТ</b>. Если $a = 0, \\pm 1$ — используй <b>особые случаи</b>, они проще общих формул.'},
];
function buildSidebar(id){
@@ -1929,6 +1943,240 @@ function buildP7(){
wireReadBtn('p7');
}
/* ============================================================
§ 8 — Тригонометрические уравнения
============================================================ */
function buildP8(){
const box = document.getElementById('p8-body');
const A = window.ALG10;
let html = '';
/* === SVG 1: геометрия решения sin x = a === */
let svgSin = '';
if(A){
const c = A.tri.canvas({id:'p8-sin', W:320, H:320, R:120});
const a = 0.5; /* sin x = 0.5 */
const x1 = Math.asin(a); /* π/6 */
const x2 = Math.PI - x1; /* 5π/6 */
const yL = c.cy - a * c.R;
let s = c.open
+ c.axes()
+ c.circle({width:2})
/* Горизонтальная линия y = a */
+ '<line x1="'+(c.cx-c.R-10)+'" y1="'+yL+'" x2="'+(c.cx+c.R+10)+'" y2="'+yL+'" stroke="#dc2626" stroke-width="2" stroke-dasharray="6 3"/>'
+ '<text x="'+(c.cx+c.R+14)+'" y="'+(yL+4)+'" font-size="12" font-family="JetBrains Mono,monospace" font-weight="700" fill="#dc2626">y = a</text>'
/* Две точки пересечения */
+ c.radius(x1, {color:'#0d9488'})
+ c.point(x1, {color:'#0d9488', label:'P_{x_1}', labelOffset:18, fontSize:11})
+ c.radius(x2, {color:'#7c3aed'})
+ c.point(x2, {color:'#7c3aed', label:'P_{x_2}', labelOffset:18, fontSize:11})
+ '<text x="160" y="304" text-anchor="middle" font-size="11" font-family="JetBrains Mono,monospace" font-weight="700" fill="#1e293b">x_1 = arcsin a, x_2 = π arcsin a</text>'
+ c.close;
svgSin = s;
}
/* === SVG 2: геометрия cos x = a === */
let svgCos = '';
if(A){
const c = A.tri.canvas({id:'p8-cos', W:320, H:320, R:120});
const a = 0.5; /* cos x = 0.5 */
const x1 = Math.acos(a);
const x2 = -x1;
const xL = c.cx + a * c.R;
let s = c.open
+ c.axes()
+ c.circle({width:2})
/* Вертикальная линия x = a */
+ '<line x1="'+xL+'" y1="'+(c.cy-c.R-10)+'" x2="'+xL+'" y2="'+(c.cy+c.R+10)+'" stroke="#dc2626" stroke-width="2" stroke-dasharray="6 3"/>'
+ '<text x="'+(xL+5)+'" y="'+(c.cy-c.R-4)+'" font-size="12" font-family="JetBrains Mono,monospace" font-weight="700" fill="#dc2626">x = a</text>'
+ c.radius(x1, {color:'#0d9488'})
+ c.point(x1, {color:'#0d9488', label:'P_{x_1}', labelOffset:18, fontSize:11})
+ c.radius(x2, {color:'#7c3aed'})
+ c.point(x2, {color:'#7c3aed', label:'P_{x_2}', labelOffset:18, fontSize:11})
+ '<text x="160" y="304" text-anchor="middle" font-size="11" font-family="JetBrains Mono,monospace" font-weight="700" fill="#1e293b">x_{1,2} = ±arccos a</text>'
+ c.close;
svgCos = s;
}
/* === SVG 3: геометрия tg x = a === */
let svgTg = '';
if(A){
const c = A.tri.canvas({id:'p8-tg', W:340, H:320, R:120});
const a = 0.6; /* tg x = 0.6 */
const x1 = Math.atan(a); /* arctg a */
const x2 = x1 + Math.PI; /* arctg a + π */
const xAx = c.cx + c.R;
const yA = c.cy - a * c.R;
let s = c.open
+ c.axes({xExt:c.R+40})
+ c.circle({width:2})
+ c.tgAxis()
/* Метка точки A_a на оси тангенсов */
+ '<circle cx="'+xAx+'" cy="'+yA+'" r="4" fill="#dc2626" stroke="#fff" stroke-width="1.5"/>'
+ '<text x="'+(xAx+6)+'" y="'+(yA+4)+'" font-size="11" font-family="JetBrains Mono,monospace" font-weight="700" fill="#dc2626">A_a = (1; a)</text>'
/* Линия от точки A через начало координат */
+ '<line x1="'+(c.cx-c.R-10)+'" y1="'+(c.cy+a*(c.R+10))+'" x2="'+(c.cx+c.R+10)+'" y2="'+(c.cy-a*(c.R+10))+'" stroke="#dc2626" stroke-width="1.5" stroke-dasharray="3 2"/>'
+ c.point(x1, {color:'#0d9488', label:'P_{x_1}', labelOffset:14, fontSize:10})
+ c.point(x2, {color:'#7c3aed', label:'P_{x_2}', labelOffset:14, fontSize:10})
+ '<text x="170" y="304" text-anchor="middle" font-size="11" font-family="JetBrains Mono,monospace" font-weight="700" fill="#1e293b">x = arctg a + πn (одна формула!)</text>'
+ c.close;
svgTg = s;
}
html += makeCard('theory', 'Зачем геометрия?', '8.1', `
<p>Уравнение $\\sin x = a$ — это «на каких углах ордината точки $P_x$ равна $a$?». Геометрия даёт нам наглядный способ найти <b>все</b> решения.</p>
<p>В простейшем случае берём горизонтальную линию $y = a$ и находим точки её пересечения с единичной окружностью. От них уже получаем все остальные корни через периодичность.</p>`);
html += makeCard('rule', 'Уравнение sin x = a', '8.2', `
<p>Горизонтальная прямая $y = a$ пересекает единичную окружность в <b>двух точках</b> (если $|a| < 1$).</p>
<div class="svg-host">${svgSin}</div>
<p>Эти точки симметричны относительно оси $y$, поэтому:</p>
<ul style="padding-left:22px;line-height:1.85">
<li>$x_1 = \\arcsin a + 2\\pi n$</li>
<li>$x_2 = \\pi - \\arcsin a + 2\\pi n$</li>
</ul>
<p>Эти две серии объединяются <b>одной формулой</b>:</p>
<p style="text-align:center;font-size:1.15rem;margin:10px 0;padding:10px;background:var(--sec-acc-soft);border-radius:8px">$x = (-1)^n \\arcsin a + \\pi n, \\quad n \\in \\mathbb{Z}$</p>
<p>При $|a| > 1$ — <b>корней нет</b>.</p>`);
html += makeCard('rule', 'Уравнение cos x = a', '8.3', `
<p>Вертикальная прямая $x = a$ пересекает окружность в двух точках, симметричных относительно оси $x$.</p>
<div class="svg-host">${svgCos}</div>
<p>Поэтому формула короче:</p>
<p style="text-align:center;font-size:1.15rem;margin:10px 0;padding:10px;background:var(--sec-acc-soft);border-radius:8px">$x = \\pm \\arccos a + 2\\pi n, \\quad n \\in \\mathbb{Z}$</p>
<p>При $|a| > 1$ — корней нет.</p>`);
html += makeCard('rule', 'Уравнение tg x = a', '8.4', `
<p>На оси тангенсов отмечаем точку $A_a = (1;\\,a)$. Прямая через $O$ и $A_a$ пересекает окружность в <b>двух точках</b>, лежащих на одной прямой (симметрично относительно $O$).</p>
<div class="svg-host">${svgTg}</div>
<p>А период tg равен $\\pi$ — поэтому формула одна:</p>
<p style="text-align:center;font-size:1.15rem;margin:10px 0;padding:10px;background:var(--sec-acc-soft);border-radius:8px">$x = \\arctg a + \\pi n, \\quad n \\in \\mathbb{Z}$</p>
<p>Для $\\ctg x = a$ аналогично: $x = \\arcctg a + \\pi n$.</p>
<p>Здесь $a$ <b>любое</b> — ограничений нет.</p>`);
html += makeCard('algo', 'Особые случаи (запомнить!)', '8.5', `
<p>Когда $a = 0, \\pm 1$ — лучше использовать частные формулы вместо общих:</p>
<table style="width:100%;border-collapse:collapse;margin:8px 0;font-size:.94rem">
<tr style="background:var(--sec-acc-soft)"><th style="padding:6px;border:1px solid var(--border);text-align:left">Уравнение</th><th style="padding:6px;border:1px solid var(--border);text-align:left">Решение</th></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\sin x = 0$</td><td style="padding:6px;border:1px solid var(--border)">$x = \\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\sin x = 1$</td><td style="padding:6px;border:1px solid var(--border)">$x = \\dfrac{\\pi}{2} + 2\\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\sin x = -1$</td><td style="padding:6px;border:1px solid var(--border)">$x = -\\dfrac{\\pi}{2} + 2\\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\cos x = 0$</td><td style="padding:6px;border:1px solid var(--border)">$x = \\dfrac{\\pi}{2} + \\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\cos x = 1$</td><td style="padding:6px;border:1px solid var(--border)">$x = 2\\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\cos x = -1$</td><td style="padding:6px;border:1px solid var(--border)">$x = \\pi + 2\\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\tg x = 0$</td><td style="padding:6px;border:1px solid var(--border)">$x = \\pi n$</td></tr>
<tr><td style="padding:6px;border:1px solid var(--border)">$\\ctg x = 0$</td><td style="padding:6px;border:1px solid var(--border)">$x = \\dfrac{\\pi}{2} + \\pi n$</td></tr>
</table>`);
html += makeCard('algo', 'Метод замены переменной', '8.6', `
<p>Если в уравнении встречается одна тригонометрическая функция — обозначь её переменной $t$ и реши получившееся алгебраическое уравнение.</p>
<p><b>Пример.</b> $2\\sin^2 x - 3\\sin x + 1 = 0$.</p>
<p>Пусть $t = \\sin x$, тогда $2t^2 - 3t + 1 = 0$. Корни: $t_1 = 1, t_2 = 0{,}5$.</p>
<p>Возвращаемся: $\\sin x = 1$ или $\\sin x = 0{,}5$.</p>
<ul style="padding-left:22px;line-height:1.85">
<li>$\\sin x = 1$$x = \\dfrac{\\pi}{2} + 2\\pi n$.</li>
<li>$\\sin x = 0{,}5$$x = (-1)^k \\dfrac{\\pi}{6} + \\pi k$.</li>
</ul>`);
html += makeCard('algo', 'Метод разложения на множители', '8.7', `
<p>Если уравнение приводится к виду $f_1(x) \\cdot f_2(x) = 0$ — оно распадается на два простейших.</p>
<p><b>Пример.</b> $\\sqrt{3}\\sin x = \\cos^2 x \\sin x$.</p>
<p>Переносим всё в одну сторону: $\\sin x (\\sqrt{3} - \\cos^2 x) = 0$.</p>
<p>Либо $\\sin x = 0$ (тогда $x = \\pi n$), либо $\\cos^2 x = \\sqrt{3} > 1$ — корней нет.</p>
<p>Итого: $x = \\pi n$.</p>`);
html += makeCard('algo', 'Однородные уравнения', '8.8', `
<p><b>Однородное 1-й степени</b> $a\\sin x + b\\cos x = 0$ — делим на $\\cos x$ (при условии $\\cos x \\ne 0$, что проверяем): $a\\tg x + b = 0$$\\tg x = -\\dfrac{b}{a}$.</p>
<p><b>Однородное 2-й степени</b> $a\\sin^2 x + b\\sin x \\cos x + c\\cos^2 x = 0$ — делим на $\\cos^2 x$: $a\\tg^2 x + b\\tg x + c = 0$. Замена $t = \\tg x$.</p>`);
/* === ИНТЕРАКТИВ 1: Простейшие === */
html += '<div class="wg" id="p8-iv1">'
+'<div class="wg-header"><span class="wg-badge">ИНТЕРАКТИВ 1</span><div class="wg-title">Простейшие тригонометрические</div></div>'
+'<div class="wg-help">Для серий с πn — введи <b>один корень</b> в $[0;\\,2\\pi)$. Если корней несколько в этом промежутке — введи наименьший положительный.</div>'
+trainerHTML('p8-iv1', 10, 'корень в [0;2π)')
+'</div>';
/* === ИНТЕРАКТИВ 2: Сколько корней в промежутке === */
html += '<div class="wg" id="p8-iv2">'
+'<div class="wg-header"><span class="wg-badge">ИНТЕРАКТИВ 2</span><div class="wg-title">Сколько корней в промежутке?</div></div>'
+'<div class="wg-help">Найди серии корней, потом отсчитай, сколько из них попало в указанный промежуток.</div>'
+trainerHTML('p8-iv2', 6, 'число')
+'</div>';
/* === ИНТЕРАКТИВ 3: Замена/разложение === */
html += '<div class="wg" id="p8-iv3">'
+'<div class="wg-header"><span class="wg-badge">ИНТЕРАКТИВ 3</span><div class="wg-title">Замена переменной</div></div>'
+'<div class="wg-help">Сделай замену $t = \\sin x$ или $\\cos x$ и реши квадратное.</div>'
+trainerHTML('p8-iv3', 5, 'число корней в [0;2π)')
+'</div>';
/* === БОСС §8 — 6 этапов === */
html += '<h3 style="font-family:Unbounded,sans-serif;font-size:1.05rem;color:var(--pri2);margin:20px 0 12px">Босс §8 — Тригонометрические уравнения</h3>';
html += makeBoss('p8', {
color:'#dc2626',
title:'Босс §8 — Тригонометрические уравнения',
steps:[
{ q:'Уравнение $\\sin x = 2$ имеет корни? «да» или «нет»', verify:(v)=>String(v).trim().toLowerCase().startsWith('н'), hint:'$|2| > 1$, корней нет.' },
{ q:'Сколько корней у $\\sin x = 0{,}5$ на промежутке $[0;\\,2\\pi]$?', verify:(v)=>+v===2, hint:'$x_1 = \\pi/6$ и $x_2 = 5\\pi/6$ — обе в промежутке.' },
{ q:'Реши $\\cos x = -1$. Введи корень в $[0;\\,2\\pi]$ как pi (если ответ $\\pi$).', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi'||s==='π';}, hint:'$\\cos\\pi = -1$.' },
{ q:'Реши $2\\cos^2 x + 3\\cos x + 1 = 0$. Сколько корней в $[0;\\,2\\pi)$?', verify:(v)=>+v===3, hint:'$t = \\cos x$: $2t^2+3t+1=0$, $t = -1$ или $t = -1/2$. cos=1: x=π. cos=1/2: x=2π/3, 4π/3. Итого 3.' },
{ q:'Решает ли значение $x = \\dfrac{\\pi}{2}$ уравнение $\\sin x \\cos x = 0$? «да» или «нет»', verify:(v)=>String(v).trim().toLowerCase().startsWith('д'), hint:'$\\cos(\\pi/2) = 0$, произведение = 0 ✓.' },
{ q:'Реши $\\tg x = 1$. Введи наименьший положительный корень как pi/n.', verify:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi/4'||s==='π/4';}, hint:'$\\arctg 1 = \\pi/4$, серия $x = \\pi/4 + \\pi n$.' },
]
});
html += secNav('p7', 'p9') + readButton('p8');
box.innerHTML = html; renderMath(box);
/* IV1: простейшие */
makeTrainer({
idPrefix:'p8-iv1',
parser:(v)=>v,
questions:[
{ q:'$\\sin x = 0$. Наименьший корень в $[0;\\,2\\pi)$?', a:(v)=>+v===0, show:'$0$' },
{ q:'$\\sin x = 1$. Корень в $[0;\\,2\\pi)$? (введи pi/n)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi/2'||s==='π/2';}, show:'$\\pi/2$' },
{ q:'$\\cos x = 1$. Наименьший корень в $[0;\\,2\\pi)$?', a:(v)=>+v===0, show:'$0$' },
{ q:'$\\cos x = -1$. Корень в $[0;\\,2\\pi)$?', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi'||s==='π';}, show:'$\\pi$' },
{ q:'$\\sin x = 0{,}5$. Наименьший корень в $[0;\\,2\\pi)$? (pi/n)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi/6'||s==='π/6';}, show:'$\\pi/6$' },
{ q:'$\\cos x = 0{,}5$. Наименьший корень в $[0;\\,2\\pi)$? (pi/n)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi/3'||s==='π/3';}, show:'$\\pi/3$' },
{ q:'$\\sin x = -1$. Корень в $[0;\\,2\\pi)$? (введи 3pi/2)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='3pi/2'||s==='3π/2';}, show:'$3\\pi/2$' },
{ q:'$\\tg x = 0$. Наименьший корень в $[0;\\,2\\pi)$?', a:(v)=>+v===0, show:'$0$' },
{ q:'$\\tg x = \\sqrt{3}$. Наименьший корень в $[0;\\,2\\pi)$? (pi/n)', a:(v)=>{const s=String(v).replace(/\\s/g,'').toLowerCase(); return s==='pi/3'||s==='π/3';}, show:'$\\pi/3$' },
{ q:'$\\sin x = 3$. Сколько корней? (число)', a:(v)=>+v===0, show:'$0$ (нет, $|3|>1$)' },
],
onComplete:(s,n)=>{ if(s===n){addXp(22,'p8-iv1');bumpProgress('p8',32);} else if(s>=6){addXp(11,'p8-iv1');bumpProgress('p8',16);} }
});
/* IV2: сколько корней */
makeTrainer({
idPrefix:'p8-iv2',
questions:[
{ q:'Сколько корней у $\\sin x = 0$ на $[0;\\,2\\pi]$?', a:3, show:'3 ($0, \\pi, 2\\pi$)' },
{ q:'Сколько корней у $\\sin x = 0{,}5$ на $[0;\\,2\\pi]$?', a:2, show:'2 ($\\pi/6$ и $5\\pi/6$)' },
{ q:'Сколько корней у $\\cos x = 0$ на $[0;\\,2\\pi]$?', a:2, show:'2 ($\\pi/2$ и $3\\pi/2$)' },
{ q:'Сколько корней у $\\cos x = 1$ на $[0;\\,2\\pi]$?', a:2, show:'2 ($0$ и $2\\pi$)' },
{ q:'Сколько корней у $\\tg x = 1$ на $[0;\\,\\pi]$?', a:1, show:'1 ($\\pi/4$)' },
{ q:'Сколько корней у $\\sin x = \\dfrac{\\sqrt{2}}{2}$ на $[0;\\,4\\pi]$?', a:4, show:'4 (на каждом периоде по 2)' },
],
onComplete:(s,n)=>{ if(s===n){addXp(18,'p8-iv2');bumpProgress('p8',26);} else if(s>=4){addXp(9,'p8-iv2');bumpProgress('p8',12);} }
});
/* IV3: замена */
makeTrainer({
idPrefix:'p8-iv3',
questions:[
{ q:'$2\\sin^2 x - \\sin x = 0$. Сколько корней в $[0;\\,2\\pi)$?', a:4, show:'4 ($\\sin x(2\\sin x - 1) = 0$: sin x = 0 ⇒ 0, π; sin x = 1/2 ⇒ π/6, 5π/6)' },
{ q:'$\\cos^2 x = 1$. Сколько корней в $[0;\\,2\\pi)$?', a:2, show:'2 (cos x = ±1 ⇒ x = 0, π)' },
{ q:'$2\\sin^2 x - 3\\sin x + 1 = 0$. Сколько корней в $[0;\\,2\\pi)$?', a:3, show:'3 (sin = 1: π/2; sin = 1/2: π/6, 5π/6)' },
{ q:'$\\sin^2 x + \\sin x = 0$. Сколько корней в $[0;\\,2\\pi)$?', a:3, show:'3 (sin x = 0: 0, π; sin x = -1: 3π/2)' },
{ q:'$\\tg^2 x - 1 = 0$. Сколько корней в $[0;\\,2\\pi)$?', a:4, show:'4 (tg = ±1, серии π/4 + πn/2)' },
],
onComplete:(s,n)=>{ if(s===n){addXp(18,'p8-iv3');bumpProgress('p8',26);} else if(s>=2){addXp(9,'p8-iv3');bumpProgress('p8',12);} }
});
wireReadBtn('p8');
}
</script>
</body>