用matlab打指数函数代码!!!! 10
年份x=1990~2009GDPy=781.66808.84916.761039.831099.791163.211260.461425.641575.841710.88...
年份x=1990~2009
GDPy=781.66 808.84 916.76 1039.83 1099.79 1163.21 1260.46 1425.64 1575.84 1710.88
1901.25 2076.16 2276.34 2651.18 3131.43 3553.18 4013.38 4598.07 4894.97 5256.16
y=ae^bx
帮求指数函数的拟合(有图那种)和拟合优度R^2
我研究了十几篇都没看懂代码怎么打!!!
改:年份x=1~20 展开
GDPy=781.66 808.84 916.76 1039.83 1099.79 1163.21 1260.46 1425.64 1575.84 1710.88
1901.25 2076.16 2276.34 2651.18 3131.43 3553.18 4013.38 4598.07 4894.97 5256.16
y=ae^bx
帮求指数函数的拟合(有图那种)和拟合优度R^2
我研究了十几篇都没看懂代码怎么打!!!
改:年份x=1~20 展开
3个回答
展开全部
我觉得你的拟合函数形式取的不好。拟合效果与拟合函数的形式存在密切关系。
我取了另外一种函数形式:
y=ae^(b(x-c))
也就是说,比你的函数在x轴上有一个偏移量,得到的效果会好很多。
图中蓝线为原始数据,绿线是按照你给函数形式拟合的结果,红线是我选择的函数形式拟合得到的结果。
参考代码:
x = 1990:2009;
y = [781.66 808.84 916.76 1039.83 1099.79 1163.21 1260.46 1425.64 1575.84 1710.88 1901.25 2076.16 2276.34 2651.18 3131.43 3553.18 4013.38 4598.07 4894.97 5256.16];
opt = optimset('MaxFunEvals',1e4);
f1 = @(c,x) c(1) * exp(c(2)*x);
c1 = lsqcurvefit(f1,[1,0.005],x,y,[],[],opt)
f2 = @(c,x) c(1) * exp(c(2)*(x-c(3)));
c2 = lsqcurvefit(f2,[1,0.005,1930,0],x,y,[],[],opt)
plot(x,y,'-o',x,f1(c1,x),'-x',x,f2(c2,x),'.-')
需要说明的是,拟合结果与参数初值往往也密切相关,需要小心选择。
至于拟合优度(Goodness-of-Fit),有多种不同的定义,看你要算哪一种。例如比较常见的用误差范数,就可以直接计算norm(y-f2(c2,x))。
展开全部
你需要指数函数的插值拟合还是多项式拟合,我估计你是多项式拟合,拟合优度R=sqrt((1-a)/m),sqrt:求根;m:拟合点数;exp:指数函数代码。望有帮助哦,亲
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询