2017-05-02 5 views
0

ここには式in WolframAlpha returning me the correct answerがあります。EquationはWolframAlphaの解を返していますが、MATLABでは論理0を返しています。これをどうすれば解決できますか?

MATLABでは、次のように書いています。

mu = 305; %一時的な例として、それは私のためにミューのためのMATLABの代用を除く、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) 

それは同じ式だとする、Cより大きいだから。 MATLABは次の値を返しています:

eqn = logical 0 
ans = x 

何とか数式を間違って入力していますか?それは私が方程式を抑圧していないときに私に論理ゼロを示しているのですか? WolframAlphaと同じ値を得るにはどうしたらいいですか?

また、Mapleもこの同じ式でハングしているように見えます。あなたは記号式を使用するための具体的な理由がない限り、以下のように

答えて

1

、あなたが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

このメソッドを使用して、あなたが持つ可能性のある方程式のいずれかを解くことができます。

関連する問題