Программа численного интегрирования

Рассмотрение техники создания программы вычисления определенных интегралов численными методами. Определение математической формулировки задачи. Характеристика блок-схемы алгоритма. Выявление результатов работы программы. Оценка текста исходной программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.