Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 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.  
  7. namespace ConsoleApplication6
  8. {
  9. class Program
  10. {
  11. static public void Wyswietl2(double[,] tab)
  12. {
  13. for (int i = 0; i < tab.GetLength(0); i++)
  14. {
  15. for (int j = 0; j < tab.GetLength(1); j++)
  16. {
  17. Console.Write($"{tab[i, j]} ");
  18. }
  19. Console.WriteLine();
  20. }
  21. }
  22. static public void Wyswietl(double[] tab)
  23. {
  24. for (int i = 0; i < tab.Length; i++)
  25. {
  26. Console.Write($"{tab[i]} ");
  27. }
  28. Console.WriteLine();
  29. }
  30. static public void UzupelnijY(double[,] tab, double[] Yi)
  31. {
  32. for (int i = 0; i < tab.GetLength(0); i++)
  33. {
  34. tab[i, tab.GetLength(0)] = Yi[i];
  35. }
  36. }
  37. static public void DajA(double[,] tab, double[] Ai)
  38. {
  39. for (int i = 0; i < tab.GetLength(0); i++)
  40. {
  41. Ai[i] = tab[i, tab.GetLength(0)];
  42. }
  43. }
  44. }
  45. class Wielomian
  46. {
  47. static public double Licz(int n, double x)
  48. {
  49. if (n == 0)
  50. {
  51. return 1;
  52. }
  53. else
  54. {
  55. if (n == 1)
  56. {
  57. return x + 3;
  58. }
  59. else
  60. {
  61. return (n * 1.0 / (n * x * x - 2 * n * x + 3) * Licz(n - 2, x) + Licz(n - 1, x));
  62. }
  63. }
  64. }
  65. static public void Uzupelnij(double[,] tab, double[] x)
  66. {
  67. for (int i = 0; i < tab.GetLength(0); i++)
  68. {
  69. for (int j = 0; j < tab.GetLength(1) -1; j++)
  70. {
  71. tab[i, j] = Wielomian.Licz(j, x[i]);
  72. }
  73. }
  74. }
  75. static public double LiczP(double x, double[] Ai)
  76. {
  77. double S = 0;
  78. for (int i = 0; i < Ai.Length; i++)
  79. {
  80. S += Licz(i, x) * Ai[i];
  81. }
  82. return S;
  83. }
  84. }
  85. class Programik
  86. {
  87. static void Pierog(int n, double[,] A)
  88. {
  89. int r;
  90. int liczej = n + 1;
  91. double max, p;
  92.  
  93. for (int k = 0; k < n; k++)
  94. {
  95. max = A[k, k];
  96. r = k;
  97.  
  98. for (int i = k; i < n; i++)
  99. {
  100. if (Math.Abs(A[i,k]) > Math.Abs(max))
  101. {
  102. max = A[i, k];
  103. r = i;
  104. }
  105. }
  106. if (max == 0)
  107. {
  108. Console.WriteLine("Macierz układu osobliwa...");
  109. return;
  110. }
  111. else
  112. {
  113. for (int j = k; j < liczej; j++)
  114. {
  115. double pomoc = A[k, j];
  116. A[k, j] = A[r, j];
  117. A[r, j] = pomoc;
  118. }
  119.  
  120. for (int j = k; j < liczej; j++)
  121. {
  122. A[k, j] = A[k, j] / max;
  123. }
  124. for (int i = 0; i < n; i++)
  125. {
  126. if(i != k)
  127. {
  128. p = A[i, k];
  129. for (int j = k; j < liczej; j++)
  130. {
  131. A[i, j] = A[i, j] - p * A[k, j];
  132. }
  133. }
  134. }
  135. }
  136. }
  137. }
  138. static void Main(string[] args)
  139. {
  140. int n = 5;
  141. double[] Xi = new double[n + 1];
  142. double[] Yi = new double[n + 1];
  143. double[] Ai = new double[n + 1];
  144. Xi[0] = 1.5;
  145. Xi[1] = 2.0;
  146. Xi[2] = 2.5;
  147. Xi[3] = 3.5;
  148. Xi[4] = 3.8;
  149. Xi[5] = 4.1;
  150.  
  151. Yi[0] = 2.0;
  152. Yi[1] = 5.0;
  153. Yi[2] = -1.0;
  154. Yi[3] = 0.5;
  155. Yi[4] = 3.0;
  156. Yi[5] = 7.0;
  157.  
  158. double[,] macierz = new double[n + 1, n + 2];
  159.  
  160. Program.UzupelnijY(macierz, Yi);
  161. Wielomian.Uzupelnij(macierz, Xi);
  162. Pierog(n + 1, macierz);
  163.  
  164. Program.Wyswietl2(macierz);
  165. Program.DajA(macierz, Ai);
  166.  
  167. Program.Wyswietl(Ai);
  168.  
  169. double x = 1;
  170. string pomocy;
  171. do
  172. {
  173. Console.WriteLine("Wpisz wartość od 1.5 do 4.1 (0 = wyjście z pętli)");
  174. pomocy = Console.ReadLine();
  175. x = Convert.ToDouble(pomocy);
  176. Console.WriteLine("Wartość P(x): " + Wielomian.LiczP(x, Ai));
  177.  
  178. } while (x != 0);
  179. }
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement