作业帮 > 综合 > 作业

用matlab进行非线性拟合 nlinfit函数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 13:23:00
用matlab进行非线性拟合 nlinfit函数
有组数据
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
拟合函数为y=-k*ln(x+a)-b;
我的拟合程序是
clc;clear;
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
myfunc=inline('-beta(1)*ln(x+beta(2))-beta(3)','beta','x');
beta=nlinfit(x,y,myfunc,[1 1 1]);
k=beta(1),a=beta(2),b=beta(3)
%test the model
xx=min(x):max(x);
yy=-k*ln(x+a)-b;
plot(x,y,'o',xx,yy,'r')
程序运行后总提示错误,不知道怎么回事,
ln->log
Matlab中ln就是log
你的初值我改成000了,111的话,计算出来有一小部分虚数成份.
另外最后一个plot我也改了一下,你的xx只有一个值啊,我也就直接改成x做图了.因为你的yy也是由x计算的.
改成:
clc;clear;
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
myfunc=inline('-beta(1)*log(x+beta(2))-beta(3)','beta','x');
beta=nlinfit(x,y,myfunc,[0 0 0]);
k=beta(1),a=beta(2),b=beta(3)
%test the model
xx=min(x):max(x);
yy=-k*log(x+a)-b;
plot(x,y,'o',x,yy,'r')