Как избавится от косинуса с синусом

sin(-a),cos(-a),tg(-a),ctg(-a). Минус в аргументе синуса, косинуса

И сразу два важных замечания.

Многие ученики думают, что если можно вынести минус из тригонометрической функции, то можно вынести и число, но это не так:

Квадрат меняет ситуацию. Всё дело в том, что \(sin^2⁡(-x)=(sin⁡(-x) )^2=(-sin\,⁡x )^2=sin^2⁡x\), т.е. минус все равно выносится, но так как синуса два и они перемножаются, то в итоге получается плюс.

Примеры из ЕГЭ

Из рисунка видно, что и косинус, и синус положителен. Косинус из трех стандартных значений \(\frac<1><2>\), \(\frac<\sqrt<2>><2>\), \(\frac<\sqrt<3>><2>\) принимает наименьшее т.е. \(cos\,⁡\frac<π><3>=\frac<1><2>\). Синус из трех стандартных значений будет равен среднему т.е. \(sin⁡\,\frac<π><4>=\frac<\sqrt<2>><2>\). Получается:

Если вы не поняли почему \(\frac<π><3>\) и \(\frac<π><4>\) находятся на круге там, где мы из обозначили, то читайте статью « Как обозначать числа с пи на числовой окружности? ». А если не поняли, как мы нашли синус и косинус, то читайте статью « Как найти синус и косинус без тригонометрической таблицы ».

Пример (ЕГЭ). Найдите значение выражения \(44\sqrt<3>\,tg\,(-480^° )\).
Решение. \(44\sqrt<3>\,tg(-480^° )=-44\sqrt<3>\,tg(480^° )=-44\sqrt<3>\,tg(360^°+120^° )=-44\sqrt<3>\,tg(360^°+90^°+30^°)\).

Находим \(480^°\) на окружности:

Соединяем точку, соответствующую \(480^°\) и центр окружности, и продляем до оси тангенсов:

Мы попадаем в самое маленькое (из стандартных) значение тангенса.
Значит, \(tg(480^° )=-\sqrt<3>\).
В итоге имеем: \(44\sqrt <3>tg(-480^° )=-44\sqrt<3>\cdot(-\sqrt<3>)=44\cdot 3=132\).
Ответ: \(132\).

Если вам не понятно, как мы нашли значение тангенса, то читайте статью « Как найти тангенс и котангенс без тригонометрической таблицы? ».

Доказательства формул с минусом в аргументе:

Источник

Избегаем тригонометрии

Мне кажется, что нам надо использовать меньше тригонометрии в компьютерной графике. Хорошее понимание проекций, отражений и векторных операций (как в истинном значении скалярного (dot) и векторного (cross) произведений векторов) обычно приходит с растущим чувством беспокойства при использовании тригонометрии. Точнее, я считаю, что тригонометрия хороша для ввода данных в алгоритм (для понятия углов это интуитивно понятный способ измерения ориентации), я чувствую, что что-то не так, когда вижу тригонометрию, находящуюся в глубинах какого-нибудь алгоритма 3D-рендеринга. На самом деле, я думаю, что где-то умирает котенок, когда туда закрадывается тригонометрия. И я не так беспокоюсь о скорости или точности, но с концептуальной элегантностью я считаю… Сейчас объясню.

Читайте также:  Нашатырный спирт от тли дозировка

В других местах я уже обсуждал, что скалярные и векторные произведения векторов содержат в себе всю необходимую информацию для поворотов, для тех двух «прямоугольных» операций — синусов и косинусов углов. Эта информация эквивалентна синусам и косинусам в таком большом количестве мест, что кажется, что можно просто использовать произведения векторов и избавиться от тригонометрии и углов. На практике, вы можете это сделать оставаясь в обычных евклидовых векторах, совсем без тригонометрии. Это заставляет задуматься: «А не делаем ли мы чего-нибудь лишнего?» Кажется, делаем. Однако, к несчастью, даже опытные профессионалы склонны к злоупотреблению тригонометрией и делают вещи очень сложными, громоздкими и не самыми лаконичными. И даже возможно «неправильные».

