Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
19 / 19 / 1
Регистрация: 25.12.2011
Сообщений: 159
1

Методы вычисления интегралов

26.12.2011, 19:10. Показов 1870. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые товарищи программисты, обращаюсь к вам уже не первый раз с надеждой что вы мне поможете. Мне нужно написать программу:
Массив (у0,у1, ... ,уn) представляет собой значения некоторой функции на
отрезке [a,b], причем a=y0,b=yn. Создать класс Integral, в котором
реализовано вычисление определенного интеграла методом прямоугольников,
методом трапеций и методом Симпсона.
Буду очень благодарен всем откликнувшимся, и если можно пожалуйста опишите подробно что и как делается Спасибо Вам огромное за то что вы делаете для нас юзеров С++
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2011, 19:10
Ответы с готовыми решениями:

Библиотека для вычисления интегралов
Добрый день. Есть ли какие-либо библиотеки для вычисления неопределенных интегралов?

В какой библиотеке есть функция для вычисления интегралов?
подскажите в какой библиотеке есть функция для вычисления интегралов?

метод трапеции для вычисления интегралов
помогите решить задачу! Нахождение определенных интегралов методом трапеции.

Методы вычисления определенных интегралов
Всем привет. Есть полностью написаная программа для вычисления интегралов методом...

2
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
26.12.2011, 22:01 2
Лучший ответ Сообщение было отмечено repa4ek как решение

Решение

Вот. Две варианта метода. Первый от функции (что удобнее), а второй от массива.

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include<iostream>
#include <string.h>
using namespace std; 
 
enum integralMethods {methRect, methTrap, methSymp};
class Integral
{
public:
    static double getIntegral(double (*fun)(double), double x1, double x2, integralMethods meth, int count = 1000)
    {
        if (count<2) return 0;
        double xx = x2 - x1, sum; 
        int c1 = count - 1; 
        switch (meth)
        {
            case methRect:
            sum = 0;
            for (int i = 0; i < c1; i++) sum += (*fun)(x1 + i * xx/c1);  
            break;
            case methTrap:
            sum = ((*fun)(x1) + (*fun)(x2))*0.5;
            for (int i = 1; i < c1; i++) sum += (*fun)(x1 + i * xx/c1);  
            break;
            case methSymp:
            sum = (*fun)(x1) + (*fun)(x2);
            c1 = (c1>>1)<<1;
            for (int i = 1; i < c1; i += 2) sum += 4 * (*fun)(x1 + i * xx/c1);  
            for (int i = 2; i < c1; i += 2) sum += 2 * (*fun)(x1 + i * xx/c1);  
            sum /= 3;
            break;
        }
        return sum * xx/c1;
    }
    static double getIntegral(double * array, double x1, double x2, integralMethods meth, int count)
    {
        if (count<2) return 0;
        double xx = x2 - x1, sum; 
        int c1 = count - 1;     
        switch (meth)
        {
            case methRect:
            sum = 0;
            for (int i = 0; i < c1; i++) sum += array[i];  
            break;
            case methTrap:
            sum = (array[0] + array[c1])*0.5;
            for (int i = 1; i < c1; i++) sum += array[i];  
            break;
            case methSymp:
            sum = array[0] + array[c1];
            for (int i = 1; i < c1; i += 2) sum += 4 * array[i];  
            for (int i = 2; i < c1; i += 2) sum += 2 * array[i];  
            sum /= 3;
            break;
        }
        return sum * xx/c1;
    }
};
 
static double parab(double x)
{
    return x*x;
}
 
int main()
{
    cout<<Integral::getIntegral(parab,0,4,methRect)<<endl;
    cout<<Integral::getIntegral(parab,0,4,methTrap)<<endl;
    
    int cnt = 1001;
    double * y = new double[cnt];
    double x1 = 0, x2 = 4;
    for (int i = 0; i<cnt; i++) y[i] = parab(x1 + i*(x2 - x1)/(cnt - 1));
    cout<<Integral::getIntegral(y,x1,x2,methRect,cnt)<<endl;
    return 0;
}
1
19 / 19 / 1
Регистрация: 25.12.2011
Сообщений: 159
27.12.2011, 11:54  [ТС] 3
Огромное спасибо, вы даже не представляете как помогли мне
0
27.12.2011, 11:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2011, 11:54
Помогаю со студенческими работами здесь

Методы вычисления определенных интегралов
Всем привет. Помогите написать программу. Нужно: 1)Составить программу для вычисления интеграла...

Методы вычисления определённых интегралов
1) Рассмотреть следующие методы приближенного вычисления определённых интегралов: а) метод...

Численные методы вычисления интегралов-Метод Ньютона-Котеса
Нужно написать программу что-бы считала интеграл методом Ньютона-Котеса (Если такая есть, я не...

Вычисления интегралов в C#
Нужна написать программу для вычисления интегралов 4 методами ( параболы, трапеции,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru