metodichka_po_kursovoj_ispravl
.pdfбыструю смену подынтегральной функции f(x) путем замены аналитического выра-
жения ее правой части в подпрограмме – функции;
выбора пользователем численного метода вычисления интеграла;
ввода с клавиатуры значений пределов интегрирования a и b и количества интегра-
лов разбиения n;
вывода результатов вычисления на дисплей в удобном для восприятия виде с ото-
бражением названия выбранного численного метода, значений пределов интегриро-
вания и принятого числа интегралов разбиения.
Кроме того, целесообразно предоставить пользователю возможность получить краткую справку по программе, а также давать подсказки по ходу работы с программой.
В результате сформулируем следующую задачу по созданию программы:
значения подынтегральной функции f(x) должны вычисляться в подпрограмме – функции;
программа после загрузки должна выводить на дисплей исходное окно-заставку, в
которой отображаются общие сведения о статусе программы и еѐ авторах;
после выполнения указанной в строке подсказки процедуры перехода должно выво-
диться вертикальное меню с пунктами: «Справка», «Метод Симпсона», «Метод Бо-
де» и «Выход»;
при выборе в меню пункта «Справка» должна выводиться краткая справка о назна-
чении программы и порядке работы с ней;
после выбора в меню варианта численного метода должно открываться отдельное окно, в котором будут выводиться запросы программы о значениях пределов интег-
рирования, числе интегралов разбиения и в этом же окне после ввода исходных зна-
чений будет выводиться результат вычисления интеграла выбранным методом;
при выборе пункта меню «Выход» программы должна завершать работу.
21
2. Математическая формулировка задачи
Сущность большинства численных методов вычисления определенных интегра-
лов состоит в замене подынтегральной функции f(x) аппроксимирующей еѐ функцией
φ(x), для которой можно легко записать первообразную в элементарных функциях, т.е.
b |
b |
|
f (x)dx |
(x)dx R S R, |
(3) |
a |
a |
|
где S – приближенное значение интеграла, R – погрешность вычисления интеграла.
Вданной курсовой работе требуется вычислять интеграл численными методами Симпсона и Боде.
Вметоде Симпсона [1,2] подынтегральную функцию f(x) заменяют интерполяци-
онным полиномом второй степени P2(x) – параболой, проходящей через узлы х0, х1, х2
(рисунок 2) так, чтобы
b |
b |
|
f (x)dx |
P2 (x)dx R. |
(4) |
a |
a |
|
Рисунок 2. К вычислению определенного интеграла методом Симпсона.
22
Для записи полинома Р2(х) используют интерполяционную формулу Ньютона для трех узлов, так как достаточная для практики точность обеспечивается [2] при ис-
пользовании многочлена третьей степени:
|
|
|
P2 (x) |
f0 |
|
f01(x |
x0 ) |
f012 (x |
x0 )(x |
|
x1), |
(5) |
|||||
где f |
|
f0 |
f1 |
|
f1 |
f0 |
, f |
|
|
f01 |
f |
02 |
|
f0 2 f1 |
f2 |
- разделенные разности; |
|
01 |
x |
x |
h |
|
012 |
|
x |
x |
|
|
2h |
2 |
|
||||
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
2 |
|
|
|
|
|||||||
|
|
0 |
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
h = (b-a)/n – расстояние между узлами (шаг приращения x);
n – число интервалов интегрирования (разбиения отрезка [a, b]).
При вводе новой переменной z=x-x0, x=z+x0 и полином принимает вид
P (z) f |
0 |
( f |
01 |
f |
012 |
h)z |
f |
012 |
z 2 |
, |
|
(6) |
|
2 |
|
|
|
|
|
|
|
|
|
||||
и вычисление интеграла от полинома выражается простыми функциями |
|
|
|||||||||||
|
x2 |
|
|
|
2h |
|
|
|
|
|
|
|
|
|
P2 (x)dx |
|
P2 (z)dz |
|
( f0 |
4 f1 f 2 )h / 6 , |
(7) |
|
|||||
|
x0 |
|
|
|
0 |
|
|
|
|
|
|
|
|
где f0 = f(x) - значение подынтегральной функции при текущем значении x; |
(8) |
||||||||||||
f1 |
= 4 f(x + h/2); |
|
|
|
|
|
|
|
|
(9) |
|||
f2 |
=2 f(x + h). |
|
|
|
|
|
|
|
|
|
(10) |
Соотношение (7) называют квадратурной формулой Симпсона или формулой па-
рабол.
При интегрировании сложных функций интервал интегрирования разбивается на несколько равных промежутков n. В результате площадь всей криволинейной трапеции заменяется суммой площадей n маленьких криволинейных трапеций. Вычисление пло-
щади каждой маленькой трапеции осуществляется по формуле Симпсона.
В методе Боде [1,2] подынтегральную функцию f(x) заменяют интерполяцион-
ным полиномом четвертой степени, проходящим через узлы x0, x1, x2, x3, x4 (рисунок 3).
23
Рисунок 3. К вычислению определенного интеграла методом Боде.
Вычисление интеграла производятся по формуле [2]
|
x4 |
2h |
|
|
|
I |
f (x)dx |
(7 f0 32 f1 12 f 2 32 f3 7 f 4 ), |
(11) |
|
|
45 |
|
||||
|
x0 |
|
|
|
|
|
|
|
|
|
|
применяемой к каждому интервалу разбиения отрезка [a, b], |
|
|
|||
где f0 = f(x) - значение подынтегральной функции для текущего интервала; |
(12) |
||||
f1 = f(x+ h/4); |
|
|
|
(13) |
|
f2 = f(x+ h/2); |
|
|
|
(14) |
|
f3 = f(x+ 3h/4); |
|
|
|
(15) |
|
f4 = f(x+ h). |
|
|
|
(16) |
24
3. Алгоритмизация задачи
В соответствии с постановленной в разделе 2 задачей целесообразно реализовать алгоритм, использующий обращение к соответствующим подпрограммам из головной программы.
Алгоритм работы головной программы следующий:
1.Скрыть курсор с использованием подпрограммы - процедуры скрытия курсора и вывести в специальном окне заставку программы, содержащую сведения о на-
значении программы, исполнителе и руководителе курсовой работы, а также подсказку для пользователя о последующих действиях, с использованием под-
программы - процедуры заставки.
2.Запустить подпрограмму-процедуру вертикального меню при нажатии любой клавиши с использованием подпрограмм-процедур построения окна, вывода рамки окна и скрытия курсора.
3.Запустить подпрограмму-процедуру справки и вывести в специальном окне справочные сведения о работе с программой при выборе пункта меню «Справка» с использованием подпрограмм-процедур построения окна, вывода рамки окна и скрытия курсора, а также строки-подсказки о возврате в меню.
4.Запустить подпрограмму-процедуру вычисления интеграла методом Симпсона при выборе пункта меню «Метод Симпсона» с использованием подпрограмм-
процедур построения окна, вывода рамки окна и включения курсора, а также строки-подсказки о возврате в меню.
5.Запустить подпрограмму-процедуру вычисления интеграла методом Боде при выборе пункта меню «Метод Боде» с использованием подпрограмм-процедур построения окна, вывода рамки окна и включения курсора, а также строки-
подсказки о возврате в меню.
6.Завершить работу программы при выборе пункта меню «Выход».
Алгоритм вычисления интеграла методом Симпсона в подпрограмме-процедуре
включает следующие шаги:
1.Создать окно для ввода исходных данных и вывода результатов вычисления по методу Симпсона.
2.Восстановить отображение курсора нормального размера соответствующей под-
программой - процедурой.
3.Ввести нижний a и верхний b пределы интегрирования как границы отрезка ин-
тегрирования и количество n интервалов его разбиения.
25
4.Вывести в окне запрос о правильности ввода значений a, b и n.
5.Выполнить анализ кода нажатой в ответ на запрос клавиши: при нажатии “Y”
перейти к вычислениям, при нажатии любой другой клавиши перейти к пункту 3
алгоритма.
6.Вычислить значение шага h=(b-a)/n по формуле (6).
7.Присвоить первоначальному значению интеграла s нуль и начальному значению аргумента x0 значение a.
8.Организовать цикл по i от 1 до n.
9.Вычислить по формулам (8) – (10) значения f0, f1 и f2.
10. Вычислить значение s=s+ f0 4 f1 f2 .
11.Вычислить новое значение x= x+ h.
12.Закончить цикл по i.
13.Вычислить конечное значение интеграла s=s/6 в соответствии с (7).
14.Вывести результаты вычислений в том же окне
15.Вывести в окне запрос о продолжении вычислений с новыми исходными дан-
ными.
16.Выполнить анализ кода нажатой в ответ на запрос клавиши: при нажатии “Y”
перейти в окно с меню, при нажатии любой другой клавиши перейти в окно с за-
ставкой программы.
Алгоритм вычисления интеграла методом Боде в подпрограмме-процедуре
включает:
1.Создать окно для ввода исходных данных и вывода результатов вычисления по методу Боде.
2.Восстановить отображение курсора нормального размера соответствующей под-
программой - процедурой.
3.Ввести нижний a и верхний b пределы интегрирования как границы отрезка ин-
тегрирования и количество n интервалов его разбиения.
4.Вывести в окне запрос о правильности ввода значений a, b и n.
5.Выполнить анализ кода нажатой в ответ на запрос клавиши: при нажатии “Y”
перейти к вычислениям, при нажатии любой другой клавиши перейти к пункту 3
алгоритма.
6.Вычислить значение шага h=(b-a)/n по формуле (6).
7.Присвоить переменной s нуль и начальному значению аргумента x0 значение a.
8.Организовать цикл по i от 1 до n.
9.Вычислить по формулам (12) – (16) значения f0, f1, f2, f3 и f4.
26
10. Вычислить значение s=s+ 7 f0 32 f1 12 f2 32 f3 7 f4 .
11.Вычислить новое значение x= x+ h.
12.Закончить цикл по i.
13.Вычислить конечное значение интеграла s=s/45 в соответствии с (11).
14.Вывести результаты вычислений в том же окне.
15.Вывести в окне запрос о продолжении вычислений с новыми исходными дан-
ными.
16.Выполнить анализ кода нажатой в ответ на запрос клавиши: при нажатии “Y”
перейти в окно с меню, при нажатии любой другой клавиши перейти в окно с за-
ставкой программы.
27
4. Идентификаторы программы
Для указания соответствия обозначений переменных в формулах математической
формулировки и их идентификаторов в программе сведем их в таблицу 1:
|
|
Таблица 1 |
|
|
|
Обозначение параметров |
|
|
|
|
Смысл параметра |
В формулах |
В программе |
|
|
|
|
А |
а |
Левая граница отрезка интегрирования (нижний |
|
|
предел интегрирования) |
|
|
|
B |
b |
Правая граница отрезка интегрирования (верхний |
|
|
предел интегрирования) |
|
|
|
N |
n |
Число интервалов разбиения отрезка интегрирова- |
|
|
ния |
|
|
|
H |
h |
Длина интервала разбиения |
|
|
|
x |
x |
Аргумент подынтегральной функции |
|
|
|
dx |
h2-метод Симпсона |
Приращение аргумента x |
|
h4 – метод Боде |
|
|
|
|
I |
S |
Значение интеграла |
|
|
|
28
5. Блок-схема алгоритма |
|
|
|
|
|
||
5.1. Блок-схема алгоритма головной программы |
|
|
|||||
|
|
|
начало |
|
|
|
|
|
|
|
HiddeCursor |
|
|
|
|
|
|
|
Zastavka |
|
|
|
|
|
|
|
|
Pos=1 |
|
|
|
|
|
|
k10=readkey |
|
|
|
|
|
|
|
Нет |
|
Да |
|
|
|
|
|
K10<>#13 |
|
|
|
|
|
|
|
|
|
#72 |
#80 |
|
|
pos |
|
|
|
|
k10 |
|
Spravka |
Simpson |
Bode |
Конец |
pos=1 |
|
Нет pos=4 |
|
|
|
|
Нет |
Да |
Да |
||
|
|
|
pos=pos-1 |
|
pos=1 |
pos=pos+1 |
pos=1 |
EMenu
k10
Примечание. Блок-схемы алгоритмов процедур CursorSize, HiddeCursor, NormCursor, Zastavka, Okno, Ramka, Spravka, Emenu, Exitform и подпрограммы-
функции f являются очень простыми и в данном методическом пособии не приводятся. В реальной пояснительной записке следует приводить блок-схемы алгоритмов всех подпрограмм, используемых в программе.
29
5.2 Блок-схема алгоритма подпрограммы–процедуры Simpson
вход
Оkno
Norm |
Cursor |
a=? b=? n=? |
a, b, n |
Ch=? |
Ch |
Нет |
Ch=‟Y‟ |
Сообщение |
Да |
h=(b-a)/n; |
h2=h/2; |
s=0; |
x=a |
i=1,n |
s:=s+f(x)+4*f(x+h2)+ |
+f(x+h); |
x:=x+h |
i |
s:=s*h/6
a, b, n, s
Exit |
Form |
Window |
(2,2,79,24) |
Gotoxy |
(26,23) |
Hide- |
Cursor |
„Нажмите |
любую |
клавишу‟ |
Нет |
C=readkey |
Да |
Конец |
30