Как я могу найти максимум sin(x) через matlab на интервале?

Используя только операторы if, мне нужно найти максимальную точку sin(x) на отрезке (a,b). Я знаю, чтобы проверить, равен ли 1. sin (a) или sin (b) 1. Я также знаю, что если ba больше 2 pi, максимальное значение будет равно 1.

Если ни одно из этих утверждений не является правдой, я не могу понять, как проверить, имеет ли уравнение значение 1 между этими точками через операторы if.

2 ответа

Решение

Сначала проверьте наличие (ba) > 2pi.

Тогда вы можете использовать тот факт, что производная синуса является косинус. Следовательно, если cos (a) положителен, а cos (b) отрицателен, у вас есть пик между ними, если cos (a) отрицателен, а cos (b) положителен, это долина. Если cos (a) и cos (b) - это один и тот же знак, то проверьте, чтобы (ba) > pi показало, есть ли у вас пик. Последний это грех (а) против греха (б).

Имеет смысл?:)

Имея, вычислите следующую точку с помощью sin(x)==1. Затем сравните x с b, чтобы проверить, находится ли 1 в вашем интервале.

Шаги для этого:

  1. вычитать сдвиг
  2. разделить на 2 пи
  3. округлим, мы хотим максимальное право на
  4. обратный 2 и 1

,

candidate=(ceil((a-pi/2)/pi/2)*pi*2)+pi/2
if candidate<b
   candidate is maximum
Другие вопросы по тегам