Метод «Стрілянини»
23
Вступ
На даний момент велика роль в розвитку сучасного світу відводиться підвищенню технічного рівня обчислювальної техніки, пристроїв і засобів автоматизації. Це передбачає розвиток виробництва і широке використання промислових роботів, систем автоматичного управління з використанням мікропроцессорів і мікро-ЕОМ, створення гнучких автоматизованих виробництв. Розвязок цих задач потребує широкого упровадження в інженерну практику методів обчислювальної математики.
Обчислювальна математика заснована на чисельних методах, придатних до застосування при розрахунках на ЕОМ. Сучасні ЕОМ дозволили дослідникам значно підвищити ефективність математичного моделювання складних задач науки і техніки. Нині методи досліднення проникають практично в усі сфери людської діяльності, а математичні моделі стають засобами пізнання.
Значення математичних моделей неперервно зростає у звязку з тенденціями до оптимізації технічних пристроїв і технологічних схем планування експерименту. Реалізація моделей на ЕОМ здійснюється за допомогою різноманітних методів обчислювальної математики, яка неперервно удосконалюєтьтся.
В даній роботі розглянуто розвязання крайової задачі методом “стрілянини” (на прикладі диференційного рівняння другого порядку).
2. Теоретичні відомості
Диференційним рівнянням називають рівняння, що звязує незалежну змінну х , шукану функцію y=f(x) та її похідні y, y,…, y(n).
В залежності від числа незалежних змінних та типу похідних, що входять до них диференційні рівняння діляться на звичайні диференційні рівняння, що мають одну незалежну змінну та похідні по ній, та рівняння в частинних похідних, маючих декілька незалежних змінних та похідні (частинні) по ним.
Існує багато методів для знаходження розвязків диференційних рівнянь через елементарні чи спеціальні функції. Такі методи називають аналітичними, чи класичними, але в більшості задач вони чи зовсім непридатні, чи приводять до дуже складних розрахунків. При заданні коефіціентів чи функцій в диференційних рівняннях у вигляді таблиць експерементальних даних використання класичних методів принципово неможливо. Це обумовлює важливість чисельних методів, що розглядають рішення диференційних рівнянь, це є основою при складанні алгоритмів та програм для ЕОМ.
Звичайне диференційне рівняння має нескінчену множину розвязків. Для відшукання якогось конкретного розвязку потрібні додаткові умови. Ці умови можуть бути різними. У випадку, коли додаткові умови задаються при одному значенні незалежної змінної, має місце задача Коші (задача з початковими умовами). Якщо ж умови задаються при двох чи більше значеннях незалежної змінної, то задача називається крайовою. В задачі Коші додаткові умови називаються початковими, а в крайовій - граничними. При рішенні цих задач використовуються різні методи та алгоритми.
Сформулюємо задачу Коші. Нехай дано диференційне рівняння: та початкова умова . Потрібно знайти функцію на відрізку від до , таку, що задовольняє як дане рівняння, так і початкову умову.
Крайову задачу розглянемо на прикладі звичайного диференційного рівняння другого порядку при граничних умовах . Методи розвязків рівнянь більш високих порядків аналогічні.
2.1 Методи розвязку задачі Коші.
В основі чисельних методів розвязку диференційних рівнянь лежить розклад функції в ряд Тейлора в околі вихідної точки : , де - відстань (крок) між вихідною точкою та точкою , в якій шукають розвязок.
Причому в різних методах враховується різна кількість членів розкладу, що визначає точність розрахунків. Вважають, що порядок похобки рівний , якщо існує таке число , та , де - локальна помилка; - крок дискретизації.
Число не залежить від номера кроку та його велечини, а визначається похідними і довжиною інтервала. При апроксимації розвязку рядами Тейлора воно звязане зі степінню членів ряду, що відкидаються.
Методи розвязку задачі Коші можна розділити на дві групи: однокрокові, в яких для знаходження слідуючої точки на кривій потрібна інформація лише про один попередній крок (методи Ейлера та Рунге-Кутта); багатокрокові (прогнозу та корекції), в яких для знаходження слідуючої точки на кривій потрібна інформація більш ніж про одну із попередніх точок.
2.2 Вибір методу розвязання задачі Коші
Порівнюючи ефективність однокрокових і багатокрокових методів, виділяють такі особливості:
Багатокрокові методи вимагають більшого обєму памяті ЕОМ, тому що оперують більшою кількістю початкових даних.
При використанні багатокрокових методів існує можливість оцінки похибки на кроці, тому значення кроку обирається оптимальним, а
в однокрокових -- з деяким запасом , що знижує швидкодію.
3. При однаковій точності багато крокові методи вимагають меншого обсягу обчислень. Наприклад, в методі Рунге-Кутта четвертого порядку точності доводиться обчислювати чотири значення функції на кожному кроці, а для забезпечення збіжності методу прогнозу і корекції того ж порядку точності - достатньо двох.
4. Однокрокові методи на відміну від багатокрокових дозволяють одразу почати розвязання задачі ("самостартування") і легко змінювати крок в процесі обчислень.
Перед початком розвязання задачі необхідно провести перевірку на "жорсткість" і у випадку позитивного результату використати спеціальні методи. Якщо задача Коші дуже складна, то зазвичай перевага надається методу прогнозу і корекції, який має до того ж більш високу швидкодію. Початок розвязання задачі при цьому проводиться за допомогою однокрокових методів. Якщо для обчислення чергового значення уі вимагається більш ніж дві ітерації або якщо помилка зрізання дуже велика, то необхідно зменшити крок Н. З іншого боку при дуже малій похибці зрізання можна збільшити крок, тим самим підвищити швидкодію, але при цьому весь процес розвязання треба починати спочатку. Інколи на практиці вимагається мінімізувати час підготовки задачі до розвязання. Тоді доцільно використовувати методи Рунге-Кутта.
На закінчення слід відзначити, що велике значення для ефективного розвязання задачі мають досвід, інтуїція і кваліфікація користувача як при постановці задачі, так і в процесі вибру методу розробки алгоритму і програми для ЕОМ. При цьому часто зручно користуватись вже готовими програмними засобами, які є в наявності (наприклад, в пакетах МАРLЕ, МАТНЕМАТIКА).
2.3Методи розвязання крайових задач
Методи розвязання крайових задач розглядаються на прикладі звичайного диференціального рівняння другого порядку
при граничних умовах у(а) = А , у(в) - В. Методи розвязання крайових задач розділяють на дві групи: методи, що побудовані на заміні розвязання крайової задачі розвязанням декількох задач Коші (методи "стрілянини") та різницеві методи.
2.4 Метод "стрілянини"
Якщо звичайне диференціальне рівняння другого порядку - лінійне, то воно має вигляд:
при у(а) = А , у(в) = В.
Крайову задачу можна звести до задачі Коші введенням додаткової початкової умови, крім у(а)=А вводиться у(а)=.
Знайшовши розвязок (х), можна поставити іншу початкову умову у(а)= і отримати інший розвязок у2 (х). Якщо а , причому , то розвязок:
буде задовольняти обидві початкові умови.
При розвязуванні нелінійного звичайного диференціального
рівняння методами "стрілянини" крайова задача зводиться до
розвязування декількох задач Коші, послідовно вводячи в початкові і
умови значення :
у(а)=А і у(а)=а
і намагаючись знайти розвязок, який задовольняє умову у(в)=В,
При цьому алгоритм досягнення мети будується на основі одного з методів оптимізації. Однак цей шлях розвязання задачі повязаний з великими обчислювальними труднощами, і тому у випадку нелінійних |диференціальних рівнянь перевага надається різницевим методам.
3.Вибір методу інструментальних засобів вирішення задач.
Розвязок даної задачі реалізовано на ЕОМ, причому було складено алгоритм та програму в середовищі Borland Delphi 7. Програма є досить простою та зрозумілою для користувача середнього рівня
Для нормального функціонування програми необхідна наявність наступних апаратних засобів :
IBM PC/XT сумісний компютер;
CPU не нижче Intel P-100;
Операційна система MS-Windows 95 та вище;
8 Mb ОЗУ;
Монітор, що підтримує режим 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
Висновки
При виконані даної курсової роботи я навчився розвязувати крайові задачі за допомогою методу стрілянини. Було відмічено, що метод досить важко приміняти до компютерних обчислень через необхідність врахування специфіки кожної задачі.
Література
В.Т.Маликов, Р.Н.Кветный . Вычислительные методы и применение ЭВМ . Учебное пособие -- К.: Выща шк. Головное издательство,1989.-213 с .
В.Е.Краскевич, К.Х.Зеленский, В.И.Гречко . Численные методы в инженерных исследованиях. -- К.: Выща шк. Головное издательство, 1986.--263 с .
Самарський А.А. Вступ в чисельні методи. - М.: Наука,
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.
- Курсовая работа по экономике предприятия
- Курсовая работа по инвестициям
- Курсовая работа по начертательной геометрии
- Курсовая работа по теории машин и механизмов
- Курсовая работа по гидравлике
- Курсовая работа по стандартизации
- Курсовая работа по социальной работе
- Курсовая работа по экономическому анализу
- Курсовая работа по информационной безопасности
- Курсовая работа по стратегическому менеджменту
- Курсовая работа по геологии
- Курсовая работа по авиационной и ракетно-космической технике
- Курсовая работа по иновационному менджменту
- Курсовая работа по геодезии
- Курсовая работа по экономике труда
- Как писать дипломную работу Инструкция и советы по написанию качественной дипломной работы.
- Структура дипломной работы Сколько глав должно быть в работе, что должен содержать каждый из разделов.
- Оформление дипломных работ Требования к оформлению дипломных работ по ГОСТ. Основные методические указания.
- Источники для написания Что можно использовать в качестве источника для дипломной работы, а от чего лучше отказаться.
- Скачивание бесплатных работ Подводные камни и проблемы возникающие при сдаче бесплатно скачанной и не переработанной работы.
- Особенности дипломных проектов Чем отличается дипломный проект от дипломной работы. Описание особенностей.