Advertisement
Archangelpl

Untitled

Jun 12th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. // LAB_12_MO.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #define _USE_MATH_DEFINES
  6.  
  7. #include <iostream>
  8. #include <Windows.h>
  9. #include <fstream>
  10. #include <math.h>
  11.  
  12. using namespace std;
  13.  
  14. const int Wezly = 11;
  15. const double x_poczatek = -1.0, x_koniec = 1.0;
  16. double const KrokWezlow = (x_koniec - x_poczatek) / (Wezly - 1);
  17.  
  18. double xi_ro[Wezly];
  19. double ci_ro[Wezly];
  20.  
  21. double xi_cz[Wezly];
  22. double ci_cz[Wezly];
  23.  
  24. double f(double x)
  25. {
  26. return x / (1 + (20 * x*x*x*x));
  27. }
  28.  
  29.  
  30.  
  31. void BazaNewtRown()
  32. {
  33. int i = 0, j, k = 1;
  34. int n = Wezly - 1;
  35.  
  36. for (double z = x_poczatek; z <= x_koniec; z += KrokWezlow)
  37. {
  38. xi_ro[i] = z;
  39. ci_ro[i] = f(z);
  40. i++;
  41. }
  42.  
  43. for (j = n; j>0; j--)
  44. {
  45. for (i = n; i >= k; i--)
  46. {
  47. ci_ro[i] = (ci_ro[i] - ci_ro[i - 1]) / (xi_ro[i] - xi_ro[i - k]);
  48. }
  49. k++;
  50. }
  51.  
  52. }
  53.  
  54. double BazaNewtRownWar(double x)
  55. {
  56. double wynik;
  57. int n = Wezly - 1, i;
  58. wynik = ci_ro[n];
  59.  
  60. for (i = n - 1; i >= 0; i--)
  61. {
  62. wynik *= (x - xi_ro[i]);
  63. wynik += ci_ro[i];
  64. }
  65. return wynik;
  66. }
  67.  
  68. void BazaNewtCzyb()
  69. {
  70. int i, j, k = 1;
  71. int n = Wezly - 1;
  72.  
  73. for (i = 0; i<Wezly; i++)
  74. {
  75. xi_cz[i] = cos(((2.0 * i + 1.0) * M_PI) / (2.0 * Wezly));
  76. ci_cz[i] = f(xi_cz[i]);
  77. }
  78.  
  79. for (j = n; j>0; j--)
  80. {
  81. for (i = n; i >= k; i--)
  82. {
  83. ci_cz[i] = (ci_cz[i] - ci_cz[i - 1]) / (xi_cz[i] - xi_cz[i - k]);
  84. }
  85. k++;
  86. }
  87. }
  88.  
  89. double BazaNewtCzybWar(double x)
  90. {
  91. double wynik;
  92. int n = Wezly - 1, i;
  93. wynik = ci_cz[n];
  94.  
  95. for (i = n - 1; i >= 0; i--)
  96. {
  97. wynik *= (x - xi_cz[i]);
  98. wynik += ci_cz[i];
  99. }
  100.  
  101. return wynik;
  102. }
  103.  
  104. int main()
  105. {
  106. fstream dane, blad;
  107.  
  108. const int N = 200;
  109.  
  110. double x = x_poczatek;
  111. double krok = (x_koniec - x_poczatek) / N;
  112.  
  113. BazaNewtRown();
  114. BazaNewtCzyb();
  115.  
  116. dane.open("wyniki.txt", fstream::out);
  117. blad.open("blad.txt", fstream::out);
  118. for (x = x_poczatek; x < x_koniec; x += krok)
  119. {
  120.  
  121. dane << x << " " << f(x) << " " << BazaNewtCzybWar(x) << " " << BazaNewtRownWar(x) << endl;
  122.  
  123.  
  124. }
  125. dane.close();
  126.  
  127. system("Pause");
  128. return 0;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement