Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения

Математичне моделювання на електронно-обчислювальній машині

Работа из раздела: «Экономико-математическое моделирование»

/

Зміст

1. Поняття математичного моделювання

2. Завдання

3. Постановка задачі та метод її розв'язку

4. Блок-схема модифікованого метода Ейлера

5. Код програми в середовищі Delphi 7

6. Опис програми та її блок-схема

7. Контрольні приклади

1. Поняття математичного моделювання

Поняття математичного моделювання трактується різними авторами по своєму. Ми будемо його пов'язувати з нашою спеціалізацією - прикладна математика.

Під математичним моделюванням ми будемо розуміти метод дослідження процесів або явищ шляхом побудови їхніх математичних моделей і дослідження цих процесів.

В основу методу покладемо адекватність між змінними складеного рівняння і досліджуваного процесу. Зрозуміло, що на практиці ці процеси не будуть абсолютно ідентичні. Але можна удосконалювати математичну модель, яка більш точно буде описувати цей процес.

Треба пам'ятати, що в останньому випадку, як правило, математичні рівняння ускладнюються. А це означає, що їх моделювання на ЕОМ потребує більше часу, або ж більше не визначаючих обчислювальних комплексів.

Схема таких досліджень починається з постановки задачі і закінчується проведенням ефективного обчислювального експерименту. Її умови можна записати в такій формі:

а) постановка задачі;

б) побудова математичної моделі;

в) перевірка її адекватності;

г) узагальнення та теоретичне дослідження даного класу задач;

д) створення програмного забезпечення;

е) проведення обчислювального експерименту;

ж) впровадження цих результатів в виробництво.

2. Завдання

Дослідити кінематику хімічної реакції, яка описується рівнянням

Математична модель реакції представлена у вигляді:

де , ,-концентраціїкомпонентів у момент 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

Розглянемо метод на елементарному відрізку , на якому інтегральну криву заміняємо в точці дотичною. Тобто в точці проводимо пряму з кутовим коефіцієнтом , рівняння даної прямої:

Визначаємо точку перетину цієї прямої з прямою проведеної в точці . Підставивши в рівняння прямої маємо:

Отримане значення вважають значенням шуканої функції. Операцію повторюємо на проміжку і так далі на всьому проміжку

З метою підвищення точності методу Ейлера використовують різні його модифікації.

Модифікований метод Ейлера. Відмінність полягає в тому, що спочатку розраховується значення функції в середині даного кроку, а потім робиться повний крок.

Xk+1=Xk+h;

Yk+1=Yk+F(Xk+h/2;Yk+F(Xk;Yk)h/2);

4. Блок-схема модифікованого метода Ейлера

Рис. 2

5. Код програми в середовищі Delphi 7

unit Unit1;

interface

uses

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

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Grids,

ValEdit, jpeg;

type

TForm1 = class(TForm)

LabeledEdit1: TLabeledEdit;

LabeledEdit2: TLabeledEdit;

LabeledEdit3: TLabeledEdit;

Button1: TButton;

Button3: TButton;

StringGrid1: TStringGrid;

LabeledEdit4: TLabeledEdit;

LabeledEdit5: TLabeledEdit;

LabeledEdit7: TLabeledEdit;

LabeledEdit6: TLabeledEdit;

LabeledEdit8: TLabeledEdit;

Chart1: TChart;

Series2: TLineSeries;

Series1: TLineSeries;

Series3: TLineSeries;

Image1: TImage;

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure LabeledEdit4KeyPress(Sender: TObject; varKey: Char);

procedure LabeledEdit3KeyPress(Sender: TObject; varKey: Char);

procedure LabeledEdit1KeyPress(Sender: TObject; varKey: Char);

private

{ Privatedeclarations }

public

{ Publicdeclarations }

end;

var

Form1: TForm1;

a,b,h,k1,k2,ya,yb,yc,y1,y2,y3:real;

i,n:integer;

implementation

uses Unit2;

{$R *.dfm}

functionCa(t:real):real;

begin

Ca:=-k1*(t+5);

end;

functionCb(t:real):real;

begin

Cb:=k1*(t+5)-k2*(sqr(t)-13);

end;

functionCc(t:real):real;

begin

Cc:=k2*(sqr(t)-13);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

a:=strtofloat(labelededit1.Text);

b:=strtofloat(labelededit2.Text);

n:=strtoint(labelededit3.Text);

ya:=strtoint(labelededit4.Text);

yb:=strtoint(labelededit6.Text);

yc:=strtoint(labelededit8.Text);

k1:=strtoint(labelededit5.Text);

k2:=strtoint(labelededit7.Text);

if (b<=a) or (n<1) then

begin

form1.Enabled:=false;

form2.Visible:=true;

end

else

begin

stringgrid1.RowCount:=n+2;

stringgrid1.Cells[0,0]:='t';

stringgrid1.Cells[1,0]:='Ca(t)';

stringgrid1.Cells[2,0]:='Cb(t)';

stringgrid1.Cells[3,0]:='Cc(t)';

stringgrid1.Cells[0,1]:=floattostr(a);

stringgrid1.Cells[1,1]:=floattostr(ya);

stringgrid1.Cells[2,1]:=floattostr(yb);

stringgrid1.Cells[3,1]:=floattostr(yc);

h:=(b-a)/n;

i:=1;

repeat

y1:=ya+Ca(a+h/2)*h;

y2:=yb+Cb(a+h/2)*h;

y3:=yc+Cc(a+h/2)*h;

a:=a+h;

ya:=y1;

yb:=y2;

yc:=y3;

i:=i+1;

stringgrid1.Cells[0,i]:=floattostr(a);

stringgrid1.Cells[1,i]:=floattostr(y1);

stringgrid1.Cells[2,i]:=floattostr(y2);

stringgrid1.Cells[3,i]:=floattostr(y3);

until i>n;

Series1.Clear;

Series2.Clear;

Series3.Clear;

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

Series1.AddXY(StrToFloat(StringGrid1.Cells[0,i]),

StrToFloat(StringGrid1.Cells[1,i]),

'',clGreen);

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

Series2.AddXY(StrToFloat(StringGrid1.Cells[0,i]),

StrToFloat(StringGrid1.Cells[2,i]),

'',clRed);

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

Series3.AddXY(StrToFloat(StringGrid1.Cells[0,i]),

StrToFloat(StringGrid1.Cells[3,i]),

'',clBlue);

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Labelededit1.Text:='';

Labelededit2.Text:='';

Labelededit3.Text:='';

Labelededit4.Text:='';

Labelededit5.Text:='';

Labelededit6.Text:='';

Labelededit7.Text:='';

Labelededit8.Text:='';

series1.Clear;

series3.Clear;

series2.Clear;

for i:=0 to stringgrid1.RowCount-1 do

begin

stringgrid1.Cells[0,i]:='';

stringgrid1.Cells[1,i]:='';

stringgrid1.Cells[2,i]:='';

stringgrid1.Cells[3,i]:='';

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

form1.Close;

end;

procedure TForm1.LabeledEdit4KeyPress(Sender: TObject; varKey: Char);

begin

ifnot (keyin['0'..'9',#08,',','-']) thenkey:=#0;

end;

6. Опис програми та її блок-схема

При запуску програми перед користувачем відкривається головне вікно. Це вікно розділене на дві частини:

Графічна частина

Частина вводу вихідних даних

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

Після цього користувач має натиснути кнопку «Розрахувати» і програма після деяких перевірок почне розрахунок модифікованим методом Ейлера. В результаті буде отримано чисельні значення кожної функції, які будуть занесені в таблицю і по цим значення буде побудовано три графіки різного кольору.

Для того, щоб очистити всі поля, таблиці та графіки необхідно натиснути на кнопку «Очистити»

/

Рис. 3

В цьому блоці виконується підключення необхідних модулів, об'являються константи, функції змінних та створюються контроль.

Блок 2

В даному блоці відбувається ввід початкових даних користувачем.

Блок 3

В даному блоці відбувається перевірка введених даних та рішення програми про наступні кроки дій.

Блок 4

В цьому блоці програма проводить розрахунок модифікованим методом Ейлера і заповнюється таблиця із результуючими даними.

Блок 5

В даному блоці будуються графіки по розрахованими даними.

7. Контрольні приклади

Приклад№1

Рис. 4

Рис. 5

математичний моделювання метод ейлер

Приклад №2

Рис. 6

Рис. 7

ref.by 2006—2025
contextus@mail.ru