24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2354  |  回复: 7

alpshaode

银虫 (小有名气)

[求助] 求助一个最小二乘法matlab拟合程序。

求助一个用最小二乘法matlab拟合程序。函数是这样的,y=exp(-x*1.22/(x+(1-x)*a)+(1-x)*1.60/(x*b+(1-x))-7.91), a,b为所要求得的拟合参数,以及求出平均平方误差。太感谢了,请给出具体的matlab程序。
回复此楼

» 收录本帖的淘帖专辑推荐

taotie

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

乐于助人,开朗
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cjc5367

铁虫 (小有名气)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
alpshaode: 金币+2, 有帮助 2013-12-08 00:17:33
先把它们线性化,再用最小二乘法
2楼2013-11-29 16:31:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alpshaode

银虫 (小有名气)

这是非线性拟合,如果可以直接线性化,就不用求助了。
乐于助人,开朗
3楼2013-11-29 17:02:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojunhang

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
alpshaode: 金币+5, 有帮助 2013-12-08 00:17:51
一可以借助nonliner fitting 工具箱,对应的命令是
fittype
fit
另一个方法是,自己写一个寻找平方和最小的程序
for i=1:N
    for j=1:M
         ERROR=sum(y-yi)
         ...
         return i and j
     end
end

[ 发自小木虫客户端 ]
4楼2013-11-29 17:39:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
alpshaode: 金币+5, 有帮助 2013-12-08 00:18:03
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2013-11-29 20:02:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangzhiguang

至尊木虫 (文坛精英)

【答案】应助回帖

请给出x,y的数据
好好学习,天天向上!
6楼2013-12-03 20:29:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

363418323

铁虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
alpshaode: 金币+10, ★★★很有帮助 2013-12-08 00:18:18
x=[0.31748 0.63496 0.95244 1.26992 1.5874 1.90488 2.22236 2.53984 2.85732 3.1748 3.9685 4.7622 5.5559 6.3496];
y=[72.70662369 73.31157463 73.9514314 74.62277256 75.32217667 76.0462223 76.79148803 77.55455241 78.33199401 79.1203914 81.11686331 83.10696505 85.03723673 86.85421846];



P0=[1 1 1 1 1 1]';
[P,r,J] = nlinfit(x',y',@myfun,P0);
%得到P参数,r残差residual,JJacobian矩阵
[YY,delta] = nlpredci('myfun',x',P,r,J);
plot(x,y,'k+',x,YY,'r')

function yd = myfun(P,x)
% myfun=@(x,P)(-P(1).*log(x)-P(1)*(1.023*x.^0.5)./(1+x.^0.5)+P(2)*x+P(3)*x.^1.5+P(4)*x.^2+P(5)*x.^2.5+P(6)*x.^3+72.14);
yd=-P(1).*log(x)-P(1)*(1.023*x.^0.5)./(1+x.^0.5)+P(2)*x+P(3)*x.^1.5+P(4)*x.^2+P(5)*x.^2.5+P(6)*x.^3+72.14;
end


程序解释:非线性拟合,下面的myfun是要拟合的公式,待估计的参数为P,有几个就p(几)。P0是初始值,先随意设置,估计一次后,用估计值在估计一遍。
x,y为数据。
多少给点分吧
thepursuitofhappiness
7楼2013-12-05 10:44:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tgvictor99

木虫 (知名作家)

迷糊领域荣誉领主

【答案】应助回帖

★ ★ ★ ★ ★
alpshaode: 金币+5, 有帮助 2013-12-08 00:18:33
直接调用lsqcurvefit 最小二乘拟合函数。调用格式为。
[a,Jm] = lsqcurvefit(Fun,a0,x,y)
Fun,是你要拟合成的函数,a0是拟合函数的初始系数。x,y是要拟合的数据。将返回系数a,和目标函数值Jm。
每个人的人生都是时代的产物。每个人的血统、命运和梦想组成了现在这个时代。
8楼2013-12-05 14:34:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 alpshaode 的主题更新
信息提示
请填处理意见