Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- using System.Globalization;
- namespace Matrix
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("введите название файла *data#.txt*");
- int NumbX = 0;
- var userInput = Console.ReadLine();
- var data = File.ReadAllLines(userInput);
- var numberOfur = int.Parse(data[0]);
- var mathrix = new double[numberOfur, numberOfur];
- var sqrs = new double[numberOfur];
- InitialiseData(mathrix, sqrs, data, numberOfur);
- var determinant = CalculateDeterminat(mathrix, sqrs);
- var answers = CalculateAnswers(mathrix, sqrs, determinant);
- foreach (var a in answers)
- {
- Console.WriteLine($"X{NumbX} == {a}");
- NumbX++;
- }
- Console.ReadKey();
- }
- private static void InitialiseData(double[,] matrix, double[] sqrs, string[] data, int numberOfur)
- {
- for (int i = 1; i < numberOfur + 1; i++)
- {
- var dataInLine = data[i].Split().Select(x => double.Parse(x, CultureInfo.InvariantCulture)).ToArray();
- for (int j = 0; j < numberOfur; j++)
- {
- matrix[i - 1, j] = dataInLine[j];
- }
- sqrs[i - 1] = dataInLine[numberOfur];
- }
- }
- private static double[] CalculateAnswers(double[,] mathrix, double[] sqrs, double determinant)
- {
- var answers = new double[sqrs.Length];
- for (int i = 0; i < sqrs.Length; i++)
- {
- var cahce = new double[sqrs.Length];
- for (int j = 0; j < sqrs.Length; j++)
- {
- cahce[j] = mathrix[j, i];
- mathrix[j, i] = sqrs[j];
- }
- var matrix = new double[sqrs.Length, sqrs.Length];
- for (int a = 0; a < sqrs.Length; a++)
- for (int b = 0; b < sqrs.Length; b++)
- matrix[a, b] = mathrix[a, b];
- answers[i] = CalculateDeterminat(matrix, new double[sqrs.Length]) / determinant;
- for (int j = 0; j < sqrs.Length; j++)
- {
- mathrix[j, i] = cahce[j];
- }
- }
- return answers;
- }
- private static double CalculateDeterminat(double[,] matrix, double[] sqrs)
- {
- var determinant = matrix[0, 0];
- var index = 0;
- while (index < sqrs.Length - 1)
- {
- for (int i = index; i < sqrs.Length - 1; i++)
- {
- var delitel = matrix[i + 1, index] / matrix[index, index];
- for (int j = 0; j < sqrs.Length; j++)
- {
- matrix[i + 1, j] -= matrix[index, j] * delitel;
- }
- sqrs[i + 1] -= sqrs[index] * delitel;
- }
- index++;
- determinant *= matrix[index, index];
- }
- return determinant;
- }
- }
- }
Add Comment
Please, Sign In to add comment