Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
1

Вычисление определенного интеграла приближенными методами

12.12.2012, 20:02. Просмотров 2123. Ответов 20
Метки нет (Все метки)

Вычисление определенного интеграла приближенными методами

формулой прямоугольников и формулой трапеции.

Вычислить интеграл при двух значениях шага интегрирования h=0.1 h=0.01

∫ a=0.4 b=1.2 (cosx2)/(x+1) * dx

Вот делал сам:

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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
main()
{
setlocale(LC_ALL,"Russian"); //
float b,h,t,y,a,s,x;
int N,k,i;
 
cout<<"Введите интервал [a] = ";cin>>a;
cout<<"Введите интервал [b] = ";cin>>b;
for (k=1;2;k++)
{
    N=5;
    cout<<"Введи h =";cin>>h;
    s=0; x=a;
    for (i=1;N;i++);
    {
        s=s+(cos*pow(x,2))/(x+1)*dx;
        x=x+h;
    }
        t=s*h;
        cout<<"При h= "<<h<<"интеграл ="<<t<<endl;
}
system("pause");
}
но у меня выдает ошибку на 20 строке s=s+(cos*pow(x,2))/(x+1)*dx; пишет invalid operands of types `double ()(double)' and `double' to binary `operator*'

Помогите в чем проблема может быть..
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 20:02
Ответы с готовыми решениями:

Вычисление значения определенного интеграла численными методами прямоугольников и трапеций
Разработать программу для вычисления значения определенного интеграла на интервале (a, b подобрать...

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

Вычислить значение определенного интеграла разными методами
Вычислить значение определенного интеграла по формуле прямоугольников (слева, справа и их среднее...

Нахождение значения определенного интеграла методами прямоугольников, трапеций и парабол (найти ошибку)
1. Нахождение значения определенного интеграла методами прямоугольников, трапеций и парабол в...

Вычисление определенного интеграла
Вычислить определенный интеграл, с точностью 7 знаков после десятичного разделителя, следующими...

20
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:05 2
s=s+(cos*pow(x,2))/(x+1)*dx;

Где переменная dx???
0
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:08  [ТС] 3
dx эт щас приписал тестил без dx

Добавлено через 51 секунду
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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
main()
{
setlocale(LC_ALL,"Russian"); //
float b,h,t,y,a,s,x;
int N,k,i;
 
cout<<"Введите интервал [a] = ";cin>>a;
cout<<"Введите интервал [b] = ";cin>>b;
for (k=1;2;k++)
{
    N=5;
    cout<<"Введи h =";cin>>h;
    s=0; x=a;
    for (i=1;N;i++);
    {
        s=s+(cos*pow(x,2))/(x+1);
        x=x+h;
    }
        t=s*h;
        cout<<"При h= "<<h<<"интеграл ="<<t<<endl;
}
system("pause");
}
так
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:08 4
m1stery, я понял уже давно)
0
12.12.2012, 20:08
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:10  [ТС] 5
так в чем же проблема, неправильно дал тип s ?
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:11 6
C++
1
s=s+(cos(/*косинус чего???*/)*pow(x,2))/(x+1)*dx;
0
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:12  [ТС] 7
конинус икса в квадрате
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:15 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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
main()
{
setlocale(LC_ALL,"Russian"); //
float b,h,t,y,a,s,x;
int N,k,i;
 
cout<<"Введите интервал [a] = ";cin>>a;
cout<<"Введите интервал [b] = ";cin>>b;
for (k=1;2;k++)
{
    N=5;
    cout<<"Введи h =";cin>>h;
    s=0; x=a;
    for (i=1;N;i++);
    {
        s=s+(cos(pow(x,2)))/(x+1);
        x=x+h;
    }
        t=s*h;
        cout<<"При h= "<<h<<"интеграл ="<<t<<endl;
}
system("pause");
}
Тогда так)))
0
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:44  [ТС] 9
встает на этом дальше не выводит ниче

