Уравнение Дуффинга и его странные аттракторы

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

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

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

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

Так же была разработана программа, результатом работы которой является построение траектории движения, а также построение аттрактора, соответствующего исходным наборам данных. Она является удобным средством для изучения решений уравнения Дуффинга. Изображения хаотических аттракторов с высоким разрешением, полученные с помощью этой программы являются очень известными аттракторами. Хаотический аттрактор на рис.8 () носит название японский аттрактор, а аттрактор на рис.8 () хаотический аттрактор Уеды.

Литература

1. Мун Ф. Хаотические колебания. - М: Мир, 1990. - 311 с.

2. Демидович Б.П. Лекции по математической теории устойчивости. - М: Стереотип, 2008. - 480 с.

3. Корн Г., Корн Т. Справочник по Математике. - М: Лань, 2003 г. - 832 с.

4. Мартынова И.М. и О.Ю. Макаренков. Изучение уравнения Дуффинга при аппроксимации кубической нелинейности кусочно-нелинейной функцией. // Вестник ВГУ, серия физика, математика. - 2003. - №3 - с. 201-202

5. Мартынов Б.А. Теория колебаний. Математические модели динамических систем/ Б.А. Мартынов - СПб.: СПбГПУ, 2002. - 56 с.

6. Ueda Y. Survay of Regular and Chaotic Phenomena in Forced Duffing Oscillator/ Y. Ueda. 1991. - 30с.

Приложения

Приложение А: Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Buttons, Menus, unit2;

type

TForm1 = class (TForm)

Panel1: TPanel;

GroupBox1: TGroupBox;

Label2: TLabel;

Label3: TLabel;

Label6: TLabel;

Label7: TLabel;

InitTEdit: TEdit;

FinalTEdit: TEdit;

MaxEdit: TEdit;

MinEdit: TEdit;

Edit1: TEdit;

Label1: TLabel;

RG1: TRadioGroup;

Edit5: TEdit;

Label9: TLabel;

GroupBox2: TGroupBox;

Label4: TLabel;

Label5: TLabel;

Edit3: TEdit;

Edit2: TEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Button1: TBitBtn;

Edit7: TEdit;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Edit8: TEdit;

BitBtn4: TBitBtn;

BitBtn3: TBitBtn;

GroupBox3: TGroupBox;

Label16: TLabel;

Edit10: TEdit;

Label15: TLabel;

Edit9: TEdit;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

