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

Вычислить интеграл методом Симпсона - C++

Восстановить пароль Регистрация
 
Ksu Rudaleva
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 23
01.07.2015, 22:18     Вычислить интеграл методом Симпсона #1
Требуется написать программу, которая решает интеграл методом Сипмсона.
Вот моя программа. Почему выводит неправильный ответ. Помогите, пожалуйста!
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
double integralsimpson (float a, float b, float e);
 
int main (void)
{
   setlocale(LC_ALL, "RUS");
   float a1, b1, a=0, b=0, e=0;
   float epsilon;
   cout<<"Введите a "<<endl;
   cin>>a1;
   cout<<"Введите b "<<endl;
   cin>>b1;
   cout<<"Введите e "<<endl;
   cin>>epsilon;
   integralsimpson(a,b,e);
   return 0;
}
 
 
float f (float x)
{
   float result;
   result=log (x);
   return result;
}
 
double integralsimpson (float a, float b, float e)
{
   float result;
   float h;
   float s;
   float s1;
   float s2;
   float s3;
   float x;
   s2 = 1;
   h = b-a;
   s = f (a) +f (b);
   do
     {
       s3 = s2;
       h = h/2;
       s1 = 0;
       x = a+h;
       do
          {
            s1 = s1+2*f (x);
            x = x+2*h;
          }
       while (x<b);
       s = s+s1;
       s2 = (s+s1) *h/3;
       x = fabs (s3-s2) /15;
     }
   while (x>e);
   result = s2;
   cout<<endl<<"Интеграл равен: "<<result<<endl;
   return result;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Montana
 Аватар для Andrew_Montana
13 / 13 / 8
Регистрация: 12.10.2014
Сообщений: 160
02.07.2015, 00:18     Вычислить интеграл методом Симпсона #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
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
double integralsimpson (float a, float b, float e);
 
int main (void)
{
   setlocale(LC_ALL, "RUS");
   float a=0, b=0, e=0;
   cout<<"Введите a "<<endl;
   cin>>a;
   cout<<"Введите b "<<endl;
   cin>>b;
   cout<<"Введите e "<<endl;
   cin>>e;
   integralsimpson(a,b,e);
   return 0;
}
 
 
float f (float x)
{
   float result;
   result=log (x);
   return result;
}
 
double integralsimpson (float a, float b, float e)
{
   float result;
   float h;
   float s;
   float s1;
   float s2;
   float s3;
   float x;
   s2 = 1;
   h = b-a;
   s = f (a) +f (b);
   do
     {
       s3 = s2;
       h = h/2;
       s1 = 0;
       x = a+h;
       do
          {
            s1 = s1+2*f (x);
            x = x+2*h;
          }
       while (x<b);
       s = s+s1;
       s2 = (s+s1) *h/3;
       x = fabs (s3-s2) /15;
     }
   while (x>e);
   result = s2;
   cout<<endl<<"Интеграл равен: "<<result<<endl;
   system("pause");
   return result;
}
Добавлено через 5 минут
В int main, ошибка при вводе была.
Ksu Rudaleva
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 23
02.07.2015, 00:43  [ТС]     Вычислить интеграл методом Симпсона #3
Все работает. Спасибо.
А если нужно от другой функции посчитать интеграл. Я меняю тут
C++
1
2
3
4
5
6
float f (float x)
{
   float result;
   result=x/sin(x);
   return result;
}
и снова не считает.
Как тут быть?

Добавлено через 11 минут
Andrew_Montana,
Цитата Сообщение от Ksu Rudaleva Посмотреть сообщение
Все работает. Спасибо.
А если нужно от другой функции посчитать интеграл. Я меняю тут
Код C++Выделить код
1
2
3
4
5
6
float f (float x)
{
* *float result;
* *result=x/sin(x);
* *return result;
}
и снова не считает.
Как тут быть?
Andrew_Montana
 Аватар для Andrew_Montana
13 / 13 / 8
Регистрация: 12.10.2014
Сообщений: 160
02.07.2015, 01:25     Вычислить интеграл методом Симпсона #4
Я сейчас в том же коде заменил на x/sin(x) и всё считает. Попробуй программу еще раз создать и вставить обновленный код.
Yandex
Объявления
02.07.2015, 01:25     Вычислить интеграл методом Симпсона
Ответ Создать тему
Опции темы

Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru