Численные методы (метод хорд)

279
15 марта 2017, 19:28

Было задание найти корни уравнения методом хорд. Код выглядит следующим образом:

#include <iostream>
#include <cmath>
using namespace std;
double f(double x)
{
    return pow(cos(x), 3) + x * x * sin(x) + 20;
}
double findRoot(double (*f)(double), double a, double b,
                double eps = 1e-5)
{
    double t;
    while (fabs(b - a) >= eps)
    {
        t = a + (f(b) * (b - a)) / (f(b) - f(a));
        if (f(a) * f(t) < 0)
        {
            b = t;
        }
        else if (f(t) * f(b) < 0)
        {
            a = t;
        }
        else
            return t;
    }
    return t;
}
int main()
{
    cout.setf(ios::fixed);
    double a, b;
    cout << "\nEnter the limits,\n\nLeft limit,a= ";
    cin >> a;
    cout << "\nRight limit,b= ";
    cin >> b;
    double t = findRoot(f);
    cout << "x=" << t << "f(x)=" << f(t) << endl;
    return 0;
}

Ошибки выдает следующие

chord2.cc: In function int main()’:
chord2.cc:36:22: error: too few arguments to function double findRoot(double (*)(double), double, double, double)’
double t = findRoot(f);
^
chord2.cc:11:8: note: declared here
double findRoot (double (*f)(double), double a, double b, double eps=1e-5) {

Помогите, пожалуйста, понять, что не так.

Answer 1

Если только понять, что сообщает компилятор - то тут все просто: функция

double findRoot (double (*f)(double), double a, double b, double eps=1e-5)

у вас принимает 4 аргумента; в крайнем случае - с учетом значения по умолчанию - три. Вы же вызываете ее

double t = findRoot(f);

с единственным аргументом, не указав ни a, ни b...

READ ALSO
Из struct в class и чтение с файла C++

Из struct в class и чтение с файла C++

Всем доброго времени суток, помогите пожалуйста разобратьсяБыла некая структура:

261
C++, Bluetoth Low Energy. Find device, How to connect [требует правки]

C++, Bluetoth Low Energy. Find device, How to connect [требует правки]

I have a problem, I work with Bluetooth Low EnergyI do not know how to organize a device search (Scan)

238
Задана квадратная матрица порядка N. Вычислить сумму положительных элементов, лежащих ниже побочной диагонали [требует правки]

Задана квадратная матрица порядка N. Вычислить сумму положительных элементов, лежащих ниже побочной диагонали [требует правки]

Предусмотреть два варианта ввода элементов массива: ввод с клавиатуры и ввод через генерацию случайных чиселРешение должно использовать...

266
QT qwidget изменение размера

QT qwidget изменение размера

при нажатии на кнопку вызывается функция:

291