Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- using namespace std;
- //a
- // I=∫f(x^2)dx
- //b
- int f(int a)
- {
- return a = pow(a, 2);
- }
- int main()
- {
- setlocale(LC_ALL, "RUS");
- double a = 2, b = 4, e = 0.001, e1 = 1;; // a - начало отрезка, b - конец, e - необходимая точность
- double n = 4; // кол-во узлов
- double h = (b - a) / n;
- double fa = f(a); // fa = f(a) = подставить "а" в ф-ию
- double fb = f(b); // fb = f(a) = подставить "b" в ф-ию
- double fah = f(a+h); // fah = f(a-h) = подставить в функцию a-h вместо х
- double fbh = f(b-h); // fbh = f(b-h) = подставить в функцию b-h вместо х
- double fa2h = f(a + 2 * h);
- double I4 = h*(fa + 2 * fa2h + 4 * (fah + fbh) + fb) / 3;
- // формула симпсона для 4х узлов
- while (e1 > e)
- {
- double I1 = I4;
- n = 2 * n;
- h = h / 2;
- double I2 = 0, I3 = 0;
- for (int i = 2; i <= n - 2; i++)
- {
- if (i % 2 == 1)
- continue;
- int x = a + i * h;
- I2 = I2 + f(x);
- }
- for (int i = 1; i <= n - 1; i++)
- {
- if (i % 2 == 0)
- continue;
- int x = a + i * h;
- I3 = I3 + f(x);
- }
- I4 = h * (fa + 2 * I2 + 4 * I3 + fb) / 3;
- e1 = abs(I1 - I4);
- }
- cout <<"Конечная I4 = "<< I4;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement