MATLAB: Matlab solver for natural log equation

MATLABnatural logsolver

Hello,
I thought this was a simple solver equation, I know I am doing something wrong, because the result should be about S=1429.
This is my code:
syms x
eqn = log(0.5) == (-27109/x)-0.95*log(x)+25.18
S = vpasolve(eqn,x)
Matlab gives me a very large S =672919621689.2986708066438355574
What am I doing wrong here?

Best Answer

Does a solution near(er) to zero exist? PLOT IT!!!!!!
syms x
f = (-27109/x)-0.95*log(x)+25.18 - log(0.5);
fplot(f,[10,1000])
Do you see anything strange? A solution would correspond to a point where that curve crosses the line y == 0. Looking a little further up, we finally see this:
fplot(f,[200,1e4])
yline(0);
So a solution seems to occur near x == 1500.
S = vpasolve(f,x,1500)
S = 
1428.9171626682572235629898202448
However, it you look further out, the curve reaches a peak, and then starts to drop again. It may well cross zero again out there.
fplot(f,[10000,1e6])
yline(0);
Did you tell vpasolve which root it should find? Should it know?
vpasolve is a numerical root finder. It looks for a root, near where you tell it to look. If you don't tell it where, it picks a spot. And sometimes, it may end up converging to a solution you don't like.