Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Інститут ІКНІКафедра АСУ
ЗВІТ
До лабораторної роботи № 3На тему: «Розв’язування системи лінійних алгебраїчних рівнянь методом Гауса. Схема Жордана.»З дисципліни: «Чисельні методи»
Львів – 2018
Мета роботи: вивчити і засвоїти Методи Гауса і Жордана – Гауса розв’язування СЛАР.
Наступну СЛР розв’язати методом Гауса
де k=0,01·n, n – номер варіанту, що дорівнює порядковому номеру студента в списку групи,, ε=0,1.
Підстановкою знайдених значень визначити похибку обчислень. Привести таблицю та графік зміни похибки для зміни ε від значення 0,1 до значення 10-10.
Протокол виконання
/
/
Код програми
#include <iostream>
#include <cstdlib>
using namespace std;
const int raw = 4;
const int st = 5;
const double k = 0.06;
void init(double arr[raw][st], double e);
int main() {
setlocale(LC_ALL, "");
double arr[raw][st];
for (double e = 0.1; e > 1 / pow(10.0, 10.0); e /= 10) {
init(arr, e);
for (int i = 0; i < raw; i++) {
double p = arr[i][i];
for (int s = i; s < st; s++) {
arr[i][s] /= p;
}
for (int j = i + 1; j < raw; j++) {
double g = arr[j][i];
for (int k = i; k < st; k++) {
arr[j][k] -= arr[i][k] * g;
}
}
}
double answer[4] = { 0,0,0,0 };
answer[3] = arr[3][4];
for (int i = raw - 2; i >= 0; i--) {
answer[i] = -(answer[1] * arr[i][1] + answer[2] * arr[i][2] + answer[3] * arr[i][3]) + arr[i][st - 1];
}
if (e == 0.1) {
cout << "Трикутна матриця: " << endl;
for (int i = 0; i < raw; i++) {
for (int j = 0; j < st; j++) {
cout.width(10);
cout << arr[i][j];
}
cout << endl;
}
}
cout << endl;
for (int i = 0; i < 4; i++) {
cout << "x" << i + 1 << " = " << answer[i] << endl;
}
cout << endl;
init(arr, e);
double res = 0;
double poxybka[raw];
for (int j = 0; j < raw; j++) {
for (int i = 0; i < raw; i++)
res += answer[i] * arr[j][i];
poxybka[j] = fabs(res - arr[j][raw]);
res = 0;
}
double max = 0;
for (int i = 0; i < raw; i++) {
if (poxybka[i]>max)
max = poxybka[i];
}
cout << "Похибка: " << max << endl;
}
system("pause");
}
void init(double arr[raw][st], double e) {
arr[0][0] = (1 + k);
arr[0][1] = 2;
arr[0][2] = 3;
arr[0][3] = -2;
arr[0][4] = 6;
arr[1][0] = 2;
arr[1][1] = -k;
arr[1][2] = -2;
arr[1][3] = -3;
arr[1][4] = (8 * (1 - k));
arr[2][0] = 3;
arr[2][1] = 2;
arr[2][2] = -e;
arr[2][3] = 2 - k;
arr[2][4] = 4 * k;
arr[3][0] = 2;
arr[3][1] = -3;
arr[3][2] = 2;
arr[3][3] = 1;
arr[3][4] = (-8 * (1 + 3 * k));
}
Графік:
/
Висновок
Під час виконання лабораторної роботи я вивчив і засвоїв Методи Гауса і Жордана – Гауса розв’язування СЛАР. Також за допомогою програми розв’язав СЛАУ, у яких була змінна точність ε, знайшов максимальну абсолютну похибку у кожній системі і графічно побудував залежність похибки від точності.