#include <iostream>
#include <stdio.h>
#include <math.h>
#include <iomanip>
using namespace std;
void IRect(double A, double B, double E, double &I, int &N)
//численное интегрирование функций методом средних прямоугольников
//A,B - интервал интегрирования
//E - заданная точность
//Y - значение интеграла
//N - число отрезков разбиения
{
double Res, //значение интеграла
ts, //погрешность
h, //шаг
z, //значение интеграла на предыдущем шаге
s, //интегральная сумма
x; //значение аргумента
int j; //параметр цикла
A = 0; //начальный промежуток
B = M_PI; //конечный промежуток
N = 2; //начальное число отрезков разбиения
Res = 1E10; //начальное значение интеграла
E = 0.001; //точность измерения
do //цикл вычисления интеграла с заданной точностью
{
N = N * 2; //удваиваем число отрезков разбиения
z = Res; //запомнили предыдущее значение интеграла
h = (B - A) / N; //шаг
s = 0; //значение интегральной суммы
for (j = 1; j <= N; j++) //вычисление интеграла по формуле средних
{ //прямоугольников для заданного числа отрезков
x = A + j * h; //вычислили значение аргумента
s = s + (5 * x * sin(x)); //добавили в интегральную сумму
}
Res = s * h; //текущее значение интеграла
ts = fabs(Res - z)/3.0; //вычислили погрешность
}
while (ts >= E); //пока погрешность не станет меньше точности
I = Res - ts;
}
int main(int argc, char** argv)
{
double a, b;//пределы интегрирования
double eps;//точность интегрирования
double I;//значение интеграла
int N;//число отрезков разбиения
setlocale(LC_ALL,"Russian");
IRect(a, b, eps, I, N);
cout << "Значение интеграла: " << fixed << setprecision(9)<< I << endl;//вывод интеграла
cout << "Число отрезков разбиения: " << N << endl;//вывод интеграла
system("pause");//задержка экрана до нажатия любой клавиши
return 0;
}
а проблема в этой строке за что отвечает тройка и нужна ли она там в методе средних прямоугольников
Так а в методичках что вишиться ?
Какой текст поставленной задачи, и что рекомендуют методички относительно решения данной задачи?
P. S.
Не понимаю методику обучения современных студентов. В свое время обучения находил 75-99 % ответов на поставленную задачу в методичках и рекомендуемых учебниках. Неужели так повезло с преподавателями?
вот так повезло ему пофиг на всё. Вот само задание Найти значение интеграла 5xSin(x) на промежутке [0,π] с точностью ε=0,001, используя метод средних прямоугольников
сам код
Методички спрашивали у преподавателя. Он читает материал, составил методические указания к выполнению работ, дал задание опираясь на составленный методический материал и рекомендуемую литературу.
Или было как-то иначе:
забил на учебу (и так выпустят, карантин)
кое-как получил задание от старосты (однокурсников) посредством испорченного телефона
сижу и думаю как решить поставленную задачу
Угадал?
И что это меняет? Учитесь по индивидуальной программе?
P. S.
Запросите у преподавателя методический материал к выполнению работ и перечень рекомендуемой литературы.
P. P. S.
Пока преподаватель будет вам отвечать на поставленные вопросы\запросы, составляйте математическое решение задачи, математическую модель (не тратте время свое зря).
Т.е. Вам необходимо интегрировать заданную функцию 5 x Sin(x) на интервале от 0 до заданного значения с шагом равным 0,001 используя метод прямоугольников.
Задача по предмету Численные методы в информатике.
В чем загвоздка?
Математически представляете как решается подобная задача?
P. S.
Я надеюсь найти ответы в предоставленных Вами материалах, плюс буду использовать ресурсы паутины.
Двайте договоримся следующим образом. Вы находите математическое решение задачи, я пытаюсь найти программное решение опираясь на Ваш материал.
Сопоставляем результаты, и если они равны предоставляю код с сопровождением в виде комментариев.
Договорились?