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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
#1

Расчет интеграла в C++ - C++

05.05.2011, 18:31. Просмотров 1093. Ответов 1
Метки нет (Все метки)

Здравствуйте товарищи программисты. Мне нужна помощь в решении задачи на C++ Я в этом не очень понимаю, а по учебе надо. Задача: найти определенный интеграл: Название: интеграл.jpg
Просмотров: 380

Размер: 2.1 Кб с шагом 0,1 и точностью 0,001 методами центральных прямоугольников, методом трапеций и методом парабол (Симпсона). Обязательное условие: все три метода должны быть объеденены в одну программу Я написал вот такую программу:

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std; 
double F(double x)
 
{
return (x);
}
 
int One()
{
  double I0,I1,h,eps,a,x,b;
  int n,j;
  cout<<"Введите a и b"<<endl;
  cin>>a>>b;
  cout<<"Введите число разбиений [a,b]"<<endl;
  cin>>n;
  cout<<"Введите точность:"<<endl;
  cin>>eps;
  I0=I1+10;
  I1=0;
  while(fabs(I1-I0)>eps)
  {
      h=(b-a)/n;
      I1=0;
      for(j=0;j<n;j++)
      {
          x=a+(j+0.5)*h;
          I1=I1+(x*exp(x))*h; //сюда подставил свою под интегральную функцию
      }
      n=2*n;
      I0=I1;
  }
  cout<<"Интеграл I="<<I1<<endl;
 return 0;
 
}
 
// до сюда идет первая программа
double f(double x)
{
    return(x);
}
 
int Two()
{
    double I0,I1,h,eps,a,b,x;
    int n,j;
    cout<<"Введите a и b"<<endl;
    cin>>a>>b;
    cout<<"Введите число разбиений [a,b]"<<endl;
    cin>>n;
    cout<<"Введите точность"<<endl;
    cin>>eps;
 
    I0=1E+10;
    I1=0;
    while(fabs(I1-I0)>eps)
    {
        h=(b-a)/n;
        I1=0;
        for(j=1;j<n;j++)
        {
            x=a+j*h;
            I1=I1+(x*exp(x))*h; //сюда подставил свою под интегральную функцию
        }
        I1=I1+h*(F(a)+F(b))/2;
        n=2*n;
        I0=I1;
    }
    cout<<"Интеграл I="<<I1<<endl;
    return 0;
}
// До сюда идет прога 2
double func(double x)
{
    return(x);
}
int Free()
{
    double I0,I1,S1,S2,h,eps,a,b,x;
    int n,j;
    cout<<"Введите a и b"<<endl;
    cin>>a>>b;
    cout<<"Введите число разбиений [a,b]"<<endl;
    cin>>n;
    cout<<"Введите точность"<<endl;
    cin>>eps;
    I0=1E+10;
    I1=0;
    while(fabs(I1-I0)>eps)
    {
        h=(b-a)/n;
        S1=0;
        for(j=1;j<=n-1;j++)
        {
            x=a+j*h;
            S1=S1+x*exp(x); //сюда подставил свою под интегральную функцию
        }
        S2=0;
        for(j=2;j<n;j++)
        {
            x=a+j*h;
            S2=S2+(x*exp(x)); //сюда подставил свою под интегральную функцию
        }
        I1=(h/6)*(F(a)+F(b)+2*S1+4*S2);
        n=2*n;
        I0=I1;
    }
    cout<<"Интеграл I="<<I1<<endl;
    return 0;
}
int main()
{
int c;
setlocale(LC_ALL,"rus");
std::cout << "Метод центральных прямоугольников" <<endl;
cout<<endl;
One();
cout<<endl;
std::cout << "Метод трапеций" <<endl;
Two();
cout<<endl;
std::cout << "Метод Симпсона" <<endl;
Free();
system("pause");
return 0;
}
И получил вот это: Расчет интеграла в C++

но ответы программа выдает не верные они должны быть близкими или идентичными к ответам в MathCad

Расчет интеграла в C++

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

Расчет сумм в формуле и расчет xi должны быть оформлены в виде отдельных функций. - C++
День добрый товарищи специалисты, помогите пожалуйста с примером m=((1/n)*\sum_{i=1}^{n}{x}_{i}){}^{2}-\sum_{i=1}^{n}{x}_{i} ,n=5 ф-ция...

Вычисление интеграла - C++
вычислить интеграл \int_{0}^{6}\frac{exp^sqrt{\frac{6-x}{6+x}}}{(6+x)*\sqrt{36-x^2}} помогите с кодом вычисления данного...

Вычисления интеграла - C++
Помогите написать программу такого рода: 1 Вычисление значения определенного интеграла одном процессе с измерением времени вычисления с...

вычисление интеграла - C++
Даны вещественные числа a, b. Значения функции f(x)=(x+1)2√lg x; a=2; b=10; записать в массив. Вычислить значение интеграла, используя: ...

Вычисление интеграла - C++
помогите пожалуйста я вообще не знаю как сделать интеграл

Вычисление интеграла - C++
задача такая Вычислить с точностью\varepsilon интеграл ,где y=f(x) - прямая проходящая через точки A(c,d) и B - точку минимума ...

1
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
06.05.2011, 07:53  [ТС] #2
Ну так что никто не знает где тут ошибка?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2011, 07:53
Привет! Вот еще темы с ответами:

Вычисление интеграла - C++
Считаю интеграл на промедутке от -1 до 3... Интеграл a*a*a*a. Точность вычисления 0.00001... Код выполняется 10-12 секунд. Это нормально...

Вычисление интеграла - C++
Необходимо вычислить интеграл (сам интеграл задан функцией, например Functoin) методом правых прямоугольников, воспользовавшись критерием...

решение интеграла - C++
вычислить приближенное значение интеграла по формуле трапеции n=150 нижний предел 0 верхний 3 dx/(sqrt(16+x*x)) ...

Не выводится значение интеграла - C++
Помогите, пожалуйста! Значение не выводится, но в цикле все считается. В чем может быть проблема и как ее можно исправить? #include...


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

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

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