Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

metodichka_po_kursovoj_ispravl

.pdf
Скачиваний:
28
Добавлен:
31.05.2015
Размер:
504.69 Кб
Скачать

быструю смену подынтегральной функции 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