1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
| #include <iostream>
#include <conio.h>
#include <math.h>
#include <clocale>
using namespace std;
//помилка в визначенні відрізка ізоляції (ЕОМ вибирає [1;2])
float func(float);//основна функція
float der1(float);//похідна 1-го порядку
float der2(float);//похідна 2-го порядку
float f3(float,float);//третя формула
float f7(float,float);//сьома формула
void main()
{
setlocale (LC_ALL,"Russian");
int id;//id-номер x[nt](наближений корінь р-ня)
float x[255],n,t,a,b,c,e,i[2],j[2];
bool vi,fl;
/* x*x+4sin(x)=0
x є (-в€ћ;+в€ћ)
F'(x)=2x+4cos(x)
2x+4cos(x)=0
2(x+2cosx)=0
cos(x)=-x/2 */
cout<<"Минченко Антон П-11\n Oтделить корни уравнения x^2+4sinx=0 и уточнить один из них c точностью\n Е = 0.001.\n";
n=func(0);
t=func(1);
if((n*t)<0) {a=0;b=1;}//знаходження відрізка ізоляції
else
{i[1]=0;
i[0]=-1;
j[0]=1;
j[1]=2;
vi=0;
while(vi==0)
if((func(i[1])*func(i[0]))<0) {a=i[0];b=i[1];vi=1;} //знаходження відрізка ізоляції
else if((func(j[0])*func(j[1]))<0) {a=j[0];b=j[1];vi=1;}
else
{i[1]--;//декрементація
i[0]--;
j[0]++;//інкрементація
j[1]++;}
}
cout<<"["<<a<<";"<<b<<"]\n";
if(der2(a)*func(a)>0) {c=a;e=b;}//якщо добуток похідної другого порядку та функції >0 ,то а-нерухомий кінець відрізка
else {c=b;e=a;}//інакше b-нерухомий кінець відрізка
cout<<c<<"-неподвижный конец отрезка\n";
id=0;
x[0]=c;
fl=0;
if(der1(c)*der2(c)>0)//якщо добуток похідної першого порядку та похідної другого порядку більший нуля,то
fl=1;
vi=0;
while(vi==0)
{id++;
if(fl==1) x[id]=f3(x[id-1],e);
else x[id]=f7(x[id-1],e);
if(abs(x[id]-x[id-1])<=0.001) vi=1;
}
cout<<x[id];
getch();
}
float func(float d)
{
return d*d+4*sin(d);
}
float der1(float d)
{
return 2*d+4*cos(d);
}
float der2(float d)
{
return 2-4*sin(d);
}
float f3(float d, float e)
{
return d-(func(d)*(e-d))/(func(e)-func(d));
}
float f7(float d, float e)
{
return d-(func(d)*(e-d))/(func(d)-func(e));
} |