QT:使用qcustomplot绘制ax ^ 2 + bx + c

时间:2013-11-30 17:08:34

标签: c++ qt math graphics qcustomplot

目前我有这段代码:

void MainWindow::generateData(QVector<double>& x, QVector<double>& y, double A, double B, double C)
{
    for (int i = 0; i < size; ++i)
    {
        x[i] = (i/50.0 - 1); // x goes from -1 to 1
        y[i] = x[i] * x[i];  // y = X^2;
    }
}

此方法为函数y = x ^ 2生成数据。

我想要做的是为 y = A * x ^ 2 + B * x + C绘制图。

那么我该如何重写这个方法呢?

1 个答案:

答案 0 :(得分:0)

显而易见的方法是用{/ 1>替换y[i] = x[i] * x[i];

y[i] = A * x[i] * x[i] + B * x[i] + C;

一种不太明显,但性能更高的方法是:

y[i] = C + x[i] * (B + x[i] * A);

更新

在回答下面的问题时,似乎x缩放因子不起作用。所以整个例程看起来应该是这样的:

void MainWindow::generateData(QVector& x, QVector& y, double A, double B, double C)
{
    int size = x.size() < y.size() ? x.size() : y.size();

    for (int i = 0; i < size; ++i) {
        x[i] = (2*i/size - 1);
        y[i] = C + x[i] * (B + x[i] * A);
    }
}