- •Лабораторная работа №2 Методы численного интегрирования.
- •Лабораторная работа №4
- •4. Метод касательных.
- •Лабораторная работа №4 Численные методы поиска безусловного экстремума.
- •Лабораторная работа №5 Работа с файлами последовательного доступа.
- •Оператор открытия файла
- •Закрытие файла.
- •Оператор управления “конец файла”.
Лабораторная работа №2 Методы численного интегрирования.
Цель работы
Ознакомление с принципом модульного программирования на примере задачи численного интегрирования Использование оболочки Q-basic для построения подпрограмм и головного модуля.
Основные теоретические положения.
Пусть на отрезке [a,b] задана функция f(x). С помощью точек x0, x1,x2, ..., xn разобьем отрезок [a,b] на n элементарных отрезков [xi-1 ,xi] (i=1,2, ...,n), причем x0 =a, xn=b. На каждом из этих отрезков выберем точку xi и найдем произведение si значения функции f(xi) на длину элементарного отрезка xi = xi -xi-1:
(1)
Определенным интегралом от функции f(x) на отрезке [a,b] называется предел интегральной суммы при неограниченном увеличении числа точек разбиения. При этом длина наибольшего из элементарных отрезков стремится к нулю:
Во многих случаях, когда подынтегральная функция задана в аналитическом виде, определенный интеграл удается вычислить непосредственно по формуле Ньютона-Лейбница. Она состоит в том, что определенный интеграл равен приращению первообразной F(x) на отрезке интегрирования. На практике этой формулой часто нельзя воспользоваться по двум основным причинам:
Вид функции не допускает непосредственного интегрирования, т.е. первообразную нельзя выразить в элементарных функциях.
Значения функции заданы f(x) заданы таблично (множество xi конечно).
В этих случаях используются методы численного интегрирования.
Важным частным случаем в методах численного интегрирования является тот, когда величина элементарного отрезка xi - величина постоянная и может быть вынесена за знак интегральной суммы. Эта величина называется шагом интегрирования и обозначается обычно h.
Метод прямоугольников непосредственно использует замену определенного интеграла интегральной суммой. В качестве точек xI могут выбираться левые (xi-1) или правые (xi) границы элементарных отрезков. Обозначив yi = f(xi), расчетные формулы можно записать:
(при выборе левых границ)
(при выборе правых границ)
В методе трапеций график функции f(x) аппроксимируется ломаной, соединяющей точки с координатами (xi, yi).
Здесь yo и yn - значения функции f(a) и f(b) соответственно.
В
f(xi)
f(xi+1)
методе парабол (формула Симпсона) на каждом из элементарных отрезков, длиною 2*h, по трем известным значениям функции f(xi), f(xi+1) и f(xi+2) строится парабола, заданная уравнением ax2+bx+c.
f(xi+2) |
Решая систему трех линейных уравнений с тремя неизвестными a,b,c, получаем уравнение параболы, проходящей через заданные три точки xi, xi+1, xi+2
|
Далее площадь криволинейной трапеции на отрезке находится как:.
Просуммировав все площади криволинейных трапеций на отрезке , получим формулу:
Порядок выполнения работы
Получить у преподавателя вариант задания, включающий в себя подынтегральную функцию (F(X)), отрезок интегрирования (a,b), точность вычисления значения интеграла ( eps=0,001 ) и начальное число разбиений (n=20)
Исследовать подынтегральную функцию на непрерывность и существование на заданном отрезке с помощью пакета Eureka. И найти точное значение интеграла.
Написать подпрограмму для каждого метода (прямоугольников, трапеции, парабол)
Написать головной модуль
Отладить программу и получит результаты
Сравнить полученные результаты, с полученными в пакете Eureka и сделать вывод о том, какой метод наиболее точный.
Содержание отчета
Содержательная постановка задачи
Исходные данные
Краткое описание методов.
Блок схема подпрограмм и блок схема головного ( или управляющего) модуля.
Листинг подпрограмм и управляющего модуля.
Распечатка полученных результатов
Распечатка результатов в Eureka
Сравнительный анализ результатов, полученных разными методами и в Eureka.
Литература
Лекции по курсу «Информатика»
Г.Зельднер «Quick-basic для носорогов».Из-во «Март», Москва, 1996
Бахвалов С.А. «Численные методы математического анализа», т. 1, «Высшая школа», Москва, 1976
Демидович «Математический анализ для ВТУЗов»
Пример решения поставленной задачи Basic
1. Подынтегральную функцию варианта задания оформляем как процедуру-функцию, используя в меню оболочки Quick-basic режим:
FUNCTION F(X)
F= < функция соответствующего варианта >
END FUNCTION
Запись всех подпрограмм можно осуществить через меню оболочки Quick-Basic:
F10 - вход в меню
EDIT - всплывающее меню редактирования
NEW SUB - создание новой подпрограммы ( NEW FUNCTION - создание новой подпрограммы функции)
Набираем в диалоговом окне новое имя подпрограммы ( например: INTT )
На экране появляется заготовка для создания подпрограммы:
SUB <имя подпрограммы>
END SUB
Приступаем к написанию подпрограммы между ключевыми словами SUB и END SUB
Все вспомогательные подпрограммы объединяются управляющей программой или головным модулем. Переход от текста управляющей программы к текстам подпрограммам происходит при нажатии клавиш ALT + F1, наоборот - ALT + F2.
Преступаем к написанию головного модуля.
Управляющая программа выглядит так:
DECLARE SUB trap (a!, b!, n!, trapm!)
DECLARE SUB sim (a!, b!, n!, simp!)
DECLARE SUB pr (a!, b!, n!, prm!)
DECLARE FUNCTION f! (x!)
CLS
REM Методы численного интегрирования
INPUT "Введите интервал интегрирования (a,b)"; a, b
INPUT "Введите начальное число разбиений интервала N= "; n
INPUT "Введите точность приближения значения интеграла e="; e
REM Вызов подпрограммы интегрирования по методу прямоугольников
REM с автоматическим выбором шага: h,2h,4h,8h ...
N1 = n 'сохранение исходного значения N
DO
CALL pr(a, b, n, prm1)
CALL pr(a, b, 2 * n, prm)
n = 2 * n
LOOP UNTIL ABS(prm - prm1) < e
PRINT "Шаг интегрирования h="; (b - a) / n
PRINT "Значение интеграла по методу прямоугольников - "; prm
PRINT : PRINT
REM Вызов подпрограммы интегрирования по методу трапеций
REM с автоматическим выбором шага: h,2h,4h,8h ...
n = N1
DO
CALL trap(a, b, n, trapm1)
CALL trap(a, b, 2 * n, trapm)
n = 2 * n
LOOP UNTIL ABS(trapm1 - trapm) < e
PRINT "Шаг интегрирования h="; (b - a) / n
PRINT "Значение интеграла по методу трапеций - "; trapm
PRINT : PRINT
REM Вызов подпрограммы интегрирования по методу Симпсона
REM с автоматическим выбором шага: h,2h,4h,8h ...
n = N1
DO
CALL sim(a, b, n, simp1)
CALL sim(a, b, 2 * n, simp)
n = 2 * n
LOOP UNTIL ABS(simp1 - simp) < e
PRINT "Шаг интегрирования h="; (b - a) / n
PRINT "Значение интеграла по методу Симпсона - "; simp
END
Надо отметить, что первые четыре строчки пишутся автоматически при присоединении подпрограмм к головному модулю в результате выполнения команды Save all
Вычисление значение интеграла методом прямоугольников оформляем подпрограммой
SUB pr (a, b, n, prm)
prm = 0
h = (b - a) / n
FOR x = a TO b-h STEP h
prm = prm + f(x)
NEXT x
prm = prm * h
END SUB
Вычисление значение интеграла методом трапеций оформляем подпрограммой
SUB trap (a, b, n, trapm)
prm = 0
h = (b - a) / n
FOR x = a + h TO b - h STEP h
prm = prm + f(x)
NEXT x
trapm = (2*prm+f(a)+f(b)) * h / 2
END SUB
Вычисление значение интеграла методом Симпсона оформляем подпрограммой
SUB sim (a, b, n, simp)
s1 = 0: s2 = 0
h = (b - a) / n
FOR x = a + h TO b - h STEP 2 * h
s1 = s1 + f(x)
NEXT x
FOR x = a + 2*h TO b - 2*h STEP 2 * h
s2 = s2 + f(x)
NEXT x
simp = h / 3 * (f(a) + 4 * s1 + 2 * s2 + f(b))
END SUB
Подынтегральную функцию варианта задания оформляем как процедуру-функцию:
FUNCTION F(X)
F= < функция соответствующего варианта >
END FUNCTION
Программу осталось только набрать и отладить. Полученные результаты подклеить в отчет.
Пример решения поставленной задачи в Eureka
Esc - вход в меню
EDIT - окно редактирования для записи функций. В нем необходимо записать следующее:
Y=integ(F(x),x,a,b)
F(x)= <функция соответствующего варианта>
a и b левая и правая границы отрезка интегрирования.
Solve – окно решения, где выводятся результаты вычислений. Их необходимо записать.
Graph-Plot-левая граница отрезка интегрирования – правая граница отрезка интегрирования. Окно, где выводится график функции, чтобы просмотреть график на весь экран нажмите F5.
В пакете Eureka необходимо получить точное значение интеграла (значение Y в окне Solve) и зарисовать график функции (Graph-Plot).