Уравнение Дуффинга и его странные аттракторы
Аналитическое и численное исследование уравнения Дуффинга и его странных аттракторов. Регулярные и хаотические явления в вынужденном осцилляторе Дуффинга. Стробоскопическое исследование явления. Метод Рунге-Кутты решения дифференциальных уравнений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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