【问题标题】:QT: Draw ax^2+bx+c using qcustomplotQT:使用 qcustomplot 绘制 ax^2+bx+c
【发布时间】:2013-11-30 17:08:34
【问题描述】:

目前我有这个代码:

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 绘制图。

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

【问题讨论】:

    标签: c++ qt math graphics qcustomplot


    【解决方案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);
        }
    }

    【讨论】:

    • @hofmn 您需要确保 x 值在 [-1, 1] 范围内。上面的修改应该可以确保。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多