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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
doggfather
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 08:59     Интегрирование методом левых прямоугольников #1
Доброго времени суток, дорогие программисты.
В универе дали задание, а я С++ не особо шарю, помогите пожалуйста выполнить)
Задание:
"В прикладной программе проводится функция f(x)=cos(x), пределы интегрирования А и В. Решение провести методом левых прямоугольников.

Помогите, буду благодарен и вам + к карме
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
01.07.2014, 09:11     Интегрирование методом левых прямоугольников #2
doggfather, показывайте наработки.
doggfather
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 09:19  [ТС]     Интегрирование методом левых прямоугольников #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
using namespace std;
 
double f (double x);
double IntLeft(double a, double b, int n);
 
int main()
{
    double const a=8; //Нижний предел интеграла
    double const b=9;//Верхний
    int n;
    cout<<"n="; cin>>n;
    cout<<endl<<IntLeft(a,b,n);
    return 0;
}

Я хз как дальше, мне нужно чтобы юзер с клавиатуры вводил пределы интегрирования, и точность
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
01.07.2014, 09:25     Интегрирование методом левых прямоугольников #4
C++
1
2
3
4
5
6
...
cout<<"Введите a"<<endl;
cin>>a;
cout<<"Введите b"<<endl;
cin>>b;
...
С точностью аналогично.
doggfather
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 11:16  [ТС]     Интегрирование методом левых прямоугольников #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
27
28
29
30
31
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdio.h>
using namespace std;
 
//функция интеграла
float Integ(float x)
{
    return cos(x)
}
//формула левых прямоугольников
float left(int n,float a,float b)
{
   ??????
}
 
//главная функция
            int main()
    {
            float a, b, e=0.001
            int n=20
            cout<<"Введите нижний предел интегрирования"<<endl;
            cin>>a;
            cout<<"Введите верхний предел интегрирования"<<endl;
            cin>>b;
            while (?????)
}
            printf("интеграл равен ="left(???));
    getch();
}
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
01.07.2014, 11:19     Интегрирование методом левых прямоугольников #6
doggfather, в результате интегрирования у вас получится число.
После while тоже надо поставить открывающую скобку.
К слову,совмещать вывод с помощью cout и printf не рекомендуется.
doggfather
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 11:27  [ТС]     Интегрирование методом левых прямоугольников #7
а как реализовать саму формулу метода левых прямоугольников в С++, а именно вот здесь:
C++
1
2
3
4
float left(int n,float a,float b)
{
   ??????
}
?
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
01.07.2014, 11:38     Интегрирование методом левых прямоугольников #8
Набросал,саму формулу уточните:

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
#include <iostream>
#include <cmath>
# include <locale.h>
using namespace std;
 
 
double func(const double &x)
{
return cos(x);
}
 
double integr_lefttriangle(const int &n,const double &a,const double &b)
{
double sum=0;
double step=(b-a)/n;
for(double i=a;i<b;i=i+step)
    sum+=func(i);
return sum*step;
}
 
 
int main()
{
setlocale(LC_ALL,"rus");
double a, b;
int n=20;
cout<<"Введите нижний предел интегрирования"<<endl;
cin>>a;
cout<<"Введите верхний предел интегрирования"<<endl;
cin>>b;
 
cout<<"Интеграл равен "<<integr_lefttriangle(n,a,b)<<endl;
return 0;
}
doggfather
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 12:05  [ТС]     Интегрирование методом левых прямоугольников #9
Вас не затруднит комментов в код набросать, охото разобраться с устройством программы)
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
01.07.2014, 12:23     Интегрирование методом левых прямоугольников #10
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
#include <iostream>
#include <cmath>
# include <locale.h>
using namespace std;
 
//интегрируемая функция 
double func(const double &x)
{
return cos(x);
}
 
//функция для вычисления интеграла методом левых прямоугольников 
double integr_lefttriangle(const int &n,const double &a,const double &b)
{
double sum=0;
double step=(b-a)/n;//шаг
for(double i=a;i<b;i=i+step)
    sum+=func(i);//суммируем значения функции в узловых точках
return sum*step;//множим на величину шага и возвращаем в вызывающую функцию
}
 
 
int main()
{
setlocale(LC_ALL,"rus");//для русских букв в консоли
double a, b;
int n=20;//количество точек разбиения
cout<<"Введите нижний предел интегрирования"<<endl;
cin>>a;
cout<<"Введите верхний предел интегрирования"<<endl;
cin>>b;
 
cout<<"Интеграл равен "<<integr_lefttriangle(n,a,b)<<endl;
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 17:43     Интегрирование методом левых прямоугольников
Еще ссылки по теме:

Не могу найти ошибку в коде (Численное интегрирование методом Симпсона) C++
C++ Интеграл методом средних прямоугольников
C++ Вычисление интеграла методом прямоугольников

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

Или воспользуйтесь поиском по форуму:
doggfather
0 / 0 / 0
Регистрация: 01.07.2014
Сообщений: 6
01.07.2014, 17:43  [ТС]     Интегрирование методом левых прямоугольников #11
премного благодарен с помощью в этом деле!)
Yandex
Объявления
01.07.2014, 17:43     Интегрирование методом левых прямоугольников
Ответ Создать тему
Опции темы

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