怎样用matlab指数函数拟合
x=[20,37.8,40,50 ];欲求y随时间x的变化关系,成指数函数形势,符合y=A+Bexp(R)的形式,需要代码以及A、B、R的值,谢谢! 展开
拟合函数表达式:y=a*exp(b+cx)
式中a=0.06154920769,
b=-3.18125203,
c=7.822374803
拟合度0.9725(相关系数)
用V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I)模型比较好。
A = nlinfit(X,Y,myfun,[700 -0.01 -700 -1 ])
I=min(X):0.1:max(X);
V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I);
plot(X,Y,'o',I,V)
结果:A =668.9571 -0.0688 -656.7991 -1.0321
意义
a>1时,Y随X增大而增大,先快后慢;0<a<1时,Y随X增大而减少,先快后慢。当以Y和lnX绘制的散点图呈直线趋势时,可考虑采用对数函数描述Y与X之间的非线性关系,式中的b和a分别为斜率和截距。
曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。
以上内容参考:百度百科-曲线拟合