Смекни!
smekni.com

Программа для решения дифференциальных уравнений первого порядка методом Рунге-Кутта (стр. 3 из 6)

Ссылка на свойство в программном модуле записывается как

Имя_объекта.Свойство;

Метод - это процедура или функция, ассоциируемая с некоторым объектом.

Ссылка на методов программном модуле записывается как

Имя_0бъекта. Метод;

Delphi-приложение выполняется в среде Windows, и как любое Windows-приложение, получает сообщения о возникающих для него событиях. Управление приложением фактически сводится к обработке получаемых сообщений.

Методы, в которых содержится код обработки события, называются обработчиками событий (Event Handler). Delphi автоматически генерирует процедуры обработки событий – обработчикисобытий для любого компонента. При этом имя обработчика событий формируется из имени компонента и названия события (например, EditlClick). Имя обработчика события автоматически квалифицируется именем класса формы.

Например: TForml.ButtonlClick(Sender: TObject);.

Для каждого компонента предусмотрено одно стандартное событие. Например, для командной кнопки, флажка, списка, поля ввода - это событие Click, а для формы - событие FormCreate.

Для того чтобы автоматически добавить в модуль объявление и описание обработчика стандартного события, достаточно выполнить на компоненте формы или самой форме двойной щелчок мышью. Объявление события добавляется в interface-секцию модуля, а пустое описание события - в implementation-секцию модуля. Далее в редакторе кода внутри уже имеющегося блока begin end; следует только ввести код обработчика события.

Например:

procedure TForml.ButtonlClick(Sender: TObject);

begin

{место для введения кода}

end;

Для того чтобы добавить обработчик любого события, можно выбрать в инспекторе объектов страницу Events и выполнить двойной щелчок мышью в поле, расположенном справа от имени события. Это поле представляет собой комбинированное окно списка - в него можно вводить новое значение имени обработчика события двойным щелчком мыши или выбирать имя уже существующей процедуры. Это позволяет при необходимости определять одну процедуру обработки событий одновременно для нескольких событий.


2. ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ (ПО)

2.1 Назначение программного продукта

Программа предназначена для решения заданных программно обыкновенных дифференциальных уравнений первого порядка методом Рунге – Кутта, вывода результата решения ОДУ на экран в виде графика в декартовой системе координат.

2.2 Основные задачи

Программа обеспечивает решение следующих задач:

− ввод исходных данных;

− решение ОДУ и вывод результата решения в численном и аналитическом виде;

− обнуление результатов решения ОДУ;

− контроль корректности ввода исходных данных и вывод на экран сообщение о содержании

ошибки с рекомендацией по её устранению;

− контроль возникновения в процессе вычислений ошибки «деление на ‘0’» и вывод на экран

соответствующего сообщения о содержании ошибки с рекомендацией по её устранению.

2.3 Входные и выходные данные

Входными данными для программы являются:

− начальное условие решения ОДУ − у'(х0) = у0.,

− начальное и конечное значения отрезка, в пределах которого находится решение ОДУ;

−величина шага дифференцирования,

−формула образцовой функции.

Выходными данными программы являются:

− массив (х1 1 ; х2 2;…; хii) − решений выбранного дифференциального уравнения на заданном

интервале;

− график функции, которая, будучи подставленной, в исходное образцовое уравнение, обращает его в

тождество и одновременно удовлетворяет начальному условию.


3. ПРОЕКТИРОВАНИЕ

3.1 Выделение основных объектов ПО

− Объект класса TRKutta (Form1) – главная окно программы.

− Объект класса TRngeKutta (Form2) – окно вывода графика функции-решения ДУ.

− Объект класса TSpravka(Form3) – окно «О программе».

− Объект класса TRungeKutta – координатная плоскость и график функции;

3.2 Описание полей и методов

Класс TRKutta(родительский классTForm)

Поля класса:

x1 - значение x1(начало отрезка);

x2 - значение x2(конец отрезка);

yc - начальные значения (Y0) для передачи в графический модуль;

