matlab r(m) 2 2.5 3 3.5 4(元)C 65 170 350 660 1000知
答案:2 悬赏:60 手机版
解决时间 2021-02-13 20:39
- 提问者网友:伴风望海
- 2021-02-13 02:18
matlab r(m) 2 2.5 3 3.5 4(元)C 65 170 350 660 1000知
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-02-13 03:13
r=[2,2.5,3,3.5,4];c=[65,170,350,660,1000];fun_andy002=inline('ab(1)*r.^ab(2)','ab','r');[A,res]=lsqcurvefit(fun_andy002,[65,1],r,c)cfit1=fun_andy002(A,r);plot(r,c,'r*',r,cfit1)%法二r=[2,2.5,3,3.5,4];c=[65,170,350,660,1000];K=[ones(size(r')),log(r')];y=log(c');ab=K\y;a=exp(ab(1))b=ab(2)cfit2=a*r.^b;plot(r,c,'r*',r,cfit2)%%%%%%%%%两个结果并不是完全相同的.但个人觉得法二更好.法二是有技巧的.两边取对数,变成log(c)=log(a)+b*log(r)对于log(c)与log(r)来说,它们是直线关系你把那几个点都代进去,写成矩阵的形式.就是K*ab=y求这个矩阵就OK了.======以下答案可供参考======供参考答案1:f(x) = a*x^ba = 6.609 (1.634, 11.58)b = 3.631 (3.062, 4.201)供参考答案2:matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin。这里用lsqcurvefit(lsqnonlin一样做),先介绍下lsqcurvefit(原理是最小二乘法)已知数据点:xdata=(xdata1,xdata2,…,xdatan) ydata=(ydata1,ydata2,…,ydatan) lsqcurvefit用以求含参量x(向量)的向量值函数F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T中的参变量x(向量),使得1/2*∑[a+b*exp(-0.02*k*t(i))-c(i)]^2最小1.先定义个函数funfunction c=fun(x,r)c=x(1)*r.^x(2);保存一下2调用解题clcx0=[0.05 0.05];r=[2 2.5 3 3.5 4];c=[65 170 350 660 1000];x=lsqcurvefit('fun',x0,r,c);a=x(1)b=x(2)结果是a =6.6092 b =3.6315拟合的方法不同结果有细小的差别,但相差不会很大题设是非线性的,这种方法还是不错的
全部回答
- 1楼网友:刀戟声无边
- 2021-02-13 03:57
谢谢解答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