早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一个非线性拟合的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"

题目详情
一个非线性拟合的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))