【发布时间】:2020-09-08 06:12:06
【问题描述】:
我一直在尝试将方程 y = Ax^2 + Bx + C 拟合到以下数据集 (data.txt):
-9.39398e+09 1.52819e-19
-9.07008e+09 1.50337e-19
-8.74617e+09 1.44628e-19
-8.42227e+09 1.37837e-19
-8.09817e+09 1.31042e-19
-7.77427e+09 1.24624e-19
-7.45037e+09 1.18873e-19
-7.12646e+09 1.11213e-19
-6.80256e+09 1.00253e-19
-6.47865e+09 8.95713e-20
-6.15475e+09 7.92741e-20
-5.83066e+09 6.94736e-20
-5.50675e+09 6.02803e-20
-5.18285e+09 5.1667e-20
-4.85894e+09 4.37442e-20
-4.53504e+09 3.65056e-20
-4.21113e+09 3.00328e-20
-3.88723e+09 2.4281e-20
-3.56332e+09 1.93223e-20
-3.23923e+09 1.49467e-20
-2.91533e+09 1.13226e-20
-2.59142e+09 8.33933e-21
-2.26752e+09 5.93767e-21
-1.94361e+09 4.05992e-21
-1.61971e+09 2.64039e-21
-1.29581e+09 1.623e-21
-9.71713e+08 9.0523e-22
-6.47809e+08 4.05351e-22
-3.23904e+08 8.97219e-23
0 0
3.23904e+08 8.97219e-23
6.47809e+08 4.05351e-22
9.71713e+08 9.0523e-22
1.29581e+09 1.623e-21
1.61971e+09 2.64039e-21
1.94361e+09 4.05992e-21
2.26752e+09 5.93767e-21
2.59142e+09 8.33933e-21
2.91533e+09 1.13226e-20
3.23923e+09 1.49467e-20
3.56332e+09 1.93223e-20
3.88723e+09 2.4281e-20
4.21113e+09 3.00328e-20
4.53504e+09 3.65056e-20
4.85894e+09 4.37442e-20
5.18285e+09 5.1667e-20
5.50675e+09 6.02803e-20
5.83066e+09 6.94736e-20
6.15475e+09 7.92741e-20
6.47865e+09 8.95713e-20
6.80256e+09 1.00253e-19
7.12646e+09 1.11213e-19
7.45037e+09 1.18873e-19
7.77427e+09 1.24624e-19
8.09817e+09 1.31042e-19
8.42227e+09 1.37837e-19
8.74617e+09 1.44628e-19
9.07008e+09 1.50337e-19
9.39398e+09 1.52819e-19
在 gnuplot 中我输入了命令:
fit a*x**2 + b*x + c 'data.txt' via a, b, c
吐出来的结果是:
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = -1.73185e-20 +/- 2.658e-11 (1.535e+11%)
b = 1 +/- 0.1325 (13.25%)
c = 1 +/- 1.076e+09 (1.076e+11%)
correlation matrix of the fit parameters:
a b c
a 1.000
b -0.000 1.000
c -0.739 0.000 1.000
当我使用 a、b、c 的值进行绘图时,数据和拟合线之间没有拟合。
所以我再次下达命令
fit a*x**2 + b*x + c 'data.txt' via a, b, c
然后gnuplot吐出如下输出:
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = -1.73185e-20 +/- 3.278e-21 (18.93%)
b = -2.24969e-22 +/- 1.645e-11 (7.313e+12%)
c = 1 +/- 0.1327 (13.27%)
correlation matrix of the fit parameters:
a b c
a 1.000
b 0.000 1.000
c -0.739 -0.001 1.000
a、b、c 的值发生了变化,但这也不能令人满意地拟合数据。 于是我再次下达命令:
fit a*x**2 + b*x + c 'data.txt' via a, b, c
这次吐出如下结果:
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = 1.96019e-39 +/- 5.98e-33 (3.051e+08%)
b = -2.24969e-22 +/- 2.98e-23 (13.25%)
c = -1.11942e-21 +/- 2.421e-13 (2.162e+10%)
correlation matrix of the fit parameters:
a b c
a 1.000
b 0.000 1.000
c -0.739 -0.000 1.000
这也不能令人满意。
然后我再次重复 fit 命令并得到以下信息:
After 4 iterations the fit converged.
final sum of squares of residuals : 2.4063e-39
abs. change during last iteration : -2.64182e-48
Hmmmm.... Sum of squared residuals is zero. Can't compute errors.
Final set of parameters
=======================
a = 1.96019e-39
b = 2.01689e-41
c = -1.11942e-21
现在 a、b、c 的值与数据非常吻合。
我的问题是:
-
为什么 a、b、c 的值与第一次、第二次和第三次尝试的数据没有很好的拟合?
-
最后算出来的a,b,c值可以用吗?
-
在最后一次尝试的输出中,我是否应该担心消息“嗯……残差平方和为零。无法计算错误。” ?
【问题讨论】:
标签: gnuplot curve-fitting data-fitting