Advertisement
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;
- namespace hf25
- {
- class Program
- {
- static void Main(string[] args)
- {
- FileStream f = new FileStream("datahf25.txt", FileMode.Open, FileAccess.Read);
- StreamReader s = new StreamReader(f);
- string line = s.ReadLine();
- Console.WriteLine(line);
- int w = line.Length;
- int k = w - 1;
- for (; k >= 0; k--)
- {
- if (line[k] == ' ') break;
- }
- string r = line.Substring(k + 1, w - 1 - k);
- int n = int.Parse(r);
- double[,] a = new double[n, n];
- string[] sn;
- char[] sep = new char[] { ' ' };
- for (int i = 0; i < n; i++)
- {
- line=s.ReadLine();
- sn=line.Split(sep);
- int j = 0;
- for (int z = 0; z < sn.Length; z++)
- {
- if (sn[z].Length == 0) continue;
- double d = double.Parse(sn[z]);
- a[i, j] = d;
- Console.Write("{0,8:f2}", d);
- if (++j > n) break;
- }
- Console.WriteLine();
- }
- s.Close();
- double[,] o = new double[n,n];
- Fadeev(o, a, n);
- PrintM("matrix a", a, n);
- PrintM("obratnaya", o, n);
- double[,] e = new double[n, n];
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- {
- double sum = 0.0;
- for (int m = 0; m < n; m++)
- sum += a[i, m] * o[m, j];
- e[i, j] = sum;
- }
- PrintM("matrix e=a*o", e, n);
- Console.ReadKey();
- }
- static void PrintM(string text, double[,] a, int n)
- {
- Console.WriteLine(text);
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- Console.Write("{0,8:F2}", a[i, j]);
- Console.WriteLine();
- }
- }
- //-------------------------------------------
- static bool Fadeev(double[,] r, double[,] a, int n)
- {
- double[,] b = new double[n, n];
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- b[i, j] = 0;
- b[i, i] = 1;
- }
- // PrintM(" обратная матрица B", b, n);
- double[,] u = new double[n, n];
- double p = 0.0, s = 0.0;
- for (int k = 1; k <= n; k++)
- {
- // Console.WriteLine("{0}", k);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- {
- s = 0.0;
- for (int m = 0; m < n; m++)
- {
- s += a[i, m] * b[m, j];
- }
- u[i, j] = s;
- }
- // PrintM(" матрица U", u, n);
- s = 0.0;
- for (int i = 0; i < n; i++)
- s += u[i, i];
- // Console.WriteLine("{0}", s);
- p = s / k;
- // Console.WriteLine("{0}", p);
- if (k == n) break;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- b[i, j] = u[i, j];
- b[i, i] -= p;
- }
- // PrintM(" матрица B", b, n);
- }
- bool z = true;
- if (p == 0.0) z = false;
- else for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- r[i, j] = b[i, j] / p;
- return z;
- }
- /*
- Fadeev(r, a, n);
- PrintM(" матрица R", r, n);
- //вектор свободных членов
- double[] B = new double[n]
- {22,19,-10,49};
- double[,] e = new double[n, n];
- for (int i = 0; i<n; i++)
- for (int j = 0; j<n;j++)
- { double s = 0.0;
- for( int m = 0; m<n; m++)
- s+=a[i, m]*r[m, j];
- e[i, j] = s;
- }
- PrintM("матрица E", e, n);
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement