![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Метод численного интегрирования методом трапецийСодержание книги Похожие статьи вашей тематики
Поиск на нашем сайте
Рис. 16.13. - Интерпретация определенного интеграла. Геометрической интерпретацией определенного интеграла является площадь криволинейной трапеции, ограниченной заданной подынтегральной функцией f(x), осью абсцисс и прямыми, представляющими собой вертикальные линии, которые проходят через точки, соответствующие пределам интегрирования (рис. 16.13). Метод решения заключается в вычислении этой площади. Так как не существует простых математических формул для вычисления площади криволинейной фигуры, то эту криволинейную фигуру заменяют набором элементарных фигур – прямоугольников или прямоугольных трапеций. Естественно, что в методе трапеций – прямоугольными трапециями. Для этого разобьем участок интегрирования (ось Х в пределах от a до b) на n одинаковых отрезков и на каждом отрезке построим прямоугольные трапеции с основаниями равными значениям подынтегральной функции на краях отрезка и высотой равной длине отрезка на участке интегрирования (b-a)/n. Вид i-го отрезка интегрирования приведен на рис. 16.14. Рис. 16.14. – Прямоугольная трапеция Площадь прямоугольной трапеции вычисляется по известной формуле S=(Lосн1+Lосн2)/2 * h. Для трапеции, построенной на i-ом отрезе, Lосн1=f(a+(i-1)*h); Lосн2=f(a+i*h); S=(f(a+(i-1)*h) + f(a+i*h))/2*h, где h=(b-a)/n Таким образом, площадь под интегральной функцией заменяем суммой площадей n прямоугольных трапеций на этом же участке интегрирования. Естественно, такая замена приводит к некоторой ошибке, которую называют точностью интегрирования. Чем больше величина n, тем меньше ошибка, т.е. выше точность интегрирования. Предложенный метод интегрирования запишем следующим образом: 1) h:=(b-a)/n 2) S:=0 3) "i:=1..n: S:=S+ f(a+(i-1)*h) + f(a+i*h) 4) S:=S/2*h Так как в третьем действии дважды вычисляются одинаковые значения функции f (кроме f(a) b f(b)), то метод решения можно упростить (что делать при высокой скорости вычислений необязательно): 1) h:=(b-a)/n 2) S:=f(a)+f(b) 3) "i:=1..n-1: S:=S+ 2 * f(a+i*h) 4) S:=S/2*h
Спецификация на разрабатываемую подпрограмму 1. Назначение: вычисление определенного интеграла методом трапеций. 2. Имя: integral. 3. Вид: функция. 4. Перечень входных и выходных данных: Таблица 16.7. Перечень параметров
Математическая подынтегральная функция в общем виде всегда имеет один аргумент вещественного типа, и результат вычисления при заданном аргументе представляет собой вещественное число. Поэтому подпрограммный тип tf должен быть определен следующим образом:
type tf=function(x:real):real; 5. Заголовок подпрограммы: function integral (f:tf; a,b:real; n:integer): real; Информационная модель Таблица 16.8. Информационная модель
Текст подпрограммы type tf=function(x:real):real;
function integral(f:tf;a,b:real;n:integer):real; var h,s:real; i:integer; begin h:=(b-a)/n; S:=f(a)+f(b); for i:=1 to n-1 do S:=S+ 2 * f(a+i*h); S:=S/2*h; integral:=S end; Пример использования функции integral Постановка задачи Решим следующую задачу: определить площадь S, ограниченную параболой y=x2+1 и прямой y=3-x. Для того, чтобы получить пределы интегрирования, аналитически определим точки пересечения этих линий. Совместное решение уравнений дает пределы интегрирования от -2 до 1. Рис. 16.15 – Графическая модель задачи Метод решения Решение задачи с учетом существования функции integral сводится к вычислению S=integral(F1,-2,1,10000)-integral(F2,-2,1,10000). Здесь применяем 10000 разбиений участка интегрирования, помня, что, чем больше количество разбиений, тем точнее вычисления. Реализация такого метода решения тривиальна. В методе решения F1 и F2 представляют собой подпрограммы, соответствующие подынтегральными функциям. Интерфейс этих функций соответствует типу tf. Метод решения функции F1: F1=3-x. Метод решения функции F2: F2= x2+1. Попутно определим требования к подпрограммам, которые являются фактическими параметрами 1. Эти подпрограммы не могут быть стандартными; 2. Их имена не могут совпадать с именами стандартных подпрограмм; 3. Подпрограммы должны быть оттранслированы с параметром «дальний вызов», так как реализация языка Паскаль требует, чтобы фактический параметр-подпрограмма имел полный адрес (сегмент и смещение) Это достигается с помощью директивы «включить дальний вызов» {$F+}
Текст программы
program primer; type tf=function(x:real):real;
function integral(f:tf;a,b:real;n:integer):real; var h,s:real; i:integer; begin h:=(b-a)/n; S:=f(a)+f(b); for i:=1 to n-1 do S:=S+ 2 * f(a+i*h); S:=S/2*h; integral:=S end;
{$f+} {включение дальнего вызова}
{реализация первой подынтегральной функции} function F1(x:real):real; begin F1:=3-x end;
{реализация второй подынтегральной функции} function F2(x:real):real; begin F2:=sqr(x)+1 end;
{$f-} {отключение дальнего вызова}
var s:real;{выходной параметр программы – площадь заштрихованной области} begin S:=integral(F1,-2,1,10000)-integral(F2,-2,1,10000); writeln('Площадь=',S) end. 16. 12. Блочная структура программ. Как правило, процедуры и функции располагаются в разделах процедур и функций, то есть являются вложенными внутрь программ или других подпрограмм. При таком вложении описание подпрограммы есть составляющая блока, и сама подпрограмма включает в себя блок, то можно ввести понятия внешний и внутренний блок. Внешний блок – это блок, в который вложена подпрограмма. Внутренний блок - сама подпрограмма. Все описания, расположенные во внешних для данной подпрограммы блоках, называются глобальными по отношению к блоку, который образует данная подпрограмма. Все описания, расположенные во внутреннем блоке называются локальными. Можно ввести понятие уровень вложенности. Если в разделе описания процедур и функций описаны две или более подпрограмм, то говорят, что эти подпрограммы одного уровня вложенности. По отношению к внешнему блоку они являются внутренними. По отношению между самими подпрограммами мы не можем использовать термины внешняя или внутренняя, так как они одного уровня вложенности. Если в разделе описания процедур и функций внешнего блока вложена подпрограмма, внутри которой в таком же разделе расположена другая подпрограмма, то мы говорим о разном уровне вложенности этих подпрограмм. Для третьего блока, представляющего собой самую внутреннюю подпрограмму, оба блока, в которые она вложена, будут внешними. Уровень вложенности этой подпрограммы 2. Для второго блока третий блок будет внутренним, а первый - внешним. Уровень вложенности второго блока 1. Для первого блока (самого внешнего) второй и третий блоки будут внутренними. Уровень вложенности первого блока 0, т.е. этот блок является основной программой. Для примера рассмотрим структуру блоков, предложенную автором языка (рис.16.16). Здесь в седьмой раздел программы A вложены две подпрограммы B и C. В подпрограмму В вложена подпрограмма D. В свою очередь в подпрограмму D вложена подпрограмма G. В подпрограмму С вложены две подпрограммы E и F. Рис. 16.16. - Пример блочной структуры Разберемся со сферой действия описаний. Описания меток действуют только внутри раздела операторов блока, в котором они описаны. Все остальные описания действуют не только внутри блока, в котором они описаны, но и во всех внутренних блоках, вложенных в данный блок (вне зависимости от глубины вложенности). При этом казалось, что могут возникнуть конфликты между глобальными и локальными описаниями, так как в разных блоках одинаковыми именами могут быть поименованы разные понятия. Для того чтобы таких конфликтов не возникало, принято следующее правило - все имена, определяемые в локальных описаниях, отменяют действия совпадающих имен, описанных в глобальных описаниях. На рис. 16.17 показано расположение блоков из примера по уровням. Здесь линиями со стрелками показано действие глобальных описаний. Так в блоке G действуют описания внешних блоков D, B, A.
Рис. 16.17. - Расположение блоков по уровням и действие глобальных описаний Особо рассмотрим доступ к подпрограммам. Любая подпрограмма может быть вызвана: a) из раздела операторов блока, в котором она описана; b) из раздела операторов самой себя (прямая рекурсия); c) из раздела операторов любой внутренней подпрограммы по отношению к данной (косвенная рекурсия); d) из раздела операторов любой подпрограммы, описанной ранее в том же блоке, где и данная подпрограмма. Эти правила можем переформулировать следующим образом – любая подпрограмма может вызывать на исполнение: a) любую подпрограмму, описанную в разделе подпрограмм данной; a) саму себя (прямая рекурсия); b) все внешние подпрограммы по отношению к данной (косвенная рекурсия); c) подпрограммы, описанные ранее на том же уровне вложенности. Взаимодействие блоков (подпрограмм) из примера показано на рис. 16.18. Рис. 16.18 - Пример взаимодействия между блоками Здесь линиями со стрелками показаны возможности вызова подпрограмм на выполнение (стрелки указывают направление вызова). Так, например, из программы А могут быть вызваны только подпрограммы В и С, которые вложены в седьмой раздел. Из подпрограммы F могут быть вызваны сама подпрограмма F (прямая рекурсия), подпрограмма С, в которую она вложена (косвенная рекурсия), и подпрограмма Е (находится на одном уровне и описана ранее). з программы А могут быть вызваны подпрограммы B и С. В таблице 16.9 для перечислены все возможные взаимодействия между блоками. Здесь основной алгоритм – блок, из которого производится вызов подпрограммы, вспомогательный алгоритм – вызываемая подпрограмма. Таблица 16.9. Пример взаимодействия между блоками
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 564; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.201.123 (0.011 с.) |