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

Комплексное задание №3 Вычисление определенных интегралов

Цель работы:

  • Приобретение навыков численного интегрирования методами прямоугольников, трапеций и Симпсона

  • Приобретение навыков объектно-ориентированного программирования

  • Приобретение навыков работы в среде визуального программирования

Постановка задачи.

Имеется некоторая функция, заданная аналитически или таблично. Требуется

  • Создать объектно-ориентированное представление задачи вычисления определенных интегралов.

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

  • Создать интерфейсный модуль для ввода данных в диалоговом режиме и графической визуализации результатов

  • Провести исследование влияния метода и шага интегрирования на точность вычислений.

Требование к программе.

Программа должна вычислять определенные интегралы от функций заданных как аналитически, так и представленных в виде таблиц. Шаг интегрирования принять постоянным. Во втором случае для аппроксимации функций использовать интерполяционный многочлен Лагранжа (Комплексное задание №1). Работа выполняется индивидуально в среде визуального программирования Delphi. При выполнении задания допускается использование только программных модулей и компонент, разработанных самим студентом, стандартных компонент, предоставляемых средой визуального программирования Delphi, а также модулей uCommon и uVector библиотеки Simulate1.

Вычисление определенных интегралов

Простейшими методами численного интегрирования являются методы прямоугольников и трапеций.

Формулы метода прямоугольников имеют вид

либо

либо

Формула метода трапеций имеет вид

Формула метода Симпсона имеет вид

Объектно-ориентированное представление задачи вычисления определенного интеграла

В данном разделе представлены только основные рекомендации по объектно-ориентированному представлению задачи аппроксимации, на основе которых студент должен построит свою программу.

В частности, для решения задачи аппроксимации предлагается создать базовый класс TIntegrator, на базе которого затем будут созданы классы TIntRectanles, TIntTrapez, TIntSimpson, реализующие методы прямоугольников, трапеций и Симпсона соответственно. Примерный интерфейс класса TIntegrator имеет вид

Type

TGetValueEvent : procedure( Sender:TObject;

aArgument:Double;

var aValue:Double) of Object;

TIntegrator=class( TObject )

Private

FGetValueEvent : TGetValueEvent

Protected

Function Integrand( aArgument : Double ) : Double; virtual;

Public

Constructor Create;

Destructor Destroy; override;

Function Calculate( aLeft, aRight : Double ) : Double; virtual;

Property OnGetValue : TGetValueEvent read FGetValueEvent

write FGetValueEvent;

End;

Процедура Integrand скрыта директивой Protected и предназначена для вычисления подынтегрального выражения. В базовом классе в ней может вызываться событие на вычисление подынтегрального выражения OnGetValue:

Function TIntegrator.Integrand( aArgument : Double ) : Double;

Begin

Result := 0;

If Assigned(OnGetValue) then OnGetValue( self, aArgument, result);

End;

Примерный интерфейс класса, реализующего алгоритм численного интегрирования различными методами имеет вид

TIntXXXXX = class( TIntegrator )

Private

Protected

Public

Function Calculate( aLeft, aRight : Double ) : Double; override;

End;

Где TIntXXXXX соответсвующий класс.

Для того, чтобы вычислить определенный интеграл любым из методов в программе необходимо:

  1. В классе, который осуществляет решение конкретной задачи описать процедуры вычисления подынтегрального выражения, например

Type

TMyClass=class( TObject )

Private

……

procedure AnalyticFunction( Sender:TObject;

aArgument:Double;

var aValue:Double);

procedure TableFunction( Sender:TObject;

aArgument:Double;

var aValue:Double);

……

Protected

……

Public

……

procedure Run;

……

End;

……

……

  1. Реализовать подынтегральное выражение аналитически или по формулам аппроксимации, например

……

procedure TMyClass.AnalyticFunction( Sender:TObject;

aArgument:Double;

var aValue:Double);

begin

aValue := ………

end;

……

procedure TMyClass.TableFunction( Sender:TObject;

aArgument:Double;

var aValue:Double);

begin

aValue := ………

end;

……

  1. Вычислить определенный интеграл и представить результаты, например

procedure TMyClass.Run;

var Integal: TIntegral; af,tf : Double;

begin

Integal := TIntXXXXX.Create;

……

Integral.OnGetValue := self.AnaliticFunction;

Af := Integral.Calculate( … Указать границы интегрирования … );

……

Integral.OnGetValue := self.TableFunction;

Tf := Integral.Calculate( … Указать границы интегрирования … );

……

Integral.Free;

end;

Интерфейсный модуль для ввода данных и графической визуализации результатов.

Примерный вид интерфейса пользователя представлен ниже на рисунке

В разделе меню «файл» выполняются стандартные операции по работе с внешними файлами, а именно сохранение/считывание данных, а также выход из программы.

В таблице, на основе выбранной аналитической функции с некоторым шагом формируется табличная подынтегральная функция.

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

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

Исследование влияния метода и шага интегрирования на точность вычислений

В заключении работы проводится исследование влияния метода и шага интегрирования на точность вычислений. Для этих целей

  1. определяется абсолютная погрешность вычисления определенного интеграла разными методами с одинаковым фиксированным шагом интегрирования.

  2. Выбирается метод с наименьшей абсолютной погрешностью вычислений, и определяются шаги интегрирования, при которых абсолютная погрешность оставшихся методов совпадает выбранной.

  3. Делаются выводы о точности интегрирования различными методами и их вычислительной эффективности.

Полученные результаты оформляются в виде отчета, в котором представляются основные результаты работы и делаются выводы о том, какие методы интегрирования предпочтительней использовать и в каких случаях. Отчет готовится в виде электронного документа, подготовленного в редакторе MS Word, и предоставляется при защите работы.