Решение СЛАУ методом итераций - 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
                }
// сюда

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы