Первоначальная догадка для Ньютона Рафсона

Как я могу определить начальное предположение уравнения Ax+Bsin(x)=C с точки зрения A, B и C? Я пытаюсь решить это с помощью Ньютона Рафсона. A, B и C будут заданы во время выполнения.

Есть ли для этой цели какой-либо другой метод, более эффективный, чем метод Ньютона Рафсона?


person Hemesh Singh    schedule 05.04.2012    source источник
comment
Я думаю, что это должно быть на math.stackexchange.com/?as=1.   -  person marspzb    schedule 05.04.2012


Ответы (4)


Оптимальное начальное предположение — это сам корень, поэтому поиск «оптимального» предположения на самом деле недействителен.

Любое предположение даст вам действительное решение в конечном итоге, пока f'(x0) != 0 для любого шага, что происходит только в нулях cos(x), которые равны k*pi + pi/2 для любого целого числа k.

Я бы попробовал x0 = C * pi, просто посмотреть, работает ли он.

Однако вашей самой большой проблемой будет периодический характер вашей функции. Метод Ньютона будет медленным (если он вообще работает) для вашей функции, поскольку sin(x) будет сдвигать x0 вперед и назад снова и снова.


Меры предосторожности:

Вы заметили, что в методе Ньютона f'(xn) стоит в знаменателе? f'(x) приближается к 0 бесконечно много раз. Если ваш f'(x) = 0.0001 (или близко к нулю, что может произойти), ваш xn+1 отбрасывается очень далеко от xn.

Что еще хуже, это может происходить снова и снова из-за того, что f'(x) является периодической функцией, а это означает, что метод Ньютона может даже никогда не сойтись для произвольного x0.

person Blender    schedule 05.04.2012
comment
Я пытаюсь решить проблему spoj.pl/problems/TRIGALGE . Теперь я вижу проблему с подходом Ньютона Рафсона. Нормальное деление пополам дает TLE (превышен лимит времени). Теперь я думаю смешать Bisection с Newton Raphson. Есть ли лучший подход? - person Hemesh Singh; 05.04.2012
comment
Я бы сначала попробовал Bisection для нескольких итераций, чтобы найти подходящее предположение для метода Ньютона, а затем использовал бы метод Ньютона для более точной аппроксимации. - person Blender; 05.04.2012
comment
Утверждение, что любая догадка даст правильное решение, неверно: см. >здесь например. Утверждение, что f'(x) приближается к нулю бесконечно много раз, также само по себе неверно — оно полностью зависит от значения A (а если B = 0, то явно периодической составляющей нет). Весь вопрос некорректен, поскольку решений может быть бесконечно много, и полезность каждого из них не указывается ОП. Просто говорю. - person Rody Oldenhuis; 20.08.2012
comment
@RodyOldenhuis: я не слишком много думал о своем ответе, когда писал его, поэтому я упустил из виду несколько деталей и предположил некоторые вещи, которых мне не следовало знать. - person Blender; 20.08.2012
comment
Что ж, прошло некоторое время, и я понимаю вашу позицию, полностью учитывая ОП в то время. Я прокомментировал в основном, чтобы случайные прохожие больше знали о недостатках этого ответа. - person Rody Oldenhuis; 20.08.2012

Самое простое «хорошее» приближение состоит в том, чтобы просто предположить, что sin(x) приблизительно равен нулю, и поэтому установить:

x0 = C/A
person RBarryYoung    schedule 05.04.2012

Что ж, если A, B и C действительны и отличны от 0, то (B+C)/A — это верхняя кавычка до самого высокого корня, а (C-B)/A — нижняя кавычка до самого нижнего корня, как -1 <= sin(x) <= 1. Можно было бы начать с тех.

person Javier Garcia    schedule 03.06.2015

Метод Ньютона может работать с любым предположением. проблема проста, если есть уравнение, и я предположил, что x0=100, и лучшее близкое решение для него x0=2, и я знаю, что ответ равен 2,34*, используя любую догадку в мире, вы в конечном итоге получите 2,34* метод говорит выбрать предположение, потому что без действительного предположения потребуется много решений, которые неудобны никто не хочет повторять метод 20 раз, и угадать решение не сложно, вы просто найдете критическую точку - например, 3 слишком большое и 2 слишком мало, поэтому ответ находится между 2 и 3, но если вместо угадывания 2 вы угадаете 50, вы все равно получите правильное решение. как я уже сказал, это просто займет у вас намного больше времени я проверил метод сам я угадал 1000 по случайному уравнению и я знал, что наилучшее предположение было 4 ответ был между 4 и 5 я выбрал 1000 это заняло у меня много времени но через несколько часов я снизился с 1000 до 4. что-то если вы каким-то образом не можете найти критическую точку, вы можете поставить случайное число, равное x0, и тогда в конечном итоге вы получите правильное решение, независимо от того, какое число вы угадали.

person Unsolvable cubic    schedule 21.05.2017
comment
Пожалуйста, отформатируйте свой ответ лучше. Очень трудно следить за своими мыслями. - person Taras Matsyk; 21.05.2017