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

double funct(double x);
double abs1(double a);
double fproizv (double x);

void main() {

 double x,e,h;
 double x1,x2;
 double a,b;
 double z,w,y;

  a=-15;
  h=0.01*a;
  b=a+h;

  if (funct(b) > funct(a))
	{h=-h;
  };

  do {
	a=b;
	h=2*h;
	b=a+h;
  }
  while (funct(b)<funct(a));
  a=a-h;

  if (b<a) {
	  double temp;
	  temp=b;
	  b=a;
	  a=temp;
  };
//kubich
x=a;
h=0.001;
e=0.001;
// x,eps,h;
	if (fproizv(x)>=0) {
		h=-h;
		}

  do {
  h=h*2;
  x=x+h;

} while((fproizv(x)*fproizv(x+h))>=0);
	x1=x;  //x1 =X(m-1)
	x2=x+h;  //Xm

if (x1>x2) {
	a=x2;
	b=x1;}
else {
a=x1;
b=x2;};
do {
z=(fproizv(a)+fproizv(b)+3*(funct(a)-funct(b)))/b;
w=sqrt(z*z-fproizv(a)*fproizv(b));
y=(z+w-fproizv(a))/(fproizv(b)-fproizv(a)+2*w);

if (y<0) {x=a;};
if (y>1) {x=b;};
if ((y>=0)&&(y<=1)){x=a+y*(b-a);};

if (fproizv(x)>0) {
		a=a;
		b=x;}
else {
		a=x;
		b=b;
};
} while (abs1(fproizv(x)) >e);
cout <<x;
};

double funct(double x){
return (x+3)*(x+3)+2*x;
}

double fproizv (double x){
return (2*x+8);
}

double abs1(double x){
if (x>=0)
{return x;}
else {return -x;}
}
Соседние файлы в папке all