 
        
        
          Добавил:
          
          
        
        
    
            Studfiles2
            
            
            
            
            
            Опубликованный материал нарушает ваши авторские права? Сообщите нам.
          
          Вуз:
          Предмет:
          Файл:Различные алгоритмы минимизации, реализованные в С++ / all / LAB2_2
.CPP#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <stdio.h>
 double func(double x)
	{
	 double f=(10*x*x*x+3*x*x+x+5)*(10*x*x*x+3*x*x+x+5);
	 return f;
	}
 double df(double x)
	{
	 double fproizv=(20*x*x*x+6*x*x+2*x+10)*(30*x*x+6*x+1);
	 return fproizv;
	}
 void main()
  {
   clrscr();
   double a,b,d,z,w,gamma,xmin,h1,x1,x2,f1,f2,l,m,delta;
   int n=1,k=1,K=0;
   double eps=0.01;
   delta=0.1*eps;
   h1=0.01;
   cout<<"‚ўҐ¤ЁвҐ Їа®Ё§ў®«мго в®зЄг\n";
   cin>>x1;
   x2=x1+h1;
   if (df(x1)>0) h1=-h1;
   f1=df(x1);
   f2=df(x2);
   while (f1*f2>0)
	{
	 x1=x2;
	 h1=h1*2;
	 x2=x1+h1;
	 f1=df(x1);
	 f2=df(x2);
	 n=n+1;
	}
   a=x2-h1;
   if(a>x2)
	{b=a; a=x2;}
   else
	b=x2;
   cout<<"€бе®¤л© ЁвҐаў « - ["<<a<<";"<<b<<"]";
 while (n<=5)
	{l=(a+b-delta)/2;
	 m=(a+b+delta)/2;
	 if (func(l)<func(m))
		{
		 b=m;
		}
	 else
		{
		 a=l;
		}
	 n++;
	}
   while (abs(df(d))>eps)
	{
	 z=df(a)+df(b)+3*(func(a)-func(b))/b;
	 w=sqrt(z*z-df(a)*df(b));
	 gamma=(z-df(a)+w)/(df(b)-df(a)+2*w);
	 d=a+gamma*(b-a);
	  if (df(d)>0)
		{
		 b=d;
		}
	  else
		{
		 a=d;
		};
	 k++;
	};
   K=n+k;
   xmin=d;
   cout<<"\nЊЁЁ¬г¬ = "<<xmin<<"\nЉ®«ЁзҐбвў® ЁвҐа жЁ©="<<K;
   getch();
  }
          Соседние файлы в папке all
          
      
    
    
    
          