9. ТРИГОНОМЕТРИЧНІ РІВНЯННЯ

 

9.1. Найпростіші тригонометричні рівняння

 

Рівняння називається тригонометричним, якщо невідома величина знаходиться під знаком тригонометричних функцій. Найпростішими тригонометричними рівняннями називаються рівняння , , , . Розв’язати найпростіше тригонометричне рівняння – означає знайти множину всіх кутів, що мають дане значення тригонометричної функції. Якщо тригонометричне рівняння не є найпростішим, то за допомогою тотожних перетворень його треба звести до одного або кількох найпростіших, розв’язання яких визначається стандартними формулами.

, (оскільки ). Корені рівняння можна розглядати як абсциси точок перетину синусоїди з прямою .

Всі розв’язки рівняння записуються у вигляді , . Однак в трьох таких випадках, коли , розв’язки рівнянь зображуються такими формулами:

при , ;

при , ;

при , .

Рівняння . Оскільки , то рівняння має розв’язок тільки при . Корені рівняння можна розглядати як абсциси точок перетину косинусоїди з прямою .

Всі розв’язки рівняння записуються у вигляді , .

Для окремих випадків , маємо:

а) , ;

б) , ;

в) , .

Всі корені рівняння , задаються формулою , .

У випадку розв’язок записується у вигляді , .

Всі корені рівняння , визначаються співвідношенням ,. При розв’язок має вигляд , .

При використанні формул для розв’язування тригонометричних рівнянь враховують, що

;               ;

;               .

У системі Maple тригонометричні рівняння розв’язуються за допомогою вищезгаданої функції solve. До тих пір, поки не буде набрано _EnvAllSolutions:=true, вбудована функція solve повертає користувачу лише один або декілька коренів з множини розв’язків тригонометричного рівняння. Після даної команди система повертає всю множину коренів для кожного тригонометричного рівняння.

Розглянемо на прикладах найпростіші тригонометричні рівняння.

Приклад 1. Розв’язати рівняння .

Розв’язання

Оскільки , то скористаємось формулою , . Отже, , , .

Відповідь: .

> solve(sin(x)=sqrt(3)/2);

> _EnvAllSolutions:=true:solve(sin(x)=sqrt(3)/2);

Форма відповіді незвичайна, але корені знайдені правильно. Система Maple через _В, незалежно від індексу, позначає змінні, що приймають значення з множини , а через _Z - множину цілих чисел.

Приклад 2. Розв’язати рівняння .

Розв’язання

(), отже, рівняння розв’язків не має.

Відповідь: .

> _EnvAllSolutions:=true:solve(sin((1/2)*x)=Pi/3,x);

Оскільки

> evalf(arcsin(1/3*Pi));

очевидно, що всі розв’язки містять уявну одиницю , тобто ці корені комплексні і у відповідь не входять.

Спробуємо знайти розв’язок даного рівняння після підключення пакета with( RealDomain):

> restart;

> with( RealDomain):

solve(sin((1/2)*x)=Pi/3,x);

Warning, these protected names have been redefined and unprotected: Im, Re, ^, arccos, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech, arcsin, arcsinh, arctan, arctanh, cos, cosh, cot, coth, csc, csch, eval, exp, expand, limit, ln, log, sec, sech, signum, simplify, sin, sinh, solve, sqrt, surd, tan, tanh

Для функції . Тому розв’язок, який знайшла система Maple, – комплексний. А дійсних коренів дане рівняння не має.

Приклад 3. Розв’язати рівняння .

Розв’язання

, , .

Відповідь: .

> _EnvAllSolutions:=true:solve(cos(x)=1/2,x);

Отримали ту саму відповідь, записану в іншій формі!

Приклад 4. Розв’язати рівняння .

Розв’язання

,

, , ,

Відповідь: .

Приклад 5. Розв’язати рівняння .

Розв’язання

Запишемо дане рівняння у вигляді , тоді скористаємось формулою , , тобто

