Исследование математической модели маятника

Анализ преимуществ и недостатков различных численных методов решения дифференциальных уравнений высших порядков. Обоснование выбора метода Рунге-Кутта четвертого порядка. Разработка программы, моделирующей физическое и математическое поведение маятника.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.07.2012
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

ВОСТОЧНО-УКРАИНСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ

имени ВЛАДИМИРА ДАЛЯ

КАФЕДРА СИСТЕМНОЙ ИНЖЕНЕРИИ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине «Математические методы в РТС»

на тему: «Исследование математической модели маятника»

Ст. гр. КТ-291

Руководители

доц. Василенко И.А.

асс. Пономаренко С.С.

Андросова С.И.

Луганск 2012

Реферат

Курсовая работа содержит пояснительную записку на 40 листах формата А4, которая включает 6 иллюстраций, 8 литературных источников.

Ключевые слова:

Дифференциальные уравнения, интегрирование, метод Рунге-Кутта, метод Эйлера, задача Коши, аппроксимация, функция, система, численные методы решения, моделирование, математическая модель.

Цель выполнения курсовой работы по дисциплине «Математические методы в РТС» - систематизация, закрепление и расширение теоретических знаний и практических навыков.

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

Объектом исследования данной курсовой работы является математический маятник.

Содержание

Введение

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

2. Обыкновенное дифференциальное уравнение высших порядков

2.1 Линейные дифференциальные уравнения n-го порядка

3. Численные методы решения дифференциальных уравнений

3.1 Выбор метода для решения задачи

3.2 Решение системы дифференциальных уравнений

3.3 Метод Рунге-Кутта 4-го порядка для решения систем дифференциальных уравнений

4. Программная реализация метода Рунге-Кутта 4-го порядка

4.1 Блок-схема программы

4.2 Описание интерфейса программы

4.3 Исходный код программы

5. Анализ результатов

Заключение

Литература

Введение

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

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

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

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

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

Физическое моделирование широко применялось до недавнего времени при создании сложных технических объектов. Однако данный вид моделирования сопряжен с большими временными и материальными затратами.

Абстрактное моделирование связано с построением абстрактной модели. Такая модель представляет собой математические соотношения, графы, схемы, диаграммы и т.п. Наиболее мощным и универсальным методом абстрактного моделирования является математическое моделирование. Оно широко используется как в научных исследованиях, так и при проектировании.

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

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

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

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

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

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

Численные методы получили широкое распространение в решении дифференциальных уравнений.

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

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

Решение дифференциальных уравнений является одним из первоначальных и основных мотивов для развития как аналоговых, так и цифровых вычислительных машин. Численное решение таких задач и сейчас поглощает значительную часть машинного времени, предоставляемого современными ЭВМ.

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

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

Если угол отклонения и мал, то дифференциальное уравнение можно линеаризовать, приняв sin и=и. Сравнить полученные результаты с результатами для линейного случая. Построить графики.

Для решения поставленной задачи необходимо осуществить ряд действий:

1. Проанализировать дифференциальные уравнения.

2. Привести дифференциальные уравнения к нормальной форме.

3. Выбрать наиболее подходящий метод для решения дифференциальных уравнений.

4. Разработать подпрограмму, реализующую физическое и математическое поведение тела.

5. Сравнить полученные результаты.

2. Обыкновенное дифференциальное уравнение высших порядков

Обыкновенным дифференциальным уравнением n-го порядка называется уравнение вида:

F(x, y, y', y'',..., y(n)) = 0,

где F - известная функция (n+2) переменных,, x - независимая переменная, y - неизвестная функция, n - порядок уравнения.

Обыкновенные дифференциальные уравнения, разрешенные относительно старшей производной - уравнения, записанные в нормальной форме:

y(n)) = f(x, y, y', y'',..., y(n-1)).

Функция y(x) называется решением дифференциального уравнения n-го порядка, если она n раз непрерывно дифференцируема на промежутке (a, b) и удовлетворяет уравнению для всех x из (a, b).

Общим решением уравнения называется функция:

у = а(х, С1,...,Сn),

содержащая n произвольных постоянных и обращающая уравнение в тождество.

Соотношение Ф(х, у, С1,...,Сn) = 0 определяющее общее решение как неявную функцию независимой переменной, называется общим интегралом уравнения.

График решения дифференциального уравнения называют интегральной кривой дифференциального уравнения.

Дифференциальное уравнение n-го порядка имеет, вообще говоря, бесконечное множество решений. Чтобы выделить единственное решение уравнения, т. е. решить задачу Коши, достаточно определить начальные условия:

y(x0) = y0 ; y'(x0) = y0,1 ; y''(x0) = y0,2 ;...; y(n-1)(x0) = y0,n-1.

При определенных ограничениях на правую часть уравнения эта задача имеет единственное решение.

2.1 Линейные дифференциальные уравнения n-го порядка

Линейным дифференциальным уравнением n -го порядка называется уравнение вида

y(n) + a1(x) y(n-1) +... + an-1 (x) y' + an(x) y = f(x),

где y = y(x) - неизвестная функция, a1(x), a2(x),..., an-1(x), an(x), f(x) - известные непрерывные функции.

Выражение в левой части уравнения называется линейным дифференциальным оператором n -го порядка:

L(y) = y(n) + a1(x) y(n-1) +... + an-1 (x) y' + an(x) y.

Уравнения (2.12) и (2.13) называются соответственно однородным и неоднородным линейным дифференциальными уравнениями n - го порядка.

y(n) + a1(x) y(n-1) +... + an-1 (x) y' + an(x) y = 0,

y(n) + a1(x) y(n-1) +... + an-1 (x) y' + an(x) y = f(x),

где f(x) ? 0

Часто однородные и неоднородные линейные дифференциальные уравнения записывают в виде: L(y) = 0 и L(y) = f(x) соответственно.

Если y1, y2,... yk - частные решения однородного линейного уравнения L(y)=0, то их линейная комбинация y = c1 y1 + c2 y2 +... + ck yk при произвольных постоянных c1, c2,..., ck так же является решением того же уравнения.

Система функций

y1 = y1(x) + y2 (x) +... + yn(x)

называется линейно независимой, если их линейная комбинация c1 y1 + c2 y2 +... + cn yn ни при каких значениях c1, c2,..., cn, кроме c1 = c2 =... = ck = 0, не обращается тождественно в нуль.

Если функции y1, y2,..., yk - линейно независимые частные решения однородного линейного уравнения, то их называют фундаментальной системой решений.

Общее решение однородного уравнения имеет вид y = c1 y1 +... + cn yn, где y1,..., yn - фундаментальная система решений, cj - произвольные постоянные. Последние можно определить так, чтобы частное решение удовлетворяло начальным условиям у = у0,..., у(n - 1) = у0(n - 1) при х = х0.

Если известен частный интеграл y1(x) однородного уравнения, то подстановкой z = y/y1, а затем z? = u получим линейное уравнение порядка n-1.

Общее решение неоднородного уравнения есть сумма какого-нибудь частного решения неоднородного уравнения и общего решения соответствующего однородного уравнения.

Если известно общее решение c1 y1 +... + cn yn соответствующего однородного уравнения, то решение неоднородного уравнения можно найти методом вариации произвольных постоянных.

Решение имеет вид:

у = с1(х)у1 + с2(х)у2 +... + сn(х)уn,

где неизвестные функции сj(х) находятся из системы уравнений относительно

Решив систему и получив, находим

сj = ?цј(х)dx + Аj,

где Аj - постоянные интегрирования.

3. Численные методы решения дифференциальных уравнений

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

3.1 Выбор метода для решения задачи

Наибольшее распространение из всех численных методов решения дифференциальных уравнений получили методы Рунге-Кутта различных порядков. Данные итеративные методы явного и неявного приближённого вычисления были разработаны около 1900 года немецкими математиками К. Рунге и М. В. Куттой.

Формально, методами Рунге-Кутта являются модифицированные и исправленные методы Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Иногда при выполнении расчётов с повышенной точностью применяются схемы пятого и шестого порядков. Построение схем более высокого порядка сопряжено с большими вычислительными трудностями. Методы седьмого порядка должны иметь по меньшей мере девять стадий, в схему восьмого порядка входит 11 стадий. Хотя схемы девятого порядка не имеют большой практической значимости, неизвестно, сколько стадий необходимо для достижения этого порядка точности. Аналогичная задача существует для схем десятого и более высоких порядков

В методе Рунге-Кутта 4-го порядка на каждом шаге интегрирования дифференциального уравнения искомая функция аппроксимируется рядом Тейлора, содержащим член ряда с :

В результате ошибка на каждом шаге приблизительно равна .

3.2 Решение системы дифференциальных уравнений

Для решения дифференциальных уравнений высоких порядков вида

необходимо представить данное уравнение в виде системы при помощи замен:

В результате дифференциальное уравнение m-го порядка сводится к системе, состоящей из m дифференциальных уравнений первого порядка:

Численным решением системы, а значит и дифференциального уравнения m-го порядка, является m табличных функций

,

т.е. функция и все ее производные, включая производную (m-1)-го порядка.

При этом каждая из табличных функций определяется на промежутке [a, b] с шагом h и включает n узловых точек. Таким образом, численным решением уравнения или системы является матрица порядка (n x m) (табл. 3.1).

Таблица 3.1

0

1

2

3

n

Здесь:

m - порядок дифференциального уравнения, равен количеству столбцов матрицы;

n = (b-a)/h - количество шагов интегрирования, равно количеству строк матрицы;

каждый j-й столбец матрицы - это массив решений одной j-й табличной функции по всем n шагам интегрирования;

каждая i-ая строка матрицы - это массив решений m табличных функций на одном i-ом шаге интегрирования.

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

Рассмотрим заданное дифференциальное уравнение в нормальной форме:

С учетом системы имеем:

Следовательно, заданное дифференциальное уравнение сводится к системе:

3.3 Метод Рунге-Кутта 4-го порядка для решения систем дифференциальных уравнений

Как говорилось ранее, в методе Рунге-Кутта 4-го порядка на каждом шаге интегрирования дифференциального уравнения искомая функция аппроксимируется рядом Тейлора, содержащим член ряда с (2.1).

В результате ошибка на каждом шаге приблизительно равна .

Для решения системы дифференциальных уравнений вида (2.4) методом Рунге-Кутта 4-го порядка применяются формулы Рунге-Кутта:

Где Y - массив решений длиной m,

Y1 - рабочий массив длиной m,

T - рабочая матрица порядка (4 x m).

4. Программная реализация метода Рунге-Кутта 4-го порядка

4.1 Блок-схема программы

Программная часть курсового проекта реализована на языке высокого уровня ObjectPascal в среде Delphi и представляет собой оконное приложение Windows.

Был проанализирован метод Рунге-Кутта 4-го порядка. Были составлены схемы алгоритмов, представленных на рис. 3.1 и рис. 3.2 соответственно

Размещено на http://www.allbest.ru/

Рис. 4.1

Обозначения в схеме алгоритма:

m - порядок системы,

h - шаг интегрирования,

n - количество шагов интегрирования,

t - начальное и далее - текущее значение t,

Y - массив длинной m, куда заносим

Рис. 4.2 Схема моделирования движения системы

4.2 Описание интерфейса программы

Пользоваться программой очень легко. Программ имеет интуитивно понятный интерфейс пользователя. Главное окно программы представлено на Рис. 4.3. Назначение элементов управления описаны далее.

Рис. 4.3 Главное окно программы расчета курсового задания

Окно программы содержит следующие управляющие элементы:

1. Поля ввода данных:

· «Интервал» - поле, в которое мы вносим начальную и конечную точки отрезка рассматриваемой функции.

· «y(x1), y'(x1)» - поле для ввода начального значения в точке х0 и значение производной функции в точке х0.

· «Шаг» - поле, в котором мы указываем с каким шагом будем рассчитывать функцию.

· «Сила тяжести» - поле для ввода коэффициентов силы тяжести.

· «Длина стержня» - для ввода заданной длины стержня.

2. Поля вывода данных:

· Таблица, которая демонстрирует результаты вычислений.

· График. На него выводится функция, построенная на основе полученной таблицы.

3. Область модуляции поведения системы.

а)

