
- •Лабораторный практикум
- •Содержание
- •Комплексное задание №1 решение систем линейных уравнений
- •Комплексное задание №2 Аппроксимация функций
- •Комплексное задание №3 Вычисление определенных интегралов
- •Комплексное задание №4 Решение нелинейных уравнений
- •Комплексное задание №5 Решение систем дифференциальных уравнений
- •Литература
Комплексное задание №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 соответсвующий класс.
Для того, чтобы вычислить определенный интеграл любым из методов в программе необходимо:
В классе, который осуществляет решение конкретной задачи описать процедуры вычисления подынтегрального выражения, например
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;
……
……
Реализовать подынтегральное выражение аналитически или по формулам аппроксимации, например
……
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;
……
Вычислить определенный интеграл и представить результаты, например
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;
Интерфейсный модуль для ввода данных и графической визуализации результатов.
Примерный вид интерфейса пользователя представлен ниже на рисунке
В разделе меню «файл» выполняются стандартные операции по работе с внешними файлами, а именно сохранение/считывание данных, а также выход из программы.
В таблице, на основе выбранной аналитической функции с некоторым шагом формируется табличная подынтегральная функция.
В нижней части указываются границы интегрирования, результаты по каждому методу и их сравнительный анализ.
Во всех компонентах интерфейсного модуля обязательно проводится проверка корректности ввода данных.
Исследование влияния метода и шага интегрирования на точность вычислений
В заключении работы проводится исследование влияния метода и шага интегрирования на точность вычислений. Для этих целей
определяется абсолютная погрешность вычисления определенного интеграла разными методами с одинаковым фиксированным шагом интегрирования.
Выбирается метод с наименьшей абсолютной погрешностью вычислений, и определяются шаги интегрирования, при которых абсолютная погрешность оставшихся методов совпадает выбранной.
Делаются выводы о точности интегрирования различными методами и их вычислительной эффективности.
Полученные результаты оформляются в виде отчета, в котором представляются основные результаты работы и делаются выводы о том, какие методы интегрирования предпочтительней использовать и в каких случаях. Отчет готовится в виде электронного документа, подготовленного в редакторе MS Word, и предоставляется при защите работы.