Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Code not setting value=0
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I don't understand this odd little thing in my code. I have simplified the function but this is basically what it's doing:
A=10;
fun=@(x) x+1/(A.*x);
z=fzero(fun,0)
This runs fine and gives me the result.
However if I do this...
A=10;
B=0;
fun=@(x) x+1/((A.*x)+(B.*x));
z=fzero(fun,0)
... then I get problems. I thought that this should give the same result! I don't get why defining B=0 doesn't seem to be taken into account when fzero solves fun.
The idea is that I can change B once I know that for B=0 I get the same result as for if there was no B term in the equation.
--- update ---
I have identified that the problem is with the x in the B.*x term. If I just do (A.*x)+B then it works fine. Because the fzero variable is x it seems to not recognise that whilst there is an additional x dependance it should not take it into account since B=0 makes that term 0.
2 Commenti
Matt J
il 24 Giu 2013
This runs fine and gives me the result.
No, even your first example, doesn't work. The function is undefined at x=0 and fails as it should
z=fzero(fun,0)
Error using fzero (line 309)
Function value at starting guess must be finite and real.
Matt J
il 24 Giu 2013
Modificato: Matt J
il 24 Giu 2013
The function
fun=@(x) x+1/((A.*x)+(B.*x));
can never have any roots when A+B>0. In the region x>0, both terms being summed in the function are strictly positive. The function is undefined at x=0. Inn the region x<0, all terms are strictly negative.
Risposte (2)
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!