solve not returning two answers
Mostra commenti meno recenti
Hi,
I have a nonlinear equation that I need to sovle for 'x'. Following is my code:
syms x q N
q=.95;
N=500;
eqn = 2*log((((N-x)/(q*N))^(N-x))*((x/((1-q)*N))^x)) == 3.841;
solx = solve(eqn, x);
I am expecting two values for 'x' but am getting just one (i.e. ~35). I am not getting the other value of 16. Also I get the following warning:
Warning: Cannot solve symbolically. Returning a numeric approximation instead.
Please tell me what I am doing wrong.
Thanks,
Risposta accettata
Più risposte (1)
Walter Roberson
il 8 Lug 2019
1 voto
When an equation is sufficiently complicated, solve cannot find all the exact solutions. Often it does not even know how to find one exact solution. In such cases, solve() uses vpasolve() to find one numeric solution.
2 Commenti
Walter Roberson
il 8 Lug 2019
It is always a mistake to use solve() for equations with floating point coefficients such as 3.841. solve() is for finding exact solutions, which is something that you cannot do for equations involving inexact quantities such as 3.841. 3.841 represents a range of numbers, everything from 38405/10000 to 38149/10000. 3.841 does *not* mean 3841/1000 exactly.
Syeda Amberin
il 8 Lug 2019
Categorie
Scopri di più su Linear Algebra in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!