I am trying to compute the zero of a function using fzero, but the system always says my function must be finite and real. How can I solve that? Thank you!
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Tianlan Yang
am 24 Sep. 2021
Kommentiert: Tianlan Yang
am 24 Sep. 2021
I want to find the zero of f(x) = 2(3x+4)(x^3+4x^2-10)/(x^2(3x+8)^2)
Here is the screenshot for the error:
0 Kommentare
Akzeptierte Antwort
Matt J
am 24 Sep. 2021
Bearbeitet: Matt J
am 24 Sep. 2021
Clearly, your function is non-finite at x=0. There is a factor of x^2 in its denominator.
Regardless, fzero() is the wrong tool for analyzing a rational function. Just use roots() to get the roots of the numerator polynomial.
r=[roots([1 0 4 -10]).' ,-4/3];
r=real( r( abs(imag(r))<1e-10 ))
And, of course, you must make sure that none of the numerator roots coincide with any denominator roots, but that is obvious here by inspection.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Optimization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!