Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
3 / 2 / 1
Регистрация: 20.04.2019
Сообщений: 47
1

Приближенное вычисление определенных интегралов

25.04.2019, 01:49. Показов 2478. Ответов 9

Дорогие формчане прошу вас помощи!Очень плохо с алгеброй,не понимаю что от меня требуют.Помогите пожалуйста
Очень извиняюсь за данное обращение,но у меня просто нету выхода.Сколько уже ломаю голову как это все реализовать,но все четно...
Нужно приближенное вычисление интегралов.
Задание,значение и формулу можно найти во вложениях (не могу написать тут мат.формулы).Прошу направить на праведный путь,ну или помочь с решением сея чуда.
Буду признателен за любую помощь! Спасибо!
Миниатюры
Приближенное вычисление определенных интегралов   Приближенное вычисление определенных интегралов   Приближенное вычисление определенных интегралов  

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2019, 01:49
Ответы с готовыми решениями:

Приближенное вычисление интегралов
Добрый всем вечер! Столкнулся с проблемой реализовать данную программу: которая вычисляет...

Вычисление определённых интегралов
Подскажите, пожалуйста, в чём ошибка. файл с методами вычисления #include "stdafx.h"...

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

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

9
7 / 7 / 2
Регистрация: 21.02.2019
Сообщений: 134
25.04.2019, 09:39 2
Цитата Сообщение от facelessbrother Посмотреть сообщение
Буду признателен за любую помощь!
А в чем сложность. Функция дана, диапазон дан. Даже формула для расчета дана, выбирать не надо. Бери и считай.
Что бы косинус найти в C++ есть библиотека math.h
http://www.cplusplus.com/reference/cmath/cos/
Возведение в квадрат лучше умножением делать: x*x (в случае столь не высокой степени мене затратно по ресурсам).
Какое-нибудь начало уже было положено в решении?
0
3 / 2 / 1
Регистрация: 20.04.2019
Сообщений: 47
25.04.2019, 14:31  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <math.h>
#include <windows.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    
}
Только вот это
Сейчас пробую написать что нибудь...

Добавлено через 26 минут
А что делать с точностью,куда её запихнуть?
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 <math.h>
#include <windows.h>
using namespace std;
// функция, интеграл
double f(double x)
{
    return sin(x);
}
int main()
{
    setlocale(LC_ALL, "RUS");
    int i; 
    double Integral; 
    double a = 0, b = 1; 
    double h = 0.1;
 
    double n; // задаём число разбиений n
 
    n = (b - a) / h;
 
    Integral = h * (f(a) + f(b)) / 6.0;
    for (i = 1; i <= n; i++)
        Integral = Integral + 4.0 / 6.0 * h * f(a + h * (i - 0.5));
    for (i = 1; i <= n - 1; i++)
        Integral = Integral + 2.0 / 6.0 * h * f(a + h * i);
    cout << "I3 = " << Integral << "\n";
 
    system("pause");
 
}
0
7 / 7 / 2
Регистрация: 21.02.2019
Сообщений: 134
25.04.2019, 15:39 4
Цитата Сообщение от facelessbrother Посмотреть сообщение
А что делать с точностью,куда её запихнуть?
Сначала находит первое решение. Затем увеличиваешь n в 2 раза. И находишь второе решение. Далее ищешь разность первогои второго решения по модулю. Если она меньше заданного тебе Эпсилон, то все сделано. Если нет, то опять увеличиваешь n в 2 раза. Опять ищешь решение. Находишь теперь разность второго и третьего. Если она меньше Эпсило, то все сделано. А если нет, то...

Добавлено через 1 минуту
Цитата Сообщение от facelessbrother Посмотреть сообщение
double n; // задаём число разбиений n
Число разбиений есть величина целочесленная, поэтому
C++
1
int n;
Добавлено через 1 минуту
И если мы его задаем, то зачем вот это:
Цитата Сообщение от facelessbrother Посмотреть сообщение
n = (b - a) / h;
Вычислить надо именно h

Добавлено через 5 минут
далее вообще что-то как-то не очень...
Я понял, ты хочешь разбить итоговый результат на три слагаемых.
Но,
Цитата Сообщение от facelessbrother Посмотреть сообщение
Integral = h * (f(a) + f(b)) / 6.0;
Почему на 6?

Добавлено через 2 минуты
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{b-a}{3n} есть по сути https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{h}{3}
Получается, что коэффициент перед всей квадратной скобкой есть https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{h}{3}
И лучше бы его пока оставить, и умножить на него последним действием.

Добавлено через 8 минут
далее.
В квадратной скобке стоит, условно говоря сумма 4-х слагаемых. https://www.cyberforum.ru/cgi-bin/latex.cgi?[A+2B+4C+D]
Первое и последнее из них находтся легко. Ибо это A = f(a) и D = f(b).
Второе и третье, в свою очередь представляют собой сумму элементов (и причем не всех) некоторого числового ряда.
Этот числовой ряд состоит из значений функций в точках f(a+h), f(a+2h), f(a+3h), ... f(a+(n-1)*h)
Можно, в таком случае ввести массив, размерностью в n (число разбиений) для того, что бы заполнитьего вышеуказанными значениями.
Далее цикле (от 2 до n-2) найти первую сумму и получаем B.
Что бы получить С надо
1
3 / 2 / 1
Регистрация: 20.04.2019
Сообщений: 47
25.04.2019, 20:45  [ТС] 5
Я не особо хорошо вас понимаю,но некоторые вещи вроде понял...
int n;
у меня перестает работать код...
Цитата Сообщение от Pb-BASS Посмотреть сообщение
Вычислить надо именно h
исправил.
Цитата Сообщение от Pb-BASS Посмотреть сообщение
далее вообще что-то как-то не очень...
Я понял, ты хочешь разбить итоговый результат на три слагаемых.
Но,
Сообщение от facelessbrother
Integral = h * (f(a) + f(b)) / 6.0;
Почему на 6?
Добавлено через 2 минуты
есть по сути
Получается, что коэффициент перед всей квадратной скобкой есть
И лучше бы его пока оставить, и умножить на него последним действием.
Добавлено через 8 минут
далее.
В квадратной скобке стоит, условно говоря сумма 4-х слагаемых.
Первое и последнее из них находтся легко. Ибо это A = f(a) и D = f(b).
Второе и третье, в свою очередь представляют собой сумму элементов (и причем не всех) некоторого числового ряда.
Этот числовой ряд состоит из значений функций в точках f(a+h), f(a+2h), f(a+3h), ... f(a+(n-1)*h)
Можно, в таком случае ввести массив, размерностью в n (число разбиений) для того, что бы заполнитьего вышеуказанными значениями.
Далее цикле (от 2 до n-2) найти первую сумму и получаем B.
Что бы получить С надо
Вообще ничего не понял...


