How to find zeros of a function?

640 ビュー (過去 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)
  1 件のコメント
DAVID
DAVID 2024 年 9 月 20 日
This was really elegant, thanks!

サインインしてコメントする。


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 Center および File ExchangeFunction Creation についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by