How to find zeros of a function?

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 Comments

Wenjie
Wenjie on 17 Dec 2018
Edited: Wenjie on 17 Dec 2018
I want to use fzero to do so, but I don't know how, since x is a matrix, rather than a symbolic function.
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.
If your function is always polynomial, you can use roots function to do this task. Please look at the following help page.

Sign in to comment.

Answers (3)

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)
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 Comments

However this is not suitable for the case where x is a matrix like you asked in your Question.
fzero() itself is also not suitable for the case where you have an array-valued (probably multivariate) function: you need fsolve() from the Optimization Toolbox for that.
What does the @(x) and the 3 mean? Sorry I'm university student with no experience...
Dyuman Joshi
Dyuman Joshi on 25 Feb 2024
Edited: Dyuman Joshi on 25 Feb 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.

Sign in to comment.

Walter Roberson
Walter Roberson on 17 Dec 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 .

Categories

Tags

Asked:

on 17 Dec 2018

Commented:

on 20 Sep 2024

Community Treasure Hunt

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

Start Hunting!