Реферат: Метод "Стрілянини"

Вступ

 

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

Обчислювальнаматематика заснована на чисельних методах, придатних до застосування при розрахункахна ЕОМ. Сучасні ЕОМ дозволили дослідникам значно підвищити ефективністьматематичного моделювання складних задач науки і техніки. Нині методидосліднення проникають практично в усі сфери людської діяльності, а математичнімоделі стають засобами пізнання.

Значенняматематичних моделей неперервно зростає у зв'язку з тенденціями до оптимізаціїтехнічних пристроїв і технологічних схем планування експерименту. Реалізаціямоделей на ЕОМ здійснюється за допомогою різноманітних методів обчислювальноїматематики, яка неперервно удосконалюєтьтся.

В даній роботірозглянуто розв’язання крайової задачі методом “стрілянини” (на прикладідиференційного рівняння другого порядку).


2. Теоретичні відомостіДиференційнимрівнянням називають рівняння, що зв'язує незалежну змінну х, шукану функцію y=f(x) та їїпохідні y', y'',…, y(n). Взалежності від числа незалежних змінних та типу похідних, що входять до нихдиференційні рівняння діляться на звичайні диференційні рівняння, що мають однунезалежну змінну та похідні по ній, та рівняння в частинних похідних, маючихдекілька незалежних змінних та похідні (частинні) по ним.

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

Звичайнедиференційне рівняння має нескінчену множину розв’язків. Для відшукання якогось конкретного розв’язку потрібні додаткові умови. Ціумови можуть бути різними. У випадку, коли додаткові умови задаються при одномузначенні незалежної змінної, має місце задача Коші (задача з початковимиумовами). Якщо ж умови задаються при двох чи більше значеннях незалежноїзмінної, то задача називається крайовою. В задачі Коші додаткові умовиназиваються початковими, а в крайовій – граничними. При рішенні цих задачвикористовуються різні методи та алгоритми.

Сформулюємозадачу Коші. Нехай дано диференційне рівняння: /> тапочаткова умова />. Потрібно знайтифункцію на відрізку від /> до />, таку, що задовольняє якдане рівняння, так і початкову умову.

Крайову задачурозглянемо на прикладі звичайного диференційного рівняння другого порядку /> при граничних умовах />. Методи розв’язків рівняньбільш високих порядків аналогічні.

 

2.1 Методирозв’язку задачі Коші.

В основічисельних методів розв’язку диференційних рівнянь лежить розклад функції /> в ряд Тейлора в околівихідної точки />: />, де /> — відстань (крок) міжвихідною точкою /> та точкою />, в якій шукають розв’язок.

Причому в різнихметодах враховується різна кількість членів розкладу, що визначає точністьрозрахунків. Вважають, що порядок похобки рівний />,якщо існує таке число />, та />, де /> — локальна помилка; /> — крок дискретизації.

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

Методи розв’язкузадачі Коші можна розділити на дві групи: однокрокові, в яких для знаходженняслідуючої точки на кривій /> потрібнаінформація лише про один попередній крок (методи Ейлера та Рунге-Кутта);багатокрокові (прогнозу та корекції), в яких для знаходження слідуючої точки накривій /> потрібна інформація більшніж про одну із попередніх точок.


2.2Вибір методу розв'язання задачі Коші

Порівнюючи ефективність однокрокових ібагатокрокових методів, виділяють такі особливості:

1.    Багатокрокові методи вимагають більшого об'єму пам'яті ЕОМ, тому що оперують більшою кількістю початкових даних.

2.    При використаннібагатокрокових методів існує можливість оцінки похибки на кроці, тому значення крокуобирається оптимальним, а
в однокрокових — з деяким запасом, щознижує швидкодію.

3.       Приоднаковій точності багато крокові методи вимагають меншого обсягу обчислень. Наприклад, в методі Рунге-Куттачетвертого порядку точності доводиться обчислювати чотири значення функції накожному кроці, а для забезпеченнязбіжності методу прогнозу і корекції того ж порядку точності — достатньо двох.

4.       Однокроковіметоди на відміну від багатокрокових дозволяють одразу почати розв'язання задачі («самостартування») і легкозмінювати крок в процесі обчислень.

Перед початком розв'язання задачі необхіднопровести перевірку на «жорсткість» і у випадку позитивного результатувикористати спеціальні методи. Якщо задача Коші дуже складна, то зазвичайперевага надається методу прогнозу і корекції, який має до того ж більш високушвидкодію. Початок розв'язання задачі при цьому проводиться задопомогою однокрокових методів. Якщо для обчислення черговогозначення уі вимагається більш ніж дві ітерації або якщопомилка зрізання дуже велика, то необхідно зменшити крок Н. Зіншого боку при дуже малій похибці зрізання можна збільшитикрок, тим самим підвищити швидкодію, але при цьому весь процес розв'язання треба починати спочатку.Інколи на практиці вимагається мінімізувати час підготовки задачі дорозв'язання. Тоді доцільно використовувати методи Рунге-Кутта.

Назакінчення слід відзначити, що велике значення для ефективного розв'язаннязадачі мають досвід, інтуїція і кваліфікація користувача як при постановцізадачі, так і в процесі вибру методу розробки алгоритму і програми для ЕОМ. Прицьому часто зручно користуватись вже готовими програмними засобами, які є в наявності(наприклад, в пакетах МАРLЕ,МАТНЕМАТIКА).

2.3Методирозв'язання крайових задач

Методи розв'язаннякрайових задач розглядаються на прикладі звичайного диференціального рівняннядругого порядку

/>

приграничних умовах у(а) = А, у(в) — В. Методи розв'язання крайових задачрозділяють на дві групи: методи, що побудовані на заміні розв'язання крайовоїзадачі розв'язанням декількох задач Коші (методи «стрілянини») тарізницеві методи.

 

2.4Метод «стрілянини»

Якщозвичайне диференціальне рівняння другого порядку — лінійне, то воно має вигляд:

/>

при у(а)= А, у(в) = В.

Крайовузадачу можна звести до задачі Коші введенням додаткової початкової умови, кріму(а)=А вводиться у'(а)=/>.

Знайшовширозв'язок />(х), можна поставити іншупочаткову умову у(а)=/> і отримати іншийрозв'язок у2 (х). Якщо /> а />, причому /> , то розв'язок:

/>

буде задовольняти обидвіпочаткові умови.

При розв'язуванні нелінійного звичайного диференціального
рівняння методами «стрілянини» крайова задача зводиться до
розв'язування декількох задач Коші, послідовно вводячи в початкові і
умови значення /> :

у(а)=А і у'(а)=а

і намагаючись знайти розв'язок, якийзадовольняє умову у(в)=В,

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


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

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

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

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

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

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

3.        8 Mb ОЗУ;

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


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

 

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

/>, />

/>

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

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


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

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

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

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


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

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

/>

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


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

 

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

 Крок: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

 

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

/>


/>/> 

/>/>/>/> 

/> /> /> /> /> <td/> /> /> /> />

Додаток Б

 

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

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.

еще рефераты
Еще работы по информатике, программированию