Equation在WolframAlpha中返回一个解决方案,但在MATLAB中给出逻辑0。我怎样才能解决这个问题?

时间:2017-05-02 09:08:42

标签: matlab wolframalpha

以下是等式in WolframAlpha returning me the correct answer

在MATLAB中,我写了以下内容:

mu = 305; %作为临时示例,因为它大于c,即300

syms x
eqn = ((1 + (x/(mu + 300)))^((1/2) + (150/mu)))*((1 - (x/(mu - 300)))^((1/2) - (150/mu))) - 0.2 == 0 %matlab shows the answer is -605
solve(eqn,x)

它是相同的等式,除了MATLAB替代我的mu。 MATLAB将返回以下内容:

eqn = logical 0
ans = x

我是否以某种方式输入错误的等式?这就是为什么当我没有压制这个等式时它会向我显示逻辑零点?如何让它产生与WolframAlpha相同的值?

我还想注意,Maple似乎也挂在同一个等式上。

1 个答案:

答案 0 :(得分:0)

除非您有使用符号表达式的特定原因,否则您可以使用fsolve解决您使用的等式,如下所示:

%Define your value of mu
mu = 305;
% Define the equation as an anonymous function
fn = @(x) ((1 + (x/(mu + 300)))^((1/2) + (150/mu)))*((1 - (x/(mu - 300)))^((1/2) - (150/mu))) - 0.2;
% Define the initial value for x so that fsolve can find the root nearest to that
x0 = 1;
root_x = fsolve(fn, x0);

这导致输出root_x = 5.0000 + 0.0000i 您还可以更改x0的初始值

x0 = 400;
root_x = fsolve(fn, x0);

这将返回输出root_x = -4.9005e+02 - 2.6326e-05i

此方法可用于解决您可能拥有的任何方程式。