How to find zeros of a function?

291 visualizaciones (últimos 30 días)
Wenjie
Wenjie el 17 de Dic. de 2018
Comentada: DAVID el 20 de Sept. de 2024
For instance,
x = -3.55:0.1:3.55;
y = x.^2 - 4;
Obviously, when x=2 or -2, y=0.
But I want to know how to use matlab to find zeros of a function y = f(x) when x is a matrix defined by the user like the above case.
  3 comentarios
Mark Sherstan
Mark Sherstan el 17 de Dic. de 2018
As per documentaiton note:
x = fzero(fun,x0) tries to find a point x where fun(x) = 0. This solution is where fun(x) changes sign—fzero cannot find a root of a function such as x^2.
Akira Agata
Akira Agata el 17 de Dic. de 2018
If your function is always polynomial, you can use roots function to do this task. Please look at the following help page.

Iniciar sesión para comentar.

Respuestas (3)

Alexander
Alexander el 25 de Feb. de 2024
If it's not a function but meassured data I would go like this in a first try:
x = -3.55:0.0001:3.55; % assuming 10 kHz sample frequency
y = x.^2 - 4;
yS = sign(y);
dyS = diff(yS);
Z=find(dyS ~= 0);
x(Z)
  1 comentario
DAVID
DAVID el 20 de Sept. de 2024
This was really elegant, thanks!

Iniciar sesión para comentar.


Wenjie
Wenjie el 17 de Dic. de 2018
I've found the solution. First, define the function in a separate file as
function y = fun(x)
y = x.^2-4;
end
Then use fzero to find x value that will give y=0.
x0 = fzero(@(x) fun(x), 3)
  3 comentarios
Nico
Nico el 25 de Feb. de 2024
What does the @(x) and the 3 mean? Sorry I'm university student with no experience...
Dyuman Joshi
Dyuman Joshi el 25 de Feb. de 2024
Editada: Dyuman Joshi el 25 de Feb. de 2024
@(x) is the syntax used to define a Function Handle / Anonymous Functions
The 3 is provided as an initial guess for fzero() to work with - see fzero for more information.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 17 de Dic. de 2018
x(y==0)
Note that this can miss an indefinite number of zeroes of a function if the x do not happen to sample at the right places . It also will not detect zero crossings between x values . You could make use of the results to get hints about zero crossings .

Categorías

Más información sobre Get Started with Optimization Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by