24小时热门版块排行榜    

查看: 1365  |  回复: 11

wanyshenger

金虫 (正式写手)

[求助] 请教大神:matlab怎么求解有符号变量的方程组已有2人参与

MATLAB刚刚入门,不太会用,老板让我计算绝热火焰温度,现在遇到的问题是燃烧生成的CO2,H2O会分解,但化学平衡的方程组不会解,简单来说就是方程组里有符号变量如何求解
例如:
x*[c+0.5*(x+y)]^0.5/(a-x)=K1;
y*[c+0.5*(x+y)]^0.5/(b-y)=K2;
其中a,b,c,K1,K2 均为过程中赋值的变量,求解x,y,请问这种情况应该如何用MATLAB求解。请各位大神不吝指教,感谢感谢!
回复此楼

» 猜你喜欢

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

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

断剑残雪

至尊木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
syms x y a b c K1 K2;  %定义变量
[x,y]=solve(x*sqrt(c+0.5*(x+y))/(a-x)==K1 , y*sqrt(c+0.5*(x+y))/(b-y)==K2,x,y) %给定方程组,并返回x,y
静若处子
2楼2015-07-30 08:14:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

断剑残雪

至尊木虫 (职业作家)

【答案】应助回帖

output:

x =

(K1*a + K2*b + 2.0*K2*c)/(K1 - 1.0*K2) - (2.0*z1^3)/(K1 - 1.0*K2) + (2.0*c*z1)/(K1 - 1.0*K2) - (2.0*K2*z1^2)/(K1 - 1.0*K2)


y =

(2.0*z1^3)/(K1 - 1.0*K2) + (2.0*K1*z1^2)/(K1 - 1.0*K2) - (2.0*c*z1)/(K1 - 1.0*K2) - (1.0*K1*a + 1.0*K2*b + 2.0*K1*c)/(K1 - 1.0*K2)
静若处子
3楼2015-07-30 08:15:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

断剑残雪

至尊木虫 (职业作家)

【答案】应助回帖

z1 = RootOf(z^4 + z^3*(K1 + K2) - z^2*(c - K1*K2) - z*((K1*a)/2 + (K2*b)/2 + K1*c + K2*c) - K1*K2*c - (K1*K2*b)/2 - (K1*K2*a)/2, z)
静若处子
4楼2015-07-30 08:17:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

断剑残雪

至尊木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
wanyshenger: 金币+8, ★★★很有帮助 2015-07-30 13:00:56
最终版:
syms z a b c  K1 K2 x y;
a=1 ;b=1 ;c=1  ;K1=1 ;K2=1; %比如已知它们的值,要求x,y。那么把前面的注释去掉再运行即可,它们的值也可以自己设定。
[x,y]=solve(x*sqrt(c+0.5*(x+y))/(a-x)==K1 , y*sqrt(c+0.5*(x+y))/(b-y)==K2,x,y); %给定方程组,并返回x,y的符号表达式;
z1 = solve(z^4 + z^3*(K1 + K2) - z^2*(c - K1*K2) - z*((K1*a)/2 + (K2*b)/2 + K1*c + K2*c) - K1*K2*c - (K1*K2*b)/2 - (K1*K2*a)/2==0, z)
x=subs(x,'z1',z1) %返回x的值
y=subs(y,'z1',z1) %返回y的值
静若处子
5楼2015-07-30 08:34:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
wanyshenger: 金币+2 2015-07-30 13:01:34
不存在解析解的。
如果给出a,b,c,K1,K2 的具体数值,可以求出数值解。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2015-07-30 12:20:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanyshenger

金虫 (正式写手)

引用回帖:
6楼: Originally posted by 月只蓝 at 2015-07-30 12:20:01
不存在解析解的。
如果给出a,b,c,K1,K2 的具体数值,可以求出数值解。

请问:我会在过程中给a b c K1 K2赋值,不过因为有个循环,所以这五个的值是会变化的,所以我想问的就是怎么在某一个循环下(就是a b c K1 K2被赋值),求解这步循环所应该得到的x和y。谢谢!
USAwaitforme
7楼2015-07-30 12:46:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanyshenger

金虫 (正式写手)

引用回帖:
5楼: Originally posted by 断剑残雪 at 2015-07-30 08:34:25
最终版:
syms z a b c  K1 K2 x y;
a=1 ;b=1 ;c=1  ;K1=1 ;K2=1; %比如已知它们的值,要求x,y。那么把前面的注释去掉再运行即可,它们的值也可以自己设定。
=solve(x*sqrt(c+0.5*(x+y))/(a-x)==K1 , y*sqrt(c ...

谢谢你的帮忙,还想请问一下,如果我这个方程更加复杂,比如
x*[c+0.5*(x+y)]^0.5/(a-x)/(a+b+c+0.5*(x+y))^0.5=K1;
y*[c+0.5*(x+y)]^0.5/(b-y)/(a+b+c+0.5*(x+y))^0.5=K2;
这样的话也可以这样做吗?这样会不会效率不高呀,因为我还有循环(每一步循环中a b c K1 K2会变),这样会不会计算很慢呀,谢谢
USAwaitforme
8楼2015-07-30 13:00:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

断剑残雪

至尊木虫 (职业作家)

引用回帖:
8楼: Originally posted by wanyshenger at 2015-07-30 13:00:43
谢谢你的帮忙,还想请问一下,如果我这个方程更加复杂,比如
x*^0.5/(a-x)/(a+b+c+0.5*(x+y))^0.5=K1;
y*^0.5/(b-y)/(a+b+c+0.5*(x+y))^0.5=K2;
这样的话也可以这样做吗?这样会不会效率不高呀,因为我还有循环 ...

给定矩阵,每一次让它自己提取即可。
静若处子
9楼2015-07-30 13:08:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

引用回帖:
7楼: Originally posted by wanyshenger at 2015-07-30 12:46:50
请问:我会在过程中给a b c K1 K2赋值,不过因为有个循环,所以这五个的值是会变化的,所以我想问的就是怎么在某一个循环下(就是a b c K1 K2被赋值),求解这步循环所应该得到的x和y。谢谢!...

方程求解的程序放进循环中,a b c K1 K2变化一次,求解一次方程。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
10楼2015-07-30 13:16:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wanyshenger 的主题更新
信息提示
请填处理意见