.

Розглянемо ліву і праву частину даного рівняння як окремі функції, і побудуємо графіки цих функцій в системі Maple:

> plot([tan(Pi/3-x/2),1/(sqrt(3))],x=-8..8,-8..8,discont=true);

Абсциси точок перетину цих двох графіків і будуть розв’язками рівняння, що розглядається.

Відповідь: .

Приклад 6. Розв’язати рівняння .

Розв’язання

Оскільки для рівняння , , то

.

Відповідь: .

> _EnvAllSolutions:=true:solve(cot(3*x)=2009);

> evalf(%);

Приклад 7. Розв’язати рівняння .

Розв’язання

Відповідь: .

> solve((cot(2*x-Pi/4))^2=1/3);

Розв’язок, отриманий в Maple, відповідає тому, що ми отримали вручну, записаному в іншому вигляді.

Відзначимо, що при , загальними формулами для тригонометричних рівнянь також можна користуватися, вони дають правильний результат, однак найчастіше ці формули не мають компактного вигляду. Наприклад, якщо використовувати окремі випадки, то , . Якщо ж скористатися спільною формулою, то , . Покажемо, що , і , – це та сама множина.

Дійсно, при , ; при , . Таким чином, множини розв’язків, отримані двома способами, збігаються.

Зауваження. При розв’язуванні тригонометричних рівнянь з однаковим успіхом можна користуватися і радіанною, і градусною мірами. Так, наприклад, відповідь у прикладі № 5, яка записана за допомогою радіанної міри , можна записати, використовуючи градусну міру, так: . При цьому слід знати, що можна використовувати або тільки радіанну, або тільки градусну міру, тобто не можна використовувати в тому самому розв’язку частково радіанну і частково градусну міру.

Приклад 8. Вказати найменший додатний розв’язок рівняння (у градусах): .

Розв’язання

Дане рівняння є дробово-раціональним, тому його можна записати у вигляді системи:

. Звідси , тобто підходить лише . Таким чином, .

Найменший додатний розв’язок рівняння при буде або .

Відповідь: .

При застосуванні Maple до розв’язування тригонометричних рівнянь потрібно бути уважним, оскільки система нерідко видає неправильні відповіді:

> restart:

`Рівняння_8`:=sin(4*x)/(1+cos(4*x))=0;

_EnvAllSolutions:=true:

solve(`Рівняння_8`);`Розв_к_8`:=%:

Для виведення результатів розв’язання рівнянь система генерує сталі. Позначення всіх таких сталих починається знаком «_» – нижнє підкреслення. Знак «~», як відомо, в позначенні змінної вказує, що на її можливі значення накладено певні умови. Для того, щоб взнати більше про конкретну змінну, застосуємо команду:

> about(_Z1);

Originally _Z1, renamed _Z1~:

is assumed to be: integer

Із отриманого повідомлення дізнаємось, що _Z1 може приймати тільки цілі значення. Це означає, що система видала неправильний результат, оскільки насправді _Z1 може приймати тільки парні значення. Але далі – більше. Підставимо отриманий розв’язок у вихідне рівняння та спростимо отриманий вираз:

> subs(x=`Розв_к_8`,`Рівняння_8`);

simplify(%);

І на цьому етапі система не змогла виявити своєї помилки, адже для всіх непарних значень знаменник лівої частини рівняння дорівнює нулю. Але система цього «не побачила» і «вирішила», що знайдений розв’язок задовольняє рівняння. І тільки при спробі підставити замість _Z1 конкретне непарне значення, система нарешті реагує адекватно, повідомляючи про неможливість здійснення операції ділення на нуль:

> simplify(%%) assuming _Z1=1;

Error, (in assuming) when calling `one of {simplify, sin, cos}`. Received: 'numeric exception: division by zero'

В подібних ситуаціях можна спробувати перетворити вихідне рівняння. Наприклад

> convert(lhs(`Рівняння_8`),sincos); expand(lhs(`Рівняння_8`));normal(%);

