Математичне моделювання на електронно-обчислювальній машині
Зміст
1.
Поняття математичного моделювання
.
Завдання
.
Постановка задачі та метод її розв’язку
.
Блок-схема модифікованого метода Ейлера
.
Код програми в середовищі Delphi 7
.
Опис програми та її блок-схема
.
Контрольні приклади
1. Поняття математичного моделювання
Поняття математичного моделювання
трактується різними авторами по своєму. Ми будемо його пов’язувати з нашою
спеціалізацією - прикладна математика.
Під математичним моделюванням ми
будемо розуміти метод дослідження процесів або явищ шляхом побудови їхніх
математичних моделей і дослідження цих процесів.
В основу методу покладемо
адекватність між змінними складеного рівняння і досліджуваного процесу.
Зрозуміло, що на практиці ці процеси не будуть абсолютно ідентичні. Але можна
удосконалювати математичну модель, яка більш точно буде описувати цей процес.
Треба пам’ятати, що в останньому
випадку, як правило, математичні рівняння ускладнюються. А це означає, що їх
моделювання на ЕОМ потребує більше часу, або ж більше не визначаючих
обчислювальних комплексів.
Схема таких досліджень починається з
постановки задачі і закінчується проведенням ефективного обчислювального
експерименту. Її умови можна записати в такій формі:
а) постановка задачі;
б) побудова математичної моделі;
в) перевірка її адекватності;
г) узагальнення та теоретичне
дослідження даного класу задач;
д) створення програмного
забезпечення;
е) проведення обчислювального
експерименту;
. Завдання
Дослідити кінематику хімічної
реакції, яка описується рівнянням
Математична модель реакції
представлена у вигляді:
де ,
,-концентраціїкомпонентів
у момент t, а , -
константи швидкості реакції. За отриманими даними побудувати графіки зміни
концентрації для кожного компонента. Обчислення провести модифікованим методом
Ейлера.
3. Постановка задачі та метод її
розв'язку
Диференційне рівняння п-порядку
називається лінійним однорідними,якщо воно першої степені відносно шуканої
функції у і її похідних у′,...,у(n-1), у(n), тобто має вид:
у(n) + а1у(n-1)+....+ аnу =0
Метод Ейлера являється відносно
грубим і застосовується в основному для орієнтовних розрахунків. Але ідеї, які
закладені в основі метода, являються вихідними для ряду інших методів.
Нехай задано диференціальне рівняння
у' = f (x,y )(1)
з початковими умовами
х = х0, у(х0) = у0(2)
Потрібно знайти розв'язок рівняння
(1) на відрізку [а,b]
Розіб’ємо відрізок [а,b] на n рівних
частин, одержимо послідовність х0, х1, х2,…..,хn, де хі = х0+іh (i =0,1,2,….n),
h = (b-a)/n -крок інтегрування.
Рис. 1
Розглянемо метод на
елементарному відрізку , на якому
інтегральну криву заміняємо в точці дотичною. Тобто в точці проводимо
пряму з кутовим коефіцієнтом , рівняння даної прямої:
Визначаємо точку перетину
цієї прямої з прямою проведеної в точці . Підставивши в рівняння прямої маємо:
Отримане значення вважають
значенням шуканої функції. Операцію повторюємо на проміжку і так далі
на всьому проміжку
З метою підвищення точності
методу Ейлера використовують різні його модифікації.
Модифікований метод Ейлера.
Відмінність полягає в тому, що спочатку розраховується значення функції в
середині даного кроку, а потім робиться повний крок.
+1=Xk+h;+1=Yk+F(Xk+h/2;Yk+F(Xk;Yk)h/2);
4.
Блок-схема модифікованого метода Ейлера
Рис. 2
5. Код програми в середовищі Delphi
7
Unit1;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, TeEngine, Series, ExtCtrls,
TeeProcs, Chart, StdCtrls, Grids,, jpeg;= class(TForm): TLabeledEdit;:
TLabeledEdit;: TLabeledEdit;: TButton;: TButton;: TStringGrid;: TLabeledEdit;:
TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TChart;:
TLineSeries;: TLineSeries;: TLineSeries;: TImage;Button1Click(Sender:
TObject);Button3Click(Sender: TObject);Button2Click(Sender:
TObject);LabeledEdit4KeyPress(Sender: TObject; varKey:
Char);LabeledEdit3KeyPress(Sender: TObject; varKey:
Char);LabeledEdit1KeyPress(Sender: TObject; varKey: Char);
{ Privatedeclarations }
{ Publicdeclarations };:
TForm1;,b,h,k1,k2,ya,yb,yc,y1,y2,y3:real;,n:integer;Unit2;
{$R
*.dfm}(t:real):real;:=-k1*(t+5);;(t:real):real;:=k1*(t+5)-k2*(sqr(t)-13);;(t:real):real;:=k2*(sqr(t)-13);;TForm1.Button1Click(Sender:
TObject);:=strtofloat(labelededit1.Text);:=strtofloat(labelededit2.Text);:=strtoint(labelededit3.Text);:=strtoint(labelededit4.Text);:=strtoint(labelededit6.Text);:=strtoint(labelededit8.Text);:=strtoint(labelededit5.Text);:=strtoint(labelededit7.Text);(b<=a)
or (n<1)
then.Enabled:=false;.Visible:=true;.RowCount:=n+2;.Cells[0,0]:='t';.Cells[1,0]:='Ca(t)';.Cells[2,0]:='Cb(t)';.Cells[3,0]:='Cc(t)';.Cells[0,1]:=floattostr(a);.Cells[1,1]:=floattostr(ya);.Cells[2,1]:=floattostr(yb);.Cells[3,1]:=floattostr(yc);:=(b-a)/n;:=1;:=ya+Ca(a+h/2)*h;:=yb+Cb(a+h/2)*h;:=yc+Cc(a+h/2)*h;:=a+h;:=y1;:=y2;:=y3;:=i+1;.Cells[0,i]:=floattostr(a);.Cells[1,i]:=floattostr(y1);.Cells[2,i]:=floattostr(y2);.Cells[3,i]:=floattostr(y3);i>n;.Clear;.Clear;.Clear;i:=1
to StringGrid1.RowCount-1
do.AddXY(StrToFloat(StringGrid1.Cells[0,i]),(StringGrid1.Cells[1,i]),
'',clGreen);i:=1 to StringGrid1.RowCount-1
do.AddXY(StrToFloat(StringGrid1.Cells[0,i]),(StringGrid1.Cells[2,i]),
'',clRed);i:=1 to
StringGrid1.RowCount-1
do.AddXY(StrToFloat(StringGrid1.Cells[0,i]),(StringGrid1.Cells[3,i]),
'',clBlue);;;TForm1.Button3Click(Sender:
TObject);.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Clear;.Clear;.Clear;i:=0
to stringgrid1.RowCount-1
do.Cells[0,i]:='';.Cells[1,i]:='';.Cells[2,i]:='';.Cells[3,i]:='';;;TForm1.Button2Click(Sender:
TObject);.Close;;TForm1.LabeledEdit4KeyPress(Sender: TObject; varKey:
Char);(keyin['0'..'9',#08,',','-']) thenkey:=#0;;
6. Опис програми та її блок-схема
При запуску програми перед
користувачем відкривається головне вікно. Це вікно розділене на дві частини:
Графічна частина
В частині вводу вихідних даних
користувачу необхідно ввести початковий та кінцевий час (в секундах), задати
початкові умови для методу, кількість ітерацій, а також коефіцієнти, що
відповідають за швидкість хімічної реакції.
Після цього користувач має натиснути
кнопку «Розрахувати» і програма після деяких перевірок почне розрахунок
модифікованим методом Ейлера. В результаті буде отримано чисельні значення
кожної функції, які будуть занесені в таблицю і по цим значення буде побудовано
три графіки різного кольору.
Для того, щоб очистити всі поля,
таблиці та графіки необхідно натиснути на кнопку «Очистити»
Рис. 3
В цьому блоці виконується
підключення необхідних модулів, об’являються константи, функції змінних та
створюються контроль.
Блок 2
В даному блоці відбувається ввід
початкових даних користувачем.
Блок 3
В даному блоці відбувається
перевірка введених даних та рішення програми про наступні кроки дій.
Блок 4
В цьому блоці програма проводить
розрахунок модифікованим методом Ейлера і заповнюється таблиця із результуючими
даними.
Блок 5
В даному блоці будуються графіки по
розрахованими даними.
7. Контрольні приклади
Приклад№1
Рис. 4
Рис. 5
Приклад №2
Рис. 6
Рис. 7