Advertisement
shakhawatt

DR

Dec 26th, 2021
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. using namespace std;
  4.  
  5. class DerivativeForward
  6. {
  7. public:
  8. void askN();
  9. void askX();
  10. void askF();
  11. void askXX();
  12. void forwardTable();
  13. void calcd1();
  14. void calcd2();
  15.  
  16. void findH();
  17. void solve();
  18. void fillDelF();
  19. void findS();
  20. private:
  21. double XX, x[10], f[10][10], p[10],diff[10][10],P1,delF[10],f1,f2;
  22. int n;
  23. double h,s;
  24.  
  25. };
  26.  
  27. void DerivativeForward::askX()
  28. {
  29. cout << endl;
  30. for(int i = 0; i<n; i++ )
  31. {
  32. cout << "ENter X[" << i << "] : ";
  33. cin >> x[i];
  34. }
  35. cout << endl;
  36. }
  37.  
  38. void DerivativeForward::askF()
  39.  
  40. {
  41.  
  42. for(int j = 0; j<n; j++ )
  43. {
  44. cout << "ENter F[" << j << "] : ";
  45. cin >> f[0][j];
  46. }
  47. cout << endl;
  48. }
  49. void DerivativeForward::askXX()
  50. {
  51.  
  52. cout << "Enter X for which the value is to be found: ";
  53. cin >> XX;
  54. }
  55.  
  56. void DerivativeForward::forwardTable()
  57. {
  58. for(int i = 1; i < n; i++)
  59. {
  60. for(int j = 0; j< n-i; j++)
  61. {
  62. f[i][j] = (f[i-1][j+1]-f[i-1][j]);
  63.  
  64. if(f[i][j] < 0.0000009 && f[i][j] > 0 || f[i][j] >-0.0000009 && f[i][j]<0)
  65. {
  66. f[i][j] = 0;
  67. }
  68. }
  69. }
  70. cout << endl;
  71. cout << "Sn\tXi\tf(Xi)\t";
  72. for(int i = 0; i <n-1; i++)
  73. {
  74. cout << i+1 << " diff\t";
  75. }
  76. cout << endl;
  77. for(int i = 0; i < n; i++)
  78. {
  79. cout <<i+1 <<"\t" << x[i]<< "\t";
  80. for(int j = 0; j< n-i; j++)
  81. {
  82. cout << f[j][i] << "\t";
  83. }
  84. cout << endl;
  85. }
  86. }
  87.  
  88. void DerivativeForward::findH()
  89. {
  90. h = x[1] - x[0];
  91.  
  92. }
  93. void DerivativeForward::findS()
  94. {
  95. s = (XX - x[0])/h;
  96.  
  97. }
  98. void DerivativeForward::solve()
  99. {
  100. findH();
  101. findS();
  102. fillDelF();
  103. calcd1();
  104. calcd2();
  105.  
  106. cout <<endl << "The value of f1 :" << f1;
  107. cout <<endl << "The value of f2 :" << f2;
  108. cout << endl << endl;
  109.  
  110. }
  111.  
  112. void DerivativeForward::fillDelF()
  113. {
  114. for(int i = 1; i<10; i++)
  115. {
  116. if(i<n)
  117. delF[i]=f[i][0];
  118. else
  119. delF[i] = 0;
  120. }
  121. }
  122.  
  123. void DerivativeForward::calcd1()
  124. {
  125. f1 = 1 / h * ( delF[1] + 1/2.0 * (2 * s -1 ) * delF[2] + 1 / (6.0) * (3*s*s - 6*s +2)*
  126. delF[3] + 1 /(24.0) *( 4*s*s*s-18*s*s+22*s-6)*delF[4]);
  127.  
  128. }
  129.  
  130. void DerivativeForward::calcd2()
  131. {
  132.  
  133. f2 = 1 / (h*h) * (delF[2] + 1/6.0 * (6*s-6) * delF[3] + 1/24.0 *(12*s*s-
  134. 36*s+22)*delF[4]);
  135.  
  136. }
  137. void DerivativeForward::askN()
  138. {
  139. cout << "Enter the number of values: ";
  140. cin >> n;
  141. }
  142. int main()
  143. {
  144.  
  145. DerivativeForward d1;
  146. d1.askN();
  147. d1.askX();
  148. d1.askF();
  149. d1.askXX();
  150. d1.forwardTable();
  151. d1.solve();
  152. }
  153.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement