我目前正尝试使用求解函数求解方程,但我一直在收到错误。 这是我的代码:
Dh=0.02;
Lc1=1.6;
Prw=9;
a=0.03*(Dh/Lc1)*Prw;
b=0.016*(Dh/Lc1)^(2/3)*Prw^(2/3);
c=9;
d=7.54;
syms Redh
eqn = (c*b-d*b)*Redh^(2/3)-a*Redh == d-c;
solRedh = solve(eqn,Redh);
当我运行时,我得到错误
警告:解决方案是 由符号参数化:z2。 包括参数和条件 在解决方案中,指定 ' ReturnConditions'选项。
解决> warnIfParams(第500行) 在解决(第356行) 在Massflow_1(第105行) 警告:解决方案有效 以下条件:3 * z2 ^ 2 + z2 ^ 3 - 59/50 == 0& -pi / 3<角度(z2)& 角度(z2)< = pi / 3。 包括参数和条件 在解决方案中,指定 ' ReturnConditions'选项。 在解决> warnIfParams(第507行) 在解决(第356行) 在Massflow_1(第105行)
我不明白为什么答案是用符号z2参数化的。应该有一个包含值的解决方案。即使我将它简化为具有相同功率的等式,我确定有一个答案,我得到相同的错误。
Simpeler代码
syms Redh
eqn = 0.0054*Redh^(2/3)-0.0034*Redh == -1.46;
solRedh = solve(eqn,Redh);
有谁知道这里出了什么问题以及如何解决?非常有帮助,谢谢!
答案 0 :(得分:0)
在你的情况下,matlab使用符号'z2'来表示解决方案使用复数。(z2∈Z)
您需要向matlab解释您对复杂解决方案不感兴趣。
它应该没有问题:
% set an assumptions on symbolic variables! here our solution need to be a real number.
syms Redh real %check the doc for more informations about the assumptions.
eqn = 0.0054*Redh^(2/3)-0.0034*Redh == -1.46;
sol_sym = solve(eqn,Redh);
sol_nosym = double(sol_sym);