Программа численного интегрирования
Рассмотрение техники создания программы вычисления определенных интегралов численными методами. Определение математической формулировки задачи. Характеристика блок-схемы алгоритма. Выявление результатов работы программы. Оценка текста исходной программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.03.2016 |
Размер файла | 871,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Постановка задачи
2. Математическая формулировка задачи
3. Алгоритмизация задачи
4. Идентификаторы программы
5. Блок-схема алгоритма
6. Текст исходной программы
7. Результаты работы программы
8. Анализ результатов
9. Инструкция по работе с программой
Список использованных источников
Введение
численный интеграл математический программа
В курсовой работе в соответствии с заданием на проектирование решается задача разработки программы вычисления определенных интегралов численными методами.
Численное интегрирование используется, когда аналитическое нахождение значений первообразной функции сложно или вообще невозможно.
В данной пояснительной записке проводится описание последовательности шагов по составлению программы на алгоритмическом языке Turbo Pascal 7.0 и результаты применения этой программы для вычисления конкретных значений. Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма её решения составления исходной Pascal-программы и реализации вычислений по составленной программе.
Выбор метода вычисления, обращение к справке по программе и выход из программы обеспечивается с помощью специального меню. Ввод исходных данных и вывод результатов вычисления выполняется в отдельном для каждого метода вычислений окне.
1. Постановка задачи
Ставится задача составить программу вычисления интегралов вида
где a и b - нижний и верхний пределы интегрирования, f(x) - непрерывная подынтегральная функция на отрезке [a,b]. Такой определенный интеграл можно трактовать как площадь фигуры (рисунок 1), ограниченной ординатами a и b, осью абсцисс x и графиком подынтегральной функции f(x).
Рисунок 1 - К вычислению определенного интеграла
Обыкновенный определенный интеграл, у которого известна его первообразная F(x), вычисляется по формуле Ньютона-Лейбница
Численное интегрирование применяется, если нахождение F(x) сложно или невозможно. Оно заключается в интерполяции f(x) на отрезке [a,b] подходящим полиномом, для которого известна первообразная F(x). Обычно отрезок [a,b] разбивается на N частей, к каждой из которых применяется соответствующая простая формула.
Таким образом, программа должна обеспечивать возможность:
выбора пользователем численного метода вычисления;
ввода с клавиатуры значений A,B,M
вывода результатов вычисления на дисплей в удобном для восприятия виде с отображением названия выбранного численного метода.
Кроме того, целесообразно предоставить пользователю возможность получить краткую справку по программе, а также давать подсказки по ходу работы с программой.
В результате сформулируем следующую задачу по созданию программы:
Оба метода реализуется в подпрограмме-процедуре программа после загрузки должна выводить на дисплей исходное окно-заставку, в которой отображаются общие сведения о статусе программы и е? авторах;
после выполнения указанной в строке подсказки процедуры перехода должно выводиться вертикальное меню с пунктами: «Справка», «Метод прямоугольников» «Метод Чебышева » и «Выход»;
при выборе в меню пункта «Справка» должна выводиться краткая справка о назначении программы и порядке работы с ней;
при выборе пункта меню «Выход» программы должна завершать работу.
2. Математическая формулировка задачи
Метод прямоугольников
Пусть требуется определить значение интеграла функции на отрезке . Этот отрезок делится точками на равных отрезков длиной Обозначим через значение функции в точках Далее составляем суммы Каждая из сумм -- интегральная сумма для на и поэтому приближённо выражает интеграл
Если заданная функция -- положительная и возрастающая, то эта формула выражает площадь ступенчатой фигуры, составленной из «входящих» прямоугольников, также называемая формулой левых прямоугольников, а формула
выражает площадь ступенчатой фигуры, состоящей из «выходящих» прямоугольников, также называемая формулой правых прямоугольников. Чем меньше длина отрезков, на которые делится отрезок , тем точнее значение, вычисляемое по этой формуле, искомого интеграла.
Очевидно, стоит рассчитывать на бомльшую точность если брать в качестве опорной точки для нахождения высоты точку посередине промежутка. В результате получаем формулу
средних прямоугольников:
где
Учитывая априорно большую точность последней формулы при том же объеме и характере вычислений её называют формулой прямоугольников
Метод Чебышева
Для численной оценки интеграла
интервал интегрирования (a,b) разбивается на n равных отрезков длиной h = (b?a)/n. Для приближенной оценки площади i-ой полоски si строится квадратурная формула
в которой свободными параметрами являются координаты узлов xj и общий весовой множитель c1=с2=с3=…=сm=с
Для определения свободными параметрами пользуются системой уравнений
3. Алгоритмизация задачи
В соответствии с постановленной в разделе 2 задачей целесообразно реализовать алгоритм, использующий обращение к соответствующим подпрограммам из головной программы.
1. Скрыть курсор с использованием подпрограммы - процедуры скрытия курсора и вывести в специальном окне заставку программы, содержащую сведения о назначении программы, исполнителе и руководителе курсовой работы, а также подсказку для пользователя о последующих действиях, с использованием подпрограммы - процедуры заставки.
2. Запустить подпрограмму-процедуру вертикального меню при нажатии любой клавиши с использованием подпрограмм-процедур построения окна, вывода рамки окна и скрытия курсора.
3. Запустить подпрограмму-процедуру справки и вывести в специальном окне справочные сведения о работе с программой при выборе пункта меню «Справка» с использованием подпрограмм-процедур построения окна, вывода рамки окна и скрытия курсора, а также строки-подсказки о возврате в меню.
4.Запустить подпрограмму-процедуру вычисления методом прямоугольников при выборе пункта меню «Метод прямоугольников» с использованием подпрограмм-процедур построения окна, вывода рамки окна и включения курсора, а также строки-подсказки о возврате в меню.
5. Запустить подпрограмму-процедуру вычисления методом Чебышева выборе пункта меню «Метод Чебышева» с использованием подпрограмм-процедур построения окна, вывода рамки окна и включения курсора, а также строки-подсказки о возврате в меню.
6. Завершить работу программы при выборе пункта меню «Выход».
Алгоритм вычисления методом Чебышева в подпрограмме-процедуре включает следующие шаги:
1. Создать окно для ввода исходных данных и вывода результатов вычисления
2. Восстановить отображение курсора нормального размера соответствующей подпрограммой - процедурой.
3. Ввести количества a,b,m.
4.a=q,t=/2,i=0,h=(b-a)/m.
5. Организовать цикл по e от 1 до m.
6. Вычислить w=a+h,c=(w+a)/2,d=(w-a)/2,x=c-dt,i=i+cos(x)(2x2-x+4).
7. Вычислить x=c, ,i=i+cos(x)(2x2-x+4),x=x+d, ,i=i+cos(x)(2x2-x+4),a=w.
8. Закончить цикл по e.
9. Вычислить i=i*h/3.
10. Вывести i.
11. Вывести в окне запрос о продолжении вычислений с новыми исходными данными.
12. Выполнить анализ кода нажатой в ответ на запрос клавиши: при нажатии “Y” перейти в окно с меню, при нажатии любой другой клавиши перейти в окно с заставкой программы.
Алгоритм вычисления методом прямоугольников в подпрограмме-процедуре включает следующие шаги:
1. Создать окно для ввода исходных данных и вывода результатов вычисления
2. Восстановить отображение курсора нормального размера соответствующей подпрограммой - процедурой.
3. Ввести количества a,b,m.
4.p=0,x=a,h=(b-a)/m.
5. Организовать цикл по i от 0 до m-1.
6. Вычислить y=hcos(x)(2x2-x+4).
7. Вычислить p=p+y,x=x+h
8. Закончить цикл по i.
9. Вывести p
10. Вывести в окне запрос о продолжении вычислений с новыми исходными данными.
11. Выполнить анализ кода нажатой в ответ на запрос клавиши: при нажатии “Y” перейти в окно с меню, при нажатии любой другой клавиши перейти в окно с заставкой программы.
4. Идентификаторы программы
Для указания соответствия обозначений переменных в формулах математической формулировки и их идентификаторов в программе сведем их в таблицу 1:
Таблица 1 - Идентификаторы программы
Обозначение параметров |
Смысл параметра |
||
В формулах |
В программе |
||
A |
A |
Левая граница отрезка интегрирования (нижний предел интегрирования) |
|
B |
B |
Правая граница отрезка интегрирования (верхний предел интегрирования) |
|
m |
M |
Число интервалов разбиения отрезка интегрирования |
|
X |
x |
Аргумент подынтегральной функции |
5. Блок-схема алгоритма
Блок-схема алгоритма процедуры Frame;
Блок-схема алгоритма процедуры Cursize;
Блок-схема алгоритма процедуры Hidcur;
Блок-схема алгоритма процедуры Nc;
Блок-схема алгоритма процедуры Wnd;
Блок-схема алгоритма процедуры Main;
Блок-схема алгоритма процедуры Help;
Блок-схема алгоритма процедуры pryam;
Блок-схема алгоритма процедуры cebys;
Блок-схема алгоритма процедуры Menu1;
Блок-схема алгоритма головной программы;
6. Текст исходной программы
program kurs;
uses crt,dos;
label 2,3;
type
mas=array[1..4] of string;
const
menu:mas=('Справка','Метод прямоугольников','Метод Чебышева','Выход');
var
pk:boolean;
pos:integer;
k:char;
{------------------Ramka---------------------}
procedure frame(x1,y1,x2,y2:byte);
var
i:integer;
const
a=#201;
b=#205;
c=#187;
d=#186;
e=#188;
f=#200;
begin
textcolor(15);textbackground(0);
clrscr;
gotoxy(x1,y1);
write(a);
for i:=x1+1 to x2-1 do
begin
gotoxy(i,y1);write(b);
gotoxy(i,y2);write(b);
end;
gotoxy(x2,y1);write(c);
for i:=y1+1 to y2-1 do
begin
gotoxy(x1,i);write(d);
gotoxy(x2,i);write(d);
end;
gotoxy(x1,y2);write(f);
gotoxy(x2,y2);write(e);
end;
{---------------------Cursor-----------------}
procedure cursize(s:word);
var
regs:registers;
begin
with regs do
begin
AH:=$01;
CH:=Hi(s);
Cl:=Lo(s);
intr($10,regs);
end;
end;
{--------------------Skryt cursor---------------}
procedure hidcur;
begin
cursize($2000);
end;
{--------------Wernut cursor----------------}
procedure nc;
begin
cursize($0607);
end;
{-----------------Okno--------------------}
procedure wnd(x1,y1,x2,y2:byte);
begin
clrscr;
textmode(3);
frame(x1,y1,x2,y2);
window(x1+1,y1+1,x2-1,y2-1);
textbackground(0);
textcolor(15);
clrscr;
gotoxy(1,1);
end;
{-------------------------Glavnoye menu----------------}
procedure main;
var
ch:char;
begin
clrscr;
wnd(1,1,79,24);
gotoxy(16,2);
writeln('Министерство Образованя Республики Беларусь');
gotoxy(13,3);
writeln('Белорусский Национальный Технический Университет');
gotoxy(17,6);
writeln('Факультет горного дела и инженерной экологии');
gotoxy(30,8);
writeln('Курсовая работа');
gotoxy(25,9);
writeln('по дисциплине "Информатика"');
gotoxy(20,10);
writeln('тема:Программа численного интегрирования');
gotoxy(17,14);
writeln('Выполнил Шпиганович Д.С. ст.гр. 102822');
gotoxy(17,17);
writeln('Руководитель Ринкевич В.П');
gotoxy(33,21);
writeln('Минск 2014');
gotoxy(18,22);
writeln('Для продолжения нажмите любую клавишу...');
hidcur;
ch:=readkey;
end;
{-----------------------spravka---------------------}
procedure help;
var
ch:char;
begin
clrscr;
wnd(1,1,79,24);
gotoxy(33,2);
writeln('СПРАВКА');
gotoxy(1,6);
writeln(' Данная программа позволяет вычислять');
writeln(' интеграл вида I=cos(x)(2x^2-x+4)dx');
writeln(' методом прямоугольников или методом');
writeln(' Чебышева. Выберете в меню один из методов');
writeln(' В каждом из методов введите данные по запросу');
writeln(' программы. Если хотите вычислит интеграл');
writeln(' другого вида с другими данными то зайдите в');
writeln(' программу , найдите процедуру методов и поменяйте');
writeln(' данный интеграл на свой.');
gotoxy(15,22);
writeln('Для продолжения нажмите любую клавишу...');
hidcur;
ch:=readkey;
end;
{-------------------sozdaniye menu----------------}
procedure menu1;
var
i:integer;
begin
clrscr;
wnd(15,9,55,16);
for i:=1 to 4 do
begin
gotoxy(5,i+1);
if i=pos then textbackground(1) else textbackground(0);
write(menu[i]);
end;
hidcur;
end;
{---------------------samo resheniye zadaci---------------}
procedure pryam;
label pr;
var
y,p,x,a,b,h:real;
i,m:integer;
ch:char;
begin
pr:
clrscr;
wnd(1,1,79,24);
p:=0;x:=0;
writeln('Метод прямоугольников');
writeln('Интеграл I=cos(x)*(2*x^2-x+4)dx');
write('Нижний предел интегрирования a=');readln(a);
write('Верхний предел интегрирования b=');readln(b);
write('Введите число интервалов m=');readln(m);
h:=(b-a)/m;
x:=a;
for i:=0 to m-1 do
begin
y:=h*(cos(x+0.5*h)*(2*sqr(x+0.5*h)-(x+0.5*h)+4));
p:=p+y;
x:=x+h;
end;
writeln('Ответ I=',p:6:4);
hidcur;
writeln('Ввести новые значения(Y/N)?');
ch:=readkey;
if (ch='y') or (ch='Y') then goto pr;
end;{procedure}
procedure cebys;
label ce;
var
d,c,h,i,a,q,t,b,w,x:real;
e,m:integer;
ch:char;
begin
ce:
clrscr;
wnd(1,1,79,24);
writeln('Метод Чебышева');
writeln('Интеграл I=cos(x)*(2*x^2-x+4)dx');
write('Введите нижний предел a=');
readln(q);
write('Введите верхний предел b=');
readln(b);
write('Введите количества интервалов интегрирования m=');
readln(m);
a:=q;t:=sqrt(2)/2;i:=0;h:=(b-a)/m;
for e:=1 to m do
begin
w:=a+h;c:=(w+a)/2;
d:=(w-a)/2;
x:=c-d*t;i:=i+(cos(x)*(2*sqr(x)-x+4));
x:=c;i:=i+(cos(x)*(2*sqr(x)-x+4));
x:=x+d*t;i:=i+(cos(x)*(2*sqr(x)-x+4));
a:=w;
end;{for}
i:=i*h/3;
writeln('Ответ I=',i:6:5);
hidcur;
writeln('Ввести новые значения(Y/N)');
ch:=readkey;
if (ch='y') or (ch='Y') then goto ce;
end;
{-----------------glava programmy-------------}
begin
clrscr;
main;
2:
pos:=1;
menu1;
k:=readkey;
while k<>#13 do
begin
case k of
#72:if pos=1 then pos:=4 else pos:=pos-1;
#80:if pos=4 then pos:=1 else pos:=pos+1;
end;
menu1;
k:=readkey;
end;
case pos of
1:help;
2:pryam;
3:cebys;
4:exit;
end;
goto 2;
3:
end.
7. Результаты работы программы
Рисунок 2 - Главное окно программного обеспечения
Рисунок 3 - Меню программного обеспечения
Рисунок 4 - Справочная система
Рисунок 5 - Метод прямоугольников
Рисунок 6 - Метод Чебышева
8. Анализ результатов
Для оценки точности обеих метод получим интеграл функции при различных значений пределов и М.
Таблица 2 - Значения методов
Границы |
Метод прямоугольников |
Метод Чебышева |
|||
Ответ |
М |
Ответ |
М |
||
a=0 b=3 |
-7,7613 |
20 |
-7,7731 |
20 |
|
-7,5797 |
5 |
-7,7734 |
5 |
||
a=2 b=6 |
1,0101 |
20 |
1,0997 |
20 |
|
-0,3763 |
5 |
1,1029 |
5 |
||
a=5 b=10 |
-98,3788 |
20 |
-98,3258 |
20 |
|
-99,1118 |
5 |
-98,3304 |
5 |
Как видна из таблицы оба метода дают близкий результат. Исходя из этого можно сделать вывод что оба метода взаимозаменяемы.
9. Инструкция по работе с программой
Файл integral.pas с исходным текстом Паскаль-программы находится по адресу D:\курсовой\. Результат компиляции исходной программы integral.exe находится в той же папке курсовой.
Необходимо запустить на выполнение integral.exe либо загрузить Turbo Pascal 7.0, сделать текущим каталог курсовой, открыть файл с исходной Паскаль-программой integral.pas и запустить ее на выполнение командой Run.
После вывода заставки программы нажать любую клавишу для перехода в меню и открыть окно справки. После ознакомления со справкой нажатием любой клавиши возвратится в окно меню, с помощью клавиш управления курсором выбрать один из методов и нажать клавишу Enter. Введите свои данные. Программа выдаст результат вычисления.
Результаты вычисления выводятся в том же окне, где вводились исходные данные.
Для продолжения вычислений следует ответить на запрос программы нажатием клавиши „Y?, что обеспечит переход к меню программы. Нажатие клавиши „N? приводит к переходу в окно заставки программы.
Завершение работы с программой реализуется выбором пункта меню “Выход”.
Список использованных источников
1. Начала программирования на языке Паскаль/С.А.Абрамов - М., 1987
2. Программирование в среде Турбо-Паскаль/Д.Б.Поляков - М., 1992
3. Численные методы/Н.Н.Калиткин -М.: «Наука», 1978
4. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ/В.П.Дьяконов - М.: Наука, 1987
5. Вычислительные основы линейной алгебры/В.В.Воеводин - М.: Наука, 1977
6. Численные методы анализа/Б.П.Демидович - М.: Государственное издательство физико-математической литературы, 1962
Размещено на Allbest.ru
...Подобные документы
Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.
курсовая работа [1,4 M], добавлен 16.03.2012Методы левых и правых прямоугольников численного интегрирования для вычисления интегралов. Геометрический смысл определённого интеграла. Программная реализация, блок-схемы алгоритмов. Результат работы тестовой программы. Решение задачи с помощью ЭВМ.
курсовая работа [180,4 K], добавлен 15.06.2013Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.
лабораторная работа [124,7 K], добавлен 09.01.2012Методы вычисления определенных интегралов: метод трапеций и метод Симпсона (парабол). Примеры применения, блок-схемы методов трапеций и Симпсона. Разработка программы в объектно-ориентированной среде программирования Lazarus, конструирование интерфейса.
реферат [2,1 M], добавлен 18.04.2011Преобразование матрицы по заданным правилам. Методика работы с массивами, основанная на классических алгоритмах. Разработка и описание блок-схемы алгоритма. Листинг программы, экраны работы и отладки программы. Инструкция для пользователей программы.
контрольная работа [338,4 K], добавлен 29.01.2013Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.
курсовая работа [1,1 M], добавлен 22.01.2014Разработка программного обеспечения решения задач численного вычисления определенных интегралов. Анализ задачи, методы, инструменты: требования к аппаратным ресурсам и программным средствам. Руководство пользователя, тестирование приложения, применение.
курсовая работа [1,6 M], добавлен 27.08.2012Исследование внутренней сходимости численного интегрирования методами Симпсона и трапеций различных функций, задаваемых с помощью функций языка C. Результаты исследования, их анализ, описание применения. Условия и характеристики выполнения программы.
курсовая работа [385,2 K], добавлен 14.03.2011Разработка прикладного программного обеспечения для решения расчетных задач для компьютера. Численное интегрирование - вычисление значения определённого интеграла. Проектирование алгоритма численного метода. Тестирование работоспособности программы.
курсовая работа [1,1 M], добавлен 03.08.2011Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Идея численного интегрирования. Создание программы, вычисляющей определенный интеграл методом трапеций. Листинг программы, результаты работы. Проверка в среде Mathcad. Зависимость точности вычисления от количества отрезков разбиения, расчет погрешности.
отчет по практике [106,8 K], добавлен 28.04.2013Основные аналитические соотношения. Блок схемы и алгоритм решения задачи. Проверка работоспособности алгоритма вручную. Таблица идентификации переменных. Формы входной и выходной печати. Разработка и отладка программы. Инструкция для работы с программой.
курсовая работа [69,8 K], добавлен 13.02.2012Особенности метода численного интегрирования функции одной переменной. Замена на каждом элементарном отрезке подынтегральной функции на многочлен первой степени (линейную функцию). Разработка алгоритма программы, ее листинг. Пример работы программы.
контрольная работа [217,9 K], добавлен 14.07.2012Составление программы вычисления матрицы и программы вычисления интеграла с погрешностью, не превышающей заданную величину. Схема алгоритма и её описание. Инструкция по использованию разработанной программы и проверка правильности е функционирования.
курсовая работа [54,8 K], добавлен 27.10.2010Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.
курсовая работа [823,0 K], добавлен 18.12.2011Сущность основных понятий объектно-ориентированного программирования: объект, класс, полиморфизм. Блок-схема алгоритма и текст программы для вычисления площади круга, прямоугольника и трапеции. Принцип работы и результаты тестирования приложения.
курсовая работа [588,7 K], добавлен 17.07.2012Технические и пользовательские характеристики игры, требования к программному обеспечению и среде разработки C#. Составление блок-схемы алгоритма, uml-диаграммы и текста программы, тестирование корректности компьютерного кода и результатов его работы.
курсовая работа [1,8 M], добавлен 05.03.2013Численные методы. Создание программного продукта, использование которого позволит одновременно исследовать два метода вычисления определенных интегралов: метод трапеций и метод Симпсона. Рассмотрен ход вычисления интеграла в виде кода программы.
курсовая работа [834,6 K], добавлен 14.04.2019Средства Delphi для разработки Windows приложений. Математическая формулировка задачи, описание программы вычисления определенного интеграла по формуле левых прямоугольников. Руководство пользователя, методика испытаний продукта. Листинг программы.
курсовая работа [178,1 K], добавлен 14.11.2010Рассмотрение истории развития психологического тестирования. Практическая разработка программы по обработке результатов опросов: составление математической, функциональной моделей решения задачи, соответствующие им блок-схемы и программная реализация.
курсовая работа [714,9 K], добавлен 25.01.2010