Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Version 2.0
- // Вычисление значение интеграла по методу Симпсона:
- #include <stdio.h>
- #include <math.h>
- int main() {
- float S1 = 0, S2, e, a, b, h, n = 2;
- scanf_s("%f %f %f", &e, &a, &b);
- S2 = e;
- // Цикл, в котором сравниваем предыдущий и следующий интеграл
- while (fabs(S1 - S2) >= e) {
- // Вычисление следующего интеграла
- S2 = S1;
- S1 = 0;
- h = (b - a) / n;
- for (float i = 1; i <= n - 1; i += 2) {
- S1 += 1/(1 + a + (i-1)*h) + 4 * 1/(1 + a + (i)*h) + 1/(1 + a + (i+1)*h);
- }
- S1 *= h / 3;
- // Удваивание параметра n, который отвечает за точность вычислений
- n *= 2;
- }
- printf("\n%f\n", S2);
- }
- //----------------------------------------------------------------------
- // Решение, с которым Хиценко согласна
- #include <stdio.h>
- #include <math.h>
- int main() {
- float S1 = 0, S2, e, a, b, h, n = 2;
- scanf("%f %f %f", &e, &a, &b);
- S2 = e;
- // Цикл, в котором сравниваем предыдущий и следующий интеграл
- while (fabs(S1 - S2) >= e) {
- // Вычисление следующего интеграла
- S2 = S1;
- h = (b - a) / n;
- S1 = 1/(1+a) + 1/(1+b) + 4/(1+b-n);
- for (float i = 2; i <= n - 3; i += 2) {
- S1 += 4/(1+a+i*h)+2/(1+a+(i+1)*h);
- }
- S1 *= h / 3;
- // Удваивание параметра n, который отвечает за точность вычислений
- n *= 2;
- }
- printf("\n%f\n", S2);
- }
Advertisement
Add Comment
Please, Sign In to add comment