解决功能不起作用

时间:2017-05-17 12:26:40

标签: matlab

我目前正尝试使用求解函数求解方程,但我一直在收到错误。 这是我的代码:

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);

有谁知道这里出了什么问题以及如何解决?非常有帮助,谢谢!

1 个答案:

答案 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);