希望用y=x*(1-exp(m*(x-1)/2)拟合出m值,能否利用取对数进行线性拟合?

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:14:14
有20组(x,y)数据,希望用y=x*(1-exp(m*(x-1)/2)拟合出m值,请问能否利用取对数进行线性拟合?如果不能的话是不是因为无法分离变量x,y?execl能否进行非线性拟合?origin已会
to sir_chen: 我开始也是这么做的,但这么拟合出来的结果m=2点几,r^2只有0.7。与origin的非线性拟合m=20几,r^2=0.98差远了。从图上看origin绝对正确,我觉得是因为ln(1-y/x)中含有了x,但又没法证明。

可以用线性拟合
原式为y=x(1-e^(m(x-1)/2)),由此式变形为:
2ln(1-y/x)=m(x-1)
设Y=2ln(1-y/x),X=x-1
则有Y=mX
由最小二乘法可得:
m=∑Y[i]/∑X[i](方括号表示下标)

我直接对y=x(1-e^(m(x-1)/2))用最小二乘法算了一下m,发现得到了一个超越方程,这和转换后用线性拟合得出的结果不同.我分析了一下原因,把非线性问题转换为线性问题时,由于用了Y=2ln(1-y/x)的非线性放缩,这导致了任一个实际点与拟合曲线上对应的点的距离由直线变为了曲线,而用线性拟合时又用的是直线,故还原为曲线拟合时对应的点之间就不是直线,而是曲线,即所求的出的不是最短距离.用曲线拟合求出的m值是最佳值.