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

long double otv(long double x)
{
 long double f;
 f=x*x*x*x-14*x*x*x+60*x*x-70*x;
 return f;
}

long double Proiz(long double x)
{
 long double f;
 f=4*x*x*x-42*x*x+120*x-70;
 return f;
}

void Swann(long double &x1,long double &x2)
{
 long double h,f1,f2;
 h=0.01;
 x2=x1+h;
 f1=otv(x1);
 f2=otv(x2);
 if (f1<f2)
 {
  x2=x1-h;
  f2=otv(x2);
  while (f2<f1)
  {
   h*=2;
   x1=x2;
   x2-=h;
   f1=otv(x1);
   f2=otv(x2);
  }
  cout<<"Ќ з «м­л© Ё­вҐаў «: ["<<x2<<";"<<x1<<"]";
 }
 else
 {
  while (f1>f2)
  {
   h*=2;
   x1=x2;
   x2+=h;
   f1=otv(x1);
   f2=otv(x2);
  }
  cout<<"Ќ з «м­л© Ё­вҐаў «: ["<<x1<<";"<<x2<<"]";
 }
 if(x1>x2)
 {
  h=x1;
  x1=x2;
  x2=h;
 }
}

void main()
{
  clrscr();
  long double e=0.000001,a,b,c,x,x1=1,x2=0,fa,fb,fc,fd,d;
  int k=1;
  Swann(x1,x2);
  fa=Proiz(x1);
  fb=Proiz(x2);
  a=x1;
  b=x2;
  for (int i=0;i<5;i++)
  {
   x=(a+b)/2;
   c=Proiz(x);
   if (c>0) b=x;
   else a=x;
   k++;
  }
  c=b;
  b=(a+c)/2;
  fa=otv(a);
  fb=otv(b);
  fc=otv(c);
  d=0.5*(fa*(b*b-c*c)+fb*(c*c-a*a)+fc*(a*a-b*b))/(fa*(b-c)+fb*(c-a)+fc*(a-b));
  fd=otv(d);
  while((abs(1-d/b)>e) & (abs(1-fd/fb)>e))
  {
   if((b<d) & (fb<fd)) c=d;
   if((b<d) & (fb>fd)) a=b;
   if((b>d) & (fb<fd)) a=d;
   if((b>d) & (fb>fd)) c=b;
   b=(a+c)/2;
   d=(a+b)/2+0.5*(fa-fb)*(b-c)*(c-a)/(fa*(b-c)+fb*(c-a)+fc*(a-b));
   fa=otv(a);
   fb=otv(b);
   fc=otv(c);
   fd=otv(d);
   k++;
  }
  x=(b+d)/2;
  cout<<endl<<"—Ёб«® ЁвҐа жЁ©: "<<k;
  cout<<endl<<"€бЄ®¬ п в®зЄ  x* = "<<x;
  getch();
}
Соседние файлы в папке all