24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1834  |  回复: 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的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xxz903: 金币+10, ★★★★★最佳答案 2012-08-21 14:05:54
程序大概这样,初值得你自己调了
CODE:
function xxz
data=[
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];
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);
%lb=[10,20,0,0];
%ub=[10000,10000,100,1000];
lb=[];
ub=[];
[x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options)
y=myfun(x,xdata);
plot(xdata,ydata,'g',xdata,y,'r')
end

function F=myfun(x,xdata)  %x=[]
t12=x(1);
t21=x(2);
q1=x(3);
q2=x(4);
r1=x(5);
r2=x(6);
h=x(7);
m=xdata;
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=log(o1./x1)+0.5*z*q1*log(o1./b1)+o2*(l1-r1*l2/r2)-q1*log(b1+b2*t21)...
     +b2*q1.*(t21./(b1+b2*t21)-t12./(b2+b1*t12))-log(r1/r2)...
     -05*z*q1*log(q1*r2/(q2*r1))-(l1-r1*l2/r2)+q1*log(t21)-q1*(1-t12);
y2=log(o2./x2)+0.5*z*q2*log(o2./b2)+o1*(l2-r2*l1/r1)-q2*log(b2+b1*t12)...
     +b1*q2.*(t12./(b2+b1*t12)-t21./(b1+b2*t21))-log(r2/r1)...
     -05*z*q2*log(q2*r1/(q1*r2))-(l2-r2*l1/r1)+q2*log(t12)-q2*(1-t21);
F=[y1,y2];
end

showmethemoney
2楼2012-08-21 11:39:11
已阅   回复此楼   关注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的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

引用回帖:
4楼: Originally posted by xxz903 at 2012-08-21 14:30:14
如果我想让这几个参数随机在-10到10取100次初值然后进行计算,然后在结果中找到最优解再进行画图  我改怎么修改这个程序??谢谢你了...

两种方法
1、你可以使用matlab里的globalsearch或者multistart来进行,但是需要先构建问题结构,你可以看帮助里的例子。
2、第2种方法你可以做100次循环,每次算完后保留x和残差,最后取残差较小的值。
如果你的参数有范围,可以在lb里设置下限,在ub里设置上限
showmethemoney
5楼2012-08-21 15:30:13
已阅   回复此楼   关注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的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

中间几句改成这样可以试试。
没有给你在-10到10上随机,只在0-1上随机初值了。每个初值都要保证你的ln里面的恒正,不然就错了。解决这个问题得转化为其他的函数用不等式约束的方法,那将十分麻烦。
CODE:
xdata=data(:,1);  %Im
ydata=data(:,2:3);  %
options= optimset('MaxFunEvals',5000,'Maxiter',1000);
lb=-ones(1,7);
ub=ones(1,7);
t=1;
for i=1:1:101
x0=rand(1,7);    %t12,t21,q1,q2,r1,r2,h
[x(t,:),resnorm(t)]=lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options);
t=t+1;
end
m=find(resnorm==min(resnorm));
xm=x(m,:)
y=myfun(xm,xdata);
plot(xdata,ydata,'g',xdata,y,'r')

showmethemoney
8楼2012-08-21 17:34:26
已阅   回复此楼   关注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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料与化工371求调剂 +9 陪琳看海 2026-04-04 9/450 2026-04-05 13:49 by imissbao
[考研] 一志愿北京化工085600 310分求调剂 +11 0856材料与化工3 2026-04-04 13/650 2026-04-05 12:50 by 418490947
[考研] 295求调剂 +10 xndjjj 2026-04-04 10/500 2026-04-05 11:19 by 猪会飞
[考研] 0703总分331求调剂 +10 ZY-05 2026-04-04 13/650 2026-04-05 11:03 by xiayan13521
[考研] 数一英一 347 人工智能国奖论文都有求调剂 +3 乌拉儿山脉 2026-03-30 7/350 2026-04-05 10:32 by zhq0425
[考研] 一志愿江南大学085501机械工程专硕326分,本科佳木斯大学 +5 顾若浮生 2026-04-03 9/450 2026-04-05 09:57 by 1753564080
[考研] 341求调剂 +3 学无止境,冲 2026-04-05 3/150 2026-04-05 09:40 by lbsjt
[考研] 283求调剂 +10 A child 2026-04-04 10/500 2026-04-05 08:22 by qlm5820
[考研] 320求调剂 +3 一样圆 2026-04-04 3/150 2026-04-04 22:29 by 啵啵啵0119
[考研] 294求调剂 +6 Grey_Ey 2026-04-02 9/450 2026-04-04 22:07 by hemengdong
[考研] 调剂 +9 19945159693 2026-04-03 10/500 2026-04-04 20:16 by dongzh2009
[考研] +5 雾与海 2026-04-02 6/300 2026-04-04 19:53 by 蓝云思雨
[考研] 349求调剂 +11 zwjjjjjj 2026-03-31 11/550 2026-04-04 19:52 by 蓝云思雨
[考研] 本科985,专业0812分336求调剂 +4 莫莫很行 2026-04-03 4/200 2026-04-03 21:31 by zhq0425
[基金申请] esi高被引论文是不是能对中标有所加分和帮助呢 +5 redcom 2026-04-01 6/300 2026-04-03 15:15 by Howard28
[考研] 求调剂 +3 usbdndj 2026-04-03 3/150 2026-04-03 14:10 by dxiaoxin
[考研] 285求调剂 +6 FZAC123 2026-03-30 6/300 2026-04-03 12:22 by xingguangj
[考研] 302求调剂 +9 zyx上岸! 2026-04-02 9/450 2026-04-02 23:07 by 马儿快快地跑
[考研] 349求调剂 +6 吃的不少 2026-04-01 6/300 2026-04-01 17:55 by JYD2011
[考研] 土木304求调剂 +5 顶级擦擦 2026-03-31 5/250 2026-04-01 08:15 by fdcxdystjk¥
信息提示
请填处理意见