Скачиваний:
13
Добавлен:
01.05.2014
Размер:
1.63 Кб
Скачать
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>

double f (double x)
{
  return (x*x+2*x);
};
double f1 (double x)
{
 return (2*x+2);
};
  void main()
   {
	double x0=4,x1,h=0.01,e=0.000001,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);
////////////////////////////////////////////////////////////
//--------------Metod trehtochechnogo poiska--------------//
////////////////////////////////////////////////////////////
	double xm,x2,l,x;
	int k=1;
	l=fabs(b-a);
	while(l>e)
	{
	 xm=(a+b)/2;
	 l=fabs(b-a);
	 x1=a+l/4;
	 x2=b-l/4;
	 if(f(x1)<f(xm))
	  {
		b=xm;
		xm=x1;
	  }
	 else
	  {
		if((f(x1)>=f(xm)) && (f(xm)<=f(x2)))
		  {
		   a=x1;
		   b=x2;
		  }
		 else
		  {
		   a=xm;
		   xm=x2;
		  };
		};
	};
  x=xm;
  printf("min=%.2f  (po metodu troichnogo poiska)\n",x);
////////////////////////////////////////////////
//------------Metod interpoliacii-------------//
////////////////////////////////////////////////
  a=A;
  b=B;
  xm=b-f1(b)*(b-a)/(f1(b)-f1(a));
  while(fabs(f1(xm))>e)
   {
	 xm=b-f1(b)*(b-a)/(f1(b)-f1(a));
	 if (f1(xm)>0)
	  {
		b=xm;
	  }
	 else
	  {
	   a=xm;
	  };
   };
  printf("min=%.2f  (po metodu interpoliacii)",xm);
}
Соседние файлы в папке all