Давайте перестанем делать статью еще более абстрактной. Представим один из случаев замены тригонометрических формул векторными произведениями и увидим о чем я сейчас говорил.

Неправильный вариант поворота пространства или объекта

Пусть у нас будет функция, считающая матрицу поворота вектора вокруг нормализованного вектора на угол . В любом 3D-движке или математической библиотеке реального времени будет одна такая функция, которая скорее всего слепо скопирована с другого движка, википедии или туториала по OpenGL… (да, к этому моменту вы должны признать, и в зависимости от вашего настроения, возможно переживать из-за этого).

Функция будет выглядеть примерно так:

Представьте, что вы во копаетесь внутренностях демки или игры, возможно допиливая какой-то анимационный модуль, и вам надо повернуть объект в заданном направлении. Вы хотите повернуть его так, чтобы одна из его осей, скажем, ось , совпала с определенным вектором , скажем, касательным к анимационному пути. Вы, конечно же, решаете составить матрицу, которая будет содержать трансформации используя rotationAxisAngle() . Так, вам сначала нужно будет измерить угол между осью вашего объекта и желаемого вектора ориентации. Так как вы — графический программист, вы знаете, что это можно сделать скалярным произведением и затем извлечением угла с помощью acos() .

Также, вы знаете, что иногда acosf() может вернуть странные значения, если скалярное произведение выходит за диапазон [-1; 1], и вы решаете изменить его значение так, чтобы оно попало в этот диапазон (прим. пер. to clamp) (в этот момент вы можете даже осмелиться винить точность вашего компьютера, потому что длина нормализованного вектора не равна в точности 1). К этому моменту погиб один котенок. Но пока вы не знаете об этом, вы продолжаете писать свой код. Далее вы вычисляете ось поворота, и вы знаете, что это — векторное произведение вектора вашего объекта и выбранного направления , все точки в вашем объекте будут вращаться в плоскостях, параллельных той, которая определяется этими двумя векторами, так, на всякий случай… (котенка возродили и снова убили). В итоге, код выглядит как-то так:

Читайте также:  С помощью соли можно избавиться от проволочника

Чтобы понять, почему это работает, но все еще ошибочно, раскроем весь код rotationAxisAngle() и посмотрим, что же действительно происходит:

Как вы уже могли заметить, мы выполняем довольно неточный и дорогой вызов acos, чтобы его сразу же отменить вычислением косинуса возвращаемого значения. И появляется первый вопрос: «а почему бы не пропустить цепь вызовов acos() —> cos() и сохранить процессорное время?» Более того, не говорит ли нам это о том, что мы делаем что-то неправильное и сильно запутанное, и что к нам приходит какой-то простой математический принцип, проявляющийся через упрощение этого выражения?

Вы можете поспорить, что упрощение нельзя сделать, так как вам нужен будет угол для вычисления синуса. Однако, это не так. Если вы знакомы с векторным произведением векторов, то вы знаете, что так же как скалярное произведение содержит косинус, векторное — содержит синус. Большинство графических программистов понимают зачем нужно скалярное произведение векторов, но не все понимают, зачем нужно векторное произведение (и используют его только для того, чтобы считать нормали и оси поворота). В основном, математический принцип, помогающий нам избавиться от пары cos/acos, также говорит нам о том, что там, где есть скалярное произведение, там возможно векторное произведение, сообщающее отсутствующую часть информации (перпендикулярную часть, синус).

Правильный вариант поворота пространства или объекта

Теперь мы можем извлечь синус угла между и просто посмотрев на длину их векторного произведения… — помним, что и нормализованы! А это значит, что мы можем (мы должны!!) переписать функцию таким образом:

и удостовериться, что наша новая функция построения матрицы поворота, rotationAxisCosSin() , нигде не вычисляет синусы и косинусы, а принимает их в качестве аргументов:

Есть еще одна вещь, которую можно сделать, чтобы избавиться от нормализаций и квадратных корней — инкапсулируя всю логику в одну новую функцию и передавая 1/si в матрицу:

Позже, Золтан Врана (Zoltan Vrana) подметил, что k можно упростить до k = 1/(1+c) , что не только математически элегантнее выглядит, но также перемещает две особенности в k и, таким образом, вся функция ( и параллельны) переходит в одну (когда и совпадают в этом случае нет четкого поворота). Финальный код выглядит как-то так:

