Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // OM_2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include <iostream>
- using namespace std;
- double f(double x) {
- return x * x - 2 * x + 3;
- }
- double Fibonacci(double a, double b, double eps, double l, int &N) {
- double yk, zk, fyk, fzk; int FNminus1 = 1, FNminus2 = 1, FN = FNminus1 + FNminus2;
- N = 2;
- while (FN < (abs(a - b) / l)) {
- FNminus2 = FNminus1;
- FNminus1 = FN;
- FN = FNminus1 + FNminus2;
- N++;
- }
- int k = 0;
- while (true) {
- yk = a + FNminus2 / FN * (b - a);
- zk = a + FNminus1 / FN * (b - a);
- fyk = f(yk);
- fzk = f(zk);
- if (fyk <= fzk) {
- b = zk;
- zk = yk;
- yk = a + b - yk;
- }
- else if (fyk > fzk) {
- a = yk;
- yk = zk;
- zk = a + b - zk;
- }
- if (k == N - 3){
- zk = yk + eps;
- fyk = f(yk);
- fzk = f(zk);
- if (fyk <= fzk) {
- b = zk;
- }
- else if (fyk > fzk) {
- a = yk;
- }
- return (a + b) / 2;
- }
- else k++;
- }
- }
- int main()
- {
- int N;
- cout << Fibonacci(-2, 8, 0.2, 1, N);
- cout << endl << N;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement