Моделирование физических процессов в среде программирования Lazarus

VIII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Моделирование физических процессов в среде программирования Lazarus

Бучка Д.В. 1
1МБОУ «Средняя общеобразовательная школа № 17»
Покидова Н.Н. 1Кушнерева Г.Ю. 1
1МБОУ «Средняя общеобразовательная школа № 17»
Автор работы награжден дипломом победителя III степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

Компьютерное моделирование – один из самых мощных инструментов познания, анализа и проектирования, которым располагают специалисты, ответственные за разработку и функционирование сложных технологий. Идея компьютерного моделирования проста и в то же время интуитивно привлекательна. Она дает возможность исследователю экспериментировать с объектами в тех случаях, когда делать это на реальном объекте практически невозможно или нецелесообразно. Сущность методологии компьютерного моделирования состоит в замене исходного технологического объекта его «образом» - математической моделью – и в дальнейшем изучении модели с помощью реализуемых на компьютерах вычислительно-логических алгоритмов.

Этот метод познания, конструирования, проектирования сочетает в себе достоинства как теории, так и эксперимента. Работа не с самим объектом (явлением, процессом), а с его моделью дает возможность относительно быстро и без существенных затрат исследовать его свойства и поведение в любых мыслимых ситуациях (преимущества теории). В то же время вычислительные (имитационные) эксперименты с моделями объектов позволяют подробно и глубоко изучать объекты в достаточной полноте, недоступной чисто теоретическим подходам (преимущества эксперимента).

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

Поэтому нами была поставлена цель: создать экспериментальную программу моделирования физических процессов в среде программирования Lazarus. Для достижения цели были поставлены следующие задачи:

Познакомиться с объектно-ориентированным программированием в свободной среде программирования Lazarus.

Изучить литературу по теме «Моделирование физических процессов» для того, чтобы модель отражала реальные свойства оригинала.

Освоить методы моделирования физических процессов.

Изучить процедуру проведения компьютерного эксперимента.

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

Объект исследования – физические процессы, предмет исследования – моделирование физических процессов в среде программирования Lazarus. Новизна исследования – направленный на удобство пользователя интерфейс программного продукта, дающий возможность наглядного решения физических задач.

ОСНОВНАЯ ЧАСТЬ

Модель и моделирование – это универсальные понятия, атрибуты одного из наиболее мощных методов познания в любой профессиональной области, познания объекта, процесса, явления (через модели и моделирование).

Модели и моделирование объединяют специалистов различных областей, работающих над решением проблем, независимо от того, где эта модель и результаты моделирования будут применены.

Модель – это некоторое представление или описание оригинала (объекта, процесса, явления), которое при определенных предложениях, гипотезах о поведении оригинала позволяет замещать оригинал для его лучшего изучения, исследования, описания его свойств.

Проблема моделирования состоит из трех взаимосвязанных задач: построение новой (адаптация известной) модели; исследование модели (разработка метода исследования или адаптация, применение известного); использование (на практике или теоретически) модели.

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

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

Компьютерное моделирование как метод познания основано на математическом моделировании. Математическая модель – это система математических соотношений (формул, уравнений, неравенств и знаковых логических выражений) отображающих существенные свойства изучаемого объекта или явления.

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

Рассмотрим процесс компьютерного моделирования более подробно. Компьютерное моделирование является одним из эффективных методов изучения сложных систем. Компьютерные модели проще и удобнее исследовать в силу их возможности проводить вычислительные эксперименты, в тех случаях, когда реальные эксперименты затруднены из-за финансовых или физических препятствий или могут дать непредсказуемый результат. Логичность компьютерных моделей позволяет выявить основные факторы, определяющие свойства изучаемого объекта-оригинала (или целого класса объектов), в частности, исследовать отклик моделируемой физической системы на изменения ее параметров и начальных условий.

Компьютерное моделирование как новый метод научных исследований основывается на:

Построении математических моделей для описания изучаемых процессов;

Использовании новейших вычислительных машин, обладающих высоким быстродействием (миллионы операций в секунду) и способных вести диалог с человеком.

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

Итак, к основным этапам компьютерного моделирования относятся:

Постановка задачи, определение объекта моделирования: на данном этапе происходит сбор информации, формулировка вопроса, определение целей, формы представления результатов, описание данных.

Анализ и исследование системы: анализ системы, содержательное описание объекта, разработка информационной модели, анализ технических и программных средств, разработка структур данных, разработка математической модели.

Формализация, то есть переход к математической модели, создание алгоритма: выбор метода проектирования алгоритма, выбор формы записи алгоритма, выбор метода тестирования, проектирование алгоритма.

Программирование: выбор языка программирования или прикладной среды для моделирования, уточнение способов организации данных, запись алгоритма на выбранном языке программирования (или в прикладной среде).

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

Анализ и интерпретация результатов: доработка программы или модели в случае необходимости.

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

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

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

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

Моделирование функциональной зависимости можно проводить по аналитическим (точным) формулам или по приближенным, полученным в результате решения некоторого исходного уравнения численным (приближенным) методом. Количество смоделированных точек при работе с аналитическими формулами колеблется от нескольких десятков до нескольких сотен; при численном решении количество точек берется от нескольких сотен до нескольких тысяч.

Все величины, входящие в функциональную зависимость, разделяют на постоянные и переменные. Это разделение необходимо для определения вида ссылки (абсолютная или относительная, соответственно) при создании формулы.

При создании алгоритма построения физической модели в общем виде можно выделить следующие этапы:

1. Составить математическую модель процесса или выписать все расчетные формулы.

2. На форме располагаем текстовые поля для ввода с клавиатуры

1) начальных значений величин х и у, а также всех других, входящих в расчетные формулы (например, начальная скорость, начальная координата и т.д.);

2) значения величин, входящих в функциональную зависимость (например, угол, под которым произведен бросок);

3. Выполнить (при необходимости) перевод величин из одной системы единиц в другую.

4. Построить график зависимости у(х).

Моделирование равноускоренного движения тела

Рассмотрим прямолинейное равноускоренное движение (a= const). Поскольку движение происходит вдоль прямой, то для его описания достаточно одной координаты. Пусть тело движется вдоль оси Oy. Согласно определению ускорения

где в числителе стоит изменение скорости, а в знаменателе - промежуток времени, за который это изменение произошло. Отсюда

Поскольку движение равноускоренное, каждую секунду скорость получает одно и то же приращение. Перепишем это выражение в проекции на выбранное направление оси Oy:

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

При этом если ay<0, скорость получает положительное приращение, т.е. с течением времени она увеличивается (ускоренное движение); если ay>0, скорость с течением времени уменьшается (замедленное движение). Координата тела при этом будет изменяться по закону:

Графическое моделирование будет заключаться в построении графика зависимости y=f(t) при различных значениях ay и v0y.

Данные формулы дают возможность построить график зависимости y(x).

Моделирование движения тела, брошенного под углом к горизонту без учета сопротивления воздуха или брошенного горизонтально

Рассмотрим случай движения тела, брошенного под углом к горизонту, происходящего только под действием силы тяжести (трением пренебрегаем).

В этом случае одной координаты для описания движения недостаточно. Необходимо ввести систему координат xOy, при этом ось Ox направляют горизонтально, а ось Oy– вертикально вверх или вниз. Теперь положение тела задается двумя координатами(x, y), каждая из которых с течением времени будет изменяться. Закон изменения координат можно установить из следующих соображений.

Поскольку мы считаем, что никакие силы, кроме силы тяжести на тело не действуют, движение вдоль оси Ox будет равномерным, и абсцисса тела меняется по закону x=vxt , где vx=v0x=const - проекция скорости на ось Ox.

Сила тяжести, действующая на тело, сообщает ему ускорение g, направленное, как и сама сила, вертикально вниз. Поэтому проекция скорости на ось Oy будет меняться по закону vy=v0y+gyt , где v0y, gy- проекция начальной скорости и ускорения свободного падения на эту ось, а ордината тела с течением времени изменяется как

Для построения траектории движения тела нужны формулы, позволяющие рассчитать координаты точки в различные моменты времени:

Решим задачу для случая x0=0, y0=0:

Тогда

По данным формулам после математических преобразований можно рассчитать время полета, дальность полета и максимальную высоту:

ПРАКТИЧЕСКАЯ ЧАСТЬ

Для реализации программирования выбрана среда Lasarus, т.к. ее изучение предусмотрено на уроках информатики в 11 классе. Среда имеет несколько версий, свободно распространяема, интегрирована для работы и в операционной системе Windows, и Linux. Lasarus разработана на основе языка программирования pascal, который нам хорошо знаком по курсу школьной программы, имеет понятный интерфейс, имеется возможность русифицирования (приложение 1).

Готовый программный продукт выглядит в виде формы, на которой размещаются объекты для ввода данных, подписи, кнопки, окно для вывода графика функции.

Задачи, которые решаются с помощью программы:

Вычисление физических переменных, таких как: V (Скорость), S (Растояние), a (Ускорение).

Построение графика зависимости данных переменных с переменной t (Время).

Моделирование тела брошенного под углом к горизонту без учета сопротивления, с использованием 3 переменных таких как Ang(Угол), V0(Начальная скорость),t(Время).

В данной программе используются компоненты: Form1, Radiobutton1/2/3/4, edit1/2/3, label1/2/3/4/5, button1/2, memo1,chart1.

Radiobutton1/2/3/4 используется для выбора вычислений.

Edit1/2/3 используется для ввода данных.

Memo1 используется для вывода полученных значений.

Вводимые пользователем числа типа String, выводимые данные числа типа String. chart1 используется для построения графика. button1/2 используются для начала выполнения процедур.

При нажатии на радиокнопки происходит проверка выполнения условия и выбор дальнейшего действия программы:

Рис. 1. Интерфейс программы

if radiobutton1.checked then проверка состояния модуля

begin

v0:=StrToFloat(Edit1.Text); Конвертация текста в вещественное число и присвоение переменной

a:=StrToFloat(Edit2.Text); Конвертация текста в вещественное число и присвоение переменной

t:=StrToFloat(Edit3.Text); Конвертация текста в вещественное число и присвоение переменной

v:=v0+a*t;

memo1.clear; отчистка поля вывода

memo1.Lines.Add(floattostr(v)); Конвертация вещественного числа в текст и вывод в поле вывода

end;

if radiobutton2.checked then проверкасостояниямодуля

begin

v0:=StrToFloat(Edit1.Text); Конвертация текста в вещественное число и присвоение переменной

a:=StrToFloat(Edit2.Text);Конвертация текста в вещественное число и присвоение переменной

t:=StrToFloat(Edit3.Text);Конвертация текста в вещественное число и присвоение переменной

S:=v0*t+(a*sqr(t))/2;

memo1.clear; отчистка поля вывода

memo1.Lines.Add(floattostr(s)); Конвертация вещественного числа в текст и вывод в поле вывода

end;

if radiobutton3.checked then проверкасостояниямодуля

begin

v0:=StrToFloat(Edit1.Text); Конвертация текста в вещественное число и присвоение переменной

V:=StrToFloat(Edit2.Text); Конвертация текста в вещественное число и присвоение переменной

t:=StrToFloat(Edit3.Text); Конвертация текста в вещественное число и присвоение переменной

a:=(v*v0)/t;

memo1.clear; отчистка поля вывода

memo1.Lines.Add(floattostr(a)); Конвертация вещественного числа в текст и вывод в поле вывода

end;

Алгоритм построения графика непрерывной функции y=f(x) на отрезке [a;b] состоит в следующем: необходимо построить точки (xi,f(xi)) в декартовой системе координат и соединить их прямым линиями. Координаты точек определяются по следующим формулам:

hx=(b-a)/N,

где N— количество отрезков на отрезке [a;b].

xi=a+(i-1)* hx; yi=f(xi), где i =0,N

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

При переносе этого алгоритма на форму или другой компонент Lazarus учитывает размеры и особенности компонента (ось ОX направлена слева направо, ее координаты лежат в пределах от 0 до Width; ось OY направлена вниз, ее координаты находятся в пределах от 0 до Height). Значения координат X и Y должны быть целыми.

Необходимо пересчитать все точки из «бумажной» системы координат (X изменяется в пределах от а до b, Y изменяется от минимального до максимального значения функции) в «компонентную» (в этой системе координат ось абсцисс обозначим буквой U, 0 ≤ U ≤Wigth, а ось ординат — буквой V , 0 ≤ V ≤ Height).

Для преобразования координаты X в координату U построим линейную функцию cX+d, которая переведет точки из интервала (a;b) в точки интервала (X0,Width-Xk).

Поскольку точка a «бумажной» системы координат перейдет в точку X0 «экранной», а точка b— в точку Width-Xk, то система линейных уравнений для нахождения коэффициентов c и d имеет вид:

Решив ее, найдем коэффициенты c, d:

Для преобразования координаты Y в координату V построим линейную функцию V=gY+h. Точка min «бумажной» системы координат перейдет в точку Height-YK «компонентную», а точка max– в точку Y0.Для нахождения коэффициентов g и h решим систему линейных алгебраических уравнений:

(1)

Ее решение позволит найти нам коэффициенты g и h

(2)

Алгоритм построения графика на экране монитора можно разделить на следующие этапы:

1. Определить число отрезков N, шаг изменения переменной X.

2. Сформировать массивы X, Y , вычислить максимальное (max) и минимальное (min) значения Y.

3. Найти коэффициенты c, d, g и h по формулам (1), (2).

4. Создать массивы Ui=cXi+d, Vi=gYi+h.

5. Последовательно соединить соседние точки прямыми линиями с помощью функции LineTo.

6. Изобразить систему координат, линий сетки и подписи.

Технические требования к компьютеру: Windows 10 x64, CPU intel core i5-2300, GPU Nvidia geforce 550 Ti, RAM DDR3 10gb.

ЗАКЛЮЧЕНИЕ

Компьютерное моделирование и вычислительный эксперимент позволяют свести исследование «нематематического» объекта к решению математической задачи. Этим самым открывается возможность использования для его изучения хорошо разработанного математического аппарата в сочетании с мощной вычислительной техникой. На этом основано применение математики и компьютера для познания законов реального мира и их использования на практике.

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

Достоинством данной программы является ее простота, функциональность и тот факт, что программа создана в свободной среде разработки программного обеспечения Lazarus для компилятора Free Pascal. 

Исследовательская работа имеет большой потенциал для дальнейшего развития. Мы продолжим работу над усовершенствованием модели.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ

1.А. В. Никитин, А. И. Слободянюк, М. Л. Шишаков. Компьютерное моделирование физических процессов. Бином. Лаборатория знаний, 2011. – 680 с.

2.Физика. Механика. 10 кл. Профильный уровень: учебн. Дляи общеобразовательных учреждений / М.М. Балашов, А.И. Гомонова, А.Б. Долицкий и др.; под ред. Г.Я. Мякишева – 9-е изд., стереотип. – М.: Дрофа,2017.

3.Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus. - Донецк.: ДонНТУ, Технопарк ДонНТУ УНИТЕХ, 2009. - 503 с.

Приложение 1

Интерфейс среды программирования Lasarus

Приложение 2

Код программы

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, TAGraph, TASeries, Forms, Controls, Graphics,

Dialogs, StdCtrls, TADrawUtils, TACustomSeries;

type

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Chart1: TChart;

Chart1LineSeries1: TLineSeries;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Memo1: TMemo;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Chart1LineSeries1CustomDrawPointer(ASender: TChartSeries;

ADrawer: IChartDrawer; AIndex: Integer; ACenter: TPoint);

procedure Edit2Change(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure RadioButton1Change(Sender: TObject);

procedure RadioButton2Change(Sender: TObject);

procedure RadioButton3Change(Sender: TObject);

private

public

end;

var

Form1: TForm1; a,t,v,v0,s,x,y,g,t1:real; i:integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.RadioButton1Change(Sender: TObject);

begin

if radiobutton1.checked then

begin

edit1.visible:=true;

edit2.visible:=true;

edit3.visible:=true;

label1.visible:=true;

label2.visible:=true;

label3.visible:=true;

label1.caption:='РќР°СальнаяскоросССЊ(Рњ/СЃ)';

label2.caption:='Ускорение(М/с^2)';

label3.caption:='Рремя(СЃ)';

button1.enabled:=true;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if radiobutton1.checked then

begin

v0:=StrToFloat(Edit1.Text);

a:=StrToFloat(Edit2.Text);

t:=StrToFloat(Edit3.Text);

v:=v0+a*t;

memo1.clear;

memo1.Lines.Add(floattostr(v));

end;

if radiobutton2.checked then

begin

v0:=StrToFloat(Edit1.Text);

a:=StrToFloat(Edit2.Text);

t:=StrToFloat(Edit3.Text);

S:=v0*t+(a*sqr(t))/2;

memo1.clear;

memo1.Lines.Add(floattostr(s));

end;

if radiobutton3.checked then

begin

v0:=StrToFloat(Edit1.Text);

V:=StrToFloat(Edit2.Text);

t:=StrToFloat(Edit3.Text);

a:=(v*v0)/t;

memo1.clear;

memo1.Lines.Add(floattostr(a));

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

chart1lineseries1.clear;

if radiobutton1.checked then

begin

y:=v;

x:=t;

chart1lineseries1.add(x);

chart1lineseries1.add(y);

end;

//g:=10;

//for i:=1 to 10 do

//begin

//t1:=t;

//Y:=100-10;

//x:=v0*t*cos(pi/(180/a));

//y:=v0*t*sin(pi/(90/a)-(1/2))*g*sqr(t)/2;

//end;

end;

procedure TForm1.Chart1LineSeries1CustomDrawPointer(ASender: TChartSeries;

ADrawer: IChartDrawer; AIndex: Integer; ACenter: TPoint);

begin

x:=5*10*2;

end;

procedure TForm1.Edit2Change(Sender: TObject);

begin

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

end;

procedure TForm1.RadioButton2Change(Sender: TObject);

begin

if radiobutton2.checked then

begin

edit1.visible:=true;

edit2.visible:=true;

edit3.visible:=true;

label1.visible:=true;

label2.visible:=true;

label3.visible:=true;

label1.caption:='РќР°СальнаяскоросССЊ(Рњ/СЃ)';

label2.caption:='Ускорение(М/с^2)';

label3.caption:='Рремя(СЃ)';

button1.enabled:=true;

end;

end;

procedure TForm1.RadioButton3Change(Sender: TObject);

begin

if radiobutton3.checked then

begin

edit1.visible:=true;

edit2.visible:=true;

edit3.visible:=true;

label1.visible:=true;

label2.visible:=true;

label3.visible:=true;

label1.caption:='РќР°СальнаяскоросССЊ(Рњ/СЃ)';

label2.caption:='РЎРєРѕСЂРѕСЃССЊ(Рњ/СЃ)';

label3.caption:='Рремя(СЃ)';

button1.enabled:=true;

end;

end;

end.

Просмотров работы: 1050