Форум программистов, компьютерный форум CyberForum.ru

Метод чисел Фибоначчи. Вывести решение в виде численного значения в точке экстремума независимой переменной - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нарисовать треугольник квадрат круг http://www.cyberforum.ru/cpp-beginners/thread1184199.html
Нарисовать треугольник квадрат круг на С++
C++ Файловые потоки Структура enum status {Boss=1, Manager}; struct Worker { string Name; int Year; status Status; }; http://www.cyberforum.ru/cpp-beginners/thread1184187.html
С помощью списка определить три наиболее распространенных среди студентов имен C++
Помогите, пожалуйста с задачей Сформуваты двунаправленный список строк, каждая из которых состоит из фамилии и имени студента. С помощью списка определить три наиболее распространенных среди студентов имен.
C++ Дан файл, содержащий текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз
Здравствуйте всем, нужна помощь с файлами:Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.
C++ Создание неориентированного графа списками вершин и ребер http://www.cyberforum.ru/cpp-beginners/thread1184163.html
Добрый ночи. Подскажите пожалуйста, как реализовать граф через списки вершин и ребер? Создать массив, в котором перечислены все вершины это раз, но не совсем понимаю как будет выглядеть массив с ребрами. Предположим, массив вершин num. Как будет выглядеть второй? Он будет двумерный, я полагаю? Было бы просто замечательно реализацию кодом увидеть. Нашел вот эту темку, но не получилось...
C++ Выкидывает из программы при попытке создать экземпляр производного класса Всем привет) Проблема в функции menu(), там, где закомментированы 3 первые строки. При попытке ввести объявленную выше переменную сиином и использовать её как параметр конструктора, выкидывает из программы, то ли исключение там какое-то вылазит, то ли что. Но программа компилится. Если же так сказать явно передать строку в конструктор (4 строка функции menu: bitStroka bs("11000000"), то всё... подробнее

Показать сообщение отдельно
blager
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 2
22.05.2014, 00:29     Метод чисел Фибоначчи. Вывести решение в виде численного значения в точке экстремума независимой переменной
Написать программу которая должна выводить решение в виде численного значения в точке экстремума независимой переменной (x экстр.) и значения функции в этой точке y(x экстр.).
Метод расчета: Метод чисел Фибоначчи
Интервал поиска: x=-14..-0.7
Функция : max (8*x^2+7*x+1)/(x^4-17*x^3)+9
Величина точности поиска E=0.001
Нашёл что-то похожее, только тут условие другое "f(x)=2x*x*x-6*x+3, a=0, b=2,5".
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 #include <iostream>
#include <cmath>
#include <fstream>
#include "Methods.h"
 
void Fib(double, double, std::ofstream&);
 
int main()
{
    std::ofstream cout("rezult.txt", std::ios::out);
    setlocale(LC_ALL, "Russian");
    double a(0), b(2.5);
    Fib(a, b, cout);
    system("pause");
    return EXIT_SUCCESS;
}

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#define eps 1e-3
 
double Fun(double x)
{
    return (2 * x * x * x - 6 * x + 3);
}
int F(int n)
{
    int f, f1(1), f2(1), m(0);
    while(m < n - 1)
    {
        f = f1 + f2;
        f1 = f2;
        f2 = f;
        ++m;
    }
    return f1;
}
void Fib(double a, double b, std::ofstream& cout)
{
    cout<<"\n\n\n\tМетод Фибоначчи:\n\n";
    double x1, x2, _x, xf1, xf2;
    int k(0);
    int N(0);
    double fn1(1), fn2(1), fn, f = (b - a) / eps;
    while(fn1 < f)
    {
        fn = fn1 + fn2;
        fn1 = fn2;
        fn2 = fn;
        ++N;
    }
    x1 = a + (double)F(N - 2) / F(N) * (b - a) - (N&1 ? -1 : 1) * eps / F(N);
    x2 = a + (double)F(N - 1) / F(N) * (b - a) + (N&1 ? -1 : 1) * eps / F(N);
    xf1 = Fun(x1);
    xf2 = Fun(x2);
  P:
    ++k;
    if(xf1 >= xf2)
    {
        a = x1;
        x1 = x2;
        xf1 = xf2;
        x2 = a + (double)F(N - k - 1) / F(N - k) * (b - a) + ((N - k)&1 ? -1 : 1) * eps / F(N - k);
        xf2 = Fun(x2); 
    }
    else
    {
        b = x2;
        x2 = x1;
        xf2 = xf1;
        x1 = a + (double)F(N - k - 2) / F(N - k) * (b - a) - ((N - k)&1 ? -1 : 1) * eps / F(N - k);
        xf1 = Fun(x1);
    }
    cout<<"Итерация № "<<k<<'\n'
        <<"x1 = "<<x1<<"\t\tF(x1) = "<<xf1
        <<"\nx2 = "<<x2<<"\t\tF(x2) = "<<xf2
        <<'\n'<<std::endl;
    if(fabs(b - a) <= eps)
    {
        _x = (a + b) / 2;
        cout<<"Результат:\nx = "<<_x<<"\t\tF(x) = "<<Fun(_x)<<
            "\nКоличество итераций: "<<k;
    }
    else
        goto P;
}

Добавил #include <math.h>, а то ругался на fabs. Но что-то у меня не работает даже с тем условием. Помогите переписать программу.

Добавлено через 30 минут
Не сразу понял как работает программа, всё оказывается работает. Помогите переписать код программы под моё условие.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru