Математичне моделювання на електронно-обчислювальній машині
Треба пам’ятати, що в останньому випадку, як правило, математичні рівняння ускладнюються. А це означає, що їх моделювання на ЕОМ потребує більше часу, або ж більше не визначаючих обчислювальних комплексів. Отримане значення вважають значенням шуканої функції. Операцію повторюємо на проміжку і так далі на всьому проміжку З метою підвищення точності методу Ейлера використовують різні його… Читати ще >
Математичне моделювання на електронно-обчислювальній машині (реферат, курсова, диплом, контрольна)
Зміст
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