Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
integraly_uravnenia_optim_fayly.doc
Скачиваний:
15
Добавлен:
09.04.2015
Размер:
552.45 Кб
Скачать

27

Лабораторная работа №2 Методы численного интегрирования.

  1. Цель работы

Ознакомление с принципом модульного программирования на примере задачи численного интегрирования Использование оболочки Q-basic для построения подпрограмм и головного модуля.

  1. Основные теоретические положения.

Пусть на отрезке [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)

Cумма таких произведений: называется интегральной суммой.

Определенным интегралом от функции f(x) на отрезке [a,b] называется предел интегральной суммы при неограничен­ном увеличении числа точек разбиения. При этом длина наибольшего из элементарных отрезков стремится к нулю:

Во многих случаях, когда подынтегральная функция задана в аналитическом виде, определенный интеграл удается вычислить непосредственно по формуле Ньютона-Лейбница. Она состоит в том, что определенный интеграл равен приращению первообразной F(x) на отрезке интегрирования. На практике этой формулой часто нельзя воспользоваться по двум основным причинам:

  • Вид функции не допускает непосредственного интегрирования, т.е. первообразную нельзя выразить в элементарных функциях.

  • Значения функции заданы f(x) заданы таблично (множество xi конечно).

В этих случаях используются методы численного интегрирования.

Важным частным случаем в методах численного интегрирования является тот, когда величина элементарного отрезка  xi - величина постоянная и может быть вынесена за знак интегральной суммы. Эта величина называется шагом интегрирования и обозначается обычно h.

  1. Метод прямоугольников непосредственно использует замену определенного интеграла интегральной суммой. В качестве точек xI могут выбираться левые (xi-1) или правые (xi) границы элементарных отрезков. Обозначив yi = f(xi), расчетные формулы можно записать:

(при выборе левых границ)

(при выборе правых границ)

  1. В методе трапеций график функции f(x) аппроксимируется ломаной, соединяющей точки с координатами (xi, yi).

Искомое значение определенного интеграла представляется в виде суммы площадей трапеций, построенных на каждом из элементарных отрезков:

Здесь yo и yn - значения функции f(a) и f(b) соответственно.

  1. В

    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

Далее площадь криволинейной трапеции на отрезке находится как:.

Просуммировав все площади криволинейных трапеций на отрезке , получим формулу:

  1. Порядок выполнения работы

  1. Получить у преподавателя вариант задания, включающий в себя подынтегральную функцию (F(X)), отрезок интегрирования (a,b), точность вычисления значения интеграла ( eps=0,001 ) и начальное число разбиений (n=20)

  2. Исследовать подынтегральную функцию на непрерывность и существование на заданном отрезке с помощью пакета Eureka. И найти точное значение интеграла.

  3. Написать подпрограмму для каждого метода (прямоугольников, трапеции, парабол)

  4. Написать головной модуль

  5. Отладить программу и получит результаты

  6. Сравнить полученные результаты, с полученными в пакете Eureka и сделать вывод о том, какой метод наиболее точный.

  1. Содержание отчета

  1. Содержательная постановка задачи

  2. Исходные данные

  3. Краткое описание методов.

  4. Блок схема подпрограмм и блок схема головного ( или управляющего) модуля.

  5. Листинг подпрограмм и управляющего модуля.

  6. Распечатка полученных результатов

  7. Распечатка результатов в Eureka

  8. Сравнительный анализ результатов, полученных разными методами и в Eureka.

  1. Литература

  1. Лекции по курсу «Информатика»

  2. Г.Зельднер «Quick-basic для носорогов».Из-во «Март», Москва, 1996

  3. Бахвалов С.А. «Численные методы математического анализа», т. 1, «Высшая школа», Москва, 1976

  4. Демидович «Математический анализ для ВТУЗов»

Пример решения поставленной задачи Basic

1. Подынтегральную функцию варианта задания оформляем как процедуру-функцию, используя в меню оболочки Quick-basic режим:

FUNCTION F(X)

F= < функция соответствующего варианта >

END FUNCTION

Запись всех подпрограмм можно осуществить через меню оболочки Quick-Basic:

  1. F10 - вход в меню

  2. EDIT - всплывающее меню редактирования

  3. NEW SUB - создание новой подпрограммы ( NEW FUNCTION - создание новой подпрограммы функции)

  4. Набираем в диалоговом окне новое имя подпрограммы ( например: INTT )

  5. На экране появляется заготовка для создания подпрограммы:

SUB <имя подпрограммы>

END SUB

  1. Приступаем к написанию подпрограммы между ключевыми словами 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

  1. Esc - вход в меню

  2. EDIT - окно редактирования для записи функций. В нем необходимо записать следующее:

Y=integ(F(x),x,a,b)

F(x)= <функция соответствующего варианта>

a и b левая и правая границы отрезка интегрирования.

  1. Solve – окно решения, где выводятся результаты вычислений. Их необходимо записать.

  2. Graph-Plot-левая граница отрезка интегрирования – правая граница отрезка интегрирования. Окно, где выводится график функции, чтобы просмотреть график на весь экран нажмите F5.

В пакете Eureka необходимо получить точное значение интеграла (значение Y в окне Solve) и зарисовать график функции (Graph-Plot).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]