Курсова робота з інформатики
Тема: В«Чисельні методи при вирішенні завданьВ»
В В В В В В В В
Автор: студент групи ПС-146
Нечаєв Л. В.
Перевірив: Альошин Є. А.
В
Зміст
Зміст. 2
Програми та описи. 3
Програма для вирішення завдання 17. 3
Умова задачі 17. 3
Рішення завдання за методом Адамса. 3
Блок-схема функції main з програми 17.c. 4
Блок-схема функції Adams з програми 17.c. 5
Лістинг програми 17.c. 6
Результат рішення задачі 17 на ЕОМ .. 9
Висновок: 9
Програма для вирішення завдання 30. 10
Умова задачі 30. 10
Рішення завдання за методом найменших квадратів. 10
Блок-схема функції main з програми 30.c. 11
Блок-схема функції MMinor з програми 30.c. 11
Блок-схема функції MatrixMultiply з програми 30.c. 12
Блок-схема функції Determinant з програми 30.c. 12
Лістинг програми 30.c. 12
Результат рішення задачі 30 на ЕОМ .. 17
Висновок: 17
В Програми та описи
Програма для вирішення завдання 17
Умова задачі 17.
Розробити функцію чисельного інтегрування системи диференціальних рівнянь методом Адамса. Прототип функції:
void Adams (
void f (double * y, double * ys, double t),
double * y,
int n,
double tn,
double tk,
int m,
double eps);
де:
f - Функція обчислення правих частин системи диференціальних рівнянь:
y - Масив розміру n значень залежних змінних;
ys - Масив розміру n значень залежних похідних;
n - Порядок системи диференціальних рівнянь;
t - Незалежна змінна;
tn - Початкове значення інтервалу інтегрування;
tk - Кінцеве значення інтервалу інтегрування;
m - Початковий число розбиття відрізка інтегрування [ tn ; tk ]
eps - відносна похибка інтегрування. Обчислення припиняються, коли, де - значення i -й компоненти вектора залежних змінних при t = tk для кількості розбиття відрізка інтегрування m .
Початкові кроки робляться за методом Рунге-Кутта.
Застосувати цю функцію для інтегрування диференціального рівняння 3-его порядку y (3) +2 y'' +3 y '+ y = 5 + x 2 в інтервалі xГЋ [0; 2] з кроком О” x = 0 , і початковими умовами x = 0; y (0) = 1; y '(0) = 0.1 ; y'' (0) = 0 .
Рішення завдання по методу Адамса
Для запуску екстраполяціонного методу Адамса потрібно 4 початкових значення функції. Одне значення вже задано, а інші виходять за методом Рунге-Кутта 4 порядку. Після обчислення значення в кінці відрізка відбувається обчислення відносної похибки (з поточних і раніше отриманих з кроком h значень функції) і порівняння її із заданим значенням. Якщо отримана похибка менше, ніж задана, то вважається, що завдання виконано і відбувається повернення в зухвалу програму з отриманим значенням функції. Якщо ж ні - то зменшується в 2 рази крок і весь процес, починаючи з методу Рунге-Кутта, повторюється знову (для обчислення нових значень функції). Так продовжується до тих пір, поки отримане значення похибка не стане менше ніж задане.
Для роботи програми необхідна функція обчислення правих частин системи диференціальних рівнянь. Це функція func ( double * y, double * ys, double x) . Т. к. в задачі потрібно вирішити рівняння y (3) +2 y'' +3 y '+ y = 5 + x 2 , складаємо систему диференціальних рівнянь першого порядку. Виглядає вона так:
В
При кожному обчисленні лівих частин цієї системи відбувається диференціювання y, y ' і y'' , тобто обчислення відповідно нових значень y', y'' , y'' '.
Ну, а якщо перекласти це все в програму на Сі, то вийде функція func (дивись лістинг 17 задачі).
Блок-схема функції main з програми 17.c
В
Блок-схема функції Adams з програми 17.c
В
Лістинг програми 17.c
// Завдання 17. Чисельне інтегрування системи диференціальних рівнянь
// методом Адамса. Програма розрахована на компіляцію в Micro $ oft C 6.00
// або Borland C 3.1 +
// (C) 2004 REPNZ. All rights reserved. Release date is 2.04...