given this function is there a way in matlab with which i can know is its odd, even or neither?

 Akzeptierte Antwort

Voss
Voss am 6 Mai 2022

1 Stimme

One thing you can do is to plot the function and visually inspect it:
f = @(x)0.5*(sin(x)+abs(sin(x)));
fplot(f,[-pi pi])
It doesn't look even or odd.
You could also evaluate the function at some values of x and -x and compare the results:
x = -pi:0.1:pi;
is_even = isequal(f(x),f(-x))
is_even = logical
0
is_odd = isequal(f(x),-f(-x))
is_odd = logical
0
(A sanity check with functions known to be odd or even)
f = @(x)sin(x);
is_even = isequal(f(x),f(-x))
is_even = logical
0
is_odd = isequal(f(x),-f(-x))
is_odd = logical
1
f = @(x)cos(x);
is_even = isequal(f(x),f(-x))
is_even = logical
1
is_odd = isequal(f(x),-f(-x))
is_odd = logical
0

5 Kommentare

SSBGH
SSBGH am 6 Mai 2022
thanks
SSBGH
SSBGH am 6 Mai 2022
when i tried to plot it without [-pi pi] i got this
doesn't it look like an even function?
Voss
Voss am 6 Mai 2022
Bearbeitet: Voss am 6 Mai 2022
No. An even function is symmetric about the y-axis.
f = @(x)0.5*(sin(x)+abs(sin(x)));
fplot(f,[-15 7.5]);
set(gca(),'YAxisLocation','origin','YLim',[-0.2 2.2])
SSBGH
SSBGH am 6 Mai 2022
thanks you are great
Voss
Voss am 6 Mai 2022
You're welcome!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

David Hill
David Hill am 6 Mai 2022

1 Stimme

x=-pi:.001:pi;
f=@(x).5*(sin(x)+abs(sin(x)));
if isequal(f(x),f(-x))
even_odd=2;%even
elseif isequal(-f(x),f(-x))
even_odd=1;%odd
else
even_odd=0;%neither
end

Gefragt:

am 6 Mai 2022

Kommentiert:

am 6 Mai 2022

Community Treasure Hunt

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

Start Hunting!

Translated by