procedure FormCreate (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure BitBtn4Click (Sender: TObject);

procedure BitBtn3Click (Sender: TObject);

procedure Edit2Click (Sender: TObject);

procedure Edit3Click (Sender: TObject);

procedure BitBtn5Click (Sender: TObject);

procedure BitBtn6Click (Sender: TObject);

procedure Edit10Click (Sender: TObject);

procedure Edit9Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

g: TGrafik;

check: integer;

stp: real;

implementation

{$R *. dfm}

procedure TForm1. FormCreate (Sender: TObject);

begin

check: =0;

stp: =0.1;

g: =TGrafik. Create (Form1);

g. SetParent (Form1. Panel1);

InitTEdit. Text: ='-10';

FinalTEdit. Text: ='10';

MinEdit. Text: ='-10';

MaxEdit. Text: ='10';

Button1. Click;

end;

procedure TForm1. N1Click (Sender: TObject);

begin

InitTEdit. Text: ='-10';

FinalTEdit. Text: ='10';

MinEdit. Text: ='-10';

MaxEdit. Text: ='10';

Button1. Click;

end;

procedure TForm1. BitBtn2Click (Sender: TObject);

begin

Edit8. Text: =floattostr (strtofloat (Edit8. Text) - stp);

Button1. Click;

end;

procedure TForm1. BitBtn1Click (Sender: TObject);

begin

Edit8. Text: =floattostr (strtofloat (Edit8. Text) +stp);

Button1. Click;

end;

procedure TForm1. Button1Click (Sender: TObject);

var x0,xk,YMax,YMin: real;

var _K,_B: real;

var a,b,alf,bet,h,t: real;

var x,y: real;

var i,na,nb: integer;

function f1 (t,x,y: real): real;

begin

result: =y;

end;

function f2 (t,x,v: real): real;

begin

result: =-_K*y-x*x*x+_B*cos (t);

end;

procedure Runge (a,b,h: real; var x,y: real);

var k1,k2,k3,k4,l1,l2,l3,l4,t: real;

begin

t: =a;

while (t <= b) do

begin

k1: =h*f1 (t,x,y);

l1: =h*f2 (t,x,y);

k2: =h*f1 (t+1/2*h,x+1/2*k1,y+1/2*l1);

l2: =h*f2 (t+1/2*h,x+1/2*k1,y+1/2*l1);

k3: =h*f1 (t+1/2*h,x+1/2*k2,y+1/2*l2);

l3: =h*f2 (t+1/2*h,x+1/2*k2,y+1/2*l2);

k4: =h*f1 (t+h,x+k3,y+l3);

l4: =h*f2 (t+h,x+k3,y+l3);

x: =x+1/6* (k1+2*k2+2*k3+k4);

y: =y+1/6* (l1+2*l2+2*l3+l4);

if RG1. ItemIndex=0 then g. AddPathXY (x,y);

t: =t+h;

end; {while}

end;

begin

g. FirstPoint;

g. OnPaint: =Button1click;

x0: =strtofloat (InitTEdit. Text);

xk: =strtofloat (FinalTEdit. Text);

Ymax: =strtofloat (MaxEdit. Text);

Ymin: =strtofloat (MinEdit. Text);

g. SetBorder;

g. SetLabels (x0,xk,Ymin,Ymax);

_K: =strtofloat (edit1. Text);

_B: =strtofloat (edit5. Text);

na: =strtoint (Edit10. Text);

nb: =strtoint (Edit9. Text);

t: =Pi/6*strtofloat (Edit8. Text);

a: =t+2*Pi*na;

b: =t+2*Pi*nb;

alf: =strtofloat (edit2. text);

bet: =strtofloat (edit3. text);

h: =strtofloat (Edit7. Text);

x: =alf;

y: =bet;

case RG1. ItemIndex of

0: begin

Runge (a,b,h,x,y);

end; {0}

1: begin

t: =a;

for i: =1 to nb do

begin

Runge (t,t+2*Pi,h,x,y);

if i>=na then g. AddPointXY (x,y);

t: =t+2*Pi;

end; {for}

end; {1}

end; {case}

end;

procedure TForm1. BitBtn4Click (Sender: TObject);

begin

case check of

0: Edit2. Text: =floattostr (strtofloat (Edit2. Text) - stp);

1: Edit3. Text: =floattostr (strtofloat (Edit3. Text) - stp);

end; {case}

Button1. Click;

end;

procedure TForm1. BitBtn3Click (Sender: TObject);

begin

case check of

0: Edit2. Text: =floattostr (strtofloat (Edit2. Text) +stp);

1: Edit3. Text: =floattostr (strtofloat (Edit3. Text) +stp);

end; {case}

Button1. Click;

end;

procedure TForm1. BitBtn5Click (Sender: TObject);

begin

case check of

2: Edit10. Text: =floattostr (strtofloat (Edit10. Text) - 1);

3: Edit9. Text: =floattostr (strtofloat (Edit9. Text) - 1);

end; {case}

Button1. Click;

end;

procedure TForm1. BitBtn6Click (Sender: TObject);

begin

case check of

2: Edit10. Text: =floattostr (strtofloat (Edit10. Text) +1);

3: Edit9. Text: =floattostr (strtofloat (Edit9. Text) +1);

end; {case}

Button1. Click;

end;

procedure TForm1. Edit2Click (Sender: TObject);

begin

check: =0;

Edit2. Color: =clLime;

Edit3. Color: =clWindow;

Edit9. Color: =clWindow;

Edit10. Color: =clWindow;

end;

procedure TForm1. Edit3Click (Sender: TObject);

begin

check: =1;

Edit3. Color: =clLime;

Edit2. Color: =clWindow;

Edit9. Color: =clWindow;

Edit10. Color: =clWindow;

end;

procedure TForm1. Edit10Click (Sender: TObject);

begin

check: =2;

Edit2. Color: =clWindow;

Edit3. Color: =clWindow;

Edit10. Color: =clLime;

Edit9. Color: =clWindow;

end;

procedure TForm1. Edit9Click (Sender: TObject);

begin

check: =3;

Edit2. Color: =clWindow;

Edit3. Color: =clWindow;

Edit9. Color: =clLime;

Edit10. Color: =clWindow;

end;

end.

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


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

  • Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.

    курсовая работа [2,7 M], добавлен 05.11.2011

  • Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.

    контрольная работа [602,8 K], добавлен 04.05.2015

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

    курсовая работа [311,5 K], добавлен 05.03.2009

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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