用最小二乘法在MATLAB中拟合曲线

拟合函数形式为:y=a×(x^b);数据:y=[15.0335.6727.0641.317.5947.799.6432.0324.2120.3113.2325.3864.... 拟合函数形式为:y=a×(x^b);数据:y=[15.03 35.67 27.06 41.3 17.59 47.79 9.64 32.03 24.21 20.31 13.23 25.38 64.17 7.49]; x=[66.52 28.08 37.61 26.68 56.52 22.71 113.163 34.33 48.48 56.18 78.23 43.7 16.75 151.02],用matlab编程程序该怎么写啊,谢谢!
需要求出未知系数a和b的值
展开
 我来答
PeriShare
推荐于2017-10-10 · 分享PD理论最新研究成果和进展
PeriShare
采纳数:2408 获赞数:36824

向TA提问 私信TA
展开全部

你好!

既然y=ax^b

那么ln(y)=bln(x)+lna;

下面是我的代码:

clc;clear all

x=[66.52 28.08 37.61 26.68 56.52 22.71 113.163 34.33 48.48 56.18 78.23 43.7 16.75 151.02];

y=[15.03 35.67 27.06 41.3 17.59 47.79 9.64 32.03 24.21 20.31 13.23 25.38 64.17 7.49];

x1=log(x);

y1=log(y);

p=polyfit(x1,y1,1);

b=p(1);

a=exp(p(2));

fprintf('a=%f\n',a);fprintf('b=%f\n\n',b);

hold on

plot(x,a*(x.^b),'*')

plot(x,y,'r.')

legend('拟合后的点','拟合前的点')

最后算出来的结果是:

a=1036.841810

b=-0.990830

图片:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式