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

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>


double func(double x)
{
  return x*x*x*x-14*x*x*x+60*x*x-70*x;
}


double x0=2, e=0.01, h, x1, x2, a, b;


void svenn(void)
{
   h=e*fabs(x0);
   x1=x0;
   x2=x1+h;
   if (func(x1) < func(x2))
	h = -h;
    x1=x0;
    x2=x1+h;
   do
     { h=h*2;
	x1=x2;
	x2=x1+h;
    }
   while( func(x2) < func(x1));
   a = x2-3*h/2;
   b = x2;
   double r;
   if(a < b)
     cout<<"a:"<<a<<endl<<"b:"<<b<<endl;
   else
    { r=b;
       b=a;
       a=r;
       cout<<"a:"<<a<<endl<<"b:"<<b<<endl;
    }
}


void fib_2()
{
  double Ln=0.00001, Fn, L1, n, xf1, xf2, ef=0.0001,xmin;
    L1=fabs(b-a);
    cout<<"L1: "<<L1<<endl;
    Fn= L1/Ln;
    cout<<"Fn: "<<Fn<<endl;
    n= log(Fn*sqrt(5))/log(1.618);
    cout<<"n: "<<n<<endl;
    xf1=a+0.382*L1;
    int k=1;
    if(k==n)
       {  xmin=xf1;
	   cout<<"xmin1:"<<xmin<<endl;
       }
    do
     { if( func(xf1) < func(xf2) )
	{ if(xf1 < xf2)
	      { b=xf2;
		    xf2=b-xf1+a;
	      }
	   else
	      {  a=xf2;
		    xf2=b-(xf1-a);
	      }
	}
       if( func(xf1) > func(xf2))
	 { if( xf1 < xf2)
		{ a=xf1;
		     xf1=b-(xf2-a);
		}
	    else
		{  b=xf1;
		      xf1=b-xf2+a;
		}
	 }
	k=k+1;
     }
     while(k < n);
     cout<<endl<<endl<<"xmin:"<<xf2<<endl;
  getch();
 }


void main()
{
  clrscr();
  printf("Method Swann: \n\r\n\r");
  svenn();

  printf("Method Fibonacci: \n\r\n\r");
  fib_2();
  getch();
  getch();
}



Соседние файлы в папке Лаб1вариант4