0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:46 10
C++
1
for (i=1;N;i++);//бесконечный цикл
0
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:47  [ТС] 11
и еще если добавить так чтобы 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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
main()
{
setlocale(LC_ALL,"Russian"); //
float b,h,t,y,a,s,x;
int N,k,i;
 
cout<<"Введите интервал [a] = ";cin>>a;
cout<<"Введите интервал [b] = ";cin>>b;
for (k=1;2;k++)
{
    cout<<"Введи h =";cin>>h;
    N=(b-a)/h;  //Как здесь сделать чтобы она округляла в целое число? ну куски не могут быть 2.4
    s=0; x=a;
    for (i=1;N;i++);
    {
        s=s+(cos(pow(x,2)))/(x+1);
        x=x+h;
    }
        t=s*h;
        cout<<"При h= "<<h<<"интеграл ="<<t<<endl;
}
system("pause");
}
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:48 12
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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
main()
{
setlocale(LC_ALL,"Russian"); //
float b,h,t,y,a,s,x;
int N,k,i;
 
cout<<"Введите интервал [a] = ";cin>>a;
cout<<"Введите интервал [b] = ";cin>>b;
for (k=1;2;k++)
{
    N=5;
    cout<<"Введи h =";cin>>h;
    s=0; x=a;
    for (i=1;i < N;i++);
    {
        s=s+(cos(pow(x,2)))/(x+1);
        x=x+h;
    }
        t=s*h;
        cout<<"При h= "<<h<<"интеграл ="<<t<<endl;
}
system("pause");
}
1
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:48  [ТС] 13
Цитата Сообщение от sovaz1997 Посмотреть сообщение
C++
1
for (i=1;N;i++);//бесконечный цикл
я же добавил N значение 5 , а почему так?
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:50 14
N не меняется. N = 5. Значит N = true. Бесконечный цикл.

P.S. Попробуй новый код)))
1
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:52  [ТС] 15
все с эти разобрался спасибо, а как сделать следущее

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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
main()
{
setlocale(LC_ALL,"Russian"); //
float b,h,t,y,a,s,x;
int N,k,i;
 
cout<<"Введите интервал [a] = ";cin>>a;
cout<<"Введите интервал [b] = ";cin>>b;
for (k=1;2;k++)
{
    cout<<"Введи h =";cin>>h;
    N=(b-a)/h;  //Как здесь сделать чтобы она округляла в целое число? ну куски не могут быть 2.4 из float в целое
    s=0; x=a;
    for (i=1;i < N;i++);
    {
        s=s+(cos(pow(x,2)))/(x+1);
        x=x+h;
    }
        t=s*h;
        cout<<"При h= "<<h<<"интеграл ="<<t<<endl;
}
system("pause");
}
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:55 16
N у тебя и так целое. Может ты имеешь ввиду округлять вывод?
1
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 20:57  [ТС] 17
да ну там после вычисления получается не целое число. как конвертировать ее в целое?
16 строка N=(b-a)/h;
0
sovaz1997
CEO SOVAZ Corp.
382 / 228 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
Завершенные тесты: 1
12.12.2012, 20:59 18
Сделай проще: в 17 строчке сделай cout << N. Увидишь сам)
1
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
12.12.2012, 21:00 19
Цитата Сообщение от m1stery Посмотреть сообщение
да ну там после вычисления получается не целое число. как конвертировать ее в целое?
16 строка N=(b-a)/h;
C++
1
N=(int)(b-a)/h;
а что вам мешает сделать N числом с плавающей запятой, в С++ цикл можно и с плавающей запятой организовать
1
m1stery
1 / 1 / 0
Регистрация: 22.05.2012
Сообщений: 20
12.12.2012, 21:11  [ТС] 20
целое ))) получается ) при h = 0.1 в минусе число получается большое но целое, при 0.01 получается 9 не думал а не знаешь как этот dx находить x то понятно, а d какое значение принимает или с клавиатуры ввод ее нужен?

Добавлено через 4 минуты
Цитата Сообщение от Nixy Посмотреть сообщение
1
N=(int)(b-a)/h;
так вообще 0 получается N ставил значения h 0.1 , 0.01 ,
1
12.12.2012, 21:11
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 21:11

Вычисление определенного интеграла.
Добрый вечер! Не могли бы Вы помочь с моей задачей. Нужно вычислить определенный интеграл...

Вычисление определенного интеграла
Здравствуйте. Нашел код для вычисления определенного интеграла двумя методами, а как туда всунуть...

Вычисление определенного интеграла
Программа должна вычислять приближенное значение определенного интеграла методами: средних,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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