Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#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;}
}