Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void resp(double a, double b, double e);
  7. void resn(double a, double b, double e);
  8. void resh(double a, double b, double e);
  9. void resk(double a, double b, double e);
  10.  
  11. double form(double x)
  12. {
  13. return pow(x, 2) + 0.5*pow(x, 2) - 0.5 * x;
  14. }
  15.  
  16. double form2(double x)
  17. {
  18. return pow(x, 3) - x + 75;
  19. }
  20.  
  21. double _form2(double x)
  22. {
  23. return 12 + pow(x, 2) ;
  24. }
  25.  
  26. int main()
  27. {
  28. setlocale(LC_ALL, "rus");
  29. int s;
  30. double a, b, x, e;
  31. bool t = true;
  32. while (t)
  33. {
  34. cout << "0) выход\n1) ввод значений\n2) Метод половинного деления\n3) Метод простых итераций\n4) Метод Ньютона\n5) Метод хорд\n6) Комбинированный метод\n";
  35. cin >> s;
  36. cout << endl << endl;
  37. switch (s)
  38. {
  39. case 0:
  40. t = false;
  41. break;
  42. case 1:
  43. cout << "a = ";
  44. cin >> a;
  45. cout << "b = ";
  46. cin >> b;
  47. cout << "E = ";
  48. cin >> e;
  49. cout << endl << endl;
  50. cout << "a = " << a << ", b = " << b << ", E = " << e << endl << endl;
  51. break;
  52. case 2:
  53. resp(a, b, e);
  54. break;
  55. case 3:
  56.  
  57. break;
  58. case 4:
  59. resn(a, b, e);
  60. break;
  61. case 5:
  62. resh(a, b, e);
  63. break;
  64. case 6:
  65. resk(a, b, e);
  66. break;
  67. default:
  68. break;
  69. }
  70. }
  71. }
  72.  
  73. void resp(double a, double b, double e)
  74. {
  75. double x = 0, fa, fb, fx;
  76. while (true)
  77. {
  78. x = (a + b) / 2;
  79. if (b - a < 2 * e)
  80. {
  81. cout << "Ответ: " << x << endl << endl;
  82. break;
  83. }
  84. fa = form(a);
  85. fb = form(b);
  86. fx = form(x);
  87. if (((fa < 0) && (fx > 0)) || ((fa > 0) && (fx < 0))) b = x;
  88. else if (((fb < 0) && (fx > 0)) || ((fb > 0) && (fa < 0))) a = x;
  89. }
  90. }
  91.  
  92. void resn(double a, double b, double e)
  93. {
  94. double xn, x;
  95. if (form(a) * _form2(a) > 0) x = a;
  96. else x = b;
  97. while (true)
  98. {
  99. xn = x - form(x) / form2(x);
  100. if (abs(xn - x) < e)
  101. {
  102. cout << "Ответ: " << xn << endl << endl;
  103. break;
  104. }
  105. x = xn;
  106. }
  107. }
  108.  
  109. void resk(double a, double b, double e)
  110. {
  111. double xn, x, xn2, x2;
  112. if (form(a) < 0 && form(b) > 0)
  113. {
  114. x = a;
  115. x2 = b;
  116. while (true)
  117. {
  118. xn = x - form(x) / (form(x2) - form(x)) * (x2 - x);
  119. xn2 = x2 - form(x2) / _form2(x2);
  120. if (abs(x2 - x) < e)
  121. {
  122. cout << "Ответ: " << (x + x2) / 2 << endl << endl;
  123. }
  124. }
  125. }
  126. }
  127.  
  128. void resh(double a, double b, double e)
  129. {
  130. double xn, x;
  131. if (form(b) < 0)
  132. {
  133. x = b;
  134. while (true)
  135. {
  136. xn = x - form(x) / (form(x) - form(a)) * (x - a);
  137. if (abs(xn - x) < e)
  138. {
  139. cout << "Ответ: " << xn << endl << endl;
  140. break;
  141. }
  142. x = xn;
  143. }
  144. }
  145. else
  146. {
  147. x = a;
  148. while (true)
  149. {
  150. xn = x - form(x) / (form(b) - form(x)) * (b - x);
  151. if (abs(xn - x) < e)
  152. {
  153. cout << "Ответ: " << xn << endl << endl;
  154. break;
  155. }
  156. x = xn;
  157. }
  158. }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement