r />
Де - величина кроку сітки по.
Цей метод має четвертий порядок точності, тобто сумарна помилка на кінцевому інтервалі інтегрування має порядок (помилка на кожному кроці порядку).
. 2 Апріорний вибір кроку інтегрування
Величина x0 (значення рішення у вузлі, для якого вибирається крок h),?,? (допустимі відносна і абсолютна похибки) вважаються заданими. Спочатку обчислюються масштабуючі множники? I, i? [1: n], якщо вона задана користувачем, інакше:
Потім обчислюється величина?:
/u, 1/v обчислюються інтерполяцією,? =? (?) І h=??.
3. Рішення завдання
Програма запускається у файлі b2.m. Спочатку була оголошена функція a2 з додаванням трьох диференціальних рівнянь з файлу a2, початкові умови, граничні умови і точність інтегрування. Далі функція запускається з урахуванням оголошених значень. Також у файлі b2.m виконується графічна частина роботи. Спочатку будуються графіки з наближеними значеннями функцій f (x), f (y), f (z) окремо.
Малюнок 1 - порівняння методу Рунге-кутти з функцією ode45 по рівнянню X (T).
Малюнок 2 - порівняння методу Рунге-кутти з функцією ode45 по рівнянню Y (T).
Малюнок 3 - порівняння методу Рунге-кутти з функцією ode45 по рівнянню Z (T).
Потім була оголошена функція реалізує рішення ОДУ стандартним вирішувачів MATLAB (функція ode45). Після обчислень був побудований графік за отриманими значеннями.
Далі був створений відеофайл формату avi за допомогою функції VideoWriter і відкривається для того, щоб вписати в нього інформацію. У циклі for для всіх наближених значень функцій f (x), f (y), f (z) створюємо тривимірний графік і додаємо точку, яка повинна рухатися по отриманої тривимірної декартовій системі координат. У циклі були задані координати точки щодо кожної осі, за якими вона повинна рухатися. У кінці файлу b2.m файл закривається. Відеофайл з рухом точки в декартовій системі координат був записаний на диск формату DVD-RW.
У файлі a2.m (функції) були задані три функції, складові систему диференціальних рівнянь і алгоритм вирішення ОДУ стандартним вирішувачів MATLAB (функція ode45). і основний цикл програми чисельного рішення системи ОДУ. Як початкова умова були введені три задані функції для вирішення ОДУ, межі діапазону рівнянь, точність рішення, початковий крок інтегрування і початкові умови x (0), y (0), x (0), які записані в запускати файл b2.m. Основний цикл while виконується до тих пір, поки діапазон не зрушиться до верхньої межі. Далі йде вкладений цикл for, який працює до тих пір, поки логічне значення істинне. Спочатку береться вихідний крок h і по ньому вираховується значення похідних функцій до похідною 4 порядку за формулами:
Малюнок 4 - декартова система координат руху точки.
Далі вираховуємо наближене значення трьох диференціальних рівнянь в подальших точках за формулою:. Далі йде обчислення апріорного кроку інтегрування і нових значень для наступної ітерації.
Висновок
У процесі виконання контрольної роботи була розроблена реалізація системи звичайних диференціальних рівнянь в програмі Matlab, алгоритму кроку інтегрування, тривимірного графіка руху точки в декартовій системі координат та реалізація графіка руху в відеофайл.
Список літератури
1) Шампайн Л.Ф., Гладвел І., Томпсон С. Рішення звичайних диференціальних рівнянь з використанням MATLAB: Навчальний посібник. 1-е вид.- СПб .: Лань, 2009, 304 с.
) Чарльз Генрі Едвардс, Девід Е. Пенні. Диференціальні рівняння і крайові задачі: моделювання і обчислення за допомогою Mathematica, Maple та MATLAB. 3-е видання.- Діалектика-Вільямс, 2007, 450 с.
) Є.Р. Алексєєв, О.В. Чеснокова. Рішення задач обчислювальної математики в пакетах Mathcad 12, MATLAB 7, Maple 9. Серія: Самовчитель.- М .: НТ Пресс, 2006, 496 стор.
Додаток А
Текст програми
Файл a2.m
function [x, y, te, ye]=a2 (f, x, h0, y0, e)
function с2=div (t, Y)
% далі запишемо систему ДУ=ones (length (y), 1); (1)=y (1) * cos (y (2)) - y (3); (2)= sqrt (abs (y (2) ^ 2-y (1) ^ 3)) + 3 * y (3); (3)=y (2) ^ 2 * sin (y (1)) + 0.1; - ім'я функції системи, y0 - початкові умови-інтервал часу-початковий крок інтегрірованія- точність=1000;=h0;=1; j lt; jmax
N=length (y0);=max (x);=ceil ((Hx (1))/h);=ze...