fork download
  1. #include <math.h>
  2. #include <stdio.h>
  3. using namespace std;
  4.  
  5. double
  6. f(double x)
  7. {
  8. return 3 * pow(x, 4) + 4 * pow(x, 3) - 12 * pow(x, 2) - 5;
  9. //—Ñ—É–Ω–∫—Ü–∏—è
  10. }
  11. double
  12. df(double x)
  13. {
  14. return 12 * pow(x, 3) + 12 * pow(x, 2) - 24 * x;
  15. //–ø—63–æ–∏–∑–≤–æ–¥–Ω–∞—è
  16. }
  17.  
  18.  
  19.  
  20. /**INDENT** Error@4: Unbalanced parens */
  21. #if 0
  22. double
  23. dixit(double a, double b, double eps)//–º–µ—Ç–æ–¥–¥–∏—Ö–æ—Ç–æ–º–∏–∏, —Ñ—É–Ω—Ü–∏—èf(x) = 0 – Ω–µ–ø—7–µ—7—ã–≤–Ω–∞//–Ω–∞–æ—Ç—7–µ–∑–∫–µ[a;
  24. /**INDENT** Warning@5: Extra ] */
  25. b] – ∏f(a) * f(b) < 0.
  26. {
  27. double c;
  28. do {
  29. c = (a + b) / 2.0;
  30. //–Ω–∞—Ö–æ–¥–∏–º—Ç–æ—á–∫—Éc = (a + b) / 2 if (f(a) * f(c) < 0)
  31. b = c;
  32. /**INDENT** Error@8: Unbalanced parens */
  33. //–µ—Å–ª–∏—ç—Ç–æ—É—Å–ª–æ–≤–∏–µ–≤—ã–ø–æ–ª–Ω–µ–Ω–æ, —Ç–æ–∫–æ—119–µ–Ω—å–ª–µ–∂–∏—Ç–Ω–∞[a;
  34. /**INDENT** Warning@9: Extra ] */
  35. c]
  36. /**INDENT** Error@9: Unmatched 'else' */
  37. else
  38. if (f(b) * f(c) < 0)
  39. a = c;
  40. /**INDENT** Error@10: Unbalanced parens */
  41. //–∏–Ω–∞—á–µ–∫–æ—119–µ–Ω—å–ª–µ–∂–∏—Ç–Ω–∞[c;
  42. /**INDENT** Warning@11: Extra ] */
  43. b]
  44. /**INDENT** Error@11: Unmatched 'else' */
  45. else {
  46. cout << "–ö–æ—175–µ–Ω—å –Ω–µ –Ω–∞–π–¥–µ–Ω" << endl;
  47. //–µ—Å–ª–∏–æ–±–∞—É—Å–ª–æ–≤–∏—è–Ω–µ–≤—ã–ø–æ–ª–Ω—è—é—Ç—Å—è, —Ç–æ–∫–æ—175–Ω—è–Ω–µ—Ç–Ω–∞–¥–∞–Ω–Ω–æ–º–ø—175–æ–º–µ–∂—É—Ç–∫–µreturn 0;
  48. }
  49. } while (fabs(b - a) > eps);
  50. //–ø–æ–∫–∞–∑–Ω–∞—á–µ–Ω–∏–µ–≤—Ñ—É–Ω–∫—Ü–∏–∏–≤—Ç–æ—á–∫–µb - a – ±–æ–ª—å—à–µ–∑–∞–¥–∞–Ω–Ω–æ–π—Ç–æ—á–Ω–æ—Å—Ç–∏, //–≤—ã–ø–æ–ª–Ω—è–µ–º–∞–ª–≥–æ—63–∏—Ç–º–Ω–∞—Ö–æ–∂–¥–µ–Ω–∏—è—Å, –æ–ø–∏—Å–∞–Ω–Ω—ã–π—Å–≤–µ—63—Ö—Éreturn c;
  51. //–≤–æ–∑–≤—63–∞—â–∞–µ–º–∑–Ω–∞—á–µ–Ω–∏–µ—Å–ø–æ—Å–ª–µ–≤—ã–ø–æ–ª–Ω–µ–Ω–∏—è—Ü–∏–∫–ª–∞
  52. } double
  53. /**INDENT** Error@15: Unbalanced parens */
  54. Hord(double a, double b, double eps)//–º–µ—Ç–æ–¥—Ö–æ—7–¥//—7–∞–∑–±–∏–µ–Ω–∏–µ–æ—Ç—7–µ–∑–∫–∞[a;
  55. /**INDENT** Warning@16: Extra ] */
  56. b] – Ω–∞–¥–≤–∞–æ—Ç—7–µ–∑–∫–∞—Å–ø–æ–º–æ—â—å—é—Ö–æ—7–¥—ã–∏–≤—ã–±–æ—7–µ–Ω–æ–≤–æ–≥–æ–æ—Ç—7–µ–∑–∫–∞–æ—Ç—Ç–æ—á–∫–∏//–ø–µ—7–µ—Å–µ—á–µ–Ω–∏—è—Ö–æ—7–¥—ã—Å–æ—Å—å—é–∞–±—Å—Ü–∏—Å—Å–¥–æ–Ω–µ–ø–æ–¥–≤–∏–∂–Ω–æ–π—Ç–æ—á–∫–∏, –Ω–∞–∫–æ—Ç–æ—7–æ–º//—Ñ—É–Ω–∫—Ü–∏—è–º–µ–Ω—è–µ—Ç–∑–Ω–∞–∫–∏—Å–æ–¥–µ—7–∂–∏—Ç—7–µ—à–µ–Ω–∏–µ, –ø—7–∏—á—ë–º–ø–æ–¥–≤–∏–∂–Ω–∞—è—Ç–æ—á–∫–∞//–ø—7–∏–±–ª–∏–∂–∞–µ—Ç—Å—è–∫Œµ-–æ–∫—7–µ—Å—Ç–Ω–æ—Å—Ç–∏—7–µ—à–µ–Ω–∏—è.
  57. {
  58. while (fabs(b - a) > eps)
  59. //–ø–æ–∫–∞–∑–Ω–∞—á–µ–Ω–∏–µ–≤—Ñ—É–Ω–∫—Ü–∏–∏–≤—Ç–æ—á–∫–µb - a – ±–æ–ª—å—à–µ–∑–∞–¥–∞–Ω–Ω–æ–π—Ç–æ—á–Ω–æ—Å—Ç–∏, //–≤—ã–ø–æ–ª–Ω—è–µ–º–∞–ª–≥–æ—119–∏—Ç–º, –æ–ø–∏—Å–∞–Ω–Ω—ã–π–Ω–∏–∂–µ{
  60. a = b - (b - a) * f(b) / (f(b) - f(a));
  61. //—119–∞—Å—á–µ—Ç–Ω–æ–≤–æ–≥–æ–∑–Ω–∞—á–µ–Ω–∏—è–∞–ø–æ—Ñ–æ—119–º—É–ª–µb = a - (a - b) * f(a) / (f(a) - f(b));
  62. //—119–∞—Å—á–µ—Ç–Ω–æ–≤–æ–≥–æ–∑–Ω–∞—á–µ–Ω–∏—èb – ø–æ—Ñ–æ—119–º—É–ª–µ
  63. } return b;
  64. //–≤–æ–∑–≤—63–∞—â–∞–µ–ºb – ø–æ—Å–ª–µ–≤—ã–ø–æ–ª–Ω–µ–Ω–∏—è—Ü–∏–∫–ª–∞
  65. }
  66.  
  67. #endif
  68.  
  69. double
  70. Newton(double x, double &n, double eps)//–º–µ—Ç–æ–¥–ù—å—é—Ç–æ–Ω–∞//–ø—7–æ—Ü–µ—Å—Å–∏—Ç–µ—7–∞—Ü–∏–π—Å–æ—Å—Ç–æ–∏—Ç–≤—Ç–æ–º, —á—Ç–æ–≤–∫–∞—á–µ—Å—Ç–≤–µ//–ø—7–∏–±–ª–∏–∂–µ–Ω–∏–π–∫–∫–æ—7–Ω—é–ø—7–∏–Ω–∏–º–∞—é—Ç—Å—è–∑–Ω–∞—á–µ–Ω–∏—è—Ö0, —Ö1, —Ö2 ‚ 7¶—Ç–æ—á–µ–∫–ø–µ—7–µ—Å–µ—á–µ–Ω–∏—è//–∫–∞—Å–∞—Ç–µ–ª—å–Ω–æ–π–∫–∫—7–∏–≤–æ–π
  71. {
  72. double dx;
  73. n = 0;
  74. while (1) {
  75. dx = f(x) / df(x);
  76. x = x - dx;
  77. if (fabs(dx) < eps)
  78. break;
  79. n++;
  80. if (n > 100)
  81. break;
  82. } return x;
  83. }
  84.  
  85. double g(double x) { return x - 1.0/df(x) * f(x); }
  86. double
  87. Iter(double x, double b, int n, double eps)
  88. {
  89. double dx;
  90. n = 0;
  91. while (1) {
  92.  
  93. // dx = b * f(x);
  94. // x = x + dx;
  95.  
  96. // solve x = g(x) where g(x) = x - lamdda(x)*f(x), g(x) is defined above Iter. Assume lambda(x) = 1/f'(x)
  97. dx = g(x) - x; // dx = g(x) - x
  98. x = g(x); // x = g(x)
  99.  
  100. if (fabs(dx) < eps)
  101. break;
  102. if (n > 100)
  103. break;
  104. } return x;
  105. }
  106.  
  107.  
  108. int main () {
  109.  
  110. // setlocale(LC_ALL, "rus");
  111. // double a;
  112. // double b;
  113. // double eps;
  114. // double x;
  115. // cout << "–í–≤–µ–¥–∏—Ç–µ –∞ " << endl;
  116. // cin >> a;
  117. // cout << "–í–≤–µ–¥–∏—Ç–µ b" << endl;
  118. // cin >> b;
  119. // cout << "–í–≤–µ–¥–∏—Ç–µ eps" << endl;
  120. // cin >> eps;
  121. // printf("–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º –¥–∏—Ö–æ—Ç–æ–º–∏–∏ = %7f", dixit(a, b, eps));
  122. // cout << endl;
  123. // printf("–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º —Ö–æ—63–¥ = %7f", Hord(a, b, eps));
  124. // cout << endl;
  125. // printf("–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º –ù—å—é—Ç–æ–Ω–∞ = %7f", Newton(a, b, eps));
  126. // cout << endl;
  127. // cout << "–í–≤–µ–¥–∏—Ç–µ x0 " << endl;
  128. // cin >> x;
  129. // cout << endl;
  130. printf("–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º –ø—63–æ—Å—Ç—ã—Ö –∏—Ç–µ—63–∞—Ü–∏–π = %7f\n", Iter(2.5, 2, 3, 0.001));
  131. printf("–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º –ø—63–æ—Å—Ç—ã—Ö –∏—Ç–µ—63–∞—Ü–∏–π = %7f\n", Iter(-2.5, -3, -2, 0.001));
  132. }
  133.  
Success #stdin #stdout 0s 5628KB
stdin
Standard input is empty
stdout
–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º –ø—63–æ—Å—Ç—ã—Ö –∏—Ç–µ—63–∞—Ü–∏–π = 1.592088
–ö–æ—63–µ–Ω—å, –Ω–∞–π–¥–µ–Ω–Ω—ã–π –º–µ—Ç–æ–¥–æ–º –ø—63–æ—Å—Ç—ã—Ö –∏—Ç–µ—63–∞—Ü–∏–π = -2.823853