作业帮 > 综合 > 作业

一个非线性拟合的matlab程序,不知哪儿错了

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 08:18:37
一个非线性拟合的matlab程序,不知哪儿错了
yhat=beta(1)*exp(beta(2)./x1);
x1=2000/3*[0 3 10 20 30 40];
y1=800*ones(1,6)-8*[0 2.4 12.9 16.3 20.1 26.8];
beta0=[8 2]';
[beta,r,J]=nlinfit(x1',y1','volum',beta0);
beta
[YY,delta]=nlpredci('volum',x1',beta,r,J);
plot(x1,y1,'k++',x1,YY,'r')
哪里错了啊?
function yhat=volum(beta ,x1)
yhat=beta(1)*exp(beta(2)./x1);
x1=2000/3*[0 3 10 20 30 40];
y1=800*ones(1,6)-8*[0 2.4 12.9 16.3 20.1 26.8];
beta0=[8 2]';
[beta,r,J]=nlinfit(x1',y1','volum',beta0);
beta
[YY,delta]=nlpredci('volum',x1',beta,r,J);
plot(x1,y1,'k++',x1,YY,'r')
是这个程序,不知哪里错了?
三个数,求三个变量.效果肯定不是很好.
在Matlab下输入:edit zhidao_15.m,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_15(para,x)
y0=para(1);
a=para(2);
b=para(3);
y=y0+a*x.^b;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
x=[1,2,3,4,5,8]; %我这里多给一些数据
y=2.3+1.2*x.^1.302+0.1*rand(size(x)); %这里加了一些扰动
[para,res]=lsqcurvefit('zhidao_15',ones(1,3),x,y);
para',res
plot(x,y,'r*',x,zhidao_15(para,x))

再问: 谢谢你的回答哈,我知道我哪里错了,因为function yhat=volum(beta ,x1) yhat=beta(1)*exp(beta(2)./x1); 是不能运行的,必须得保存起来,我的是2010本版的。所以放在我的文档里,然后运行主程序,就行了,不过,分给你了