Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Best-pm07
..:::BesT:::..
7 / 7 / 1
Регистрация: 19.03.2009
Сообщений: 195
#1

Интеграл - C++

14.06.2009, 23:56. Просмотров 2393. Ответов 7
Метки нет (Все метки)

Составить программу вычисления определенного интеграла функции f(x) на отрезке [а,b] методом Симпсона.

Интеграл

Интеграл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2009, 23:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Интеграл (C++):

интеграл - C++
Всем доброго времени суток, нужно решить интеграл

Интеграл - C++
Помогите решить задачу. Просто с интегралами я не дружу Используя метод Симпсона, составить программу вычисления определенного интеграла...

Интеграл BC++ - C++
Задание: Вычислить определённый интеграл I=\int_{a}^{b}f(x)dx методом прямоугольников: I\approx...

интеграл - C++
Подскажите пожалуйста как написать прогу для решения интегралов.

Посчитать интеграл в С++ - C++
хелп, хелп! Нужно посчитать интеграл в С++ и значение записать в файл. все константы задаются

Определенный интеграл - C++
Для заданных границ интегрирования а и b вычислите значение определенного интеграла следующего вида: \int \sin^2{x}dx = \begin{cases} ...

7
ISergey
Maniac
Эксперт С++
1391 / 902 / 55
Регистрация: 02.01.2009
Сообщений: 2,696
Записей в блоге: 1
15.06.2009, 00:02 #2
интеграл Синуса Симпсоном
1
Best-pm07
..:::BesT:::..
7 / 7 / 1
Регистрация: 19.03.2009
Сообщений: 195
15.06.2009, 19:48  [ТС] #3
Где тут задать ввод x(икса)
Программа не считает, а выводит всегда одно и тоже значение
Компилирую в Borland C++ 4.5

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream.h>
#include <math.h>
double f(double);
double integral(double ,double ,int );
int main (int argc, char* argv[])
    {
double a=1.9999,b=0,h,I,I2,ksi,vel;
 int n=1,n2;
 
cout<<"Число разбиений:"<<endl;
cin>>ksi;
 do
    {
 n  = n*2;
 h  = (b-a)/n;
 n2 = n*2;
 vel =(ksi*h*n)/(b-a);
I  = integral(a, b, n);
I2 = integral(a, b, n2);
if (h < 0.2e-3) break;
    }
while (abs(I - I2) > vel);
cout<<"Интеграл: "<<I2;
return 0;
    }
double integral(double aa, double bb, int n)
    {
double locI, h, xi, s1=0.0, s2=0.0, y[1000];
 int i;
    h=(bb-aa)/n;
    xi=aa;
for (i=0; i<=2*n; i++)
    {
    y[i] = f(xi);
    xi = xi + h/2;
    }
locI=y[0]+y[2*n];
for(i=2; i< 2*n; i=i+2)
    s1 = s1 + y[i];
for(i=1; i<2*n; i=i+2)
    s2 = s2 + y[i];
locI=(locI+2.0*s1+4.0*s2)*(h/6);
return (locI);
    }
double f(double x)
{return 2*asin(x/2)-1/2*sin(4*asin(x/2));}
0
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
15.06.2009, 20:01 #4
Best-pm07, вам же ISergey дал ссылку на пост функции, которая находит определнный интеграл методом Симпсона.

вы просто в main()
пишите

C++
1
cout << Simpson(f) << endl;
где f - это ваша, интегрируемая функция..

Функция Simpson - сам запросит ввод границ интегрирования, и числа отрезков..

Добавлено через 3 минуты 21 секунду
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream.h>
#include <math.h>
 
// интегрируемая функция
double f(double x)
{
    return 2*asin(x/2)-1/2*sin(4*asin(x/2));
}
 
// нахождение интегралла методом Симпсона
double Simpson(double (*Fx)(double))
{
        double I;
        double h;
        double x;
        double a,b;
        int m;
        
 
        cout << "\n Input integral atributes:\n" << endl;
        cout << "\t-> Enter a = ";
        cin >> a;
 
        cout << "\t-> Enter b = ";
        cin >> b;
 
        cout << "\t-> Enter m = ";
        cin >> m;
 
        h=(b-a)/(m-1);
        x = a;
 
        I = Fx(a) + Fx(b);
        int n=0;
 
        while (n < m-2)
        {
                x = x+h;
                if (n%2==0) I=I+4*Fx(x);
                        else  I = I+2*Fx(x);
                n++;
        }
 
        return I*h/3;
}
 
int main()
{
    cout << Simpson(&f) << endl;
    cin.get(); // pause
    return 0;
}
1
Best-pm07
..:::BesT:::..
7 / 7 / 1
Регистрация: 19.03.2009
Сообщений: 195
15.06.2009, 20:08  [ТС] #5
получается, что x вводить не надо...?
0
ISergey
Maniac
Эксперт С++
1391 / 902 / 55
Регистрация: 02.01.2009
Сообщений: 2,696
Записей в блоге: 1
15.06.2009, 20:10 #6
Цитата Сообщение от Best-pm07 Посмотреть сообщение
получается, что x вводить не надо...?
х - не надо.

Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Функция Simpson - сам запросит ввод границ интегрирования, и числа отрезков..
1
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
15.06.2009, 20:10 #7
Best-pm07, ты хоть знаешь что такое определенный интегралл?
если тебе надо найти определнный интеграл от функции

C++
1
2
3
4
double f(double x)
{
    return 2*asin(x/2)-1/2*sin(4*asin(x/2));
}
то листинг полной программы приведен выше.
1
Best-pm07
..:::BesT:::..
7 / 7 / 1
Регистрация: 19.03.2009
Сообщений: 195
15.06.2009, 20:13  [ТС] #8
все, всем спасибо, понял

Добавлено через 2 минуты 17 секунд
я просто проверял расчеты моей программы - через прогу на мобилке и нечаянно не то нажал и в мобилке запрашивало x, меня заклинило и я подумал что и в моей проге нужен X

ещё раз спасибо, я понял, что приведен готовый исходник, спасибо
0
15.06.2009, 20:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2009, 20:13
Привет! Вот еще темы с ответами:

Посчитать интеграл - C++
Нужно посчитать интеграл: \int_{-1}^{1} {x}^{2}dx Готовую не могу найти поиском:( Добавлено через 5 минут Даже не посчитать,...

двойной интеграл в С++ - C++
∫∫exp-r3*cos(ψ)*r*dr*dψ межи (0,1) и (0,π*2)

Вычислить интеграл. - C++
Я в C++ не блещу знаниями, но надо написать программу для трех разных значений точности вычисления интеграла. С помощью формулы трапеций...

Найти интеграл - C++
Добрый день. Помогите написать код для решения следующей задачи. Вычислить интеграл при а = 0,019; 0.127; 0.346; 0.417; 0.527; 0.696,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru