Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
Звіт
з ЛАБОРАТОРНої РОБОТи № 6
З КУРСУ “Комп’ютерні методи досліджень”
НА ТЕМУ:
“ МЕТОДИ ЧИСЕЛЬНОГО РОЗВЯЗУВАННЯ
диференціальних рівнянь”
Варіант 12
виконав:
ст. гр. ІБ-2
Львів – 2007
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Розв’язати чисельним методом звичайне диференційне рівняння.
Короткі теоретичні відомості
Модифікований метод Ейлера
В модифікованому методі Ейлера (метод Ейлера з перерахунком) спочатку обчислюється значення функції в наступній точці за звичайним методом Ейлера.
EMBED Equation.3 (9)
Воно використовується для обчислення наближеного значення похідної в кінці інтервалу EMBED Equation.3.
Обчисливши середнє між цим значенням похідної та її значенням на початку інтервалу, знайдемо більш точне значення EMBED Equation.3:
EMBED Equation.3 (10)
Цей прийом ілюструється на рисунку.
EMBED Visio.Drawing.11
В обчислювальній практиці використовується також метод Ейлера-Коші з ітераціями:
знаходиться грубе початкове наближення (за звичайним методом Ейлера)
EMBED Equation.3
будується ітераційний процес
EMBED Equation.3 (14)
Ітерації продовжують до тих пір, доки два послідовні наближення не співпадуть з заданою похибкою EMBED Equation.3. Якщо після декількох ітерацій співпадіння нема, то потрібно зменшити крок EMBED Equation.3.
EMBED Equation.3
Тобто в модифікованому методі Ейлера, в методі Ейлера-Коші з ітераціями спочатку (на першому етапі) знаходиться наближення для EMBED Equation.3, а потім воно вже коригується за формулами (10) або (14).
Блок-схема
SHAPE I=0,4
I=i+1
k[i]=pow(y0,2)+y0*pow(x0,3);
x0=x+h/2;
y0=y+h*k[i]/2;}
yz=y;
y+=h*(k[0]+2*k[1]+2*k[2]+k[3])/6;
x+=n;
|yz-y|>e
Таблиця ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
hКрокe похибкаpow Функція піднесення до степеняFabs Модуль числаmain()Головна функція
Текст програми мовою C
# include <stdio.h>
# include <conio.h>
# include <math.h>
main ()
{ double x=0,y=0,k[4],h=0.00001,xv,yv,yz,e=0.0001;
int i;
do{ for(i=0;i<4;i++)
{ k[i]=sqrt(xv*xv+yv*yv)+sin(xv+2*yv);
xv=x+h/2;
yv=y+h*k[i]/2;
}
yz=y;
y+=h*(k[0]+2*k[1]+2*k[2]+k[3])/6;
x+=h;
} while (fabs(yz-y)>e);
printf("rozvjazok:\nx=%lf\ny=%lf\n",x,y);
getch ();}
Результати роботи програми:
rozvjazok duf rivnannja:
x=0.00001 ; y=0.00000 ;
Висновок: На цій лабораторній роботі я ознайомився з методами чисельного числення розв’язування диференціальних рівнянь.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!