Advertisement
mamamaria

Fibonacci

Mar 15th, 2022
956
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. // OM_2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7.  
  8. double f(double x) {
  9.     return x * x - 2 * x + 3;
  10. }
  11.  
  12. double Fibonacci(double a, double b, double eps, double l, int &N) {
  13.     double yk, zk, fyk, fzk; int  FNminus1 = 1, FNminus2 = 1, FN = FNminus1 + FNminus2;
  14.     N = 2;
  15.     while (FN < (abs(a - b) / l)) {
  16.         FNminus2 = FNminus1;
  17.         FNminus1 = FN;
  18.         FN = FNminus1 + FNminus2;
  19.         N++;
  20.     }
  21.     int k = 0;
  22.     while (true) {
  23.         yk = a + FNminus2 / FN * (b - a);
  24.         zk = a + FNminus1 / FN * (b - a);
  25.         fyk = f(yk);
  26.         fzk = f(zk);
  27.  
  28.         if (fyk <= fzk) {
  29.             b = zk;
  30.             zk = yk;
  31.             yk = a + b - yk;
  32.         }
  33.         else if (fyk > fzk) {
  34.             a = yk;
  35.             yk = zk;
  36.             zk = a + b - zk;
  37.         }
  38.         if (k == N - 3){
  39.             zk = yk + eps;
  40.             fyk = f(yk);
  41.             fzk = f(zk);
  42.             if (fyk <= fzk) {
  43.                 b = zk;
  44.             }
  45.             else if (fyk > fzk) {
  46.                 a = yk;
  47.             }
  48.             return (a + b) / 2;
  49.         }
  50.         else k++;
  51.  
  52.  
  53.     }
  54. }
  55.  
  56. int main()
  57. {
  58.     int N;
  59.     cout << Fibonacci(-2, 8, 0.2, 1, N);
  60.  
  61.     cout << endl << N;
  62. }
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement