ЧИСЕЛЬНЕ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ

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

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

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

Рік:
2009
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
ПМ-32

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний yніверситет „Львівська Політехніка” Звіт до лабораторної роботи №1 на тему: „ЧИСЕЛЬНЕ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ” Лабораторна робота №1 Мета: навчитись розв`язувати систему лiнiйних алгебраїчних рівнянь за допомогою iтераційного методу Зейделя. Варіант №3. А= f=  Розв’язати СЛАР, використовуючи стандартну програму з пакету Maple. Використовуючи одну з мов програмування, розв`язати дану СЛАР методу Зейделя з точнiстю ε=. Задана точнiсть ε ˃ 0 вважають досягнутою , . Вивести розв`язок та вектор нев`язки . Теоритичнi вiдомостi Розглянемо СЛАР: , (1) де  – матриця розміру ,  – невідомий вектор,  – заданий вектор. Для побудови ітераційного методу розв’язування системи (1) попередньо перетворимо –те рівняння системи (1) до вигляду  Цю систему будемо розв’язувати методом Зейделя:  Компоненти вектора  знаходяться з рівняння  послідовно, починаючи з . Розв`язок СЛАР у Maple матиме вигляд: Текст програми: #include <stdio.h> #include <math.h> #include <conio.h> float A[10][10],F[10],X1[10],X2[10]; int n; void main() { g: printf("\vvedit rozirnist matrusi: N="); scanf("%i",&n); int k=0; float max,mod; printf("Put the matrix:\n"); for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) { scanf("%f", &A[i][j]); } } printf("Put the F-vektor:\n"); for (i=1;i<=n;i++) { X1[i]=1;X2[i]=0; scanf("%f", &F[i]); } do { for (i=0;i<=n;i++) { X2[i]=0; } k++; for (int j=2;j<=n;j++) { X2[1]=X2[1]+(A[1][j]/A[1][1]*X1[j]); } X2[1]=-X2[1]+F[1]/A[1][1]; for (i=2;i<=n;i++) { if (i==n) { for (j=1;j<=i-1;j++) { X2[i]=X2[i]-(A[i][j]/A[i][i]*X2[j]); } X2[i]=X2[i]+F[i]/A[i][i]; } else { for (j=1;j<=i-1;j++) { X2[i]=X2[i]-(A[i][j]/A[i][i]*X2[j]); } for (j=i+1;j<=n;j++) { X2[i]=X2[i]-(A[i][j]/A[i][i]*X1[j]); } X2[i]=X2[i]+F[i]/A[i][i]; } } max=fabs(X2[1]-X1[1]); for (i=2;i<=n;i++) { mod=fabs(X2[i]-X1[i]); if (max<mod) max=mod; } for (i=1;i<=n;i++) { X1[i]=X2[i]; } /*printf("\nk=%i, max=%f",k,max); for (i=1;i<=n;i++){ printf(" x=%f",X2[i]);}*/ } while ((max>0.001)&&(k<10000)); printf("\nIteracii: %i\nRozvjazok:",k); for (i=1;i<=n;i++) { X1[i]=0; printf("\nX[%i]=%f",i,X2[i]); } for (i=1;i<=n;i++) { for (int j=1;j<=n;j++) { X1[i]+=A[i][j]*X2[j]; } } printf("\nVektor nevjazku:"); for (i=1;i<=n;i++) { X1[i]=X1[i]-F[i]; printf("\n%f",X1[i]); } printf("\nDo you want put another data? y/n: "); char y; scanf("%s",&y); if ((y=='y')||(y=='Y')) { printf("\n---------------\n"); goto g; } } Результати Висновок: На данiй лабораторнiй роботi я навчилася розв`язувати СЛАР двома способами: программно та в Maple, результати виконання зiйшлись.Освоiла iтерацiйний метод Зейделя розв`язування СЛАР.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!