Cannot solve symbolically returning a numeric approximation
11 views (last 30 days)
Show older comments
Ayman El Hajjar
on 29 Nov 2015
Commented: Walter Roberson
on 30 Nov 2015
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
2 Comments
John D'Errico
on 29 Nov 2015
Edited: John D'Errico
on 29 Nov 2015
p' is not a valid variable name in MATLAB, so the above code does not run. Regardless, you never actually use the value of p' in that code. Perhaps you intended the first line to be commented out, and you are using Pd as the value of p'.
Accepted Answer
John D'Errico
on 29 Nov 2015
Edited: John D'Errico
on 29 Nov 2015
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
2 Comments
Walter Roberson
on 30 Nov 2015
for P = 250, there are two real-valued solutions, one about -13.5 and the other about +12.8 . My tests with a different product suggests that symbolic packages may have difficulty finding both solutions; it is even possible that MuPAD is only able to find the negative one in this case.
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!