Загрузил Тимофей Виноградов

Лаб 4 Виноградов Т.А. АИС-121

реклама
Министерство науки и высшего образования Российской Федерации
Федеральное государственное образовательное учреждение
высшего образования
«Владимирский государственный университет имени Александра
Григорьевича и Николая Григорьевича Столетовых»
(ВлГУ)
Институт прикладной математики, физики и информатики
Кафедра физики и прикладной математики
ЛАБОРАТОРНАЯ РАБОТА №4
по дисциплине
«Численные методы» на тему
«РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ
УРАВНЕНИЙ»
Выполнил:
ст. гр. АИС-121
Виноградов Т.А.
Принял:
доцент каф. ФиПМ
Заякин А.А.
Владимир 2022
Цель работы: изучить метод простой итерации и метод Зейделя для
решения систем линейных алгебраических уравнений.
Задача: решить систему линейных алгебраических уравнений методом
простой итерации и методом Зейделя с погрешностью 0,001 на языке C++.
2,951 ∗ 𝑥1 + 0,512 ∗ 𝑥2 + 0,128 ∗ 𝑥3 + 0,195 ∗ 𝑥4 = 0,159
0,203 ∗ 𝑥1 + 3,469 ∗ 𝑥2 + 0,572 ∗ 𝑥3 + 0,162 ∗ 𝑥4 = 0,280
{
0,256 ∗ 𝑥1 + 0,273 ∗ 𝑥2 + 2,994 ∗ 𝑥3 + 0,501 ∗ 𝑥4 = 0,134
0,381 ∗ 𝑥1 + 0,219 ∗ 𝑥2 + 0,176 ∗ 𝑥3 + 5,903 ∗ 𝑥4 = 0,864
Краткие теоретические сведения
Метод простых итераций
Метод итерации — это численный и приближенный метод решения
СЛАУ. Суть метода заключается в нахождении по приближённому значению
величины следующего приближения, которое является более точным. Метод
позволяет получить значения корней системы с заданной точностью.
Пусть дана система
𝑎11 𝑥1 + 𝑎12 𝑥2 + 𝑎13 𝑥3 + 𝑎14 𝑥4 = 𝑏1
𝑎 𝑥 + 𝑎22 𝑥2 + 𝑎23 𝑥3 + 𝑎24 𝑥4 = 𝑏2
{ 21 1
𝑎31 𝑥1 + 𝑎32 𝑥2 + 𝑎33 𝑥3 + 𝑎34 𝑥4 = 𝑏3
𝑎41 𝑥1 + 𝑎42 𝑥2 + 𝑎43 𝑥3 + 𝑎44 𝑥4 = 𝑏4
Алгоритм решения:
1 шаг. Важным условием для метода простой итерации в решении
систем линейных уравнений является условие сходимости:
|𝑎11 | > |𝑎12 | + |𝑎13 | + |𝑎14 |
|𝑎22 | > |𝑎21 | + |𝑎23 | + |𝑎24 |
|𝑎33 | > |𝑎31 | + |𝑎32 | + |𝑎34 |
|𝑎44 | > |𝑎41 | + |𝑎42 | + |𝑎43 |
Если все условия выполняются, строим матрицу А:
𝑎11 𝑎12 𝑎13 𝑎14
𝑎21 𝑎22 𝑎23 𝑎24
𝐴 = [𝑎 𝑎 𝑎 𝑎 ]
31 32 33 34
𝑎41 𝑎42 𝑎43 𝑎44
𝑥1
𝑥2
𝑥 =[…]
𝑥𝑛
𝑏1
𝑏
𝑏=[ 2]
…
𝑏𝑛
2 шаг. Вычисление матрицы B.
𝑏11 𝑏12 𝑏13 𝑏14
𝑎𝑖𝑗
𝑏 𝑏 𝑏 𝑏
𝐵 = [ 21 22 23 24 ] , где 𝑏𝑖𝑗 = −
, и 𝑏𝑖𝑖 = 0.
𝑏31 𝑏32 𝑏33 𝑏34
𝑎𝑖𝑖
𝑏41 𝑏42 𝑏43 𝑏44
3 шаг. Вычисляем вектор C
С = (𝐶1 , 𝐶2 , 𝐶3 , 𝐶4 ), где 𝐶𝑖 =
𝑏𝑖
𝑎𝑖𝑖
4 шаг. Выбираем вектор 𝑋 0
𝑋 0 = (𝑥10 , 𝑥20 , 𝑥30 , 𝑥40 )
Есть два способа для выбора вектора 𝑋 0


𝑋 0 = (0, 0, 0, 0)
𝑋 0 = (𝐶1 , 𝐶2 , 𝐶3 , 𝐶4 )
5 шаг. Выполнение итераций (выполнение итераций для метода простой
итерации и метода Зейделя отличаются)
𝑋 1 = (𝑥11 , 𝑥21 , 𝑥31 , 𝑥41 )
Способ вычисления итераций для метода простой итерации:
𝑥11 = 𝑏11 ∗ 𝑥10 + 𝑏12 ∗ 𝑥20 + 𝑏13 ∗ 𝑥30 + 𝑏14 ∗ 𝑥40 + 𝐶1
𝑥21 = 𝑏21 ∗ 𝑥10 + 𝑏22 ∗ 𝑥20 + 𝑏23 ∗ 𝑥30 + 𝑏24 ∗ 𝑥40 + 𝐶2
𝑥31 = 𝑏31 ∗ 𝑥10 + 𝑏32 ∗ 𝑥20 + 𝑏33 ∗ 𝑥30 + 𝑏34 ∗ 𝑥40 + 𝐶3
𝑥41 = 𝑏41 ∗ 𝑥10 + 𝑏42 ∗ 𝑥20 + 𝑏43 ∗ 𝑥30 + 𝑏44 ∗ 𝑥40 + 𝐶4
Способ вычисления итераций для метода Зейделя:
𝑥11 = 𝑏11 ∗ 𝑥10 + 𝑏12 ∗ 𝑥20 + 𝑏13 ∗ 𝑥30 + 𝑏14 ∗ 𝑥40 + 𝐶1
𝑥21 = 𝑏21 ∗ 𝑥11 + 𝑏22 ∗ 𝑥20 + 𝑏23 ∗ 𝑥30 + 𝑏24 ∗ 𝑥40 + 𝐶2
𝑥31 = 𝑏31 ∗ 𝑥11 + 𝑏32 ∗ 𝑥21 + 𝑏33 ∗ 𝑥30 + 𝑏34 ∗ 𝑥40 + 𝐶3
𝑥41 = 𝑏41 ∗ 𝑥11 + 𝑏42 ∗ 𝑥21 + 𝑏43 ∗ 𝑥31 + 𝑏44 ∗ 𝑥40 + 𝐶4
Ход работы
2,951 ∗ 𝑥1 + 0,512 ∗ 𝑥2 + 0,128 ∗ 𝑥3 + 0,195 ∗ 𝑥4 = 0,159
0,203 ∗ 𝑥1 + 3,469 ∗ 𝑥2 + 0,572 ∗ 𝑥3 + 0,162 ∗ 𝑥4 = 0,280
{
0,256 ∗ 𝑥1 + 0,273 ∗ 𝑥2 + 2,994 ∗ 𝑥3 + 0,501 ∗ 𝑥4 = 0,134
0,381 ∗ 𝑥1 + 0,219 ∗ 𝑥2 + 0,176 ∗ 𝑥3 + 5,903 ∗ 𝑥4 = 0,864
(2 вариант)
1. Проверка условия сходимости.
|2,951| > |0,512| + |0,128| + |0,195| − Условие выполнено
|3,469| > |0,203| + |0,572| + |0,162| − Условие выполнено
|2,994| > |0,256| + |0,273| + |0,501| − Условие выполнено
|5,903| > |0,381| + |0,219| + |0,176| − Условие выполнено
Условие сходимости выполняется, тогда составим матрицу A:
2,951 0,512 0,128 0,195
0,203 3,469 0,572 0,162
𝐴=[
]
0,256 0,273 2,994 0,501
0,381 0,219 0,176 5,903
𝑥1
𝑥2
𝑥 =[𝑥 ]
3
𝑥4
0,159
0,280
𝑏=[
]
0,134
0,864
2. Вычисление матрицы В.
0 − 0,198 − 0,049 − 0,075
𝑎𝑖𝑗
−0,058 0 − 0,164 − 0,046
𝐵=[
] , где 𝑏𝑖𝑗 = −
, и 𝑏𝑖𝑖 = 0
−0,086 − 0,091 0 − 0,167
𝑎𝑖𝑖
−0,065 − 0,037 − 0,030 0
3. Вычисление вектора C.
𝐶 = (0,061, 0,080, 0,045, 0,146), где 𝐶𝑖 =
𝑏𝑖
𝑎𝑖𝑖
Все вычисления выполнялись в программе Excel
4. Выбор начального значения 𝑿𝟎 .
В качестве начального значения 𝑋 0 , возьмем значения вектора C:
𝑋 0 = (0,061, 0,080, 0,045, 0,146)
5. Выполнение итераций на языке С++
Консольное приложение
#include <iostream>
using namespace std;
int main()
{
const int size = 4;
float MAS_B[size][size] = {{0,-0.198,-0.049,-0.075},{-0.058,0,-0.164,-0.046},{0.086,-0.091,0,-0.167},{-0.065,-0.037,-0.030,0}}; // Матрица B
float MAS_C[size] = { 0.061,0.080,0.045,0.146 }; // Вектор С
float MAS_X0[size]= { 0.061,0.080,0.045,0.146 }; // Начальное значение X0
float* xn = new float[size]; // В xn буду записаны результаты вычислений
float eps;
float* E = new float[size];
cout << "Введите точность: ";
cin >> eps;
int counter = 0; // Переменная для подсчета количества итераций
do
{
for (int i = 0; i < size; i++)
{
xn[i] = 0;
// МЕТОД ПРОСТОЙ ИТЕРАЦИИ
//for (int j = 0; j < size; j++)
//
xn[i] += MAS_B[i][j] * MAS_X0[j];
// МЕТОД ЗЕЙДЕЛЯ
//for (int j = 0; j < i; j++)
//
xn[i] = xn[i] + MAS_B[i][j] * xn[j];
//for (int j = i; j < size; j++)
//
xn[i] = xn[i] + MAS_B[i][j] * MAS_X0[j];
xn[i] += MAS_C[i];
E[i] = abs(xn[i] - MAS_X0[i]);
}
float max = 0;
for (int i = 0; i < size; i++)
{
if (max < E[i])
max = E[i];
MAS_X0[i] = xn[i];
}
cout << endl << counter << " Итерация: " << endl;
for (int i = 0; i < size; i++)
cout << "x" << i + 1 << "=" << xn[i] << " " << endl;
counter++;
} while (max > eps);
cout << endl << "Количество итераций: " << counter << endl;
}
Результат работы программы для метода простой итерации
Результат работы программы для метода Зейделя
Ответ: на выходе работы программы мы получили следующие
приближения корней для системы линейных уравнений:
𝑥1 = 0,0362
𝑥 = 0,0695
− Методом простой итерации (Количество итераций: 4)
{ 2
𝑥3 = 0,0122
𝑥4 = 0,1408
𝑥1 = 0,0361
𝑥 = 0,0695
− Методом Зейделя (Количество итераций: 4)
{ 2
𝑥3 = 0,0121
𝑥4 = 0,1407
Вывод: в ходе лабораторной работы мною был изучен метод простой
итерации и метод Зейделя для решения систем линейных уравнений. Данные
методы позволяют нам достаточно легко найти решения системы.
Скачать