Вычислить интеграл методом средних прямоугольников - C (СИ)
Формулировка задачи:
Вычислить интеграл методом средних прямоугольников. Для этого составить функцию, реализующую вычислительный метод. Подинтегральную функцию передать в качестве параметра (указатель на функцию). Предусмотреть использование одного параметра по умолчанию. Интеграл вычислить:
с умалчиваемым значением параметра;
с другим значением этого параметра;
по формуле Ньютона-Лейбница.
Решение задачи: «Вычислить интеграл методом средних прямоугольников»
textual
Листинг программы
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <math.h>
double trap (double (*func) (double), double a, double b, double n=2000)
{
double i=func(a)+func(b)/2, h=(b-a)/n, x;
for (x=a; n>1; n--) i+=func(x+=h);
return h*i;
}
double func (double x)
{
return (x*sinh(x));
}
double pervoobraznaya (double x)
{
return (x*cosh(x)-sinh(x));
}
double N_L (double (*pervoobraznaya) (double), double a, double b)
{
double rezultat;
rezultat=pervoobraznaya(b)-pervoobraznaya(a);
return(rezultat);
}
void main()
{
clrscr ();
char abort=0;
while (!abort)
{
double a=0, b=2,n;
double i=trap (func, a, b);
textcolor (YELLOW);
cputs ("Vi4islit' integral ot (x*sh(x)) v predelah ot 0 do 2 metodom srednih pryamougol'nikov. Dlya etogo sostavit' funkciyu, realizuyushuyu metod. Podintegral'nuyu funkciyu peredat' v ka4estve parametra (ukazatel' na funkciyu. Predusmotret' ispol'zovanie odnogo parametra po umol4aniyu. Integral vy4eslit':\n ");
textcolor (GREEN);
cputs ("\r\n1. S umal4ivaemym zna4eniem parametra");
cputs ("\r\n2. S drugim zna4eniem etogo parametra");
cputs ("\r\n3. Po formule Newtona-Leybnica");
cout<<"\n\nZna4enie integrala po metodu srednih pryamougolnikov v predelah ot 0 do 2 = "<<i<<"\n";
double K=N_L (pervoobraznaya,a,b);
cout<<"Zna4enie integrala po formule Newtona-Leybnica v predelah ot 0 do 2 = "<<K<<"\n\n";
cout<<"Vvedite 4islo n = ";
cin >> n;
i=trap(func, a, b, n);
cout<<"Zna4enie integrala po formule srednih pryamougolnikov s drugim zna4eniem parametra="<<i<<"\n";
char ch;
cputs ("\n\n\nDlya povtornogo ras4eta nazhmite Enter, dlya vihoda iz programmi nazhmite Esc ");
do
{
ch=getch();
}
while (ch !=13&& ch !=27);
if(ch !=13) abort=1;
clrscr();}
}
Объяснение кода листинга программы
- В функции trap вычисляется интеграл методом средних прямоугольников.
- В функции func задаётся функция, которую необходимо интегрировать.
- В функции pervoobraznaya вычисляется первая производная функции func.
- В функции N_L вычисляется интеграл функции pervoobraznaya от a до b.
- В функции main происходит взаимодействие с пользователем.
- Переменные a и b задают пределы интегрирования.
- Переменная n используется для вычисления интеграла методом средних прямоугольников с другим шагом.
- В цикле while происходит повторение вычислений до тех пор, пока пользователь не введет команду для выхода из программы.
- Команда break используется для выхода из цикла при нажатии клавиши Esc.
- Команда continue используется для пропуска вычислений при нажатии клавиши Enter.
- Ввод числа n осуществляется с помощью функции getch.
- Значение переменной abort используется для контроля выхода из программы.
- Функция clrscr очищает экран.
- Функция cputs выводит текст на экран.
- Функция textcolor меняет цвет текста на экране.
- Функция cout выводит текст на экран.
- Функция cin считывает число с экрана.
- Функция getch считывает нажатую клавишу.
- Функция pow используется для возведения в степень.
- Функция sinh используется для вычисления гиперболического синуса.
- Функция cosh используется для вычисления гиперболического косинуса.