Минимизация функций нескольких переменных. Метод спуска

Автор: Пользователь скрыл имя, 01 Декабря 2010 в 00:31, реферат

Краткое описание

Все методы спуска решения задачи безусловной минимизации различаются либо выбором направления спуска, либо способом движения вдоль направления спуска. Это позволяет написать общую схему методов спуска.

Оглавление

1. Методы спуска (Общая схема) _________________________ 3
2. Метод покоординатного спуска._____________________ 4
3. Метод градиентного спуска.________________________________ 7
4. Метод наискорейшего спуска.______________________________ 9
5. Описание программы._____________________________________10
6. Общая блок схема.________________________________________ 11
7. Руководство для пользования.______________________________12
8. Приложение А (Листинг программы)__________________________13
IX. Приложение B
(Исследование функции U=A*x1^3+B*x2^2-C*x1-D*x2 (изменение шага))_____ 25

Файлы: 1 файл

Методы спуска.doc

— 248.00 Кб (Скачать)

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::Sh2NextClick(TObject *Sender)

    {

       ii++;

       PageControl1->ActivePageIndex=ii;

       g=3;

       }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::Sh3BackClick(TObject *Sender)

    {

       ii--;

       PageControl1->ActivePageIndex=ii;

       Panel5->Visible=false;

       Sh2Next->Visible=false;

       g=2; 

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::Sh2BackClick(TObject *Sender)

    {

       if (g ==1 )

       {

        ii--;

        PageControl1->ActivePageIndex=ii;

        Panel2->Visible=true;

        Panel3->Visible=false;

        Panel4->Visible=false;

        Panel5->Visible=false;

        }

       if (g == 2)

        {

         Panel3->Visible=true;

         Panel4->Visible=false;

         Panel5->Visible=false;

         n=KolPer[UD->Position];

         Per->Caption="X1 =";

         s=0;

         g=1;

         }

       if (g == 3)

        {

         Panel5->Visible=false;

         Sh2Next->Visible=false;

         g=2;

          } 

    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

       Panel3->Visible=true;

       n=KolPer[UD->Position];

       Per->Caption="X1 =";

    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button2Click(TObject *Sender)

    {

          PeremenN[s]=StrToFloat(Edit4->Text); //нул.приб

          InterN[s]=StrToFloat(Edit3->Text); //нач

          InterK[s]=StrToFloat(Edit5->Text); //кон

          s++;

          Per->Caption="X"+ IntToStr(s+1)+"=";

          g=2;

       if (s == n)

        {Panel4->Visible=true;g=2;}

     } 

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::Button3Click(TObject *Sender)

    {

      Param[0]=StrToFloat(Edit6->Text); //коэ.шага

      Param[1]=StrToFloat(Edit7->Text); // проб.шаг

      Param[2]=StrToFloat(Edit8->Text); //  погр.

      if(CB1->Checked == true )

       {Param[3]=StrToFloat(NT->Text); }

       else

       {Param[3]=-1;}

      Sh2Next->Visible=true;

      Panel5->Visible=true;

      g=3;

    }

    //--------------------------------------------------------------------------- 
 
 
 
 
 

    void __fastcall TForm1::PuskClick(TObject *Sender)

    {

    ss=0; //количество точек которых получилось

    Diapozon=true;

    Min();

    if (Diapozon==false)

     ss=ss-1;

    Sh3Back->Visible=true;

    Panel6->Visible=true;

    Series1->Clear();

    for(int i = 0; i <ss; i++)

     {

      Series1->AddXY(i,Tochki[i][2],"",clBlue);

      Nomer->Items->Add(i);

      }

    Nomer->Items->Add(ss);

      //Nomer->Items->St

    //ListT->Items->Add(123);

    //if ( Diapozon=true )

      //{ Itog->Caption="Точка минимума в указанном диапозоне "; }

    }

    //--------------------------------------------------------------------------- 
 

    //--------------------------------------------------------------------------- 
 

    void __fastcall TForm1::CB1Click(TObject *Sender)

    {

      if(CB1->Checked == true )

      NT->Visible=true;

      if(CB1->Checked == false )

      NT->Visible=false;

    } 

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::Button8Click(TObject *Sender)

    {

    Panel6->Visible=false;

    ListT->Items->Clear();

    Nomer->Items->Clear();

    Nomer->ItemIndex=-1;

    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::NomerChange(TObject *Sender)

    {

     int ind=Nomer->ItemIndex;

     ListT->Items->Clear();

     for (int i=0;i<n;i++)

     ListT->Items->Add(Tochki[ind][i]);

     ListT->Items->Add(Tochki[ind][2]);

     if (ind == ss)

     if( Diapozon==true)

      { ListT->Items->Add(" Минимум");}

      else

       {

        ListT->Items->Add(" Минимум");

        ListT->Items->Add("Следующая точка в");

        ListT->Items->Add("диапозон не входит");

       }

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::Pr1Click(TObject *Sender)

    {

      if(Pr1->Checked == true )

       DD=true;

      if(Pr1->Checked == false )

       {

        DD=false;

        MessageDlg("Вы отключили проверку  диапозона точки,"

                     "убедитесь в этом",mtWarning,

                TMsgDlgButtons() << mbOK , 0);

       }

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::CB2Click(TObject *Sender)

    {

     if(CB2->Checked == true )

      {

        Panel7->Visible=true;

        Series1->Active=false;

        Series2->Clear();

        Perem->Text="Xi";

        Perem->Items->Clear();

        CB3->ItemIndex=-1;

        CB3->Items->Clear();

        CB4->ItemIndex=-1;

        CB4->Items->Clear();

        for(int i = 0; i < n; i++)

          Perem->Items->Add(i+1);

        for(int i = 0; i <= ss; i++)

          {

           CB3->Items->Add(i);

          }

       }

     if(CB2->Checked == false )

      {

        Series2->Clear();

        Series2->Active=false;

        Series1->Active=true;

        Panel7->Visible=false;

        CB4->Enabled=false;

        CB3->Enabled=false;

       } 

     }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::PeremChange(TObject *Sender)

    {

      int ind=Nomer->ItemIndex;

      CB3->Enabled=true;

      CB3->ItemIndex=0;

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::CB3Change(TObject *Sender)

    {

      CB4->Items->Clear();

      CB4->ItemIndex=-1;

      int in=CB3->ItemIndex;

      CB4->Enabled=true;

      for(int i = in; i <=ss ; i++)

          CB4->Items->Add(i);

      CB4->ItemIndex=0;

    }

    //--------------------------------------------------------------------------- 

    void __fastcall TForm1::CB4Change(TObject *Sender)

    { 

     Bild->Visible=true;

    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::BildClick(TObject *Sender)

    {

          Series2->Clear();

          ListP->Items->Clear();

          int nh=CB3->ItemIndex;

          int nk=CB4->ItemIndex;

          Series2->Active=true;

          for(int i = nh; i <=nk+nh; i++)

          {

            Series2->AddXY(i,Tochki[i][ind],"",clBlue);

            ListP->Items->Add(Tochki[i][ind]);

           }

        Bild->Visible=false;

        CB4->Enabled=false;

        CB4->Items->Clear();

Информация о работе Минимизация функций нескольких переменных. Метод спуска