Advertisement
Amegha

HR25

May 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace hf25
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. FileStream f = new FileStream("datahf25.txt", FileMode.Open, FileAccess.Read);
  15. StreamReader s = new StreamReader(f);
  16.  
  17. string line = s.ReadLine();
  18. Console.WriteLine(line);
  19. int w = line.Length;
  20. int k = w - 1;
  21. for (; k >= 0; k--)
  22. {
  23. if (line[k] == ' ') break;
  24. }
  25. string r = line.Substring(k + 1, w - 1 - k);
  26. int n = int.Parse(r);
  27.  
  28. double[,] a = new double[n, n];
  29. string[] sn;
  30. char[] sep = new char[] { ' ' };
  31.  
  32. for (int i = 0; i < n; i++)
  33. {
  34. line=s.ReadLine();
  35. sn=line.Split(sep);
  36. int j = 0;
  37. for (int z = 0; z < sn.Length; z++)
  38. {
  39. if (sn[z].Length == 0) continue;
  40. double d = double.Parse(sn[z]);
  41. a[i, j] = d;
  42. Console.Write("{0,8:f2}", d);
  43.  
  44. if (++j > n) break;
  45. }
  46. Console.WriteLine();
  47. }
  48. s.Close();
  49.  
  50. double[,] o = new double[n,n];
  51. Fadeev(o, a, n);
  52.  
  53. PrintM("matrix a", a, n);
  54. PrintM("obratnaya", o, n);
  55.  
  56. double[,] e = new double[n, n];
  57. for (int i = 0; i < n; i++)
  58. for (int j = 0; j < n; j++)
  59. {
  60. double sum = 0.0;
  61. for (int m = 0; m < n; m++)
  62. sum += a[i, m] * o[m, j];
  63. e[i, j] = sum;
  64. }
  65. PrintM("matrix e=a*o", e, n);
  66.  
  67. Console.ReadKey();
  68.  
  69. }
  70. static void PrintM(string text, double[,] a, int n)
  71. {
  72. Console.WriteLine(text);
  73. for (int i = 0; i < n; i++)
  74. {
  75. for (int j = 0; j < n; j++)
  76. Console.Write("{0,8:F2}", a[i, j]);
  77. Console.WriteLine();
  78. }
  79. }
  80. //-------------------------------------------
  81. static bool Fadeev(double[,] r, double[,] a, int n)
  82. {
  83. double[,] b = new double[n, n];
  84. for (int i = 0; i < n; i++)
  85. {
  86. for (int j = 0; j < n; j++)
  87. b[i, j] = 0;
  88. b[i, i] = 1;
  89. }
  90. // PrintM(" обратная матрица B", b, n);
  91.  
  92. double[,] u = new double[n, n];
  93. double p = 0.0, s = 0.0;
  94.  
  95. for (int k = 1; k <= n; k++)
  96. {
  97.  
  98. // Console.WriteLine("{0}", k);
  99. for (int i = 0; i < n; i++)
  100.  
  101. for (int j = 0; j < n; j++)
  102. {
  103. s = 0.0;
  104.  
  105. for (int m = 0; m < n; m++)
  106. {
  107. s += a[i, m] * b[m, j];
  108. }
  109. u[i, j] = s;
  110. }
  111. // PrintM(" матрица U", u, n);
  112.  
  113. s = 0.0;
  114. for (int i = 0; i < n; i++)
  115. s += u[i, i];
  116. // Console.WriteLine("{0}", s);
  117.  
  118. p = s / k;
  119. // Console.WriteLine("{0}", p);
  120.  
  121. if (k == n) break;
  122.  
  123. for (int i = 0; i < n; i++)
  124. {
  125. for (int j = 0; j < n; j++)
  126. b[i, j] = u[i, j];
  127. b[i, i] -= p;
  128. }
  129. // PrintM(" матрица B", b, n);
  130. }
  131.  
  132. bool z = true;
  133. if (p == 0.0) z = false;
  134. else for (int i = 0; i < n; i++)
  135. for (int j = 0; j < n; j++)
  136. r[i, j] = b[i, j] / p;
  137.  
  138. return z;
  139. }
  140. /*
  141. Fadeev(r, a, n);
  142. PrintM(" матрица R", r, n);
  143.  
  144. //вектор свободных членов
  145. double[] B = new double[n]
  146. {22,19,-10,49};
  147.  
  148. double[,] e = new double[n, n];
  149. for (int i = 0; i<n; i++)
  150. for (int j = 0; j<n;j++)
  151. { double s = 0.0;
  152. for( int m = 0; m<n; m++)
  153. s+=a[i, m]*r[m, j];
  154. e[i, j] = s;
  155. }
  156. PrintM("матрица E", e, n);
  157. */
  158. }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement