24小时热门版块排行榜    

查看: 1848  |  回复: 6

3209的烟屁

金虫 (小有名气)

[求助] 解带参数方程,参数在变

function f=fafun(x)
syms M01  M02  M03 M04 M05 M06 T N0 R     
M01=30;
M02=30;
M03=5;
M04=5;
M05=0;
M06=30;
M11=M01/60;
M12=M02/56;
M13=M03/102;
M14=M04/40.3;
M15=M05/62;
M16=M06/78;
M21=M11/(M11+M12+M13+M14+M15+M16);
M22=M12/(M11+M12+M13+M14+M15+M16);
M23=M13/(M11+M12+M13+M14+M15+M16);
M24=M14/(M11+M12+M13+M14+M15+M16);
M25=M15/(M11+M12+M13+M14+M15+M16);
M26=M16/(M11+M12+M13+M14+M15+M16);
N31=0.5*M21/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N32=0.6875*M22/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N33=0.3542*M23/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N34=0.4583*M24/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N35=0.6736*M25/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N36=0.7444*M26/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
   T=1623.15;
   N11=(243.2+0.031*T)/1000;
   N12=(791-0.0935*T)/1000;
   N13=(1024-0.177*T)/1000;
   N14=(1770-0.636*T)/1000;
   N15=(438-0.116*T)/1000;
   N16=(1604.6-0.72*T)/1000;
   N0=6.02*10^23;
   R=8.314;
   N21=R*T/( N0^(1/3)*(27.516*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
   N22=R*T/( N0^(1/3)*(20.7*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
   N23=R*T/(N0^(1/3)*(28.3*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
   N24=R*T/(N0^(1/3)*(16.1*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
   N25=R*T/(N0^(1/3)*(33.0*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
   N26=R*T/(N0^(1/3)*(31.3*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
f=[N31*exp((x(7)-N11)/N21)-x(1);
   N32*exp((x(7)-N12)/N22)-x(2);
   N33*exp((x(7)-N13)/N23)-x(3);
   N34*exp((x(7)-N14)/N24)-x(4);
   N35*exp((x(7)-N15)/N25)-x(5);
   N36*exp((x(7)-N16)/N26)-x(6);
   N31*exp((x(7)-N11)/N21)+N32*exp((x(7)-N12)/N22)+N33*exp((x(7)-N13)/N23)+N34*exp((x(7)-N14)/N24)+N35*exp((x(7)-N15)/N25)+N36*exp((x(7)-N16)/N26)-1];
M文件如上所示,我想让M05+M06=30,所以就是M05=30,29,28....不想一个一个去改,有没有类似for M05=30 if M05>1 M05=M05-1这样的办法直接能输出30个结果?还有可能变三个量,所以想请教怎么办?
回复此楼

» 猜你喜欢

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

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

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
3209的烟屁: 金币+10, ★★★很有帮助 2013-04-28 11:28:23
1、用矩阵M06=0:30,M01=30-M06;后面都加上点
2、用循环,用数组存储结果
showmethemoney
2楼2013-04-27 17:15:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

3209的烟屁

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2013-04-27 17:15:11
1、用矩阵M06=0:30,M01=30-M06;后面都加上点
2、用循环,用数组存储结果

大哥不要生气,我想再问一下具体应该怎么写,自己改了几下也不行,希望把改的地方写一下好吗,跪谢!
3楼2013-04-28 11:30:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

3209的烟屁

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2013-04-27 17:15:11
1、用矩阵M06=0:30,M01=30-M06;后面都加上点
2、用循环,用数组存储结果

M01=30;
M02=30;
M03=5;
M04=5;
for M05=0:30
    if M05<=30
        M05=M05+1;
    end
M06=30-M05;
这是我改的,运行不了啊,问题是这些代码是M文件中的,解这个方程还需要在命令窗口中输入
x0=[0.4;0.2;0.007;0.005;0.16;0.14;0.4];
options=optimset('Display','off');
[x,fval,exitflag,output,Jacobian]=fsolve(@fafun,x0,options)
我需要改变M01-M05得到很多数据点,这样一个一个来太慢了
4楼2013-04-28 16:13:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tracuer2011

木虫 (小有名气)


csgt0: 金币+1, 谢谢 2013-05-02 09:10:58
M01=30;
M02=30;
M03=5;
M04=5;
x0=[0.4;0.2;0.007;0.005;0.16;0.14;0.4];
options=optimset('Display','off');
for M05=0:30
     M06=30-M05;
     options=optimset('Display','off');
     [x,fval,exitflag,output,Jacobian]=fsolve(@fafun,x0,options)
     Fval(M05+1)=fval;    %Fval 即为所求数组
end

%%类似于这样行不行
5楼2013-04-30 00:09:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

3209的烟屁

金虫 (小有名气)

引用回帖:
5楼: Originally posted by tracuer2011 at 2013-04-30 00:09:22
M01=30;
M02=30;
M03=5;
M04=5;
x0=;
options=optimset('Display','off');
for M05=0:30
     M06=30-M05;
     options=optimset('Display','off');
     =fsolve(@fafun,x0,options)
     Fval(M05+1)= ...

试了一下,还是不行。M01-m06是定义在M文件中的,这样在命令窗口给行吗,是不是这个循环要放在M文件的代码中啊?
6楼2013-04-30 17:08:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

function f3209
global M05 M06
options=optimset('Display','off');
x0=[0.4;0.2;0.007;0.005;0.16;0.14;0.4];
for i=1:31
    M05=i-1;
    M06=31-i;
[x(:,i),fval(:,i),exitflag(i),output(:,i),Jacobian(i,:,]=fsolve(@fafun,x0,options);
end
x
fval
exitflag
output
end


function f=fafun(x)
global M05 M06
M01=30;
M02=30;
M03=5;
M04=5;
M11=M01/60;
M12=M02/56;
M13=M03/102;
M14=M04/40.3;
M15=M05/62;
M16=M06/78;
M21=M11/(M11+M12+M13+M14+M15+M16);
M22=M12/(M11+M12+M13+M14+M15+M16);
M23=M13/(M11+M12+M13+M14+M15+M16);
M24=M14/(M11+M12+M13+M14+M15+M16);
M25=M15/(M11+M12+M13+M14+M15+M16);
M26=M16/(M11+M12+M13+M14+M15+M16);
N31=0.5*M21/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N32=0.6875*M22/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N33=0.3542*M23/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N34=0.4583*M24/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N35=0.6736*M25/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
N36=0.7444*M26/(0.5*M21+0.6875*M22+0.3542*M23+0.4583*M24+0.6736*M25+0.7444*M26);
    T=1623.15;
    N11=(243.2+0.031*T)/1000;
    N12=(791-0.0935*T)/1000;
    N13=(1024-0.177*T)/1000;
    N14=(1770-0.636*T)/1000;
    N15=(438-0.116*T)/1000;
    N16=(1604.6-0.72*T)/1000;
    N0=6.02*10^23;
    R=8.314;
    N21=R*T/( N0^(1/3)*(27.516*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
    N22=R*T/( N0^(1/3)*(20.7*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
    N23=R*T/(N0^(1/3)*(28.3*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
    N24=R*T/(N0^(1/3)*(16.1*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
    N25=R*T/(N0^(1/3)*(33.0*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
    N26=R*T/(N0^(1/3)*(31.3*[1+1*10^(-4)*(T-1773)]*10^-6)^(2/3));
f=[N31*exp((x(7)-N11)/N21)-x(1);
    N32*exp((x(7)-N12)/N22)-x(2);
    N33*exp((x(7)-N13)/N23)-x(3);
    N34*exp((x(7)-N14)/N24)-x(4);
    N35*exp((x(7)-N15)/N25)-x(5);
    N36*exp((x(7)-N16)/N26)-x(6);
    N31*exp((x(7)-N11)/N21)+N32*exp((x(7)-N12)/N22)+N33*exp((x(7)-N13)/N23)+N34*exp((x(7)-N14)/N24)+N35*exp((x(7)-N15)/N25)+N36*exp((x(7)-N16)/N26)-1];
end
showmethemoney
7楼2013-05-02 15:05:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 3209的烟屁 的主题更新
信息提示
请填处理意见