0 / 0 / 1
Регистрация: 25.11.2015
Сообщений: 3
1

Нахождение интеграла формулой Симпсона

25.11.2015, 09:33. Показов 1374. Ответов 2

Здравствуйте. Написал программку для вычисления значения интеграла с помощью формулы Симпсона (https://ru.wikipedia.org/wiki/Формула_Симпсона), считаю с заданным количеством шагов, без определения погрешности. Потом если что переделаю этот момент.

Так как новичёк в Си, то компилятор обложил меня матом...
Помогите разобраться в чём я накосячил, пожалуйста

Вот код:

C
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
#include <stdio.h>
#include <math.h>
 
float func_simpson(float x) {
    return 1/sqrt(9+pow(x,2));
}
 
 
float simpson(float func(x), float a, float b, short n) {
    float h = (b-a)/n;
    float sum = 0;
 
    for (short i = 2; i < n+1; i += 2) {
        sum += 2*func(a + i*h) + 4*func(a + (i-1)*h);
    }
 
    return (h/3) * (func(a) + sum + func(b));
}
 
int main() {
    printf("Znachenie integrala po formule Simpsona\n");
    printf("I=%f\n", simpson(func_simpson(x),0.0f,2.0f,200));
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2015, 09:33
Ответы с готовыми решениями:

Используя метод Симпсона, составить программу вычисления определенного интеграла на отрезке
Используя метод СИмпсона, составить программу вычисления определенного интеграла на отрезке ...

Разработать программу для вычисления интеграла методом трапеций и методом Симпсона
Разработать программу для вычисления интеграла методом трапеций и методом Симпсона, оформив каждый...

Метод левых прямоугольников и метод Симпсона для вычисления интеграла
Составить программу для исчисления интеграла с n количеством интервалов интегрирования. 2...

Нахождение определенного интеграла методом Гаусса
кто поможет прогу написать? плиз хелп

2
24 / 24 / 10
Регистрация: 17.12.2014
Сообщений: 72
25.11.2015, 10:30 2
Просто исправил ошибки компилятора, а правильно ли работает код не знаю.
C
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
#include <stdio.h>
#include <math.h>
 
float func_simpson(float x) {
    return 1/sqrt(9+pow(x,2));
}
 
 
float simpson(float x, float a, float b, short n)
{
    float h = (b-a)/n;
    float sum = 0;
 
    for (short i = 2; i < n+1; i += 2) {
        sum += 2*func_simpson(a + i*h) + 4*func_simpson(a + (i-1)*h);
    }
 
    return (h/3) * (func_simpson(a) + sum + func_simpson(b));
}
 
int main() {
    printf("Znachenie integrala po formule Simpsona\n");
    float x = 5.6;
    printf("I=%f\n", simpson(func_simpson(x),0.0f,2.0f,200));
 
    return 0;
}
1
0 / 0 / 1
Регистрация: 25.11.2015
Сообщений: 3
25.11.2015, 11:09  [ТС] 3
IndyStar, Спасибо, работает как часы. Только я не понял зачем присваивать x значение, без него работает точно так же.

Добавлено через 5 минут
Вот так в итоге выглядит код, вдруг кому понадобится.
func_simpson-подинтегральная функция, a,b- интервал интегрирования, n- кол-во разбиений, h-"размах" шага по x.
C
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
#include <stdio.h>
#include <math.h>
 
float func_simpson(float x) {
    return 1/sqrt(9+pow(x,2));
}
 
 
float simpson(float a, float b, short n)
{
    float h = (b-a)/n;
    float sum = 0;
 
    for (short i = 2; i < n+1; i += 2) {
        sum += 2*func_simpson(a + i*h) + 4*func_simpson(a + (i-1)*h);
    }
 
    return (h/3) * (func_simpson(a) + sum + func_simpson(b));
}
 
int main() {
    float x;
 
    printf("Znachenie integrala po formule Simpsona\n");
    printf("I=%f\n", simpson(0.0f,2.0f,200));
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2015, 11:09
Помогаю со студенческими работами здесь

Нахождение интеграла - не считается относительная погрешность
помогите найти ошибку у меня не считает относительную погрешность! Задание: Вычислить на ЭВМ ...

Нахождение интеграла методом Симпсона
http://i016.***********/0910/b7/f79e34604977.jpg имеется функция double Simpson(double...

Нахождение интеграла методом Симпсона
Что не так? #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; using...

Решение интеграла методом Симпсона
Написал программу. Решение интеграла, методом Симпсона. Выбивает, арифметическое переполнение. Что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru