Исследование поведения модели системы дифференциальных уравнений
Основные этапы математического моделирования. Метод Эйлера как наиболее простой численный метод решения обыкновенных дифференциальных уравнений. Написание компьютерной программы, которая позволит изучать графики системы дифференциальных уравнений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.01.2013 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Математическая модель -- это приближенное описание какого-либо класса явлений или объектов реального мира на языке математики. Основная цель моделирования -- исследовать эти объекты и предсказать результаты будущих наблюдений. Однако моделирование -- это еще и метод познания окружающего мира, дающий возможность управлять им.
Математическое моделирование и связанный с ним компьютерный эксперимент незаменимы в тех случаях, когда натурный эксперимент невозможен или затруднен по тем или иным причинам. Например, нельзя поставить натурный эксперимент в истории, чтобы проверить, «что было бы, если бы...» Невозможно проверить правильность той или иной космологической теории. В принципе возможно, но вряд ли разумно, поставить эксперимент по распространению какой-либо болезни, например чумы, или осуществить ядерный взрыв, чтобы изучить его последствия. Однако все это вполне можно сделать на компьютере, построив предварительно математические модели изучаемых явлений.
1). Основные этапы математического моделирования
а) Построение модели. На этом этапе задается некоторый «нематематический» объект -- явление природы, конструкция, экономический план, производственный процесс и т. д. При этом, как правило, четкое описание ситуации затруднено. Сначала выявляются основные особенности явления и связи между ними на качественном уровне. Затем найденные качественные зависимости формулируются на языке математики, то есть строится математическая модель. Это самая трудная стадия моделирования.
б) Решение математической задачи, к которой приводит модель. На этом этапе большое внимание уделяется разработке алгоритмов и численных методов решения задачи на ЭВМ, при помощи которых результат может быть найден с необходимой точностью и за допустимое время.
в) Интерпретация полученных следствий из математической модели. Следствия, выведенные из модели на языке математики, интерпретируются на языке, принятом в данной области.
г) Проверка адекватности модели. На этом этапе выясняется, согласуются ли результаты эксперимента с теоретическими следствиями из модели в пределах определенной точности.
д) Модификация модели. На этом этапе происходит либо усложнение модели, чтобы она была более адекватной действительности, либо ее упрощение ради достижения практически приемлемого решения.
2). Исходные данные
3). Основная теория
Для моделирования данной нам системы дифференциальных уравнений мы будем использовать метод Эйлера.
Метод Эйлера -- наиболее простой численный метод решения (систем) обыкновенных дифференциальных уравнений. Впервые описан Леонардом Эйлером в 1768 году в работе «Интегральное исчисление». Метод Эйлера является явным, одношаговым методом первого порядка точности, основанном на аппроксимации интегральной кривой кусочно-линейной функцией, так называемой ломаной Эйлера.
Пусть дана задача Коши для уравнения первого порядка
где функция определена на некоторой области . Решение разыскивается на интервале. На этом интервале введем узлы
Приближенное решение в узлах , которое обозначим через определяется по формуле
Эти формулы обобщаются на случай систем обыкновенных дифференциальных уравнений.
4). Задание и план работы
1. Изучение и проработка теоретического материала.
2. Разработка алгоритмов и компьютерной программы.
а) программа должна строить графики функций по входным данным;
б) исследовать поведение математической модели по графикам в зависимости от выбранных коэффициентов;
3. Примеры реализации программы.
Компьютерная реализация
С помощью метода Эйлера, я реализовал программу, которая по введенным начальным данным строит графики, по которым можно исследовать данную систему дифференциальных уравнений (рис. 1).
Рисунок 1 - основной интерфейс программы.
Так как программа позволяет сразу строить два графика, то это позволяет удобно исследовать поведение графиков в зависимости от заданных параметров.
Далее мы будем рассматривать серию скриншотов, которые будут иллюстрировать сделанные мною выводу по поводу поведения модели.
На графиках красной линией идет график функции Х, а синей Y.
Так как в функции Х мы можем наблюдать функцию sin(t), а мы делаем шаг именно по t, то мы сможем увидеть, что начало графика имеет «волнообразную» (синусоидальную) структуру, и начинает стремиться к прямой линии с увеличением параметра t. Это мы получаем за счет зависимости от функции Y ,которая в свою очередь имеет в теле функции экспоненту.
Построив график Y с теми же начальными параметрами, мы увидим, что график сначала резко увеличивается (за счет параметра t , который вначале цикла равен 0 и затем медленно увеличивается ,что экспонента близка к 1), а затем выходит на отрезок стабильности, т.е. стабильно растет.
Далее, я начну изменять параметры a, b ,c для того чтобы проследить за изменением характера нашей модели.
Самый интересный график по функции Х, как мне кажется, мы можем получить, прировняв коэффициент a к 0.1 т.е. устремляя его к минимуму. Он будет зависеть только от одного параметра t, который будет увеличиваться пошагово. Поэтому мы получим своеобразную, показанную на графике синусоидальную кривую.
График же зависимости Y не претерпел сильных изменений, его структура не изменилась, а изменилась только скорость его роста.
При данных параметрах график Х ведет себя так же, как и в первом случае. График Y имеет чуть меньше скорости в росте по сравнению с первым графиком и чуть большую скорость, чем во втором случае, т.е. в первом случае к 490 он уже достигал значения 1.75 , а во втором случае достигал лишь 1.55. В данном примере он находиться чуть ниже, чем 1.75.
Этот случай тоже ничем примечательным не отличает. График Х ведет себя стабильно - синусоидальные периодические колебания под углом. У графика Y изменяется только скорость роста. Будем надеяться, что когда я начну уменьшать по два параметра сразу, то нас ждут более интересные графики.
Уменьшив параметры a и b, мы получаем точно такой же график, который мы получили и в начале, что является следствием того, что график функции X не сильно зависит от параметра b.
График Y как всегда не может нам показать ничего интересного кроме незначительного изменения скорости роста.
График X при единственном единичном параметре b. График если и изменился, то себя выдал не сильно. Поэтому мы можем сделать заключение, что параметр c влияет на него тоже слабо.
График Y все также остается, зависим от изменений, которые претерпевают параметры b и c, вследствие чего скорость его, то увеличивается, то уменьшается.
График X по-прежнему стремиться стать неколеблющейся прямой. График Y набирает скорость роста.
Далее я попробую, уменьшите все параметры сразу и посмотреть, что произойдет.
Ожидается, что график X будет в виде косой синусоидальной увеличивающейся, а Y будет увеличиваться.
График X оправдал мои ожидания.
График Y растет, но чуть медленнее из-за уменьшенных значений параметров b и c ,а с уменьшением параметра a он растет быстрее.
Устремляя параметр a, мы можем увидеть изменения угла в графике X.
Как можно заметить из этих двух графиков, функция Y зависит так же от параметра a, который регулирует скорость возрастания. Чем меньше a тем больше скорость роста.
Далее я решил поэкспериментировать с начальными данными, а точнее с начальными значениями X,Y и t.
Так как я теперь знаю зависимость наших графиков X и Y то могу спокойно предполагать и поведение.
Как мы видим все идет стабильно.
И вот свершилось. График X дал резкое увеличение, в то время когда график Y все, также не спеша растет.
Уменьшив параметр a, мы увидим то, что и ожидали - график X стал заметно притормаживать, в то время как график Y растет.
Продолжая развлекаться с начальными условиями, мы приходим к тому, что при одинаковых начальных условиях график функции X намного быстрее растет, чем график функции Y.
Хотя в то же время график функции X очень зависим от своего параметра a , вследствие чего при низком значении оного мы получим, что график Y будет обгонять X.
При отрицательных начальных значениях график Y уменьшается, а график X неотступно растет.
Заключение
Написав программу, которая позволяет изучать графики представленной системы дифференциальных уравнений, я провел тщательный анализ оной и сделал для себя следующие выводы:
1) График X очень сильно зависит от параметра a;
2) График Y зависит, но не очень сильно от параметров b и c, а скорость его роста зависит от параметра a;
3) График X растет намного быстрее по сравнению с графиком Y, но если уменьшить параметр a, то X затормозиться и Y его перегонит;
4) При отрицательных начальных значениях график Y уменьшается, в то время как график X растет.
Список литературы
математическое моделирование дифференциальное уравнение
1.В.В. Фаронов «Delphi. Программирование на языке высокого уровня»
2.Б.Ф. Кирьянов «Математическое моделирование»
Приложение
Программа реализована в среде Delphi 7.
unit Laba;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, TeeFunci;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Chart1: TChart;
Series2: TLineSeries;
Button2: TButton;
Series1: TLineSeries;
TeeFunction1: TAddTeeFunction;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function f1(a:real;x:real;y10:real;y20:real):real;
begin
f1:=a*y10*y20+sin(x);
end;
function f2(b:real;x:real;c:real;y10:real;y20:real):real;
begin
f2:=(b*y10*exp(-x))+y10+(c*y20*exp(-2*x))
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h,x,a,b,c:real;
y1:array[0..1000] of real;
y2:array[0..1000] of real;
i:integer;
begin
Chart1.Repaint;
y1[0]:=StrToFloat(Trim(Edit1.Text));
y2[0]:=StrToFloat(Trim(Edit2.Text));
x:=StrToFloat(Trim(Edit3.Text));
a:=StrToFloat(Trim(Edit4.Text));
b:=StrToFloat(Trim(Edit5.Text));
c:=StrToFloat(Trim(Edit6.Text));
h:=0.001;
for i:=0 to 500 do
begin
x:=x+h*i;
y1[i+1]:=y1[i]+h*f1(a,x,y1[i],y2[i]);
y2[i+1]:=y2[i]+h*f2(b,x,c,y1[i],y2[i]);
Form1.Series1.AddXY(x,y1[i],FloatToStrF(i,ffFixed,10,3),clRed);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
h,x,a,b,c:real;
y1:array[0..1000] of real;
y2:array[0..1000] of real;
i:integer;
begin
Chart1.Repaint;
y1[0]:=StrToFloat(Trim(Edit1.Text));
y2[0]:=StrToFloat(Trim(Edit2.Text));
x:=StrToFloat(Trim(Edit3.Text));
a:=StrToFloat(Trim(Edit4.Text));
b:=StrToFloat(Trim(Edit5.Text));
c:=StrToFloat(Trim(Edit6.Text));
h:=0.001;
for i:=0 to 500 do
begin
x:=x+h*i;
y1[i+1]:=y1[i]+h*f1(a,x,y1[i],y2[i]);
y2[i+1]:=y2[i]+h*f2(b,x,c,y1[i],y2[i]);
Form1.Series2.AddXY(x,y2[i],FloatToStrF(i,ffFixed,10,3),clBlue);
end;
end;
end.
Размещено на Allbest.ru
Подобные документы
Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.
курсовая работа [226,6 K], добавлен 05.04.2013Решение системы дифференциальных уравнений, заданной в нормальной форме Коши. Определение аналитических зависимостей изменения переменных состояния системы с использованием преобразования Лапласа. Численный метод решения системы c помощью Mathcad.
практическая работа [657,1 K], добавлен 05.12.2009Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.
реферат [126,1 K], добавлен 12.01.2012Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений Maple. Произвольные константы решения дифференциального уравнения второго порядка, представленном рядом Тейлора. Значения опции method при численном решении.
лабораторная работа [47,2 K], добавлен 15.07.2009Принцип и значение метода Эйлера для расчета дифференциальных уравнений. Анализ его геометрического смысла. Улучшение метода за счет аппроксимации производной. Разработка блок-схем и программы на языке Turbo Pascal для проверки методов интегрирования.
курсовая работа [385,7 K], добавлен 15.06.2013Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.
курсовая работа [2,7 M], добавлен 05.11.2011Роль операционной системы Windows для решения инженерных задач. Исследование и анализ аналитических выражений, реализующих численный метод Эйлера в табличном редакторе Excel. Оценка эффективности методики построения таблиц расчетов переходных процессов.
реферат [105,5 K], добавлен 29.10.2013Разработка быстрого и эффективного алгоритма для решения задачи оценки параметров обыкновенных дифференциальных уравнений с запаздывающими аргументами, не разрешаемых аналитически. Реализация алгоритма в виде библиотеки на языке программирования MATLAB.
дипломная работа [1,6 M], добавлен 19.06.2012