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

Нужна программа для решения интеграла - C++

Восстановить пароль Регистрация
 
Demon__2012
 Аватар для Demon__2012
0 / 0 / 1
Регистрация: 07.10.2013
Сообщений: 74
24.02.2014, 20:27     Нужна программа для решения интеграла #1
Всем доброго времени суток мне нужна программа для решения интеграла!
Есть такая программа для решения! Просьба написать как выгладит сам интеграл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio>
using namespace std;
 
int main()
{
    float a,b,n,h;//a и b - границы интегрирования, n - количество итераций
    cout<<"Enter a,b and n"<<endl;
    cin>>a>>b>>n;
    h=(b-a)/n;//шаг итерации
    float I;
    I=(exp(sin(a))*sin(a)-exp(sin(b))*sin(b))/2;//Ваш интеграл от a и от b
    int i;
    for (i = 0; i<=n; i++)
        I+=exp(sin(a+i*h))*sin(a+i*h);//тоже Ваш интеграл
    cout<<I*h;
    getch();
    return 0;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
24.02.2014, 20:44     Нужна программа для решения интеграла #2
http://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{a}^{b} {e}^{\sin x} \sin x dx

Добавлено через 2 минуты
Или я что-то не так понял
Demon__2012
 Аватар для Demon__2012
0 / 0 / 1
Регистрация: 07.10.2013
Сообщений: 74
24.02.2014, 20:48  [ТС]     Нужна программа для решения интеграла #3
Если я правильно понял Переменная :
Переменная (а)= значению (а)
Переменная (b)= значению (b)
Переменная (n)= значению (e)
я правильно понял?

Добавлено через 1 минуту
Цитата Сообщение от fishec Посмотреть сообщение
Или я что-то не так понял
Ты понял правильно только бы пояснить что за что отвечает!
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
24.02.2014, 20:55     Нужна программа для решения интеграла #4
Здесь реализован метод прямоугольников, n-их число. Но в коде есть ошибка, если оставить строчку:
C++
1
 I=(exp(sin(a))*sin(a)-exp(sin(b))*sin(b))/2;
то ответ не правильный выйдет, должно быть так:
C++
1
I=0;
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
24.02.2014, 20:56     Нужна программа для решения интеграла #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Demon__2012 Посмотреть сообщение
Переменная (а)= значению (а)
Переменная (b)= значению (b)
В интеграле e - число Эйлера e=2.71828...
Цитата Сообщение от Demon__2012 Посмотреть сообщение
n - количество итераций
А n - это то, на сколько отрезков нужно разбить интервал для расчета. Чем больше n, тем больше точность вычисления интеграла.
Demon__2012
 Аватар для Demon__2012
0 / 0 / 1
Регистрация: 07.10.2013
Сообщений: 74
24.02.2014, 21:04  [ТС]     Нужна программа для решения интеграла #6
Цитата Сообщение от fishec Посмотреть сообщение
А n - это то, на сколько отрезков нужно разбить интервал для расчета. Чем больше n, тем больше точность вычисления интеграла.
Спасибо!

Добавлено через 4 минуты
Цитата Сообщение от mustimur Посмотреть сообщение
то ответ не правильный выйдет, должно быть так:
Только что проверил через сайт http://matematikam.ru/calculate-onli...e-integral.php вывело правильно

Добавлено через 2 минуты
Цитата Сообщение от fishec Посмотреть сообщение
А n - это то, на сколько отрезков нужно разбить интервал для расчета. Чем больше n, тем больше точность вычисления интеграла.
Я понимаю что уже уже наглость но может поможешь мне нужно так же как и в прошлой проге написать формулу(только уже визулка, если нужно могу скинуть консольную)
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float f1(float x){
    return pow(atan(x),2);
}
float f2(float x){
    return sin(exp(x));
}
float f3(float x){
    return exp(-pow(x,2));
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
float a,b,c,d,n,x,h1,h2,h3,S1=0,S2=0,S3=0,S,m=0.0,k=3.14;
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 a=StrToFloat(Edit1->Text);
 b=StrToFloat(Edit2->Text);
 c=StrToFloat(Edit3->Text);
 d=StrToFloat(Edit4->Text);
 n=StrToFloat(Edit5->Text);
 
 if(a<b && c<d){
         h2=(k-m)/n;
         for (int i=0; i<n;i++){
             x=m+i*h2;
             S2=S2+f2(x)*h2;
         }
         for(int i=0;i<n;i++){
             x=c+i*h1;
             S1=S1+f1(x)*h1;
         }
         for(int i=0;i<n;i++){
             x=a+i*h3;
             S3=S3+f3(x)*h3;}
         S=S1+S2+S3;
         Label1->Caption=FloatToStr(S);}
         else Label1->Caption="Вы ввели неправильные \nпределы интегрирования!!!";
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="Введите a\n(нижний предел интегрирования)";
Edit2->Text="Введите b\n(верхний предел интегрирования)";
Edit3->Text="Введите c\n(нижний предел интегрирования)";
Edit4->Text="Введите d\n(верхний предел интегрирования)";
Edit5->Text="Введите количество отрезков";
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Clear();        
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit2Click(TObject *Sender)
{
Edit2->Clear();        
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit3Click(TObject *Sender)
{
Edit3->Clear();        
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit4Click(TObject *Sender)
{
Edit4->Clear();        
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit5Click(TObject *Sender)
{
Edit5->Clear();
}
//---------------------------------------------------------------------------
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
24.02.2014, 21:21     Нужна программа для решения интеграла #7
Все равно что-то не то в ней: похоже на попытку уменьшить ошибку, но.... Посмотрите для себя метод трапеций и метод прямоугольников (правых если не ошибаюсь), здесь последний реализован

Добавлено через 6 минут
Цитата Сообщение от Demon__2012 Посмотреть сообщение
float f1(float x){
* * return pow(atan(x),2);
}
float f2(float x){
* * return sin(exp(x));
}
float f3(float x){
* * return exp(-pow(x,2));
}
Вот они f2=http://www.cyberforum.ru/cgi-bin/latex.cgi?\int sin({e}^{x})dx
f3=http://www.cyberforum.ru/cgi-bin/latex.cgi?\int {e}^{-{x}^{2}}dx
f1=http://www.cyberforum.ru/cgi-bin/latex.cgi?\int {arctg}^{2}(x)dx

Добавлено через 5 минут
А ответ сумма интегралов, но только не увидел объявление переменных S, S1...3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 04:13     Нужна программа для решения интеграла
Еще ссылки по теме:

C++ Программа для решения хим. уравнений
Программа для решения ребуса C++

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

Или воспользуйтесь поиском по форуму:
Demon__2012
 Аватар для Demon__2012
0 / 0 / 1
Регистрация: 07.10.2013
Сообщений: 74
25.02.2014, 04:13  [ТС]     Нужна программа для решения интеграла #8
Цитата Сообщение от mustimur Посмотреть сообщение
А ответ сумма интегралов, но только не увидел объявление переменных S, S1...3
Есть посмотри там где и все.
Эту программу я нашёл в интернете она просит ввести 2 раза верхний и 2 раза нижний предел а также количество отрезков ну вот сам код (я ничего не изменял так как был найден):
Можешь пояснить что и к чему так как я не понял это решение сумы 3 интегралов, или как?
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
#include<iostream>
#include<conio.h>
#include <stdio.h>
#include <cmath>
using namespace std;
float f1(float x){
    return pow(atan(x),2);
}
float f2(float x){
    return sin(exp(x));
}
float f3(float x){
    return exp(-pow(x,2));
}
void main() 
 {
     setlocale(LC_ALL,"");
     int n;
     float h1,h2,h3, //шаг сетки
     S1=0,S2=0,S3=0,S;//значение интегралов
     float a,b,c,d;//пределы интегрирования
     const float m=0.0,k=3.14;
     float x;
     cout<<"Введите a(нижний предел интегрирования) "<<endl;
     cin>>a;
     cout<<"Введите b(верхний предел интегрирования) "<<endl; 
     cin>>b;
     cout<<"Введите c(нижний предел интегрирования) "<<endl;
     cin>>c;
     cout<<"Введите d(верхний предел интегрирования) "<<endl;
     cin>>d;
     cout<<"Введите количество отрезков"<<endl;
     cin>>n;
     if(a<b && c<d){
         h2=(k-m)/n;
         for (int i=0; i<n;i++){
             x=m+i*h2; 
             S2=S2+f2(x)*h2;
         }
         for(int i=0;i<n;i++){
             x=c+i*h1;
             S1=S1+f1(x)*h1;
         }
         for(int i=0;i<n;i++){
             x=a+i*h3;
             S3=S3+f3(x)*h3;}
         S=S1+S2+S3;
         cout<<"Интеграл равен "<<S;}
     else cout<<"вы ввели неправильные пределы интегрирования!!!"<<endl;
     getch();}
Добавлено через 3 минуты
Только сейчас заметил что переменные b и d используются только в строчке
C++
1
 if(a<b && c<d){
и все так зачем они?
Yandex
Объявления
25.02.2014, 04:13     Нужна программа для решения интеграла
Ответ Создать тему
Опции темы

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