Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод Фиббоначчи / ZS1 - kvadr interpol - ekstrapol

.cpp
Скачиваний:
5
Добавлен:
01.05.2014
Размер:
1.83 Кб
Скачать
#include<conio.h>
#include<math.h>
#include<iostream.h>
double f(double x)
{
  //if(x>=0) return (4*x*x*x-3*x*x*x*x);
  //else return (4*x*x*x+3*x*x*x*x);
	return (2*x*x+16/x);
}
double dif (double x)
{
 //if(x>=0) return (12*x*x-12*x*x*x);
 //else return (12*x*x+12*x*x*x);
	return (4*x-16/(x*x));
}
void main()
{
//  clrscr();
  double a1,x0=1,x1,h1=0.01,a,b,c,n,x2,min,e=0.001,I,M,b1;
  int k=1;
  x1=x0+h1;
  if(f(x0)<f(x1))
  {
	 h1=-h1;
	 x1=x0+h1;
  }
  do
  {
	 h1=2*h1;
	 x1=x1+h1;
	 k++;
  }
  while(f(x1-h1)>f(x1)&&dif(x1-1.5*h1)*dif(x1)>0);
  a=x1-1.5*h1;
  b=x1;
  if(a>b)
  {
	 n=a;
	 a=b;
	 b=n;
  }
a1=a;
b1=b;
//////////////////////ZS-1/////////////////////////
	cout<<a<<"\n";
	cout<<b<<"\n";



	do{
	M=a+0.618*fabs(b-a);
	I=a+0.382*fabs(b-a);
	k=1;
	if(f(I)<f(M)){
	b=M;
	M=I;
	I=a+0.382*fabs(b-a);
	}
	else {
	a=I;
	I=M;
	M=a+0.618*fabs(b-a);
	}
	k++;
	}while(fabs(b-a)>e);
	min=(a+b)/2;
	cout<<"ZS-1\n";
	cout<<"Minimum: "<<min<<"\n";
	cout<<"Iteracii: "<<k;
	getch();

	
	//////////////lineinaya Interpolyaciya (metod sekuchih)////////////////////
	do{
	x1=b1-dif(b1)*(b1-a1)/(dif(b1)-dif(a1));
	if(dif(x1)>0)
	b1=x1;
	else a1=x1;
	k++;
	}while(fabs(dif(x1))>e);
	cout<<"\nlineinaya Interpolyaciya (metod sekuchihsya)";
	cout<<'\n';
	cout<<"Minimum: "<<x1<<"\n";
	cout<<"Iteracii: "<<k;
	getch();
  ///////////////Interpolyacii-Extrapolyaciya///////////////////
	int d;
	k=1;
	do{
	b=d;
	x1=(a1+b1)/2;
	a=x1-h1;
	b=x1;
	c=x1+h1;
	d=1/2*(f(a1)*(b*b-c*c)+f(b1)*(c*c-a*a)+f(c)*(a*a-b*b))/(f(a1)*(b-c)+f(b1)*(c-a)+f(c)*(a-b));
	k++;
	cout<<"_"<<k;
	}while(fabs((d-b)/b)>e && fabs((f(d)-f(b))/f(b))>e);
	min=(b+d)/2;
	cout<<"Interpolyacii-Extrapolyaciya";
	cout<<"Iteracii: "<<k;
	cout<<"Minimum: "<<min;
}


Соседние файлы в папке Метод Фиббоначчи