我正在使用c ++进行一些数字计算。我对功能coefficients_of_EnergyFunc(knots)
进行了一些改进。但是在改进前后,它返回相同的参数。然后,使用这些参数得到了b
的不同计算结果。为什么会这样?
double* A = coefficients_of_EnergyFunc(knots);
qDebug() << "A[1] = " << A[1] << endl;
qDebug() << "A[3] = " << A[3] << endl;
qDebug() << "A[4] = " << A[4] << endl;
qDebug() << "A[6] = " << A[6] << endl;
qDebug() << "A[7] = " << A[7] << endl;
qDebug() << "A[8] = " << A[8] << endl;
double b = A[1] - A[3] * A[7] / A[8] - A[4] * A[6] / A[8];
qDebug() << "b = " << A[1] - A[3] * A[7] / A[8] - A[4] * A[6] / A[8] << endl;
改进前的输出:
A[1] = 572589
A[3] = 39582.9
A[4] = 32693.6
A[6] = 19791.5
A[7] = 32693.6
A[8] = 3390.15
b = -8.73115e-11
改进后的输出:
A[1] = 572589
A[3] = 39582.9
A[4] = 32693.6
A[6] = 19791.5
A[7] = 32693.6
A[8] = 3390.15
b = -0.0677077
顺便说一下,将这些参数代入公式以在python控制台中计算b
,我得到:
>>> 572589 - 39582.9*32693.6 / 3390.15 - 32693.6*19791.5 / 3390.15
-0.0842116130515933
答案 0 :(得分:0)
您的函数double* A = coefficients_of_EnergyFunc(knots);
返回的值不同于显示屏上显示的值。由于我们不知道qDebug到底能做什么,所以我们无法真正判断。但是,猜测是舍入或仅显示小数一位。
因此,您的新功能(可能也是旧版本)coefficients_of_EnergyFunc(knots) has a bug
。
我们看不到这并在这里提供帮助。但这就是事实。
C ++计算当然正确。
#include <iostream>
#include <fstream>
#include <string>
int main()
{
double A1 = 572589;
double A3 = 39582.9;
double A4 = 32693.6;
double A6 = 19791.5;
double A7 = 32693.6;
double A8 = 3390.15;
double b = A1 - A3 * A7 / A8 - A4 * A6 / A8;
std::cout << b << '\n';
return 0;
}
如果您显示了所有相关功能,那将真的很有帮助。