24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1631  |  回复: 15
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xxz903

金虫 (小有名气)

[求助] matlab数据拟合求助!!希望高手帮忙写一下matlab的程序 谢谢了!!

自变量 m,因变量y1,y2;
需要拟合的参数t12,t21,q1,q2,r1,r2,h
其中z=10;
x1=m/(m+h);
x2=1-x1;
o1=x1*r1/(x1*r1+x2*r2);
o2=x2*r2/(x1*r1+x2*r2);
b1=x1*q1/(x1*q1+x2*q2);
b2=x2*q2/(x1*q1+x2*q2);
l1=0.5*z*(r1-q1)-(r1-1);
l2=0.5*z*(r2-q2)-(r2-1);
需要拟合的方程:
y1=ln(o1/x1)+0.5*z*q1*ln(o1/b1)+o2*(l1-r1*l2/r2)-q1*ln(b1+b2*t21)+b2*q1*(t21/(b1+b2*t21)-t12/(b2+b1*t12))-ln(r1/r2)-05*z*q1*ln(q1*r2/(q2*r1))-(l1-r1*l2/r2)+q1*ln(t21)-q1*(1-t12);

y2=ln(o2/x2)+0.5*z*q2*ln(o2/b2)+o1*(l2-r2*l1/r1)-q2*ln(b2+b1*t12)+b1*q2*(t12/(b2+b1*t12)-t21/(b1+b2*t21))-ln(r2/r1)-05*z*q2*ln(q2*r1/(q1*r2))-(l2-r2*l1/r1)+q2*ln(t12)-q2*(1-t21);
数据:
0        0        0
0.1        -0.673344553        -0.003214304
0.2        -0.783071888        -0.005447496
0.3        -0.841647189        -0.008713882
0.4        -0.869884359        -0.010990339
0.5        -0.884307686        -0.014309599
0.6        -0.889162064        -0.018687569
0.7        -0.889162064        -0.02207116
0.8        -0.88673193        -0.025484701
0.9        -0.879476759        -0.029975034
1        -0.869884359        -0.038731848
1.2        -0.850971266        -0.042636996
1.4        -0.830113036        -0.051995295
1.6        -0.807436327        -0.061533872
1.8        -0.783071888        -0.071257081
2        -0.759286983        -0.081169452
2.5        -0.701179352        -0.107972916
3        -0.650087691        -0.136153773
3.5        -0.599656837        -0.165810242
4        -0.553385238        -0.197052419
4.5        -0.512493681        -0.227286842
5        -0.47320876        -0.260553522
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2012-08-21 11:39:11
程序大概这样,初值得你自己调了

function xxz
data=;
xdata=data(:,1);  %Im
ydata=data(:,2:3);  %
x0=ones(1,7);    %t12,t21,q1,q2,r1,r2,h

options= optimset('MaxFunEvals',5000,'Maxiter',1000) ...

牛啊!终于能算了啊  我试试啊~有问题再联系你啊  谢谢了
3楼2012-08-21 14:05:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2012-08-21 11:39:11
程序大概这样,初值得你自己调了

function xxz
data=;
xdata=data(:,1);  %Im
ydata=data(:,2:3);  %
x0=ones(1,7);    %t12,t21,q1,q2,r1,r2,h

options= optimset('MaxFunEvals',5000,'Maxiter',1000) ...

如果我想让这几个参数随机在-10到10取100次初值然后进行计算,然后在结果中找到最优解再进行画图  我改怎么修改这个程序??谢谢你了
4楼2012-08-21 14:30:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
5楼: Originally posted by csgt0 at 2012-08-21 15:30:13
两种方法
1、你可以使用matlab里的globalsearch或者multistart来进行,但是需要先构建问题结构,你可以看帮助里的例子。
2、第2种方法你可以做100次循环,每次算完后保留x和残差,最后取残差较小的值。
如果你的 ...

嗯  我想用第二种方法! 你能帮我再刚才的基础上修改一下那个程序吗?我自己做的有点问题  无法找到最优解并且画出图像啊~~再次感谢你了啊~~谢谢了
6楼2012-08-21 16:08:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
5楼: Originally posted by csgt0 at 2012-08-21 15:30:13
两种方法
1、你可以使用matlab里的globalsearch或者multistart来进行,但是需要先构建问题结构,你可以看帮助里的例子。
2、第2种方法你可以做100次循环,每次算完后保留x和残差,最后取残差较小的值。
如果你的 ...

版主~~再帮我改一下吧  我改了好久了也没画出最优解的图形~~感谢你了啊
7楼2012-08-21 16:34:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
8楼: Originally posted by csgt0 at 2012-08-21 17:34:26
中间几句改成这样可以试试。
没有给你在-10到10上随机,只在0-1上随机初值了。每个初值都要保证你的ln里面的恒正,不然就错了。解决这个问题得转化为其他的函数用不等式约束的方法,那将十分麻烦。


xdata=dat ...

版主  为什么算出来的是复数??我自己修改的随机取初值的算出的也是有复数的    这个问题应该怎么解决?
9楼2012-08-21 19:33:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
8楼: Originally posted by csgt0 at 2012-08-21 17:34:26
中间几句改成这样可以试试。
没有给你在-10到10上随机,只在0-1上随机初值了。每个初值都要保证你的ln里面的恒正,不然就错了。解决这个问题得转化为其他的函数用不等式约束的方法,那将十分麻烦。


xdata=dat ...

版主  我想要实数的解  不要复数的解  我改怎么处理~谢了

» 本帖已获得的红花(最新10朵)

10楼2012-08-22 09:01:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
12楼: Originally posted by dingd at 2012-08-22 10:27:20
如果不限软件,1stOpt很容易:

均方差(RMSE): 0.00231653530839624
残差平方和(SSE): 0.000225386105071952
相关系数(R): 0.999991177424578
相关系数之平方(R^2): 0.999982354926995
决定系数(DC): 0.99998 ...

你好  我想买这个软件~~有没有联系方式啊? 在哪买能优惠点
13楼2012-08-22 16:01:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2012-08-21 11:39:11
程序大概这样,初值得你自己调了

function xxz
data=;
xdata=data(:,1);  %Im
ydata=data(:,2:3);  %
x0=ones(1,7);    %t12,t21,q1,q2,r1,r2,h

options= optimset('MaxFunEvals',5000,'Maxiter',1000) ...

版主  你好!
能帮我修改一个matlab的程序吗   我编的差不多了  但是出现了一个警告  不太会修改了   说是方程与YDATA对应不上  能帮我看看吗》??先谢谢啦额啊
14楼2012-11-17 16:26:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xxz903

金虫 (小有名气)

引用回帖:
11楼: Originally posted by csgt0 at 2012-08-22 09:43:25
给你个初值,差不多了,你再看看吧,得自己去尝试。

中间几行代码改为下面的

for i=1:1:101
   % x0=rand(1,7);    %t12,t21,q1,q2,r1,r2,h
    x0=;
=lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options) ...

程序在这 http://kuai.xunlei.com/d/MRZESILYPLKC
15楼2012-11-17 16:30:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xxz903 的主题更新
信息提示
请填处理意见