Загрузка данных
using System;
namespace SimpleIterationMethodApp
{
class Program
{
static void Main(string[] args)
{
// Ввод размерности системы
Console.Write("Введите количество уравнений (n): ");
int n = int.Parse(Console.ReadLine());
// Инициализация массивов
double[,] A = new double[n, n];
double[] B = new double[n];
double[] X0 = new double[n];
double[] X = new double[n];
// Ввод матрицы коэффициентов A
Console.WriteLine("\nВведите коэффициенты исходной матрицы A (построчно):");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
// Для удобства пользователя выводим индексы начиная с 1
Console.Write($"A[{i + 1},{j + 1}] = ");
A[i, j] = double.Parse(Console.ReadLine());
}
}
// Ввод вектора свободных членов B
Console.WriteLine("\nВведите свободные члены (вектор B):");
for (int i = 0; i < n; i++)
{
Console.Write($"B[{i + 1}] = ");
B[i] = double.Parse(Console.ReadLine());
}
// Ввод точности
Console.Write("\nВведите требуемую точность (e, например 0,01): ");
double e = double.Parse(Console.ReadLine());
// Ввод начального приближения X0
Console.WriteLine("\nВведите начальное приближение (вектор X0):");
for (int i = 0; i < n; i++)
{
Console.Write($"X0[{i + 1}] = ");
X0[i] = double.Parse(Console.ReadLine());
}
Console.WriteLine("\nВыполняется расчет...\n");
// --- НАЧАЛО АЛГОРИТМА СТРОГО ПО БЛОК-СХЕМЕ ---
double w, s, p;
do
{
w = 0;
for (int i = 0; i < n; i++)
{
s = 0;
// Блок i <> 1 (в программировании i != 0)
if (i != 0)
{
for (int j = 0; j < i; j++)
{
s += A[i, j] * X0[j];
}
}
// Блок i <> n (в программировании 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();
}
}
}