Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Различные алгоритмы минимизации, реализованные в С++ / all / DIHOTOMI
.CPP#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
double f(double x)
{
return (2*x*x+16/x);
};
void main()
{
double x0=1,x1,h=0.01,e=0.00001,a,b,A,B;
///////////////////////////////////////////////////////////
//--------------------metod Swenna-----------------------//
///////////////////////////////////////////////////////////
if(f(x0)<f(x0+h))
h=-h;
x1=x0+h;
while(f(x1)<=f(x0))
{
x0=x1;
x1=x0+h;
h=2*h;
}
B=b=x0;
A=a=x1;
clrscr();
printf("a=%.2f (levyj kraj intervala)\n",a);
printf("b=%.2f (pravyj kraj intrvala)\n",b);
/////////////////////////////////////////////////////
double F1,F2,x,L;
double d=0.000001; //konstanta razlichimosti
// int k=1; //schetchik
F1=f((A+B-d)/2);
F2=f((A+B+d)/2);
L=fabs(B-A);
while(L>e)
{
if (F1<F2)
{
B=(A+B+d)/2;
L=fabs(B-A);
}
else
{
A=(A+B-d)/2;
L=fabs(B-A);
}
F1=f((A+B-d)/2);
F2=f((A+B+d)/2);
};
// clrscr();
x=(A+B)/2;
printf("%f ",x);
}
Соседние файлы в папке all