Не могли бы более подробно разъяснить где мне и что подправить:?
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 <math.h>
#include <windows.h>
using namespace std;
// функция, интеграл
double f(double x)
{
    return sin(x);
}
int main()
{
    setlocale(LC_ALL, "RUS");
    int i; 
    double Integral; 
    double a = 0.0, b = 1.0; 
    double h = 0.1;
 
    double n = 2; // задаём число разбиений n
 
    h = (b - a) / n;
 
    Integral = h * (f(a) + f(b)) / 3.0;
    for (i = 1; i <= n; i++)
        Integral = Integral + 4.0 / 3.0 * h * f(a + h * (i - 0.5));
    for (i = 1; i <= n - 1; i++)
        Integral = Integral + 2.0 / 3.0 * h * f(a + h * i);
    cout << "I3 = " << Integral << "\n";
 
    system("pause");
 
}
Добавлено через 4 часа 39 минут
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
#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
typedef double(*pointFunc)(double);
double f(double x) {
    return(10 - x);
}
double simpson_integral(pointFunc f, double a, double b, int n) {
    const double h = (b - a) / n;
    double k1 = 0, k2 = 0;
    for (int i = 1; i < n; i += 2) {
        k1 += f(a + i * h);
        k2 += f(a + (i + 1) * h);
    }
    return h / 3 * (f(a) + 4 * k1 + 2 * k2);
}
int main() {
    setlocale(LC_ALL, "RUS");
    double a, b, eps;
    double s1, s;
    int n = 1; //начальное число шагов
    cout << "Введите левую границу интегрирования a = ";
    cin >> a;
    cout << "\nВведите правую границу интегрирования b = ";
    cin >> b;
    cout << "\nВведите требуемую точность eps = ";
    cin >> eps;
    s1 = simpson_integral(f, a, b, n); //первое приближение для интеграла
    do {
        s = s1;     //второе приближение
        n = 2 * n;  //увеличение числа шагов в два раза,
 
        s1 = simpson_integral(f, a, b, n);
    } while (fabs(s1 - s) > eps);  //сравнение приближений с заданной точностью
    cout << "\nИнтеграл = " << s1 << endl;
}
Можно сдавать на проверку:?
0
7 / 7 / 2
Регистрация: 21.02.2019
Сообщений: 134
25.04.2019, 21:52 6
Цитата Сообщение от facelessbrother Посмотреть сообщение
Можно сдавать на проверку
Тебе когда сдавать?
Сегодня уже навряд ли смогу посмотреть.
Сам уже не в адеквате.
1
3 / 2 / 1
Регистрация: 20.04.2019
Сообщений: 47
25.04.2019, 22:36  [ТС] 7
Да,я уже отправил по факту.Там уже все проверят,и расскажут.Еще раз спасибо за помощь!Нужно бы углубить свои знания в алгебре и c++,просто сажусь,смотрю в компилятор и такой думаю,а что писать то:? Сложный язык...
1
1715 / 564 / 187
Регистрация: 12.03.2016
Сообщений: 2,165
25.04.2019, 22:52 8
Цитата Сообщение от facelessbrother Посмотреть сообщение
Можно сдавать на проверку
facelessbrother, так реши интеграл (хоть даже через онлайн) да сравни с ответом.
1
1715 / 564 / 187
Регистрация: 12.03.2016
Сообщений: 2,165
26.04.2019, 06:34 9
facelessbrother, где у тебя функция cos(x*x) согласно заданию?
То у тебя
Цитата Сообщение от facelessbrother Посмотреть сообщение
return sin(x);
то
Цитата Сообщение от facelessbrother Посмотреть сообщение
return(10 - x);
Определись уж что считать надо.
А так вроде правильно считает.
1
3 / 2 / 1
Регистрация: 20.04.2019
Сообщений: 47
26.04.2019, 16:42  [ТС] 10
Тэкс, 4 балла из 5 поставили,всех благодарю еще раз
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2019, 16:42

Метод прямоугольников для решения определенных интегралов
Есть рабочий код метода трапеции для решения определенных интегралов. Формулу нужно заменить для...

вычисление интегралов
Здравствуйте уважаемые программисты! мне очень нужна помощь по написанию программы на с++/с#. у...

Вычисление Интегралов на С++
Вычислить интеграл. Граница с 2 до 3. Сам интеграл 5*x^4 dx. Если можно написать какая строчка за...

Вычисление интегралов двумя способами
Народ спасайте. С интегралами вовсе не дружу. Каким образом можно решить данные интегралы именно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru