How to use fzero and choose correctly initial guess?

20 visualizzazioni (ultimi 30 giorni)
Hi,
May I know how to solve the following equation with fzero and get two numbers: -2 and +2.
When I used the following code, it returned x=-2
fzero(@(x) x^2-4,0)
And this returned x=+2
fzero(@(x) x^2-4,1)
And furthermore, how can I choose correctly the initial guess number? I found that the answer will depend on the initial guess.

Risposta accettata

Star Strider
Star Strider il 26 Ott 2014
Whenever I have a function I want to use fzero with, I plot it to see how many zeros it has and about where they are. I then choose my initial estimates based on that.
A more mathematically correct approach involves taking the vector you want the zeros of, then multiplying it by a one-position circularly-shifted version of itself, using the circshift function. This produces negatives at the zero crossings that are easy to test for and determine the indices of using the find function. I then use the x-values at those indices as the initial estimates. The initial estimates don’t have to be perfect, just close enough. If there are several zero-crossings, you will get several answers from fzero. It is up to you to choose the ‘correct’ zeros.
  4 Commenti
Khanh
Khanh il 27 Ott 2014
Great thanks!. It makes me easier to understand your means.
Star Strider
Star Strider il 27 Ott 2014
My pleasure! I apologise for not including that in my original answer.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Optimization in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by