
Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Различные алгоритмы минимизации, реализованные в С++ / all / ZS-1
.CPP#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
double F(double x)
{
return (2*x*x+3*exp(-x));
}
void main()
{
clrscr();
double x1,x2,h,x,a,b,y,m,k,e,min;
double x,y,m,k,e,min;
h=0.001;
x1=1.0;
x2=x1+h;
if(F(x2)>F(x1))
{ h=-h;
x2=x1+h;
}
while(F(x2)<F(x1))
{x2=x1;
h=2*h;
x2=x2+h;
}
a=x2-h*3.0/2.0;
b=x2;
cout<<"\n ‡ 票Ґ ="<<a;
cout<<"\n ‡ 票Ґ b="<<b;
// ЊҐв®¤ ‡‘-1
y=a+0.618*fabs(a-b);
m=a+0.382*fabs(a-b);
k=1;
e=0.001;
while(fabs(a-b)>e)
{
if (F(y)<F(m))
{
b=m;
m=y;
y=a+0.382*fabs(a-b);
}
else
{
a=y;
y=m;
m=a+0.618*fabs(a-b);
}
k++;
}
min=(a+b)/2;
cout<<"\n ЊҐв®¤ ‡®«®в®Ґ ‘ҐзҐЁҐ 1";
cout<<"\n ‡ 票Ґ ¬ЁЁ¬г¬ = "<<min;
getch();
}