Мы не только избавились от трех тригонометрических функций и избавились от уродливого clamp’а (и нормализации!), но и концептуально упростили нашу 3D математику. Никаких трансцендентных функций, здесь используются только векторы. Векторы создают матрицы, изменяющие другие векторы. И это важно, потому что чем меньше тригонометрии в вашем 3D-движке, тем не только быстрее и яснее он становится, но, прежде всего, математически более элегантнее (правильнее!).

Читайте также:  Знак крыс мертвого дома

Источник

Как избавится от косинуса с синусом

Методы решения тригонометрических уравнений.

1. Алгебраический метод.

( метод замены переменной и подстановки ).

2. Разложение на множители.

П р и м е р 1. Решить уравнение: sin x + cos x = 1 .

Р е ш е н и е . Перенесём все члены уравнения влево:

sin x + cos x – 1 = 0 ,

преобразуем и разложим на множители выражение в

левой части уравнения:

П р и м е р 2. Решить уравнение: cos 2 x + sin x · cos x = 1.

Р е ш е н и е . cos 2 x + sin x · cos x – sin 2 x – cos 2 x = 0 ,

sin x · cos x – sin 2 x = 0 ,

sin x · ( cos x – sin x ) = 0 ,

П р и м е р 3. Решить уравнение: cos 2 x – cos 8 x + cos 6 x = 1.

Р е ш е н и е . cos 2 x + cos 6 x = 1 + cos 8 x ,

2 cos 4x cos 2x = 2 cos ² 4x ,

cos 4x · ( cos 2x – cos 4x ) = 0 ,

cos 4x · 2 sin 3x · sin x = 0 ,

1). cos 4x = 0 , 2). sin 3x = 0 , 3). sin x = 0 ,

3. Приведение к однородному уравнению.

а) перенести все его члены в левую часть;

б) вынести все общие множители за скобки;

в) приравнять все множители и скобки нулю;

г ) скобки, приравненные нулю, дают однородное уравнение меньшей степени, которое следует разделить на

cos ( или sin ) в старшей степени;

д) решить полученное алгебраическое уравнение относительно tan .

П р и м е р . Решить уравнение: 3 sin 2 x + 4 sin x · cos x + 5 cos 2 x = 2.

Р е ш е н и е . 3sin 2 x + 4 sin x · cos x + 5 cos 2 x = 2sin 2 x + 2cos 2 x ,

sin 2 x + 4 sin x · cos x + 3 cos 2 x = 0 ,

tan 2 x + 4 tan x + 3 = 0 , отсюда y 2 + 4y +3 = 0 ,

корни этого уравнения: y 1 = — 1, y 2 = — 3, отсюда

1) tan x = –1, 2) tan x = –3,

4. Переход к половинному углу.

П р и м е р . Решить уравнение: 3 sin x – 5 cos x = 7.

Р е ш е н и е . 6 sin ( x / 2 ) · cos ( x / 2 ) – 5 cos ² ( x / 2 ) + 5 sin ² ( x / 2 ) =

= 7 sin ² ( x / 2 ) + 7 cos ² ( x / 2 ) ,

2 sin ² ( x / 2 ) – 6 sin ( x / 2 ) · cos ( x / 2 ) + 12 cos ² ( x / 2 ) = 0 ,

tan ² ( x / 2 ) – 3 tan ( x / 2 ) + 6 = 0 ,

5. Введение вспомогательного угла.

где a , b , c – коэффициенты; x – неизвестное.

Теперь коэффициенты уравнения обладают свойствами синуса и косинуса , а именно : модуль ( абсолютное значение ) каждого из них не больше 1, а сумма их квадратов равна 1 . Тогда можно обозначить их соответственно как cos и sin ( здесь — так называемый вспомогательный угол ), и наше уравнение прини мает вид:

6. Преобразование произведения в сумму.

П р и м е р . Решить уравнение: 2 sin x · sin 3 x = cos 4 x .

Р е ш е н и е . Преобразуем левую часть в сумму:

Источник

Оцените статью
Избавляемся от вредителей