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

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

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

Решение интеграла метод центральных прямоугольников - C++

11.11.2011, 17:49. Просмотров 3117. Ответов 15
Метки нет (Все метки)

Здравствуйте товарищи программисты. Прошу помощи с решением задачи. Пишу курсовик и там надо посчитать интеграл на C++ методом центральных прямоугольников на интервале t1=0.008, t2=0.014. Я написал вот это:
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
#include<iostream>
#include<math.h>
using namespace std;
 
double I(double t)
{
if (t<0.101)
return 1.85*pow(10,4)*pow(t,3)+6.824*pow(10,3)*pow(t,2)-83.707*t+0.002066;
else if (t<0.105)
return -23.84*t+0.002071;
else
return -1.048*pow(10,5)*pow(t,3)+4.403*pow(10,3)*pow(t,2)-58.359*t-0.001629;
}
 
int main()
{
double t,t1=0.008,t2=0.014;
double h = (t2-t1)/100;
double r=1.88;
double Q=0;
for(int i=0;i<100;i++)
{
 Q+=h*I(t1+i*h-h/2);
}
Q*=r;
cout<<"q="<<Q<<endl;
cin>>t;
system("pause");
return 0;
}
Но программа не запускается в VS 2010. Помогите найти ошибку пожалуйста. А то я не нахожу.

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

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

Решение интеграла методом левых прямоугольников - C++
есть программа которая решает ингерал методом средних прямоугольников, вот: ...

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

Вычисление интеграла методом прямоугольников - C++
Помогите решить задачу! Необходимо использовать метод прямоугольников. Для построения прямоугольника использовать середину отрезка: ...

Найти значение интеграла методом прямоугольников - C++
помогите найти ошибку #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;math.h&gt; using namespace std; const double b =...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 18:02 #2
Приложили бы ошибки тогда уж : )
Функция pow не принимает первым аргументом целочисленные значения.
Попробуйте написать так для всех pow:
pow(10,3)->pow(10.0,3)

*А что вот эта часть что делает? "cin>>t" — получается мы запрашиваем у пользователя ввод переменной, которую нигде дальше не используем.
C++
1
2
3
    cin>>t;
    system("pause");
    return 0;
0
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 18:10  [ТС] #3
Прога запустилась. Спасибо! только че то с маткадом ответ не сходится теперь. Вот такое выдал (см. вложенную картинку)

cin>>t; убрал ниче не изменилось. Это я че то ступил.
0
Изображения
 
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 18:23 #4
Теперь ищите в математике ошибку или в маткаде или в c++ что-то закралось.
Вот, например, в c++ странное место:
C++
1
2
3
4
5
6
7
8
9
10
11
if (t<0.101)
return 1.85*pow(10,4)*pow(t,3)+6.824*pow(10,3)*pow(t,2)-83.707*t+0.002066;
else if (t<0.105)
return -23.84*t+0.002071;
else
return -1.048*pow(10,5)*pow(t,3)+4.403*pow(10,3)*pow(t,2)-58.359*t-0.001629;
}
 
int main()
{
double t,t1=0.008,t2=0.014;
Видно, что всё время моделирования попадает только в первый if. t<0.101, так и должно быть?
1
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 18:28  [ТС] #5
Нет. Щас посмотрю может че найду. Спасибо.
0
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 18:34  [ТС] #6
Вообще вот полное решение из маткада там ошибок точно нет. Проверено преподом)
0
Миниатюры
Решение интеграла метод центральных прямоугольников  
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 18:35 #7
А сами функции где?
0
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 18:43  [ТС] #8
А так эти начальные условия что ли. Вот.
0
Миниатюры
Решение интеграла метод центральных прямоугольников  
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 18:46 #9
I1(t), I2(t), I3(t) — вот эти я имел ввиду, они в расчётах используются.
0
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 18:51  [ТС] #10
Вот они
0
Миниатюры
Решение интеграла метод центральных прямоугольников  
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 19:15 #11
Во-первых, из этого выполняется только первое условие, значит упрощаем:
C++
1
2
3
4
5
6
7
8
9
double I(double t)
{
if (t<0.101)
return 1.85*pow(10,4)*pow(t,3)+6.824*pow(10,3)*pow(t,2)-83.707*t+0.002066;
else if (t<0.105)
return -23.84*t+0.002071;
else
return -1.048*pow(10,5)*pow(t,3)+4.403*pow(10,3)*pow(t,2)-58.359*t-0.001629;
}
Во-вторых в mathcad вы пишите I(t)=I0^2(t), следовательно на c++ правильнее будет так:
C++
1
return pow(1.85*pow(10,4)*pow(t,3)+6.824*pow(10,3)*pow(t,2)-83.707*t+0.002066,2);
Проверьте теперь.
0
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 19:26  [ТС] #12
Немножко не понял а как упростить то что во-первых? В квадрат возвел.
0
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 19:32 #13
Вот так:
C++
1
2
3
4
double I(double t)
{
return pow(1.85*pow(10,4)*pow(t,3)+6.824*pow(10,3)*pow(t,2)-83.707*t+0.002066,2);
}
Интервал 0.008—0.014 всегда меньше 0.101.
0
exovoini
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 44
11.11.2011, 19:36  [ТС] #14
Сделал. Вот результат работы программы.
0
Миниатюры
Решение интеграла метод центральных прямоугольников  
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 19:38 #15
А в mathcad было Q3=2,099·10^(-4), что то же самое — значит сходится.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 19:38
Привет! Вот еще темы с ответами:

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

Составить программу для вычисления определенного интеграла по методу прямоугольников - C++
Помогите мне, пожалуйста, с задачками. Язык учу недавно совсем, но что-то вызвал он у меня трудности даже в легких задачах :( Задачки...

Вычисление определенного интеграла функции y(x) численными методами прямоугольников и трапеций - C++
Разработать компьютерную программу вычисления определенного интеграла функции y(x) численными методами прямоугольников и трапеций. В виде...

Найти приближенное значение определенного интеграла по методу прямоугольников с точностью e=10^-3 - C++
Помогите с решение задачи, суть проблемы в том, что не знаю как сделать точность значения. Так же помогите со 2-м кодом. 1-й код: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2011, 19:38
Ответ Создать тему
Опции темы

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