Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

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

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

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

Математичне моделювання на електронно-обчислювальній машині (реферат, курсова, диплом, контрольна)

Зміст

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

Показати весь текст
Заповнити форму поточною роботою