Вибір методу інструментальних засобів вирішення задач

 

Розв’язок даної задачі реалізовано на ЕОМ, причому було складено алгоритм та програму в середовищі Borland Delphi 7. Програма є досить простою та зрозумілою для користувача середнього рівня

Для нормального функціонування програми необхідна наявність наступних апаратних засобів:

1. IBM PC/XT сумісний комп'ютер;

2. CPU не нижче Intel P-100;

Операційна система MS-Windows 95 та вище;

3. 8 Mb ОЗУ;

4. Монітор, що підтримує режим 640x480, 16 кольорів;



Функціональне призначення

Розроблена програма дозволяє розв’язати вказану крайову задачу:

,

методом стрілянини з кроками 0,1 і 0,05.

Результати виводяться у текстовій формі.



Розробка та опис логічної частини програми

 

В даній курсовій роботі було розроблено програмне забезпечення для розв’язання та дослідження заданого диференційного рівняння. Розв’язок ведеться за різницевим алгоритмом.

Кодування на мові Паскаль проводилося з застосуванням інтуїтивно-зрозумілих назв змінних та процедур. Також відступи та табуляція дозволяє досить легко збагнути структуру програми.

В інтерфейсі також не допущено зайвих елементів.



Керівництво оператору

Для завантаження програми необхідно запустити програмний файл Project1.exe. При цьому зявиться вікно (рис. 1), де можна задати початкові умови, переглянути постановку задачі а також ознайомитися з розв’язком при натисненні кнопки Розв’язок.

 

Рисунок 1. Інтерфейс програми.



Результати обчислень

 

Результати обчислень:

 Крок: 0,1000000000

 X | Y

 -----------

 0,000|1,0000000000

 0,100|0,3273336200

 0,200|0,1072995400

 0,300|0,0356159580

 0,400|0,0131109860

 0,500|0,0085276729

 0,600|0,0151296980

 0,700|0,0408859800

 0,800|0,1180330500

 0,900|0,3434084400

 1,000|1,0000000000

 Похибка не б_льше: 0,0050000000

Результати обчислень:

 Крок: 0,0500000000

 X | Y

 -----------

 0,000|1,0000000000

 0,050|0,5993159300

 0,100|0,3592222800

 0,150|0,2153842700

 0,200|0,1292593800

 0,250|0,0777695550

 0,300|0,0471172200

 0,350|0,0290879730

 0,400|0,0188492490

 0,450|0,0136550000

 0,500|0,0121092040

 0,550|0,0137906880

 0,600|0,0191384160

 0,650|0,0295660470

 0,700|0,0478356090

 0,750|0,0787890890

 0,800|0,1306317000

 0,850|0,2171069500

 0,900|0,3611400200

 0,950|0,6009154100

 1,000|1,0000000000

 Похибка не більше: 0,0012500000



Висновки

 

При виконані даної курсової роботи я навчився розв’язувати крайові задачі за допомогою методу стрілянини. Було відмічено, що метод досить важко приміняти до комп’ютерних обчислень через необхідність врахування специфіки кожної задачі.


 Література

1. В.Т.Маликов, Р.Н.Кветный. Вычислительные методы и применение ЭВМ. Учебное пособие -- К.: Выща шк. Головное издательство,1989.-213 с.

2. В.Е.Краскевич, К.Х.Зеленский, В.И.Гречко. Численные методы в инженерных исследованиях. -- К.: Выща шк. Головное издательство, 1986.--263 с.

3. Самарський А.А. Вступ в чисельні методи. - М.: Наука,

1987. – 286 с.




Додаток A

 Алгоритм роботи програми

 


 

 

     
 

 

 




Додаток Б

Лістинг програми

unit Unit1;

interface

uses

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

 Dialogs, StdCtrls, ExtCtrls, Buttons, Math;

type

 TForm1 = class(TForm)

 GroupBox2: TGroupBox;

 BitBtn1: TBitBtn;

 BitBtn2: TBitBtn;

 BitBtn3: TBitBtn;

 Memo1: TMemo;

 LabeledEdit1: TLabeledEdit;

 procedure BitBtn1Click(Sender: TObject);

 procedure BitBtn2Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

 Form2.ShowModal;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var

 i, j, n:integer;

 h:Extended;

 ybeg, yend, t: Extended;

 alpha1, alpha2, beta1, beta2: extended;

 b:array of Extended;

 a:array of array of Extended;

 y,y1,y2:array of Extended;

 x:array of Extended;

 M0,M1,M2,err:Extended;

 k,k0,k1,k2,k3,l,l0,l1,l2,l3,zn,xn:extended;

function f(x,y,dy:extended):extended;

begin

 result:=100*y;

end;

begin

 try

 h:=StrToFloat(LabeledEdit1.Text);

 n:=round(1/h)+1;

 ybeg:=1; yend:=1;

 SetLength(y,n);

 SetLength(y1,n);

 SetLength(y2,n);

 y1[0]:=ybeg;

 y2[0]:=ybeg;

 alpha1:=yend;

 alpha2:=yend;

 zn:=alpha1; xn:=0;

 for i:=1 to n-1 do begin

 l0:=h*f(xn,y1[i-1],zn);

 k0:=h*zn;

 l1:=h*f(xn+h/2,y1[i-1]+k0/2,zn+l0/2);

 k1:=h*(zn+l1/2);

 l2:=h*f(xn+h/2,y1[i-1]+k1/2,zn+l1/2);

 k2:=h*(zn+l2/2);

 l3:=h*f(xn+h,y1[i-1]+k2,zn+l2);

 k3:=h*(zn+l3);

 k:=(k0+2*k1+2*k2+k3)/6;

 l:=(l0+2*l1+2*l2+l3)/6;

 y1[i]:=y1[i-1]+k;

 zn:=zn+l;

 xn:=xn+h;

 end;

 beta1:=y1[n-1]; beta2:=beta1;

 while (beta1=beta2) do begin

 alpha2:=alpha2-h;

 zn:=alpha2; xn:=0;

 for i:=1 to n-1 do begin

 l0:=h*f(xn,y2[i-1],zn);

 k0:=h*zn;

 l1:=h*f(xn+h/2,y2[i-1]+k0/2,zn+l0/2);

 k1:=h*(zn+l1/2);

 l2:=h*f(xn+h/2,y2[i-1]+k1/2,zn+l1/2);

 k2:=h*(zn+l2/2);

 l3:=h*f(xn+h,y2[i-1]+k2,zn+l2);

 k3:=h*(zn+l3);

 k:=(k0+2*k1+2*k2+k3)/6;

 l:=(l0+2*l1+2*l2+l3)/6;

 y2[i]:=y2[i-1]+k;

 zn:=zn+l;

 xn:=xn+h;

 end;

 beta2:=y2[n-1];

 end;

 for i:=0 to n-1 do

 y[i]:=1/(beta1-beta2)*((1-beta2)*y1[i]+(beta1-1)*y2[i]);

 with Memo1.Lines do begin

 clear;

 Add('Результати обчислень: ');

 Add(' Крок: '+FloatToStrF(h,ffFixed,8,10));

 Add(' X | Y ');

 Add(' ----------- ');

 for i:=0 to n-1 do

 Add(' '+FloatToStrF(h*i,ffFixed,3,3)+'|'+FloatToStrF(abs(y[i]),ffFixed,8,10));

 Add(' Похибка не б_льше: '+FloatToStrF(h*h/2,ffFixed,8,10));

 end;

 except

 on EConvertError do

 Application.MessageBox('Неправильно введен_ дан_', 'Увага');

 end;

end;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: