Найти нулевые точки функции пазухи - PullRequest
0 голосов
/ 03 ноября 2010

Я хочу реализовать функцию в Java, которая находит нулевые точки функции синуса.Я знаю, как это сделать, но я не совсем понимаю следующее определение этой проблемы:

Реализация функции, которая ищет нулевые точки в функции синуса в интервале между a и b.Интервал поиска [нижний предел, верхний предел] должен быть уменьшен вдвое до тех пор, пока нижний предел и верхний предел не будут меньше 0,0001 друг от друга.интервал?Есть идеи?

Ответы [ 3 ]

5 голосов
/ 03 ноября 2010

Звучит так, будто вас просят осуществить бинарный поиск , и вам, вероятно, требуется |b-a| < pi, чтобы в интервале был уникальный корень.Кстати, они называются «синус» и «корень» (или «ноль») на английском языке.

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

1 голос
/ 03 ноября 2010

Подсказка: вы можете ожидать хотя бы одного корня в интервале, если

(A) sgn(f(lower_limit) != sgn(f(upper_limit))

Если это условие A верно: вдвое сократить интервал, iaw:

{[min,max]} -> {[min, (max-min)/2] , ](max-min)/2,max]}

и проверьте два подинтервала.

Просто попробуйте на бумаге (используйте график, разделите пополам интерфалы и попытайтесь выяснить, какой интервал является кандидатом на «корневой контейнер»)

0 голосов
/ 24 февраля 2014

Синус определяется его частотой.пересечения нуля встречаются в периоды 0,5 и 1 синуса.то есть sin * pi и * 2pi для обычной функции кода sin.Таким образом, между А и В все точки пересечения нуля - это точки, меньшие, чем B, больше, чем А, равные периоду == 1 и 0,1, с использованием модуля для игнорирования таких значений, как 2, 2,5 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...