Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Чисельні методи

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

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

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

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Чисельні методи аналізу автоматичних систем
Варіант:
14

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” / ЛАБОРАТОРНА РОБОТА № 9 з дисципліни: "Чисельні методи" на тему: «Методи розв’язування диференціальних рівнянь у частинних похідних» ЛАБОРАТОРНА РОБОТА № 9 Тема роботи: Методи розв’язування диференціальних рівнянь у частинних похідних. Мета роботи: Вивчити і засвоїти методи розв’язування диференціальних рівнянь у частинних похідних. Навчитися досліджувати розв’язок , використовуючи метод кінцевих різниць. Варіант 24: Використовуючи метод сіток, побудувати різницеву схему для заданої крайової задачі. Одержану СЛАР розв’язати методом прогонки. Використовуючи точний розв’язок, оцінити похибку. / Код програми: #define _USE_MATH_DEFINES #include <Windows.h> #include <cmath> #include <iostream> #include <iomanip> using namespace std; double* Method_running(double**, double*, int); double f(double x) {return exp(x)*(x*x + x + 2);} double y_abs(double x) {return x*exp(x);} int main() { SetConsoleOutputCP(1251); cout << "ЛАБОРАТОРНА РОБОТА №9" << endl; double X0, Xn, Y0, Yn, h; double alpha0=0, alpha1=1, beta0=1, beta1=0, alpha=1, beta=M_E; cout << "Введіть X0 та Xn: "; cin >> X0 >> Xn; cout << "Введіть крок: "; cin >> h; cout << "Введіть коефіцієнти граничних рівнянь (a1*y'(x0) - a2*y(x0) = a): " << endl; cin >> alpha1 >> alpha0 >> alpha; cout << "(b1*y'(xn) + b2*y(xn) = b): " << endl; cin >> beta1 >> beta0 >> beta; int n, q = -1; n = (int)((Xn - X0) / h); n += 1; double** System_equ; double* f_x,*y_answer; y_answer = new double[n]; f_x = new double[n]; System_equ = new double*[n]; for (int i = 0; i < n; i++) System_equ[i] = new double[n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) System_equ[i][j] = 0; //граничні рівняння System_equ[0][0] = h*alpha0-alpha1; System_equ[0][1] = alpha1; f_x[0] = h*alpha; System_equ[n-1][n-2] = -beta1; System_equ[n-1][n-1] = h*beta0 + beta1; f_x[n-1] = h*beta; //проміжні рівняння for (int i = 1; i < n-1; i++) { System_equ[i][i - 1] = 1 / (h*h) - (X0 + h*i) / (2 * h); System_equ[i][i] = -2 / (h*h) - 1; System_equ[i][i + 1] = 1 / (h*h) + (X0 + h*i) / (2 * h); f_x[i] = f(X0 + h*i); } cout << endl << "---------- Утворена система рівнянь ----------" << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (j == 0) { cout << setw(5) << System_equ[i][j] << "Y[" << j + 1 << "]"; continue; } cout << " +" << setw(5) << System_equ[i][j] << " Y[" << j + 1 << "]"; } cout << " = " << f_x[i]; cout << endl; } y_answer = Method_running(System_equ, f_x, n); cout << endl << "Xi\t\tYi\t\tY істинне\t\tПохибка" << endl; for (int i = 0; i < n; i++) { cout << "X[" << i << "] = " << X0 + h*i <<setprecision(7) <<"\tY[" << i << "] = " << y_answer[i] << " \t" << y_abs(X0 + i*h) << "\t" << fabs(y_answer[i] - y_abs(X0 + i*h)) << endl; } system("pause"); delete[] y_answer; delete[]f_x; for (int i = 0; i < n; i++) delete[] System_equ[i]; delete[]System_equ; return 0; } double* Method_running(double** A, double*b, int n) { double* alpha, *beta,*y; alpha = new double[n]; beta = new double[n]; y = new double[n]; double gamma; alpha[0] = -A[0][1] / A[0][0]; beta[0] = b[0] / A[0][0]; for (int i = 1; i < n - 1; i++) { gamma = A[i][i] + A[i][i-1] * alpha[i - 1]; alpha[i] = -A[i][i + 1] / gamma; beta[i] = (b[i] - A[i][i-1] * beta[i - 1]) / gamma; } y[n - 1] = (b[n - 1] - A[n - 1][n - 2] * beta[n - 2]) / (A[n - 1][n - 1] + A[n - 1][n - 2] * alpha[n - 2]); for (int i = n - 2; i >= 0; i--) { y[i] = alpha[i] * y[i + 1] + beta[i]; } delete[] alpha; delete[] beta; return y; } Результат: / / / Висновок: В результаті виконання лабораторної роботи було вивчено метод кінцевих різниць для розв’язання диференціальних рівнянь у частинних похідних. З резуль...
Антиботан аватар за замовчуванням

08.11.2018 17:11

Коментарі

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

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

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

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

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

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

Admin

26.02.2019 12:38

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

Новини