Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Различные алгоритмы минимизации, реализованные в С++ / all / INTERPOL
.CPP#include <iostream.h>
#include <math.h>
#include <conio.h>
double function(double x) {
return (2*x*x+16/x);
}
double SWANN(double& a, double& b,double& c) {
double shag=0.001,np=1;
a=np;
b=np+shag;
if (function(a)<function(b)) { //dvigenie nalevo
shag=-shag;
while (function(a)<function(b)) {
shag=2*shag;
np=np+shag;
c=b;
b=a;
a=np;
};
} else
if (function(a)>function(b)) { //dvigenie napravo
while (function(b)<function(a)) {
shag=2*shag;
np=np+shag;
c=a;
a=b;
b=np;
};
} //if
return(0);
}
double interpol(double a,double b,double c){
double fa,fb,fc;
fa=function(a);
fb=function(b);
fc=function(c);
return (0.5*(fa*(b*b-c*c)+fb*(c*c-a*a)+fc*(a*a-b*b))/(fa*(b-c)+fb*(c-a)+fc*(a-b)));
} ;
main(){
double x,a,b,c;
clrscr();
x=4;
SWANN(a,b,c);
cout<<"znachenie funkcii: "<<function(x)<<"\ninterval: "<<a<<" = "<<b<<" = "<<c<<"\n"<<"interpol minimum: "<<interpol(a,b,c)<<"\n";
return(0);
}
Соседние файлы в папке all