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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 15:29   #1
naty7773
Пользователь
 
Регистрация: 11.01.2012
Сообщений: 55
Печаль Программа реализации метода покоординатного спуска

Пожалуйста,помогите написать программу,реализующую метод покоординатного спуска!!!Может это легко,но у нас из группы никто не понял как это делать.Поэтому прошу помощи у вас((((Скажите,как это вобще реализовать???
Задание во вложениях
Изображения
Тип файла: jpg DSC02879.jpg (121.2 Кб, 158 просмотров)
naty7773 вне форума Ответить с цитированием
Старый 23.12.2012, 18:58   #2
naty7773
Пользователь
 
Регистрация: 11.01.2012
Сообщений: 55
По умолчанию

Вот нам писала пример преподаватель на другое задание.Но я все равно не поняла,как сделать именно свое((((Помогите!!!!


Код:
uses crt;
 const
  n = 2;
  dx=0.01;
 type
  point = array [0..10] of real;
 var
  j,k,M:integer;
  x:point;
  eps,eps1,eps2,gr,t:real;
  xtrue,grad:point;
  ist1,ist2,ok,nice:boolean;
  o:byte;
 
 procedure Quit1(jj,mm:integer; var kk:integer; is1:boolean);
   begin
    if jj>=mm then is1:=true
     else  kk:=0;
   end;
 
 procedure step5(kk:integer; var jj:integer; is2:boolean);
   begin
     if k<=n-1 then is2:=true;
     if k=n then jj:=jj+1;
    end;
 
 function f(z:point):real;
  begin
   f:=sqr(z[1]+1)+sqr(z[2]-11);
  end;
 
 function pr(a:point; q:integer):real;
  var y:point;
      left,rigth:real;
   begin
       y:=a;
       rigth:=f(y);
       y[q]:=y[q]+dx;
       left:=f(y);
       pr:=(left-rigth)/dx;
    end;
 
 procedure gradient(v:point; var gr:point);
  var i:byte;
  begin
   for i:=1 to 2 do
    begin
      gr[i]:=pr(v,i);
    end;
  end;
 
 function NormGrad(grad1:point):real;
  begin
   NormGrad:=sqrt(sqr(grad1[1])+sqr(grad1[2]));
  end;
 
 procedure NewPoint(w:point; tk:real; var np:point);
  var  e:point; p:real;  q1:byte;
  begin
     q1:=1;
     p:=pr(w,q1);
     e[1]:=w[1]/(tk*p);    np[1]:=w[1]-tk*p*e[1];
     e[2]:=w[2]/(tk*p);    np[2]:=w[1]-tk*p*e[2];
  end;
 
 function Norma(x1,x2:point):real;
  begin
   Norma:=sqrt(sqr(x1[1]-x2[1])+sqr(x1[2]-x2[2]));
  end;
 
 
begin
clrscr;
 
 write('input eps: '); readln(eps);
 write('input eps1: '); readln(eps1);
 write('input eps2: '); readln(eps2);
 
 j:=0;   k:=0;   x[j,k]:=[0,6];
 M:=100;
  repeat
 
   ist1:=false; ist2:=false; ok:=false; nice:=false; o:=0;
 
    repeat
       Quit1(j,M,k,ist1);
        if ist1=true then begin xtrue:=x[j,k]; break; end;
       step5(k,j,ist2);
        if ist2=false then begin  j:=j+1; x[j+1,k]:=x[j,k]; end;
    until (ist2=true);
    if xtrue=x[j,k] then break;
 
     while (o<>2) do
     begin
      gradient(x[j,k],grad);
      gr:=NormGrad(grad);
 
      if gr<eps1 then begin xtrue:=x[j,k]; break; end;
      t:=1;
 
      repeat
       NewPoint(x[j,k],x[j,k+1]);
         if (f(x[j,k+1])-f(x[j,k]))<0 then ok:=true
          else t:=t/2;
      until ok=true;
 
        if (Norma(x[j,k+1],x[j,k])<eps2) and (abs(f(x[j,k+1])-f(x[j,k]))) then
         begin  nice:=true;  o:=o+1
          else k:=k+1;
 
        step5(k,j,ist2);
        if ist2=false then begin x[j,k]:=x[j-1,k]; break; end;
      end;
 
  until xtrue=x[j,k];
 
 writeln(xtrue[1],' ',xtrue[2]);
 readln;
 end.
naty7773 вне форума Ответить с цитированием
Старый 23.12.2012, 19:00   #3
naty7773
Пользователь
 
Регистрация: 11.01.2012
Сообщений: 55
По умолчанию

Вот сам метод и алгоритм,по нему надо сделать
Изображения
Тип файла: jpg DSC02879 - копия.JPG (123.6 Кб, 156 просмотров)
naty7773 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Метод покоординатного спуска Hellgate Помощь студентам 0 12.11.2011 00:42
Проблема в реализации метода Хаффмана 77sega77 Общие вопросы Delphi 4 06.05.2011 23:53
Метод покоординатного спуска новичочек C++ Builder 0 02.05.2011 15:44
алгоритм покоординатного спуска mimi_mimi Паскаль, Turbo Pascal, PascalABC.NET 0 20.06.2010 18:23
Пргограмма реализации метода эйлера Серг87 Помощь студентам 0 08.02.2010 09:33