Решение СЛАУ методом итераций - C#
Формулировка задачи:
Ребят, прошу помощи. В математике не силен, а надо сделать приложение для решения слау методом итераций. Нашел код java, переписал на c#, но он зацикливается, а понять не могу, из-за чего так. Вот сам код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IterationConsole
{
class Program
{
static void Main(string[] args)
{
Console.Write("n=");
int size = Int32.Parse(Console.ReadLine());
double[,] matrix = new double[size, size + 1];
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size + 1; j++)
{
Console.Write(i + "," + j + "=");
matrix[i, j] = Double.Parse(Console.ReadLine());
}
}
Console.Write("eps=");
double eps = Double.Parse(Console.ReadLine());
double[] previousVariableValues = new double[size];
for (int i = 0; i < size; i++)
{
previousVariableValues[i] = 0.0;
}
while (true)
{
double[] currentVariableValues = new double[size];
for (int i = 0; i < size; i++)
{
// Инициализируем i-ую неизвестную значением
// свободного члена i-ой строки матрицы
currentVariableValues[i] = matrix[i,size];
// Вычитаем сумму по всем отличным от i-ой неизвестным
for (int j = 0; j < size; j++)
{
if (i != j)
{
currentVariableValues[i] -= matrix[i,j] * previousVariableValues[j];
}
}
// Делим на коэффициент при i-ой неизвестной
currentVariableValues[i] /= matrix[i,i];
}
double error = 0.0;
for (int i = 0; i < size; i++)
{
error += Math.Abs(currentVariableValues[i] - previousVariableValues[i]);
}
if (error < eps)
{
break;
}
previousVariableValues = currentVariableValues;
}
for (int i = 0; i < size; i++)
{
Console.Write(previousVariableValues[i] + " ");
}
Console.ReadLine();
}
}
}Решение задачи: «Решение СЛАУ методом итераций»
textual
Листинг программы
for (int i = 0; i < size; i++)
{
error += Math.Abs(currentVariableValues[i] - previousVariableValues[i]);
// переместить }
if (error < eps)
{
break(2); //или как там прервать два цикла.... for +while
}
// сюда