• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

Dari_ May 7th, 2019 85 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. // 10/4/1
2. // E = 0.001
3. // f1 = 1 + 4 / (x^2+ 1)
4. // f2 = x^3
5. // f3 = 2^(−x)
6.
7. #include <stdio.h>
8. #include <stdlib.h>
9. #include <math.h>
10.
11.
12. double eps = 0.001;
13. double  eps1 = 0.0001;
14. double  eps2 = 0.0001;
15.
16.
17. double f1(double x)
18. {
19.     return 1 + 4 / (x * x + 1);
20.     //return 1/x;
21. }
22.
23. double f1_1(double x)
24. {
25.     return - 8 * x / ((x * x + 1) * (x * x + 1));
26.     //return -1/(x*x);
27. }
28.
29. double f1_2(double x)
30. {
31.     return 32 * powf(x, 2) / (powf((powf(x, 2) + 1), 3)) - 8 / (powf((x * x + 1), 2));
32. }
33.
34.
35.
36.
37. double f2(double x)
38. {
39.     return x * x * x;
40. }
41.
42. double f2_1(double x)
43. {
44.     return 3 * x * x;
45. }
46.
47. double f2_2(double x)
48. {
49.     return 6 * x;
50. }
51.
52.
53.
54.
55. double f3(double x)
56. {
57.     return pow(2, (-x));
58. }
59.
60. double f3_1(double x)
61. {
62.     return -log(2) * pow(2, (-x));
63. }
64.
65. double f3_2(double x)
66. {
67.     return log(2) * log(2) * pow(2, (-x));
68. }
69.
70.
71.
72. double root(double (*f)(double), double (*g)(double), double (*f1)(double), double (*g1)(double), double a, double b, double eps1)
73. {
74.     double a1 = 0, b1 = 0;
75.     while (fabs(a - b) > eps1)
76.     {
77.         if (((f(a) - g(a)) < 0) && ((f((a + b) / 2) - g((a + b) / 2)) > ((f(a) - g(a) + f(b) - g(b)) / 2)))
78.         {
79.         a1 = a - (b - a) * (f(a) - g(a)) / (f(b) - g(b) - f(a) + g(a));
80.         b1 = b - (f(b) - g(b)) / (f1(b) - g1(b));
81.
82.         a = a1;
83.         b = b1;
84.         }
85.         else
86.         {
87.         b1 = b - (a - b) * (f(b) - g(b)) / (f(a) - g(a) - f(b) + g(b));
88.         a1 = a - (f(a) - g(a)) / (f1(a) - g1(a));
89.
90.         a = a1;
91.         b = b1;
92.         }
93.     }
94.     return b;
95. }
96.
97.
98.
99. double integral(double (*f)(double), double a, double b, double eps2)
100. {
101.     double res = 100, h, n = 20, In = 0, I2n = 10;
102.     h = (b - a) / n;
103.     for (int i = 0; i < n; i++)
104.     {
105.         res += f(a + (i + 0.5) * h);
106.     }
107.     res *= h;
108.     In = res;
109.     n *= 2;
110.
111.     h = (b - a) / n;
112.     for (int i = 0; i < n; i++)
113.     {
114.         res += f(a + (i + 0.5) * h);
115.     }
116.     res *= h;
117.     I2n = res;
118.
119.     double p = 1/3;
120.
121.     while (p * fabs(In - I2n) > eps2)
122.     {
123.         In = I2n;
124.         n *= 2;
125.         res = 0;
126.         h = (b - a) / n;
127.         for (int i = 0; i < n; i++)
128.         {
129.             res += f(a + (i + 0.5) * h);
130.         }
131.         res *= h;
132.         n *= 2;
133.         I2n = res;
134.     }
135.     return I2n;
136. }
137.
138.
139.
140. int main(void)
141. {
142.     double a = -10, b = 10;
143.     double x_1_2 = root(f1, f2, f1_1, f2_1, a, b, eps1);
144.
145.     a = -10;
146.     b = 10;
147.     double x_2_3 = root(f2, f3, f2_1, f3_1, a, b, eps1);
148.
149.     a = -10;
150.     b = -0.5;
151.     double x_1_3 = root(f1, f3, f1_1, f3_1, a, b, eps1);
152.
153.     printf("%lf    %lf    %lf\n", x_1_2, x_2_3, x_1_3);
154.
155.     double res = 0, first, sec, third;
156.     first = integral(f1, x_1_3, x_1_2, eps2);
157.     sec = integral(f3, x_1_3, x_2_3, eps2);
158.     third = integral(f2, x_2_3, x_1_2, eps2);
159.
160.     res = first - sec - third;
161.
162.     printf("%lf\n", res);
163.
164.     return 0;
165. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
Not a member of Pastebin yet?