24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1563  |  回复: 12

小木虫zb

木虫 (正式写手)

[求助] 求助matlab拟合方程组

遇到个方程组,不知道怎么用matlab拟合其中的参数,求助大神。k1=0.45967,n1=1/0.33824,k2=0.40308,n2=1/0.38477,拟合求解n11,n12,k12,n22,n21,k21
方程组如下
q1=(k1*c1^(1/n11 +1/n1 ))/(c1^(1/n11 )+k12*c2^(1/n12 ) )
q2=(k2*c2^(1/n22 +1/n2 ))/(c2^(1/n22 )+k21*c1^(1/n21 ) )
源数据如下
  c1            q1          c2            q2
0.04556        0.04352        0.099        0.03592
0.10253        0.08542        0.12602        0.08207
0.2056        0.17075        0.27154        0.16137
0.6889        0.30201        0.87702        0.27525
1.51941        0.38387        1.81968        0.34115
2.40038        0.45855        2.72298        0.41266
3.37753        0.51955        3.82469        0.45595
6.32386        0.60045        6.74548        0.54047
9.51436        0.64661        9.89625        0.59228
12.75747        0.68528        13.15723        0.62842
16.07689        0.7131        16.59229        0.63979
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
csgt0: 金币+2, 谢谢 2013-01-09 15:58:11
小木虫zb: 金币+5, ★★★很有帮助 2013-01-10 08:53:05
用1stOpt求解试试:
CODE:
Constant  k1=0.45967,n1=1/0.33824,k2=0.40308,n2=1/0.38477;
Variable c1,q1,c2,q2;
SharedModel;
Function q1=(k1*c1^(1/n11 +1/n1 ))/(c1^(1/n11 )+k12*c2^(1/n12 ));
         q2=(k2*c2^(1/n22 +1/n2 ))/(c2^(1/n22 )+k21*c1^(1/n21 ));
Data;
  c1            q1          c2            q2
0.04556        0.04352        0.099        0.03592
0.10253        0.08542        0.12602        0.08207
0.2056        0.17075        0.27154        0.16137
0.6889        0.30201        0.87702        0.27525
1.51941        0.38387        1.81968        0.34115
2.40038        0.45855        2.72298        0.41266
3.37753        0.51955        3.82469        0.45595
6.32386        0.60045        6.74548        0.54047
9.51436        0.64661        9.89625        0.59228
12.75747        0.68528        13.15723        0.62842
16.07689        0.7131        16.59229        0.63979

均方差(RMSE): 0.0335802018362698
残差平方和(SSE): 0.0248078590180215
相关系数(R): 0.997283667098149
相关系数之平方(R^2): 0.994574712660733
决定系数(DC): 0.994566132239987
F统计(F-Statistic): 36.2326353309996

参数                  最佳估算
--------------------        -------------
n11        0.241571501600743
k12        0.158571836379447
n12        0.218728458244284
n22        -0.168403298883327
k21        0.136718576047343
n21        -0.186531568585624
3楼2013-01-09 13:56:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

forcal

禁虫 (初入文坛)

★ ★
csgt0: 金币+2, 应助指数+1, 谢谢 2013-01-14 16:20:27
本帖内容被屏蔽

10楼2013-01-12 16:16:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
小木虫zb: 金币+15, ★★★★★最佳答案 2013-01-10 09:52:54
CODE:
function zbzbzbzb
data=[ 0.04556        0.04352        0.099        0.03592   %  c1,q1,c2,q2
0.10253        0.08542        0.12602        0.08207
0.2056        0.17075        0.27154        0.16137
0.6889        0.30201        0.87702        0.27525
1.51941        0.38387        1.81968        0.34115
2.40038        0.45855        2.72298        0.41266
3.37753        0.51955        3.82469        0.45595
6.32386        0.60045        6.74548        0.54047
9.51436        0.64661        9.89625        0.59228
12.75747        0.68528        13.15723        0.62842
16.07689        0.7131        16.59229        0.63979];
xdata=[data(:,1),data(:,3)];
ydata=[data(:,2),data(:,4)];
x0=[0.2,0.2,0.2,9314,106,0.6]; %n11,n12,k12,n22,n21,k21
[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)
y=myfun(x,xdata)
end

function y=myfun(x,xdata)
c1=xdata(:,1);
c2=xdata(:,2);
n11=x(1);
n12=x(2);
k12=x(3);
n22=x(4);
n21=x(5);
k21=x(6);
k1=0.45967;
n1=1/0.33824;
k2=0.40308;
n2=1/0.38477;
q1=(k1*c1.^(1/n11 +1/n1 ))./(c1.^(1/n11 )+k12*c2.^(1/n12 ) );
q2=(k2*c2.^(1/n22 +1/n2 ))./(c2.^(1/n22 )+k21*c1.^(1/n21 ) );
y=[q1,q2];
end

showmethemoney
2楼2013-01-09 11:45:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

小木虫zb

木虫 (正式写手)

引用回帖:
2楼: Originally posted by csgt0 at 2013-01-09 11:45:59
function zbzbzbzb
data=;
xdata=;
ydata=;
x0=; %n11,n12,k12,n22,n21,k21
= lsqcurvefit(@myfun,x0,xdata,ydata)
y=myfun(x,xdata)
end

function y=myfun(x,xdata)
c1=xdata(:,1);
c2=xdata(:,2); ...

运行不出来,出现错误

360截图20130110092051698.jpg

4楼2013-01-10 09:21:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
4楼: Originally posted by 小木虫zb at 2013-01-10 09:21:45
运行不出来,出现错误

360截图20130110092051698.jpg
...

你改程序了吧?记得用点乘和点除
showmethemoney
5楼2013-01-10 09:26:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫zb

木虫 (正式写手)

引用回帖:
5楼: Originally posted by csgt0 at 2013-01-10 09:26:59
你改程序了吧?记得用点乘和点除...

改了输出和输入,用了点乘,还是有错误

360截图20130110093511460.jpg



1.jpg

6楼2013-01-10 09:37:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
6楼: Originally posted by 小木虫zb at 2013-01-10 09:37:34
改了输出和输入,用了点乘,还是有错误

360截图20130110093511460.jpg

1.jpg
...

公式里的矩阵之间的除法也要用点的
showmethemoney
7楼2013-01-10 09:42:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫zb

木虫 (正式写手)

引用回帖:
7楼: Originally posted by csgt0 at 2013-01-10 09:42:08
公式里的矩阵之间的除法也要用点的...

用你的源程序能运行出来,谢谢了
8楼2013-01-10 09:52:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫zb

木虫 (正式写手)

引用回帖:
7楼: Originally posted by csgt0 at 2013-01-10 09:42:08
公式里的矩阵之间的除法也要用点的...

matlab做出的结果貌似和三楼用1stOpt做的结果相差很大
9楼2013-01-10 09:57:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小木虫zb 的主题更新
信息提示
请填处理意见