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

Решение интеграла методом трапеции С++ - C++

Восстановить пароль Регистрация
 
1000v
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 5
27.11.2015, 15:05     Решение интеграла методом трапеции С++ #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
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
 
double f(double x) {return 3*x*x+sin(x);}
void main()
{
   const double e=0.0001;
   double a, b, s=0, h, s1;
   int n=10, i;
   cout<< " a= "; cin>>a;
   cout<< " b= "; cin>>b;
 
   h=(b-a)/n;
   s1=0; s=0; i=1;
   
   for (int i=1; i<n; i++)
   {s=s+f(a+i*h);}
 
   s=h*(s+(f(a)+f(b))/2;
 
   while (fabs(s1-s)>3*e)
   {n=n*2; h=h/2; s1=s;}
 
   cout<<"  s= ";
   _getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ture
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
27.11.2015, 15:17     Решение интеграла методом трапеции С++ #2
Со скобками напортачил (это компилятор говорит).

Это верно требует продолжения, т.е. еще чего-то. Иначе надо удалять это:
C++
1
2
while (fabs(s1-s)>3*e)
{n=n*2; h=h/2; s1=s;}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.11.2015, 15:43     Решение интеграла методом трапеции С++ #3
Цитата Сообщение от 1000v Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
h=(b-a)/n;
 s1=0; 
s=0; 
i=1; 
for (int i=1; i<n; i++) {
  s=s+f(a+i*h);
}
s=h*(s+(f(a)+f(b))/2;
это одно вычисление интеграла. (Почему-то всего лишь десяти трапеций.)
Цитата Сообщение от 1000v Посмотреть сообщение
C++
1
2
3
4
5
while (fabs(s1-s)>3*e) {
n=n*2; 
h=h/2;
 s1=s;
}
а это совершенно отдельный цикл.
Зачем это?
Может всё-таки имелось в виду
C++
1
2
3
4
5
6
while (fabs(s1-s)>3*e){
   //блаблабла подбираем злачение эн больше прежнего
  for (int i=1; i<n; i++) {
     //блаблабла интегрируем
  }
}
1000v
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 5
27.11.2015, 15:53  [ТС]     Решение интеграла методом трапеции С++ #4
Пыталась сделать блок схеме, но чет не пошло)
Миниатюры
Решение интеграла методом трапеции С++  
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.11.2015, 15:57     Решение интеграла методом трапеции С++ #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
#include <iostream>
#include<math.h>
using namespace std;
 
double f(double x) {return 3*x*x+sin(x);}
int main()
{
   const double e=0.0001;
   double a, b, s=0, h, s1;
   int n=10;
   cout<< " a= "; cin>>a;
   cout<< " b= "; cin>>b;
   do
   {
       h=(b-a)/n;
       s1=s;
       s=0;
       for (int i=1; i<n; i++)
           s=s+f(a+i*h); 
       s=h*(s+(f(a)+f(b))/2);
       n=n*2; 
   }
   while (fabs(s1-s)>3*e);
   cout<<"  s= "<<s;
return 0;
}
1000v
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 5
27.11.2015, 16:00  [ТС]     Решение интеграла методом трапеции С++ #6
спасибо =))
Yandex
Объявления
27.11.2015, 16:00     Решение интеграла методом трапеции С++
Ответ Создать тему
Опции темы

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