Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Различные алгоритмы минимизации, реализованные в С++ / all / SWANN1
.CPP#include<conio.h>
#include<math.h>
#include<iostream.h>
float f(float x)
{
return 2*x*x+3*exp(-x);
}
void swann(float x0, float a, float b)
{
float h1,x1;
h1=0.01*fabs(x0);
x1=x0+h1;
if(f(x0)<f(x1))
{
h1=-h1;
x1=x0+h1;
}
do
{
h1=2*h1;
x1=x1+h1;
}
while(f(x1-h1)>f(x1));
a=x1-1.5*h1;
b=x1;
}
void main()
{
clrscr();
float x0,x1,a,b,n,x2,min,e;
int k=1;
cout<<"‚ўҐ¤ЁвҐ з «мго в®зЄг ";
cin>>x0;
swann(x0,a,b);
if(a>b)
{
n=a;
a=b;
b=n;
}
e=0.001;
x1=a+0.382*fabs(b-a);
x2=a+0.618*fabs(b-a);
while(fabs(b-a)>e)
{
if(f(x1)<f(x2))
{
b=x2;
x2=x1;
x1=a+0.382*fabs(b-a);
}
else
{
a=x1;
x1=x2;
x2=a+0.618*fabs(b-a);
}
}
min=(a+b)/2;
cout<<min<<'\n';
getch();
}
Соседние файлы в папке all