Другие языки программирования и технологии

Объясните пожалуйста алгоритм упрощенного метода ньютона

Объясните пожалуйста алгоритм упрощенного метода ньютона
Есть два упрощения метода касательных Ньютона: можно вычисляться производную функции, нуль которой нужно отыскать, в начально задаваемой точке только один раз. Это может помочь в несколько раз сократить вычисление корней каких-нибудь сложных уравнений. Для примера можно рассмотреть численное решение трансцендентного уравнения вида
x - cos x = 0
на а/я Pascal:
 uses crt; 
var i, j, n: integer; x, v: real;
function f(x: real): real;
begin
f := x - cos(x)
end;
begin
clrscr();
n := 0;
write('x₀ = ');
readln(x);
v := 1 + sin(x);
for i := 1 to 16 do
begin
x := x - f(x) / v;
writeln(i: 2, ')', x: 20: 16);
end
end.
Во втором упрощении сжимающее отображение для искомого корня задаётся так:
x = x - 2h•f(x)/(f(x+h)-f(x-h)) - здесь функция f, нуль которого ищется, вычисляется трижды на трёхточечном шаблоне, а производная заменяется её разностным аналогом, поскольку что представляет из себя истинная производная одномерной функции может быть заранее даже неизвестно. В этом упрощающем алгоритме Ньютона итераций обычно меньше чем в первом:
 uses crt; 
var n: integer; x, h, d: real;
function f(x: real): real;
begin
f := x - cos(x)
end;
begin
clrscr();
h := 1e-4;
d := 2e-4;
write('x₀ = ');
readln(x);
for n := 1 to 5 do
begin
x := x - f(x) * d / (f(x + h) - f(x - h));
writeln(n: 2, x: 20:16)
end
end.
Во втором случае итераций требуется всего четыре, зато в первом упрощающем алгоритме Ньютона косинус на каждом шаге итерации вычисляется только один раз, а во втором три, так что первый алгоритм действительно в чём-то проще второго, поэтому он обычно и называется упрощённым методом Ньютона.
ВЮ
Владимир Юновидов
66 572
Лучший ответ
Упрощённый метод Ньютона отличается тем, что значение производной считаем один раз в единственной точке.

Для поиска корня уравнения: f(x) = 0:
  1. Берём какую-то начальную точку x[0].
  2. Один раз считаем значение производной функции: q = f'(x[0]).
  3. Считаем точку x[1] = x[0] - f(x[0]) / q
  4. Считаем точку x[2] = x[1] - f(x[1]) / q
  5. И т.д. в цикле: x[i + 1] = x[i] - f(x[i]) / q
  6. Останавливаем вычисления, когда |x[i] - x[i - 1]| < ε

Метод секущих - это немного сложнее, но не требует производной.
Жаслан Увалеев
Жаслан Увалеев
86 055
Упрощенный метод Ньютона, также известный как метод касательных, является одним из численных методов для приближенного решения уравнений. Он основан на следующем алгоритме:

Задать начальное приближение решения x₀.
Вычислить значение функции f(x₀) и ее производной f'(x₀) в точке x₀.
Построить касательную к графику функции в точке x₀. Эта касательная будет аппроксимировать график функции в окрестности точки x₀.
Найти пересечение касательной с осью абсцисс. Это и будет новое приближение решения x₁.
Повторять шаги 2-4 с использованием x₁ вместо x₀, пока не будет достигнута заданная точность.
Алгоритм упрощенного метода Ньютона предполагает, что функция f(x) является достаточно гладкой и имеет непрерывную производную. Он может быть использован для решения уравнений любой сложности, включая трансцендентные и алгебраические уравнения.

Важно отметить, что этот метод не гарантирует нахождение корня уравнения и может сходиться к ложному корню. Также он может сходиться медленно или не сходиться вообще, если начальное приближение выбрано неправильно или функция имеет особенности в окрестности точки x₀. Поэтому при использовании упрощенного метода Ньютона необходимо следить за сходимостью и правильно выбирать начальное приближение.
Dmitrij Averin
Dmitrij Averin
259