MATLAB: Cannot solve symbolically returning a numeric approximation

MATLABSymbolic Math Toolboxwarning: cannot solve symbolically.

Hello, I am trying to solve the function shown in the figure below in terms of (k) but I am getting this warnning, the function is attached as an image. now this is how I solved it.
function [k] = Calculatek()
P`=0.5, P = 10000, k should be 75
P = input('Please Enter value of P : ');
Pd = input('Please Enter value of P''' );
K=sym( 'K') % define symbolic function for equation solver
num= (1-K/P)^(2*(P-K+0.5));
den= (1-2*K/P)^(P-2*K+0.5);
fun=Pd-( 1 - (num/den));
Temp=solve(fun);
k= double(Temp);
now I know for a fact that if P = 100000 and p' = 0.5, k should be 250 and if P = 10000 and p' = 0.5 k should be 75.
I am sure Matlab can solve this but I keep on getting this :
>> Calculatek
Please Enter value of P : 100000
Please Enter value of P'0.5
K =
K
Warning: Cannot solve symbolically.
Returning a numeric approximation instead.
> In solve (line 305)
In Calculatek (line 19)
ans =
-263.6242
which I am sure is not correct
what I am doing wrong? can anyone help.
thanks

Best Answer

P = 10000
Pd = 0.5;
syms K
num= (1-K/P)^(2*(P-K+0.5));
den= (1-2*K/P)^(P-2*K+0.5);
fun=Pd-( 1 - (num/den));
pretty(fun)
20001
2 K - -----
/ K \ 2 / K \20001 - 2 K 1
| 1 - ---- | | 1 - ----- | - -
\ 5000 / \ 10000 / 2
Problems with big exponents are always dangerous to try to solve. However, IF you give the solver a hint of which solution you are interested in...
vpasolve(fun,100)
ans =
82.911209433548073806263919152479
I don't know how you decided that 75 was the solution. That seems to be a bit off, as is verified by the plot. So I might disagree with your claim of FACT.
ezplot(fun,[50,100])
grid on
Related Question