б)

Рис 4.4 а), б) Вид диалогового окна программы во время расчета

4.3 Исходный код программы

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, Grids, StdCtrls, Series,

BubbleCh, ComCtrls;

const mash=2000 ;

type

TForm1 = class(TForm)

grp1: TGroupBox;

btn1: TButton;

rg1: TRadioGroup;

rb1: TRadioButton;

rb2: TRadioButton;

rb3: TRadioButton;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

edt4: TEdit;

edt5: TEdit;

lbl1: TLabel;

lbl2: TLabel;

strngrd1: TStringGrid;

edt6: TEdit;

edt7: TEdit;

pnl1: TPanel;

cht1: TChart;

lnsrsSeries1: TLineSeries;

lnsrsSeries2: TLineSeries;

blsrsSeries1: TBubbleSeries;

rg2: TRadioGroup;

rb4: TRadioButton;

rb5: TRadioButton;

btn2: TButton;

lbl3: TLabel;

edt8: TEdit;

img1: TImage;

tmr1: TTimer;

lbl4: TLabel;

lbl5: TLabel;

lbl6: TLabel;

lbl7: TLabel;

procedure poisk(x1,b1,z,z1,h1:real;tip:integer);

procedure btn1Click(Sender: TObject);

procedure cht1DblClick(Sender: TObject);

procedure dra(tip:integer);

procedure dra1(tip:integer);

procedure rb4Click(Sender: TObject);

procedure rb5Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure tmr1Timer(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

x,b,y,y1,h,g,l:real; i,j,rb,kol,top,left,cerx,cery,inputdata:Integer;

implementation

{$R *.dfm}

procedure TForm1.poisk(x1,b1,z,z1,h1:real;tip:integer);

var f1,f2,t,fl1,fl2,ZL,ZL1:real; n,i1,p:integer;

begin

if (tip=0) or (tip=1) then strngrd1.ColCount:=3

else strngrd1.ColCount:=4;

t:=z;

if tip=2 then

begin

zl:=z;

zl1:=z1;

end;

n:=round ((b1-x1)/h1);

for i1:=1 to n do

begin

f1:=z1;

if (tip=0)or (tip=2) then

begin

f2:=-(g/l)*sin(z) ;

lbl7.Caption:='y"=-g*sin(y)/l;';

end

else

begin

lbl7.Caption:='y"=-g*y/l;';

f2:=-(g/l)*(z);

end;

if tip=2 then

begin

fl1:=zl1;

fl2:=-(g/l)*(zl);

strngrd1.Cells[3,i1]:=floatToStr(Round(1000*zl)/1000);

strngrd1.Cells[0,i1]:=IntToStr(i1);

strngrd1.Cells[1,i1]:=floatToStr(x1);

strngrd1.Cells[2,i1]:=floatToStr(Round(1000*z)/1000);

if ((zl+h1*fl1)>t) or((z+h1*f1)>t) then

Break;

zl:=zl+h1*fl1;

zl1:=zl1+h1*fl2;

strngrd1.Cells[3,0]:='yl';

lbl7.Caption:='y"=-g*y/l;';

end;

strngrd1.Cells[0,i1]:=IntToStr(i1);

strngrd1.Cells[1,i1]:=floatToStr(x1);

strngrd1.Cells[2,i1]:=floatToStr(Round(1000*z)/1000);

if (z+h1*f1)>t then Break;

z:=z+h1*f1;

z1:=z1+h1*f2;

x1:=x1+h1;

end;

if (strngrd1.Cells[1,i1-1]<>'') then

strngrd1.RowCount:=i1-1

else

if (strngrd1.Cells[1,i1+1]<>'') then

strngrd1.RowCount:=i1

else

strngrd1.RowCount:=i1+1;

strngrd1.Cells[0,0]:='№шага';

strngrd1.Cells[1,0]:='x';

strngrd1.Cells[2,0]:='y';

end;

procedure TForm1.btn1Click(Sender: TObject);

begin

if (edt1.Text='') or (edt2.Text='') or (edt3.Text='')

or (edt4.Text='') or (edt5.Text='') or (edt6.Text='') or (edt7.Text='') then

begin

ShowMessage('Введите данные!');

exit;

end;

strngrd1.Visible:=True;

lbl7.Visible:=True;

inputdata:=1;

tmr1.Enabled:=False;

for i:=1 to strngrd1.ColCount-1 do

for j:=1 to strngrd1.RowCount-1 do strngrd1.Cells[i,j]:='';

strngrd1.RowCount:=1;

strngrd1.ColCount:=3 ;

x:=StrToFloat(edt1.Text);

b:=StrToFloat(edt2.Text);

y:=StrToFloat(edt3.Text);

y1:=StrToFloat(edt4.Text);

h:=StrToFloat(edt5.Text);

g:=StrToFloat(edt6.Text);

l:=StrToFloat(edt7.Text);

if (rb1.Checked=true) then rb:=0

else

if (rb2.Checked=true) then rb:=1

else rb:=2;

poisk(x,b,y,y1,h,rb);

rb4.Checked:=True;

dra(rb);

i:=1;

end;

procedure TForm1.cht1DblClick(Sender: TObject);

begin Cht1.UndoZoom; end;

procedure TForm1.rb4Click(Sender: TObject);

begin

if inputdata=0 then

begin

ShowMessage('Не введены данные-ошибка.');

rb4.Checked:=False;

rb5.Checked:=true;

exit;

end;

tmr1.Enabled:=False;

dra(rb);

lbl3.Visible:=false;

edt8.Visible:=false;

btn2.Visible:=false;

img1.Visible:=false;

end;

procedure TForm1.dra(tip:integer);

var xm,xmin,ym,ymin,x,y:Real;

begin

lnsrsSeries1.Clear; lnsrsSeries2.Clear; blsrsSeries1.Clear;

xm:=StrToFloat(strngrd1.Cells[1,1]);

xmin:=StrToFloat(strngrd1.Cells[1,1]);

ym:=StrToFloat(strngrd1.Cells[2,1]);

ymin:=StrToFloat(strngrd1.Cells[2,1]) ;

for i:=1 to strngrd1.RowCount-1 do

begin

x:= StrToFloat(strngrd1.Cells[1,i]) ;

y:= StrToFloat(strngrd1.Cells[2,i]);

if x>xm then xm:=x;

if x<xmin then xmin:=x;

if y>ym then ym:=y;

if y<ymin then ymin:=y;

lnsrsSeries1.addxy (x,y,'',clGreen);

if tip=2 then

begin

y:= StrToFloat(strngrd1.Cells[3,i]);

if y>ym then ym:=y;

if y<ymin then ymin:=y;

lnsrsSeries2.addxy (StrToFloat(strngrd1.Cells[1,i]),StrToFloat(strngrd1.Cells[3,i]),'',clRed);

end;

end;

blsrsSeries1.AddBubble(xmin-0.2,ymin-0.2,0.001,'',clGray) ;

blsrsSeries1.AddBubble(xm+0.2,ym+0.2,0.001,'',clGray);

end;

procedure TForm1.dra1(tip:integer);

var x,y:Real; xm,xmin,ym,ymin,zad:Integer;

begin

img1.Canvas.Brush.Color:=clWhite;

img1.Canvas.Rectangle(img1.Left,img1.Top,img1.Left+img1.Width,img1.Top+img1.Height);

img1.Canvas.Brush.Color:=clBlack;

img1.Canvas.Ellipse(round(cerx-5),round(cery-5),round(cerx+5),round(cery+5));

img1.Canvas.MoveTo(cerx-25,cery);

img1.Canvas.LineTo(cerx+25,cery);

img1.Canvas.MoveTo(cerx,cery);

img1.Canvas.LineTo(cerx,cery+235);

inc(i);

x:= StrToFloat(strngrd1.Cells[1,i]) ;

y:= StrToFloat(strngrd1.Cells[2,i]);

img1.Canvas.Brush.Color:=clred;

img1.Canvas.Pen.Color:=clBlack;

xm:= round((cerx+mash*l*sin(y)-5));

ym:= round((cery+mash*l*cos(y)-5));

xmin:=round((cerx+mash*l*sin(y)+5));

ymin:= round((cery+mash*l*cos(y)+5));

img1.Canvas.Ellipse(xm,ym,xmin,ymin);

img1.Canvas.MoveTo(cerx,cery);

img1.Canvas.LineTo(round(cerx+mash*l*sin(y)),round(cery+mash*l*cos(y)));

if i=strngrd1.RowCount-1 then

begin

Dec(kol);

i:=1;

end;

if kol=0 then

begin

img1.Canvas.Brush.Color:=clWhite;

img1.Canvas.Rectangle(img1.Left,img1.Top,img1.Left+img1.Width,img1.Top+img1.Height);

tmr1.Enabled:=False;

end;

end;

procedure TForm1.rb5Click(Sender: TObject);

begin

img1.Visible:=true;

lbl3.Visible:=true;

edt8.Visible:=true;

btn2.Visible:=true;

cerx:= img1.Left+(Round(img1.Width/2)) ;

cery:= img1.top+(Round(-img1.height/4+img1.height/2)) ;

img1.Canvas.Brush.Color:=clWhite;

img1.Canvas.Rectangle(img1.Left,img1.Top,img1.Left+img1.Width,img1.Top+img1.Height);

end;

procedure TForm1.btn2Click(Sender: TObject);

begin

if (edt8.Text='')or (inputdata=0) then

begin

ShowMessage('Введите данные!');

exit;

end;

kol:=strtoint(edt8.Text);

img1.Canvas.Brush.Color:=clBlack;

img1.Canvas.Ellipse(round(cerx-5),round(cery-5),round(cerx+5),round(cery+5));

img1.Canvas.MoveTo(cerx-25,cery);

img1.Canvas.LineTo(cerx+25,cery);

img1.Canvas.MoveTo(cerx,cery);

img1.Canvas.LineTo(cerx,cery+235);

i:=1;

img1.Canvas.Brush.Color:=clred;

img1.Canvas.Pen.Color:=clBlack;

x:= StrToFloat(strngrd1.Cells[1,i]);

y:= StrToFloat(strngrd1.Cells[2,i]);

img1.Canvas.Ellipse(round(cerx+mash*l*sin(y)-5),round(cery+mash*l*cos(y)-5),round(cerx+mash*l*sin(y)+5),round(cery+mash*l*cos(y)+5));

tmr1.Enabled:=True;

end;

procedure TForm1.tmr1Timer(Sender: TObject);

begin

dra1(0);

end;

procedure TForm1.FormCreate(Sender: TObject);

var

SplashImage: TImage;

SplashForm: TForm;

begin

tmr1.Interval := 50;

inputdata:=0;

begin

SplashForm := TForm.create(nil);

with SplashForm do

begin

BorderStyle := bsNone;

Position := poScreenCenter;

ClientWidth := 610;

ClientHeight := 378;

end;

SplashImage := TImage.Create(SplashForm);

with SplashImage do

begin

SplashImage.Picture.LoadFromFile('splash.bmp');

Stretch := true;

Align := alClient;

Parent := SplashForm;

end;

with SplashForm do

begin

Show;

for I := 1 to 1 do

begin

Repaint;

Sleep(1000);

end;

Close;

Free;

end;

end;

end;

end.

5. Анализ результатов

дифференциальный уравнение математический маятник

Целью данной курсовой работы было подготовить программу, которая моделировала бы движение заданной системы, и выполнить расчет для полного цикла колебаний. Была написана программа и в ней реализован алгоритм метода Эйлера. Было получено решение ДУ 2-го порядка, которое моделирует поведение системы. Таблица 5.1 содержит вычисления программы.

Таблица 5.1

№ шага

х

y

yl

1

0

0,785

0,785

2

0,01

0,785

0,785

3

0,02

0,778

0,777

4

0,03

0,764

0,762

5

0,04

0,743

0,739

6

0,05

0,716

0,708

7

0,06

0,682

0,671

8

0,07

0,641

0,626

9

0,08

0,594

0,575

10

0,09

0,542

0,517

11

0,1

0,484

0,454

12

0,11

0,421

0,386

13

0,12

0,353

0,314

14

0,13

0,281

0,238

15

0,14

0,206

0,158

16

0,15

0,128

0,076

17

0,16

0,048

-0,007

18

0,17

-0,033

-0,091

19

0,18

-0,114

-0,175

20

0,19

-0,195

-0,258

21

0,2

-0,276

-0,339

22

0,21

-0,354

-0,418

23

0,22

-0,429

-0,493

24

0,23

-0,502

-0,565

25

0,24

-0,57

-0,631

26

0,25

-0,633

-0,692

27

0,26

-0,691

-0,747

28

0,27

-0,743

-0,795

29

0,28

-0,789

-0,836

30

0,29

-0,829

-0,869

31

0,3

-0,861

-0,894

32

0,31

-0,886

-0,91

33

0,32

-0,904

-0,917

34

0,33

-0,914

-0,916

35

0,34

-0,917

-0,906

36

0,35

-0,912

-0,886

37

0,36

-0,899

-0,858

38

0,37

-0,878

-0,821

39

0,38

-0,849

-0,775

40

0,39

-0,813

-0,722

41

0,4

-0,77

-0,661

42

0,41

-0,719

-0,593

43

0,42

-0,662

-0,518

44

0,43

-0,598

-0,438

45

0,44

-0,529

-0,352

46

0,45

-0,453

-0,263

47

0,46

-0,373

-0,17

48

0,47

-0,289

-0,074

49

0,48

-0,2

0,024

50

0,49

-0,11

0,122

51

0,5

-0,017

0,22

52

0,51

0,077

0,317

53

0,52

0,171

0,411

54

0,53

0,265

0,503

55

0,54

0,356

0,59

Просмотреть функцию для линейного случая можно на Рис. 5.1., а для нелинейного - на Рис. 5.2.

Рис. 5.1

Рис. 5.2

Графики показывают, что отличия в ДУ для линейного и нелинейного случая имеет нарастающее смещение, которое можно проследить на Рис. 5.3.

Рис. 5.3

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

Заключение

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

Для решения поставленной задачи был осуществлен ряд действий:

1. Проанализированы дифференциальные уравнения.

2. Приведены к нормальной форме.

3. Выбран наиболее подходящий метод для решения дифференциальных уравнений.

4. Была разработана программа, реализующая физическое и математическое поведение тела.

5. Сравнили полученные результаты.

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

В данной курсовой работе были рассмотрены методы решения ДУ 2-го порядка. Показаны их преимущества и недостатки. На основе анализа для данной задачи был выбран метод Рунге-Кутта 4-го порядка.

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

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

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

Из полученных данных, можно сделать вывод, что отличия в ДУ для линейного и нелинейного случая имеет нарастающее смещение.

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

Литература

1. Вычислительная техника в инженерных и экономических расчётах. Учебник для вузов / Петров А.В., Алексеев В.Е. и др. Под ред. А.В. Петрова. - М.: Высш. шк. 1984. - 320с.

2. Л.Э. Эльсгольц. Дифференциальные уравнения и вариационное исчисление. М.: Наука, 1969.

3. А.Н. Тихонов, Васильева А.Б., А.Г. Свешников. Дифференциальные уравнения, 4е изд., Физматлит, 2005.

4. Волков Е.А. Численные методы. - М.: Наука, 1987. - 248с.

5. Лапчик М.П. Вычисления. Алгоритмизация. Программирование: Пособие для учителя. - М.: Просвещение, 1988.

6. Шуп Т. Решение инженерных задач на ЭВМ. - М.: Радио и связь, 1985.

7. Козин А.С., Лященко Н.Я. Вычислительная математика. - К.: Рад. школа, 1983. - 191с.

8. Маликов В.Т., Квотный Р.Н. Вычислительные методы и применение ЭВМ. - К.: Вища школа. 1989. - 213с.

Размещено на Allbest.ru


Подобные документы

  • Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.

    курсовая работа [385,0 K], добавлен 17.09.2009

  • Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.

    курсовая работа [163,4 K], добавлен 16.05.2016

  • Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.

    курсовая работа [226,6 K], добавлен 05.04.2013

  • Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.

    курсовая работа [398,3 K], добавлен 16.06.2009

  • Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.

    курсовая работа [929,7 K], добавлен 06.01.2013

  • Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.

    курсовая работа [580,1 K], добавлен 18.01.2011

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

    лабораторная работа [33,3 K], добавлен 14.05.2012

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

    курсовая работа [984,2 K], добавлен 19.12.2009

  • Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.

    курсовая работа [1,5 M], добавлен 02.04.2011

  • Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.

    курсовая работа [532,9 K], добавлен 14.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.