Решение СЛАУ методом итераций - 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
- }
- // сюда
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д