用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
展开
 我来答
tianxiawulang
2014-06-13 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2636万
展开全部

我觉得你的拟合函数形式取的不好。拟合效果与拟合函数的形式存在密切关系。

我取了另外一种函数形式:

    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))

伊之言
2014-06-15 · TA获得超过133个赞
知道答主
回答量:85
采纳率:0%
帮助的人:18.5万
展开全部
你需要指数函数的插值拟合还是多项式拟合,我估计你是多项式拟合,拟合优度R=sqrt((1-a)/m),sqrt:求根;m:拟合点数;exp:指数函数代码。望有帮助哦,亲
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dashuo44
2014-06-13 · TA获得超过188个赞
知道小有建树答主
回答量:117
采纳率:100%
帮助的人:143万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式