using System;
namespace SimpleIterationMethodApp
{
class Program
{
static void Main(string[] args)
{
int n = 3;
// ИСХОДНАЯ матрица A (до ручных преобразований, из 1-го фото)
double[,] A = {
{ 4.0, -1.0, -0.2 },
{ -0.4, 2.0, -0.3 },
{ 0.3, 0.6, -5.0 }
};
// ИСХОДНЫЙ вектор B (правая часть уравнений, из 1-го фото)
double[] B = { 1.0, 0.8, 2.0 };
double e = 0.01;
// Нулевое приближение из таблицы (x1, x2, x3 из нулевой строки)
double[] X0 = { 0.25, 0.4, -0.4 };
double[] X = new double[n];
double w, s, p;
do
{
w = 0;
for (int i = 0; i < n; i++)
{
s = 0;
// Блок i <> 1 (в C# индексация с нуля, поэтому i != 0)
if (i != 0)
{
for (int j = 0; j < i; j++)
{
s += A[i, j] * X0[j];
}
}
// Блок i <> n (в C# последний индекс n-1, поэтому i != n-1)
if (i != n - 1)
{
for (int j = i + 1; j < n; j++)
{
s += A[i, j] * X0[j];
}
}
// Строго по блок-схеме: вычисление с делением на диагональный элемент
X[i] = (B[i] - s) / A[i, i];
p = Math.Abs(X[i] - X0[i]);
if (p > w)
{
w = p;
}
}
if (w > e)
{
for (int i = 0; i < n; i++)
{
X0[i] = X[i];
}
}
} while (w > e);
Console.WriteLine("Ответ:");
for (int i = 0; i < n; i++)
{
Console.WriteLine($"x{i + 1} = {X[i]:F3}");
}
Console.ReadLine();
}
}
}