xc - начальные значения (х0)для передачи в графический модуль;

y- значение Y(x1);

h– зачение величины шага вычислений;

f- значение функции при начальных условиях

zx - массив значений аргумента;

zy - массив значений функции;

line_arr - размерность массивa;

Методы класса:

procedureButton1Click – вычисление значений функции – решения ОДУ;

procedureButton2Click – очистка полей ввода/вывода данных;

procedure Button3Click - выводокнаГРАФИК;

procedure Button4Click - выходизпрограммы;

procedure RadioGroup1Click - выборобразцовойфункции;

procedure Button5Click - активациявводаобразцовыхфункций;

procedure Button6Click - деактивациявводаобразцовыхфункций;

procedureN7Click - вывод информации о программе;

Класс TRungeKutta (родительский классTObject)

Поля класса

x0,y0 - координаты начала координатных осей;

dx,dy- шаг координатной сетки (в пикселях)

y1,y2,xP,xL - засечки по оси Y и X

dlx,dly - шаг меток (оцифровки) линий сетки по X и Y

cross- счетчик неоцифрованных линий сетки

dcross- количество неоцифрованных линий между оцифрованными

razm– размер массивов;

uzx- Динамический массив координат-X

uzy- Динамический массив координат-Y

uxc,uyc - Оцифровка по осям

mx, my- масштабы по осям X и Y;

BaseMasht_X,BaseMasht_Y - МАХ значения элементов в массивах

Методы класса

functionMaxAbsElementArray– определяет MAX элемент массива по модулю;

procedureUstanovkaParametrov – вычисляет исходные параметры необходимые для построения декартовой плоскости;

procedureKoordPloskost – вычерчивает координатную плоскость;

Конструктор

constructorTRungeKutta.CreateGr - создание объекта (график функции, координатная сетка, координатные оси)

Класс Form2 (родительский классTForm)

Поле класса (private)

RungeKutta - переменная-объект классаTRungeKutta ;

Методы класса

procedureN4Click - вывод графика функции в окне 'График';

procedureN5Click - закрытие окна 'График';

Класс Form3 (родительский классTForm)

Метод класса

procedureButton1Click – процедура вывода информации о программе

3.3 Иерархия классов на основе выделенных объектов


4. ОСНОВНЫЕ ФОРМЫ И КОМПОНЕНТЫ, ИСПОЛЬЗУЕМЫЕ ДЛЯ РЕАЛИЗАЦИИ ПРОГРАММЫ. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ РЕШЕНИЯ РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ





РУКОВОДСТВО

Теоретический материал

1. Решение дифференциальных уравнений

Пусть дано дифференциальное уравнение первого порядка:

у' = f(x)

и начальное условие его решения:

у'(х0) = у0..

Тогда решить уравнение — это значит найти такую функцию у — φ(х), которая, будучи подставленной, в исходное уравнение, обратит его в тождество и одновременно будет удовлетворено начальное условие. Задача отыскания функции у = φ (х) называется в математике задачей Коши. При решении дифференциального уравнения порядка nзадача Коши формулируется следующим образом.

Дано дифференциальное уравнение порядка n:

у(n) = f(x, y, у',…,yn-1)

Необходимо найти такую функцию у = φ (х), которая, будучи подставленной в исходное уравнение, обратит его в тождество и одновременно будут удовлетворены следующие п начальных условий:

у(х0) = у0

у'(х0) = у'0

. . .

уn-10) = уn-10

4.1 Метод Рунге-Кутта

Метод Рунге-Кутта обладает более высокой точностью, чем методы Эйлера за счет снижения методических ошибок. Идея метода состоит в следующем.

По методу Эйлера решение дифференциального уравнения первого порядка определяется из соотношения:

yi+1 = yi + Δyi;

где Δyi= hf (хi, yi) = hу' (хi, yi).

Тогда приращение Δyi, может быть найдено путем интегрирования:

Или окончательно

Вычислим теперь интеграл по методу прямоугольников: