Метод Ньютона на Паскале

Метод Ньютона, реализованный на Паскале.
// Метод Ньютона - метод второго порядка
// Используется только для выпуклых функций
// Очень быстро сходится
// f(x) = 5x^2 + 8x^(5/4) - 20x
// [0; 1,5]  е=0,000001

const e=0.000001; // точность
var
a,b: real; // начало и конец отрезка
x1,x2: real; // точки деления
y1,y2: real; // значения целевой функции в точках деления
n: integer; // число итераций
x,xn: real; // результат

function f(x:real):real; // целевая функция
begin
     Result:=5*sqr(x) + 8*power(x,5/4) - 20*x;
end;

function d1(x:real):real; // производная первого порядка
begin
     Result:=10*x + 10*power(x,1/4) - 20;
end;

function d2(x:real):real; // производная второго порядка
begin
     Result:=2.5*power(x,-0.75)+10;
end;

Begin
cls;
n:=0; // обнуляем число итераций
a:=0;
b:=1.5; // конец отрезка
x:=b; //начальное приближение
repeat
      inc(n);
      xn:=x;
      x:=x-d1(x)/d2(x);
until abs(x-xn)<=e;
writeln('Точка минимума: ', x);
writeln('Значение функции в точке минимума: ',f(x)); // середина интервала
writeln('Результат получен за ',n,' итераций.');
End.

Похожие записи для топика «Метод Ньютона на Паскале»

Комментарии (0)

Прокомментировать