8.5. Основні формули тригонометрії

 

Крім тригонометричних формул, з якими ми познайомилися раніше, існує ряд формул, що їх відносять до основних формул тригонометрії, а саме:

  •  Формули подвійного і потрійного аргументів:

    ;                                        (21)

    ;               (22)

    ;               (23)

    ;                                   (24)

    ;                                   (25)

    .                                        (26)

  •  Формули пониження степеня:

    ;                                        (27)

    .                                        (28)

  •  Формули перетворення добутку тригонометричних функцій у суму:

    ;                         (29)

    ;                         (30)

    .                         (31)

  •  Формули перетворення суми і різниці однойменних тригонометричних функцій:

    ;                         (32)

    ;                         (33)

    ;                         (34)

    ;                    (35)

    .                    (36)

  •  Формули, які дають раціональний вираз тригонометричних функцій через тангенс половинного аргументу:

    ;                                             (37)

    ;                         (38)

    .               (39)

  •  Формули тригонометричних функцій половинного аргументу:

    ;                               (40)

    ;                         (41)

    ;                              (42)

    ;                                        (43)

    ;                                        (44)

    .                                        (45)

    Знак перед радикалом в останніх трьох формулах залежить від того, в якій координатній чверті знаходиться кут .

    В системі Maple, звичайно, закладені основні тригонометричні формули. Виводяться вони за допомогою вбудованих функцій для спрощення виразів, розкладання на множники, розкриття дужок і т.д., які описані в темі 1 даного практикуму.

    > simplify(cos(x)^2+sin(x)^2);

    > expand(sin(2*x));

    > expand(cos(2*x));

    > expand(tan(2*x));

    > expand(cot(2*x));

    > combine(cos(x)^2);

    > combine(sin(x)^2);

    > expand(sin(3*x));

    > expand(cos(3*x));

    > expand(cos(x+y));

    > expand(sin(x+y));

    > expand(tan(x+y));

    > expand(cot(x+y));

    > combine(sin(x)*cos(y));

    > combine(cos(x)*cos(y));

    > combine(sin(x)*sin(y));

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

    > simplify(tan(2*x));

    Що стосується формул перетворення суми і різниці однойменних тригонометричних функцій у добуток, то О. Сдвижков [14] зазначає: «Удивительно, но ни одна из встроенных функций не преобразует сумму тригонометрических функций в произведение, какие бы дополнительные параметры ни устанавливались. В частности

    > simplify(cos(x)+cos(у));

    »

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

    > trigsubs(cos(a*x)+cos(b*y));

    trigsubs(cos(a*x)-cos(b*y));

    trigsubs(-cos(a*x)+cos(b*y));

    > trigsubs(sin(a*x)+sin(b*y));

    trigsubs(sin(a*x)-sin(b*y));

    trigsubs(-sin(a*x)+sin(b*y));

    В той же час в наведених нижче простих випадках ця команда вже не спрацьовує

    > trigsubs(-cos(a*x)-cos(b*y));

    trigsubs(-sin(x)-sin(y));

    Error, (in trigsubs) expecting a sum or difference of two functions but got -cos(a*x)-cos(b*y)

    Error, (in trigsubs) expecting a sum or difference of two functions but got -sin(x)-sin(y)

    Система Maple має тисячі команд. На жаль, авторам не відомо видання, в якому було б наведено систематичне ґрунтовне описання всіх команд цієї системи. В певній мірі саме з цим пов’язані подібні прикрі непорозуміння. Слід зауважити, що про існування команди trigsubs автори дізнались випадково на восьмому році «тісного» знайомства з цією системою. В жодному з джерел серед найпоширеніших публікацій з системи Maple [див. окремий файл «Список літератури з Maple.doc»] автори не знайшли посилання на команду trigsubs. Що ж стосується довідкової системи Maple, то при всіх її перевагах вона не усуває проблему відсутності зазначеного ґрунтовного описання всіх команд цієї системи. Звісно ж англомовність довідкової системи створює додаткові, хоча й не принципові, ускладнення. На щастя, Maple має власну вбудовану мову програмування, за допомогою якої можна відносно просто реалізувати широке коло потрібних перетворень. Як приклад, наведемо авторську процедуру, що перетворює суму (різницю) синусів або косинусів:

    > scpm:=(f)->

    if hasfun(f,{sin,cos}) then

    L1:=[op(f)];L2:=map(zz->op(0,zz),L1);

    if hasfun(f,cos) then

    if L2[1]=cos and L2[2]=cos then

    otv:=2*cos((op(1,L1[1])+op(1,L1[2]))/2)*cos((op(1,L1[1])-op(1,L1[2]))/2)

    elif L2[1]=cos and op([2,2,0],L1)=cos then

    otv:=-2*sin((op(1,L1[1])+op([2,2,1],L1))/2)*sin((op(1,L1[1])-op([2,2,1],L1))/2)

    elif op([1,2,0],L1)=cos and L2[2]=cos then

    otv:=-2*sin((op([1,2,1],L1)+op(1,L1[2]))/2)*sin((-op([1,2,1],L1)+op(1,L1[2]))/2)

    else `Результат відсутній`;

    fi;

    elif hasfun(f,sin) then

    if L2[1]=sin and L2[2]=sin then

    otv:=2*sin((op(1,L1[1])+op(1,L1[2]))/2)*cos((op(1,L1[1])-op(1,L1[2]))/2)

    elif L2[1]=sin and op([2,nops(L1[2]),0],L1)=sin then

    otv:=2*cos((op(1,L1[1])+op([2,2,1],L1))/2)*sin((op(1,L1[1])-op([2,2,1],L1))/2)

    elif op([1,nops(L1[1]),0],L1)=sin and L2[2]=sin then

    otv:=2*cos((op([1,2,1],L1)+op(1,L1[2]))/2)*sin((-op([1,2,1],L1)+op(1,L1[2]))/2)

    else `Результат відсутній`;

    fi;

    fi;

    else `Результат відсутній`;

    otv

    fi;

    Warning, `L1` is implicitly declared local to procedure `scpm`

    Warning, `L2` is implicitly declared local to procedure `scpm`

    Warning, `otv` is implicitly declared local to procedure `scpm`

    > scpm(sin(a*x)+sin(b*y));

    > scpm(cos(a*x)-cos(b*y));

    > scpm(-sin(6*x)+sin(10*y));

    > scpm(-cos(a*x)-cos(b*y));

    Очевидно, що наведеною процедурою користуватися незрівнянно зручніше, аніж чотирма процедурами, що наведені в [14]. І справа не тільки в тому, що однією й тією ж самою процедурою користуватися легше, аніж чотирма процедурами. Головна перевага в тому, що процедури, які наведені в [14], потрібно вибирати в залежності від перетворюваного виразу. В процедурі scpm вираз, який потрібно перетворити, розпізнається автоматично! Якщо вираз, що переданий процедурі scpm як аргумент, не є сумою (різницею) синусів або косинусів, процедура повертає повідомлення «Результат відсутній». Важливо, що наведена процедура scpm працює і в DEMO Maple V R4 (!), в середовищі якої заблокована побудова процедур за допомогою стандартної конструкції proc…end proc.

    В [14] також зауважується «Имеет смысл добавить также формулы, выражающие и через тангенс половинного аргумента:

    > st:=proc(х)

    2*tan(x/2)/(1+tan(x/2)^2)

    end proc;

    sin(x)=st(x);

    »

    Насправді останню тотожність можна отримати стандартними засобами Maple, а саме за допомогою команди convert:

    > sin(x)=convert(sin(x),tan);