Скачиваний:
14
Добавлен:
01.05.2014
Размер:
2.23 Кб
Скачать
#define X0 0.5
#define wagSv 0.005
#define e1  0.000001
#define e2  0.000001
#define NumIt 5

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

double func(double x)
{
  double f;
 // f=3*x*x+12/(x*x*x)-5;
 f=2*x*x+3*exp(-x);
  return f;
}
////////////////////////////////////////////
void Svenn2(double* a,double* b,double* c)
{
  double h=wagSv,x1=X0,x2=x1+h,x3;
  int i=0;
  if( func(x2) > func(x1) )
    {
      h=-h;
      x2=x1+h;
    }
  while( func(x1) > func(x2) )
    {
      x1=x2;
      h=2*h;
      x2=x1+h;
      i++;
    }
  x3=(x1+x2)/2;
  if(func(x3)>func(x1))
    {
      *a=(x1-h/2<x3)?x1-h/2:x3;
      *b=x1;
      *c=(x3>x1-h/2)?x3:x1-h/2;
    }
  else
    {
      *a=(x1<x2)?x1:x2;
      *b=x3;
      *c=(x2>x1)?x2:x1;
    }
  printf("\n €­вҐаў «, Ї®«г祭­л© ¬Ґв®¤®¬ ‘ўҐ­­2 §  %d ЁвҐа жЁ© ( %f , %f )",i,*a,*c);
  printf(" \n\n Џ®«г祭­лҐ в®зЄЁ  a= %f ,b = %f ,c= %f ",*a,*b,*c);
}
////////////////////////////////////////////////
void zs2(double *a,double *b)
{
  int k=0;
  double x1,x2,L;

  while( (fabs(*b-*a)>=e1) && k!=NumIt)
  {
    L=*b-*a;
    x1=*a+0.618*L;
    x2=*a+*b-x1;

    if(func(x1)>func(x2))
       (x1>x2) ? *b =x1 : *a =x1;
    else
       (x1>x2) ? *a =x2 : *b =x2;
    k++;
  }
  printf("\n\n‘㦥­ЁҐ Ё­вҐаў «  ¬Ґв®¤®¬ §®«®в®Ґ бҐзҐ­ЁҐ 2 ");
  printf("§  %d ЁвҐа жЁ© ( %f ; %f)",k,*a,*b);
}
///////////////////////////////////////////////
void Pauell(double a1, double c1)
{
  double a=a1,b=(c1+a1)/2,c=c1,d;
  int k=0;

  d = 0.5*(func(a)*(b*b-c*c)+func(b)*(c*c-a*a)+func(c)*(a*a-b*b))/
      (func(a)*(b-c)+func(b)*(c-a)+func(c)*(a-b));

  while((fabs((d-b)/b)>e1) || (fabs((func(d)-func(b))/func(b))>e2))
     {
	k++;
	if(func(b)>func(d))
           {
	     (b>d)? c =b: a =b;
	     b = d;
	   }
	else
           (b>d)? c =d: a =d;
	d = 0.5*((func(a)-func(b))*(b-c)*(c-a))/
	    (func(a)*(b-c)+func(b)*(c-a)+func(c)*(a-b))+0.5*(a+b);
     }
  printf("\n ЊЁ­Ё¬ «м­®Ґ §­ зҐ­ЁҐ ¬Ґв®¤®¬ Џ гн««  %f §  %d ЁвҐа жЁЁ",(b+d)/2,k);
}
///////////////////////////////////////
void main(void)
{
  double a,b,c;
  clrscr();
  Svenn2(&a,&b,&c);
  zs2(&a,&c);
  Pauell(a,c);
  getch();
}
Соседние файлы в папке all