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