- •Томский государственный университет систем управления и радиоэлектроники (тусур)
- •Программа вычисления интеграла методом левых прямоугольников.
- •Реферат Курсовая работа 31стр., 8 рис., 4 прил., 2 источника, 7 схем.
- •1.3.Вычисление интеграла методом левых прямоугольников
- •1.4.Точное решение интеграла
- •1.5.Абсолютная и относительная погрешность вычисления
- •2.Описание методики тестирования программы
- •3.Руководство пользователя по работе с программой.
- •4.Блок-схемы программ
- •5.Отображение трех графиков на одном экране.
- •Заключение.
- •Использованная литература:
- •Приложение а.
- •Приложение в.
- •Integral.Cpp – вычисление интеграла методом левых прямоугольников и получение точного решения интеграла
- •Приложение с.
- •Приложение d.
5.Отображение трех графиков на одном экране.
Заключение.
Изучен теоретический материал для решения задачи создания программы вычисления интеграла методом левых прямоугольников. Разработан алгоритм решения поставленной задачи, разработана и протестирована программа на языке С++, выявленные ошибки в ходе тестирования устранены, контрольное тестирование ошибок не показала. Изучен и применен теоретический материал для работы с графикой на языке C++.
Использованная литература:
Wikipedia. Метод прямоугольников.
http://ru.wikipedia.org/wiki/Метод_прямоугольников. Интернет ресурс. Вход свободный.
Комбинаторика. http://webmath.exponenta.ru/s/c/algebra/content/chapter4/section3/paragraph9/theory.html. Интернет ресурс. Вход свободный.
Приложение а.
Main.cpp – главный элемент проекта
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
# include <process.h>
# include <string.h>
#include "integral.cpp"
# ifndef __fstream_h
# include <fstream.h>
# endif
#include "graph.cpp"
void main()
{
float a, b, c,//коэффициенты уравнения
x1, x2;//пределы интегрирования
int n;//число интервалов разбиения
clrscr();
int successVubor,//успешный выбор команды меню и корректный выбор исходных значений
successVvod;//успешный ввод данных
do
{
cout<<"\nVvod dannuh:\n 1. S klaviatyru;\n 2. Iz faila;\n e. Vuhod.\n";
successVubor = 0;
switch(getch())
{
case '1'://ввод исходных данных с клавиатуры
do
{
fflush(stdin);//очистка буфера
cout<<"\nVvedite levuj predel integrirovaniya: ";
if((scanf("%f",&x1))==0)//если введено не число
{
cout<<"Tol'ko chislovoe znachenie!\n";
successVvod = 1;
}
else successVvod = 0;
}
while(successVvod);//пока не будет введено число
do
{
fflush(stdin);//очистка буфера
cout<<"Vvedite pravuj predel integrirovaniya: ";
if((scanf("%f",&x2))==0)//если введено не число
{
cout<<"Tol'ko chislovoe znachenie!\n";
successVvod = 1;
}
else successVvod = 0;
}
while(successVvod);//пока не будет введено число
do
{
fflush(stdin);//очистка буфера
cout<<"Vvedite znachenie a: ";
if((scanf("%f", &a))==0)//если введено не число
{
cout<<"Tol'ko chislovoe znachenie!\n";
successVvod = 1;
}
else successVvod = 0;
}
while(successVvod);//пока не будет введено число
do
{
fflush(stdin);//очистка буфера
cout<<"Vvedite znachenie b: ";
if((scanf("%f", &b))==0)//если введено не число
{
cout<<"Tol'ko chislovoe znachenie!\n";
successVvod = 1;
}
else successVvod = 0;
}
while(successVvod);//пока не будет введено число
do
{
fflush(stdin);//очистка буфера
cout<<"Vvedite znachenie c: ";
if((scanf("%f", &c))==0)//если введено не число
{
cout<<"Tol'ko chislovoe znachenie!\n";
successVvod = 1;
}
else successVvod = 0;
}
while(successVvod);//пока не будет введено число
do
{
fflush(stdin);//очистка буфера
cout<<"Vvedite kolichestvo otrezkov razbienij: ";
if((scanf("%d", &n))==0)//если введено не число (округляется, если введено нецелое)
{
cout<<"Tol'ko celoe chislovoe znachenie!\n";
successVvod = 1;
}
else successVvod = 0;
}
while(successVvod);//пока не будет введено число
break;
case '2'://чтение данных из файла
do
{
cout<<"\nVvedite pyt' i imya faila (vuhod iz programmu: e): ";
char fileName[40];
cin>>fileName;
if(!strcmp(fileName, "e"))
exit(1);
ifstream stream(fileName, ios::in);
if(stream == NULL)
cout<<"Oshibka otkrutiya faila. Prover'te pravilnost pyti faila.";
else
{
stream>>x1>>x2>>a>>b>>c>>n;
stream.close();
break;
}
}
while(1);
break;
case 'e'://выход
exit(1);
break;
default://любая другая клавиша = неудачный выбор подменю
successVubor = 1;
}
if(!successVubor)//если был осуществлен ввод исходных данных => проверка на их корректность
{
if(x1 == x2)
{
cout<<"Oshibka. Nylevoj interval integrirovaniya. Povtorite vvod.";
successVubor = 1;
}
if((x1 > 1000) || (x1 < -1000) || (x2 > 1000) || (x2 < -1000))
{
cout<<"Oshibka. Predelu integrirovaniya doljnu but' ot -1000 do 1000. Povtorite vvod.";
successVubor = 1;
}
if((n < 1) || (n > 500))
{
cout<<"Oshibka. Chislo razbienij doljno but 0 < n <= 500.";
successVubor = 1;
}
}
}
while(successVubor);//пока не будет осуществлен корректный ввод исходных данных
for(int k = 0; k < 3; k++)//для каждого из 3х уравнений
{//вычисляем приближенное значение интеграла, точное значение, абсолютную и относительную погрешности
float pribl = integr(x1, x2, n, a, b, c, k),
toch = integrToch(x1, x2, a, b, c, k);
cout<<"\n\nReshaem integral ot "<<(k + 1)<<" yravneniya.\nNaidennoe znachenie: "<<
pribl<<
"\nTochnoe znachenie: "<<toch<<
"\nAbsolytnaya pogr: "<<fabs(pribl - toch)<<
"\nOtnositelnaya pogr: "<<fabs((pribl - toch)) / toch * 100;
}
getch();
showGraphs(x1, x2, n, a, b, c);//отображаем графики этих уравнений
}