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;
- namespace HM51
- {
- class Program
- {
- static void Main(string[] args)
- {
- const int n = 4;
- double[,] A = new double[n, n]
- {
- {2.0, 4.0, 2.0, 4.0},
- {1.0, 1.0, 6.0, 3.0},
- {-1.0, -4.0, 1.0, 1.0},
- {4.0, 5.0, 9.0, 12.0}
- };
- double[] B = new double [n] { 22.0, 19.0, -10.0, 49.0 };
- double[] X = new double [n];
- PrintM("Matrix A Vector B", A, B, n);
- Gusev(X,A,B,n);
- Console.WriteLine("Vecrot X");
- for (int i = 0; i < n; i++) Console.WriteLine("{0,8:F2}",X[i]);
- Console.ReadKey();
- }
- //-------------------------------------------------------------------------
- static void PrintM(string text, double [,] A, double [] B, int n)
- {
- Console.WriteLine(text);
- for (int i = 0; i < n; i++)
- {
- for (int g = 0; g < n; g++) Console.Write("{0,8:F2}",A[i,g]);
- Console.WriteLine("{0,14:F2}", B[i]);
- }
- }
- //------------------------------------------------------------------------
- static void Gusev(double [] x, double [,] z, double [] y, int n)
- {
- double[,] a = new double[n, n];
- Array.Copy(z,a,z.Length);
- double[] b = new double[n];
- Array.Copy(y, b, y.Length);
- PrintM("Matrix A Vector B", a, b, n);
- for (int k = 0; k < n - 1; k++)
- { // здесь обратиться к функции, которая переставляет строки
- for (int i = k + 1; i < n; i++)
- {
- double r = a[i, k] / a[k, k];
- for (int g = k; g < n; g++) a[i, g] -= r * a[k, g];
- b[i] -= r * b[k];
- }
- PrintM("Gusev", a, b, n);
- }
- //Вычисление корней системы
- x[n - 1] = b[n - 1] / a[n - 1, n - 1];
- for (int i = n - 2; i >= 0; i--)
- {
- double s = 0.0;
- for (int g = i + 1; g < n; g++) s += a[i, g] * x[g];
- x[i] = (b[i] - s) / a[i, i];
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment