Guest User

Untitled

a guest
Mar 17th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. // Решение СЛАУ методом Гауса
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7. namespace HM51
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. const int n = 4;
  14. double[,] A = new double[n, n]
  15. {
  16. {2.0, 4.0, 2.0, 4.0},
  17. {1.0, 1.0, 6.0, 3.0},
  18. {-1.0, -4.0, 1.0, 1.0},
  19. {4.0, 5.0, 9.0, 12.0}
  20. };
  21. double[] B = new double [n] { 22.0, 19.0, -10.0, 49.0 };
  22. double[] X = new double [n];
  23. PrintM("Matrix A Vector B", A, B, n);
  24. Gusev(X,A,B,n);
  25. Console.WriteLine("Vecrot X");
  26. for (int i = 0; i < n; i++) Console.WriteLine("{0,8:F2}",X[i]);
  27. Console.ReadKey();
  28. }
  29. //-------------------------------------------------------------------------
  30. static void PrintM(string text, double [,] A, double [] B, int n)
  31. {
  32. Console.WriteLine(text);
  33. for (int i = 0; i < n; i++)
  34. {
  35. for (int g = 0; g < n; g++) Console.Write("{0,8:F2}",A[i,g]);
  36. Console.WriteLine("{0,14:F2}", B[i]);
  37. }
  38. }
  39. //------------------------------------------------------------------------
  40. static void Gusev(double [] x, double [,] z, double [] y, int n)
  41. {
  42. double[,] a = new double[n, n];
  43. Array.Copy(z,a,z.Length);
  44. double[] b = new double[n];
  45. Array.Copy(y, b, y.Length);
  46. PrintM("Matrix A Vector B", a, b, n);
  47. for (int k = 0; k < n - 1; k++)
  48. { // здесь обратиться к функции, которая переставляет строки
  49. for (int i = k + 1; i < n; i++)
  50. {
  51. double r = a[i, k] / a[k, k];
  52. for (int g = k; g < n; g++) a[i, g] -= r * a[k, g];
  53. b[i] -= r * b[k];
  54. }
  55. PrintM("Gusev", a, b, n);
  56. }
  57. //Вычисление корней системы
  58. x[n - 1] = b[n - 1] / a[n - 1, n - 1];
  59. for (int i = n - 2; i >= 0; i--)
  60. {
  61. double s = 0.0;
  62. for (int g = i + 1; g < n; g++) s += a[i, g] * x[g];
  63. x[i] = (b[i] - s) / a[i, i];
  64. }
  65. }
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment