Toggle navigation
Images.Elk.pl
metoda najszybszego spadku
#include
#include
#include
using namespace std;
float f(float x1, float x2, float x3){
float funk;
funk=4*x1*x1+6*x2*x2+3*x3*x3-0.9*x1*x2-2.6*x1*x3-6.5*x2*x3-16*x1+36*x2+24*x3+644;
return funk;
};
int main(int argc, char *argv[])
{
float x1,x2,x3,eps,e,L1,a,b,xL,xR,k,poch1,
poch2,poch3,grad1,grad2,grad3,p,x10,x20,x30;
int i=0;
e=0.5;
printf ("podaj x1 x2 x3 E\n");
scanf("%f %f %f %f",&x1,&x2,&x3,&eps);
k=(sqrt(5)-1)/2;
p=10;
while( p > eps ){
i= i +1;
x10=x1;
x20=x2;
x30=x3;
a=-100; b=100;
poch1=8*x1-0.9*x2-2.6*x3-16;
poch2=12*x2-0.9*x1-6.5*x3+36;
poch3=6*x3-2.6*x1-6.5*x2+24;
grad1=-poch1;
grad2=-poch2;
grad3=-poch3;
while ((b-a)>e){
xL=b-k*(b-a); xR=a+k*(b-a);
if( f( x1+xL*grad1,x2+xL*grad2,x3+xL*grad3 ) > f(x1+xR*grad1 ,x2+xR*grad2,x3+xR*grad3) ){
a=xL;
}
else{
b=xR;
}
}
L1=(a+b)/2;
x1=x1+L1*grad1;
x2=x2+L1*grad2;
x3=x3+L1*grad3;
p = sqrt( (x10-x1)*(x10-x1) + (x20-x2)*(x20-x2) + (x30-x3)*(x30-x3) );
}
float wynik;
wynik=f(x1,x2,x3);
printf("%f, %f, %f\n wartosc=%f\ni=%d",x1,x2,x3,wynik,i);
system("PAUSE");
return EXIT_SUCCESS;
}
Wyszukiwarka
Podobne podstrony:
Wyznaczanie przyspieszenia ziemskiego metoda spadku swobodne
32 Wyznaczanie modułu piezoelektrycznego d metodą statyczną
całkowanie num metoda trapezów
OSWIADCZENIE O PRZYJECIU SPADKU Z DOBRODZIEJSTWEM INWENTARZA
Metoda kinesiotapingu w wybranych przypadkach ortopedycznych
D Kierzkowska Metoda na wagę złota
Badanie czystości metodą klasyczną
Metoda symboliczna
Metoda Hahna
Przystawka do spawania aluminium metoda TIG cz3
Metoda Rungego Kutty
PORÓWNANIE TECHNOLOGI ŁĄCZENIA MASZYN METODĄ KLEJENIA METODA
Metoda 10 10 10
więcej podobnych podstron