solve(%);

> about(_Z2);about(_Z3);

Originally _Z2, renamed _Z2~:

is assumed to be: integer

Originally _Z3, renamed _Z3~:

is assumed to be: integer

Ми отримали правильну відповідь, але в незручному вигляді. Головною перепоною на шляху здійснення подібних перетворень є складність формулювання загальних правил з рекомендаціями які саме перетворення вихідних рівнянь потрібно робити у різних випадках.

На думку авторів, надзвичайно ефективний прийом застосування Maple при знаходженні розв’язків тригонометричних рівнянь полягає в наочній перевірці правильності знайдених виразів. Продемонструємо цей прийом. На основі неправильного розв’язку, знайденого системою, згенеруємо координати декількох точок, абсциси яких збігаються зі значеннями кореня:

> `xy_8`:=seq([evalf(eval(`Розв_к_8`,_Z1=k)),0],k=-10..10);

Відповідний діапазон значень потрібно підбирати в кожному конкретному випадку. Побудуємо графік лівої частини тригонометричного рівняння, в якому права частина дорівнює нулю

> plot(lhs(`Рівняння_8`)-rhs(`Рівняння_8`),x=-10..10,-10..10,style=[line],symbol=circle,symbolsize=17,color=black,scaling=unconstrained,discont=true);g10:=%:

Побудуємо графік, на якому відображено згенеровані точки

> plot([`xy_8`],x=-10..10,-1..1,style=[point],symbol=circle,symbolsize=17,color=red,scaling=unconstrained);g20:=%:

Сумістимо останні два графіки в один

> plots[display]([g10,g20]);

Із графіка видно, що ми маємо «зайві» корені! Зайві корені зображають ті виділені кружечками точки на осі абсцис, через які не проходять криві. Аналогічним чином перевіримо розв’язок, знайдений «вручну»:

> printf(`Згенеруємо координати точок`);

`Корені_вручну_8`:=seq([evalf(Pi*k/2),0],k=-10..10);

printf(`Будуємо графік`);

plot([`Корені_вручну_8`],x=-10..10,-1..1,style=[point],symbol=circle,symbolsize=17,color=red,scaling=unconstrained):g30:=%:

plots[display]([g10,g30]);

Згенеруємо координати точок

Будуємо графік

Як видно, в даному випадку – корені правильні.

Декілька слів потрібно сказати про методику виведення графіків в даному випадку. Для суміщення різних графіків в одному ми використали команду plots[display] (команду display пакета plots). Звичайний, більш простий прийом суміщення графіків декількох функцій на одному за допомогою списку функцій в даному випадку неможливий через незрозумілий для авторів конфлікт між побудовою списку точок та опцією discont=true, яка задається для побудови функцій, що мають розриви. Дійсно

> plot([lhs(`Рівняння_8`)-rhs(`Рівняння_8`),[[`Корені_вручну_8`]]],x=-10..10,-10..10,style=[line],symbol=circle,symbolsize=17,color=black,scaling=unconstrained,discont=true);

Error, (in plot) invalid plot function: [[[-15.70796327, 0], [-14.13716694, 0], [-12.56637062, 0], [-10.99557429, 0], [-9.424777962, 0], [-7.853981635, 0], [-6.283185308, 0], [-4.712388981, 0], [-3.141592654, 0], [-1.570796327, 0], [0., 0], [1.570796327, 0], [3.141592654, 0], [4.712388981, 0], [6.283185308, 0], [7.853981635, 0], [9.424777962, 0], [10....

Без задання опції discont=true спосіб суміщення графіків декількох функцій на одному за допомогою списку функцій працює, але графік без указаної опції має дещо інший вигляд:

> plot([lhs(`Рівняння_8`)-rhs(`Рівняння_8`),[`Корені_вручну_8`]],x=-10..10,-10..10,style=[line,point],symbol=circle,symbolsize=17,color=[black,red],scaling=unconstrained);