24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2353  |  回复: 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的回帖

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的回帖
查看全部 8 个回答

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的回帖
信息提示
请填处理意见