Решение уравнений методами Простой итерации и методом Зейделя программным способом. 3лаба. Отчет По дисциплине Вычислительная математика Лабораторная работа 3
Скачать 419.19 Kb.
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Нижегородский государственный архитектурно- строительный университет» (ННГАСУ) Факультет инженерно-экологических систем и сооружений Кафедра информационных систем и технологий Отчет По дисциплине: Вычислительная математика Лабораторная работа №3
Нижний Новгород 2019 Лабораторная работа №3 Цель работы: Решить систему линейных уравнений Задания: Решить вручную систему уравнений методами Простой итерации и методом Зейделя Сравнить получившиеся значения Вариант №14 Проверка условий сходимости итерационного процесса Итерационный процесс будет сходящимся, если модуль коэффициента на главной диагонали больше суммы (или равен сумме) модулей остальных элементов строки (свободные члены при этом не учитываются) Поменяем местами 2 и 3 уравнение, а потом 1 и 2. |7|>=|-1|+|4| |15|>=|2|+|5| |18|>=|10|+|2| Условие сходимости выполняется. Метод Простой итерации Приведем к виду: N=1 x1=0.42 - 0 • 0.57 - 0 • 0.14=0.42 x2=0.13 - 0 • 0.13 - 0 • 0.33 = 0.13 x3=-0.27- 0 • 0.55 - 0 • 0.11=-0.27 N=2 x1=0.42 - 0.13 • 0.57 -(-0.27) • 0.14=0,31 x2=0.13 - 0.42 • 0.13 - (-0.27) • 0.33 = 0,168 x3=-0.27- 0.42 • 0.55 - 0.13 • 0.11=-0,53 … N=13 x1= 0,22 x2= 0,24 x3= -0,43 Решение Простой итерации при помощи программы Sub Main() Dim i, j, n, k As Integer n = 2 Dim a = New Double(2, 2) {{7, 4, -1}, {2, 15, 5}, {10, 2, 18}} Dim b = New Double(2) {3, 2, -5} Dim x(n), y(n), e, priblizh, priblizh_1, raznost As Double Console.WriteLine("Enter E:") e = Console.ReadLine() For i = 0 To n x(i) = 0 Next k = 1 While True For y(i) = b(i) / a(i, i) For j = 0 To n If j <> i Then y(i) += -(a(i, j) * x(j) / a(i, i)) End If Next Next priblizh = 0 For i = 0 To n raznost = Math.Abs(x(i) - y(i)) If raznost > priblizh Then priblizh = raznost End If Next If k <> 1 Then If priblizh <= e Then For i = 0 To n Console.WriteLine("x({0})={1}", i, y(i)) Next Console.Write("Число итераций={0}", k) Exit While End If If priblizh >= priblizh_1 Then Console.Write("Не сходится") Console.Write("Число итераций={0}", k) Exit While End If End If For i = 0 To n x(i) = y(i) Next priblizh_1 = priblizh k = k + 1 End While Console.ReadKey() End Sub Решение в программе Простой итерации |