Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2011, 13:02   #1
Юлия999
 
Регистрация: 23.05.2010
Сообщений: 7
Восклицание метод парабол

Написать программу численного расчета нелинейного уравнения (текст программы)методом парабол(мюллера)
как то не получается...может кто знает???

Код:
 function findMinQuadApprox(xs, h, eps1, eps2: real; ax_step: longint): real;
      var
        x, f_x: array[0 .. 2] of real;
        k: longint;
        i_min, i_max: integer;
        xn, f_xn, a1, a2: real;
         findMinQuadApprox := xn;
      begin
         x[0] := xs; x[1] := xs + h;
         if f(x[0]) > f(x[1]) then
          begin
           x[2] := xs + 2 * h
          end
         else
          begin
           x[2] := xs - h
          end;
         f_x[0] := f(x[0]); f_x[1] := f(x[1]); f_x[2] := f(x[2]);
       
         for k := 0 to pred(max_step) do
          begin
            if f_x[0] < f_x[1] then
             begin
              if f_x[0] < f_x[2] then
                i_min := 0
              else i_min := 2
             end
            else
             begin
               if f_x[1] < f_x[2] then
                 i_min := 1
               else i_min := 2;
             end;
            a1 := (f_x[1] - f_x[0]) / (x[1] - x[0]);
            a2 := 1.0 / (x[2]-x[1])*((f_x[2]-f_x[0]) / (x[2]-x[0])-(f_x[1]-f_x[0]) / (x[1]-x[0]));
            xn := (x[1]+x[0])*0.5-a1/(2*a2);
            f_xn := f(xn);
            if (abs((xn-x[i_min])/xn) < eps1) and
               (abs((f_xn-f_x[i_min])/f_xn) < eps2) then break;
            if f_x[0] >= f_x[1] then
             begin
               if f_x[0] > f_x[2] then
                 i_max := 0
               else i_max := 2;
             end
            else
             begin
               if f_x[1] > f_x[2] then
                i_max := 1
               else i_max := 2;
            end;
            if f_xn < f_x[i_min] then
             begin
              x[i_max] := xn;
              f_x[i_max] := f_xn;
            end
            else
             begin
              x[i_max] := 2*x[i_min]-xn;
              f_x[i_max] := f(x[i_max]);
            end;
         end;
         findMinQuadApprox := xn;
      end;

Последний раз редактировалось Stilet; 04.09.2011 в 16:38.
Юлия999 вне форума Ответить с цитированием
Старый 04.09.2011, 16:17   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

метод парабол заключается в том, что мы узнаём значение координаты X, при которой функция принимает наименьшее значение. в своих старых студенческих записях нашёл примерный алгоритм:
Код:
delta:=1e10;
dx:=1e-4;
h:=0.5*dx
cnt:=0;//счётчик шагов
while(delta>eps)do
begin
   f1:=fun(X0+dx);
   f2:=fun(X0);
   f3:=fun(X0-dx);
   X=X0-h*(f1-f3)/(f1-2*f2+f3);
   delta=|X-X0|;//это модуль
   X0:=X;
   cnt:=cnt+1;
end;
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Коммивояжера. Метод Монте-Карло и метод приращений. [Паскаль] U9110 Помощь студентам 4 06.04.2011 09:48
метод статического моделирования (метод Монте-Карло) 666Julia666 Помощь студентам 0 02.04.2011 16:31
метод парабол(мюллера) Юлия999 Паскаль, Turbo Pascal, PascalABC.NET 0 27.03.2011 19:20
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08