Математическая формулировка задачи
Procedure Draw_Next_Main;virtual;//Построение на главной форме. Вводим данные для начало построения маятника. Fk0: Integer;//Время следующего изменения амлитуды. Function g (t, y, z: Double): Double;//Функция вида y'=z=g (x, y, z). FFormIm: TForm;//Для вывода в дополнительном окне. Fk1: Integer;//Следущие время обновление таблиц. Constructor Create (A, v, L, f, w, g: Double;time: Double;nomer… Читать ещё >
Математическая формулировка задачи (реферат, курсовая, диплом, контрольная)
Маятник — система, подвешенная в поле тяжести и совершающая механические колебания. Колебания совершаются под действием силы тяжести, силы упругости и силы трения. Во многих случаях трением можно пренебречь, а от сил упругости (либо сил тяжести) абстрагироваться, заменив их связями.
.
где — амплитуда, м.
— частота, Гц ().
— угол отклонение от строго вертикального положения, радианах.
— длина, м.
— ускорение свободного падения, м.
t — время, с.
Описание программы
Структурная схема программы
Структурно программа состоит из главного модуля, модулей описания вспомогательных форм, динамических библиотек, файлов помощи и обращений к другим программам. Связь модулей приведена на рисунке 2.
Описание разработанного класса
В результате анализа предметной области для её описания и моделирования был разработан класс TPendulum, инкапсулирующий поля, методы и свойства, применимые к рассматриваемому объекту.
TPendulum = class.
private.
FA: Double;//Амплитуда.
Fv: Double;//Частота.
FL: Double;//Длина.
FPhi: Double;//Угол.
Fw: Double;//Угловая скорость.
FG: Double;//Ускорение свободного падения.
FTimeLimit: Double;//Промежуток времени между обновление таблицы.
FTime: Double;//Время.
FNomerSeries: Integer;//Номер серий Chart.
Fk: Integer;//Чередование Амлитуд.
Fk0: Integer;//Время следующего изменения амлитуды.
Fk1: Integer;//Следущие время обновление таблиц.
FImage: TImage;//Для вывода в главном окне.
FFormIm: TForm;//Для вывода в дополнительном окне.
FWidthImage, FHeightImage: Integer;//Координаты центра экрана главного окна.
FWidthFormIm, FHeightFormIm: Integer;//Координаты центра экрана дополнительного окна.
FMainTable: TStringGrid;//Главная таблица для вывода результата.
FTable: TStringGrid;//Дополнительная таблица для вывода результата.
FMemo: TMemo;//Окно мемо для вывода лога.
FChart: TChart;//Chart для рисование зависимоти угла от времени.
FSeparate_window: Boolean;//Вывод изображения в дополнительной форме.
FMultiple_instances: Boolean;//Вывод изображения в главной и дополнительной форме.
//Если оба значения стоят в false то вывод производится только в главной форме.
FLog: Boolean;//Разрешения для логирования.
Protected.
procedure SetSeparate_window (NewSeparate_window: Boolean);
procedure SetMultiple_instances (NewMultiple_instances: Boolean);
procedure SetLog (NewLog: Boolean);
procedure SetTimeLimit (NewTimeLimit: Double);
procedure SetImage (NewImage: TImage);
procedure SetFormIm (NewFormIm: TForm);
procedure SetMainTable (NewMainTable: TStringGrid);
procedure SetTable (NewTable: TStringGrid);
procedure SetChart (NewChart: TChart);
procedure SetMemo (NewMemo: TMemo);
procedure SetCenterXImage (NewCenterXImage: Integer);
procedure SetCenterYImage (NewCenterYImage: Integer);
procedure SetCenterXFormIm (NewCenterXFormIm: Integer);
procedure SetCenterYFormIm (NewCenterYFormIm: Integer);
procedure AddTable;//Вывод в таблицу.
procedure CalcPhi;virtual;//Вычисление фи.
procedure DifUrav;//Вычисление дифф. урав. методом Рунге-Кутты 4-порядка.
procedure Draw_Next_Main;virtual;//Построение на главной форме.
procedure Draw_Next;virtual;//Построение на дополнительной форме.
function f (t, y, z: Double): Double;//Функция вида z'=cos (3x)-4y=f (x, y, z).
function g (t, y, z: Double): Double;//Функция вида y'=z=g (x, y, z).
function GetAmplitInit: Double;
function GetFrequency: Double;
function GetLength: Double;
function GetDeviation: Double;
function GetPastTime: Double;
function GetAngularVelocity: Double;
public.
constructor Create (A, v, L, f, w, g: Double;time: Double;nomer: Integer);
procedure StartBuilding;//Начинает выполнения.
procedure ReadToIni;virtual;
//Вводим данные для начало построения маятника.
property Separate_window: Boolean write SetSeparate_window;
property Multiple_instances: Boolean write SetMultiple_instances;
property Log: Boolean write SetLog;
property TimeLimit: Double write SetTimeLimit;
property Image: TImage write SetImage;
property FormIm: TForm write SetFormIm;
property MainTable: TStringGrid write SetMainTable;
property Table: TStringGrid write SetTable;
property Memo: TMemo write SetMemo;
property Chart: TChart write SetChart;
property CenterXImage: Integer write SetCenterXImage;
property CenterYImage: Integer write SetCenterYImage;
property CenterXFormIm: Integer write SetCenterXFormIm;
property CenterYFormIm: Integer write SetCenterYFormIm;
//Записываем значения для произведения сохранения в файл.
property AmplitInit: Double read GetAmplitInit;
property Frequency: Double read GetFrequency;
property Length: Double read GetLength;
property PastTime: Double read GetPastTime;
property Deviation: Double read GetDeviation;
property AngularVelocity: Double read GetAngularVelocity;
end;
Назначение полей и инкапсулированных в классе процедур и функций (методов) приведено в комментариях. Описание и реализация класса структурно оформлено в отдельном Unit — Pendulum. Используемые секции public и private определяют области видимости элементов класса. Так, видно, что все поля класса являются полностью закрытыми, а доступ к ним организуется с помощью методов и свойств.