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]
- {
- {0.0, 0.0, 0.0, 1.0},
- {0.0, 0.0, 1.0,0.0},
- {0.0,1.0, 0.0, 0.0},
- {1.0, 0.0, 0.0, 0.0}
- };
- double[] B = new double[n] { 1.0, 1.0, 1.0, 1.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++) //цыкл перебора столбцов
- {
- int l = k+1;
- while (a[k, k] == 0)
- {
- for (int i = 0; i <l;i++ ) SdvigStrokiVverh(a, b, l, n);
- l += 1;
- }
- 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];
- }
- }
- static void SdvigStrokiVverh(double [,] a,double [] b, int l, int n)
- {
- for (int i = 0; i < n; i++)
- {
- double r = a[l,i];
- a[l, i] = a[l-1,i];
- a[l - 1, i] = r;
- }
- double s = b[l];
- b[l] = b[l - 1];
- b[l - 1] = s;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment