2017-05-02 10 views
0

다음은 방정식 in WolframAlpha returning me the correct answer입니다.수식은 WolframAlpha에서 솔루션을 반환하지만 MATLAB에서는 논리 0을 제공합니다. 이 문제를 어떻게 해결할 수 있습니까?

는 MATLAB에서, 나는 다음과 같은 서면으로 작성했습니다 :

무 = 305; % 임시 예로 나를 위해 MU 용 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

이 메서드를 사용하여 가질 수있는 방정식을 풀 수 있습니다.