Разработка программы вычисления определенных интегралов численными методами
Последовательность шагов по составлению программы на алгоритмическом языке Turbo Pascal 7.0 и результаты применения этой программы для вычисления конкретных значений. Разработка блок-схемы алгоритма решения задачи составления исходной Pascal-программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 15.03.2016 |
Размер файла | 754,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Содержание
- Введение
- 1. Постановка задачи
- 2. Математическая формулировка задачи
- 3. Алгоритмизация задачи
- 4. Идентификаторы программы
- 5. Блок-схема алгоритма
- 6. Текст исходной программы
- 7. Результаты работы программы
- 8. Анализ результатов
- 9. Инструкция по работе с программой
- Список использованных источников
Введение
В курсовой работе в соответствии с заданием на проектирование решается задача разработки программы вычисления определенных интегралов численными методами.
Численное интегрирование используется, когда аналитическое нахождение значений первообразной функции сложно или вообще невозможно.
В данной пояснительной записке проводится описание последовательности шагов по составлению программы на алгоритмическом языке Turbo Pascal 7.0 и результаты применения этой программы для вычисления конкретных значений. Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма е? решения составления исходной Pascal-программы и реализации вычислений по составленной программе.
Выбор метода вычисления, обращение к справке по программе и выход из программы обеспечивается с помощью специального меню. Ввод исходных данных и вывод результатов вычисления выполняется в отдельном для каждого метода вычислений окне.
алгоритмический 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
Подобные документы
Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.
курсовая работа [446,0 K], добавлен 19.06.2014Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Элементы и переменные, используемые для составления записи в Паскале. Основные числовые типы языка Turbo Pascal. Составление блок-схемы приложения, программирование по ней программы для вычисления функции. Последовательность выполнения алгоритма.
лабораторная работа [256,9 K], добавлен 10.11.2015Составление программы вычисления матрицы и программы вычисления интеграла с погрешностью, не превышающей заданную величину. Схема алгоритма и её описание. Инструкция по использованию разработанной программы и проверка правильности е функционирования.
курсовая работа [54,8 K], добавлен 27.10.2010Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.
курсовая работа [241,7 K], добавлен 11.12.2009Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.
курсовая работа [275,8 K], добавлен 28.06.2008Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.
курсовая работа [668,0 K], добавлен 25.02.2010Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.
курсовая работа [742,6 K], добавлен 03.07.2011Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.
курсовая работа [929,7 K], добавлен 06.01.2013