- 151
- 38
C#:
using System;
namespace mtr1
{
class Program
{
static int int_number()
{
int number;
while ((!int.TryParse(Console.ReadLine(), out number)) || (number < 1))
{
Console.Write("Ошибка! Введите целочисленное положительное число: ");
}
return number;
}
static float float_number()
{
float number;
while (!float.TryParse(Console.ReadLine(), out number))
{
Console.Write("Ошибка! Введите целочисленное положительное число: ");
}
return number;
}
public static void Main()
{
Console.Write("Введите размерность: ");
int n = int_number();
double[] x0 = new double[n];
double[] x1 = new double[n];
double[,] matrix = new double[n, n + 1];
double[,] matrixconst = new double[n, n + 1];
double[] x = new double[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write($"Введите элемент x[{i + 1}, {j + 1}]: ");
matrix[i, j] = float_number();
matrixconst[i, j] = matrix[i, j];
}
Console.Write($"Введите число, которому равна {i + 1} строка: ");
matrix[i, n] = float_number();
matrixconst[i, n] = matrix[i, n];
x[i] = matrix[i, n];
}
bool pravda;
double e = 0.001;
int iter1 = 0;
for (int i = 0; i < n; i++)
{
x0[i] = 1;
}
do
{
iter1++;
for (int i = 0; i < n; i++)
{
double sum = 0;
for (int j = 0; j < n; j++)
{
if (j != i)
{
sum += (matrix[i, j] * x0[j]);
x1[i] = (x[i] - sum) / matrix[i, i];
x0[i] = x1[i];
}
}
}
pravda = true;
for (int i = 0; i < n; i++)
{
if (Math.Abs(x1[i] - x0[i]) > e)
{
pravda = false;
break;
}
}
}
while (pravda == false);
for (int i = 0; i < n; i++)
{
Console.WriteLine($"x{i + 1} = {Math.Round(x1[i], 4)}");
}
Console.WriteLine($"кол-во итераций {iter1} ");
Console.WriteLine();
}
}
}
ошибка в том, что он выводит решение к последнему уравнению системы. А чтобы это решение состыковывалось с остальными уравнениями системы, маленько не понимаю
Последнее редактирование: