Метод Адамса розв’язання задачі Коші для диференціального рівняння першого порядку

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
КН
Кафедра:
Автоматизовані Системи Управління

Інформація про роботу

Рік:
2021
Тип роботи:
Розрахунково - графічна робота
Предмет:
Чисельні методи аналізу автоматичних систем

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ <> Інститут ІКНІ Кафедра автоматизовані системи управління
ГРАФІКО-РОЗРАХУНКОВА РОБОТА на тему
“Метод Адамса розв’язання задачі Коші для диференціального рівняння першого порядку” З курсу “Чисельні методи”
ЗАВДАННЯ:
Створити проект на певній мові програмування для розв’язання задачі Коші для диференціального рівняння першого порядку методом Адамса:
1. Розробити проект на певній мові програмування для розв’язання задачі Коші для диференціального рівняння першого порядку методом Адамса. 2. Обчислити розв’язок задачі Коші для диференціального рівняння першого порядку методом Адамса.
3. Порівняти отримані результати з розв’язком задачі Коші за методом Рунге-Кутта та зробити висновки. Визначити абсолютну та відносну похибку обчислення кожного методу. Обґрунтувати досягнення заданої точності.
4. Оформити звіт.
Оскільки я 27 варіант, але завдань хватає лише на 25, тому я взяв завдання з другого варіанту. 2.
Відомості та алгоритм Метод Адамса — група методів чисельного інтегрування звичайних диференційних рівнянь, які дозволяють обчислювати таблицю наближених значень розв'язку за даними в початкових точках. Він є багатокроковим. В однокрокових методах для обчислення значения уn+1 використовується значения тільки уn і для підвищення точності при фіксованому кроці необхідно проводити обчислення великої кількості допоміжних величин. Це є причиною того, що для багатьох задач застосування формул Рунге-Кутти неможливе внаслідок надто великого обсягу обчислень. Тому часто раціональніше переходити до багатокрокових методів, які дають можливість, використовуючи значення f(xi,yi), що обчислені на попередніх кроках, отримати прийнятну точність. Проте для обчислення задачі цим алгоритмом, нам потрібно як мінімум два початкових значень, тож зазвичай за цими значеннями звертаються до методу Рунге-Кутта або методу Ейлера. Після чого йде багатокроковий алгоритм, який є точнішим. / Де h – крок, f – наша функція.
Текст програми include
include
include
using namespace std;
double eps = 0.001; double h = 0.1; double masY[10];
double func(double x, double y) {
return x * x + 0.25 * y * y; }
double x1[10] = { 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1 }; double rounge[10] = { 1.026, 1.055, 1.09, 1.134, 1.188, 1.255, 1.340, 1.444, 1.573, 1.732 }; void print(double x, double y, int n) {
double z = abs(y - rounge[n - 1]);
if (n == 1)
cout << setprecision(4) << n << " |" << x << "t|
" << y << "
| " << rounge[n - 1] << "t|
" << z << "t| " << z / y * 100 << "%" << endl;
else
cout << setprecision(4) << n << " |" << x << "t|
" << y << "
| " << rounge[n - 1] << "t| " << z << "t| " << z / y * 100 << "%" << endl; }
double Adams(double x, double y0, int count) {
while (count < 11) {
x += h;
double yn = y0 + h * func(x, y0);
print(x, yn, count);
y0 = yn;
masY[count - 1] = y0;
count++;
}
return y0; }
double adams(double y0, int count) {
double y[10];
y[0] = 1.026;
print(x1[0], y[0], 1);
y[1] = rounge[1];
print(x1[1], y[1], 2);
for (int i = 2; i < 10; i++) {
y[i] = y[i - 1] + 1.5 * h * func(x1[i - 1], y[i - 1]) - 0.5 * h * func(x1[i - 2], y[i - 2]);
masY[i] = y[i];
print(x1[i], y[i], i+1);
}
return 0; }
int main() {
system("chcp 1251");
system("cls");
double y0 = 1;
double x = 0;
double y1 = y0 + h * func(0.1, y0);
cout << "Метод АдамсаtМетод Рунге-Куттаn";
cout <<
"n | x
|y(Адамс) |y(РунгеКутта)|
abs похибка
|відноснаn0 | 0
|
1
|
1
|n";
adams(y0, 1);
cout << "nnОтже, наближене значення y(Адамса) = " <= " << abs(masY[9] - rounge[9]) << ", Відносна похибка = " << (abs(masY[9] - rounge[9])) / masY[9] * 100 << "%nn";
return 0; }
Результат виконання програми /
Висновок Я програмно реалізував алгоритм розв’язання задачі Коші для диференціального рівняння першого порядку методом Адамса та порівняв результати з методом Рунге-Кутта, різниця між ними була мінімальна, проте реалізація цих методів зовсім різна, навідміну від методу Рунге-Кутта, метод Адамса значень функції, які вже були вирахувані в минулих точках.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Останні оголошення

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Новини