How to find zeros of a function?

869 次查看(过去 30 天)
Wenjie
Wenjie 2018-12-17
评论: DAVID 2024-9-20
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 个评论
Mark Sherstan
Mark Sherstan 2018-12-17
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 2018-12-17
If your function is always polynomial, you can use roots function to do this task. Please look at the following help page.

请先登录,再进行评论。

回答(3 个)

Wenjie
Wenjie 2018-12-17
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 个评论
Nico
Nico 2024-2-25
What does the @(x) and the 3 mean? Sorry I'm university student with no experience...
Dyuman Joshi
Dyuman Joshi 2024-2-25
编辑:Dyuman Joshi 2024-2-25
@(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.

请先登录,再进行评论。


Alexander
Alexander 2024-2-25
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)

Walter Roberson
Walter Roberson 2018-12-17
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 .

类别

Help CenterFile Exchange 中查找有关 Function Creation 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by