# why plot result is different from fplot's

82 views (last 30 days)

Show older comments

pooneh shabdini
on 4 Mar 2020

Commented: Jesus Sanchez
on 5 Mar 2020

function [ Y ] = cosin( n,x)

s=size(x,2);

Y=zeros(1,s);

for i=1:n

Y=Y+((((-1)^(i-1))*(x.^((2*i)-2)))/factorial((2*i)-2));

end

end

I used this function once in plot and then in fplot:

x=-pi:pi/10:pi;

Y=cosin(600,x);

plot(x,Y)

result of plot was this shape:

syms x

fplot(cosin(600,x))

the result of fplot was this:

why plot just show this small part of cos(x) and not more?

##### 0 Comments

### Accepted Answer

Jesus Sanchez
on 5 Mar 2020

Problem solved. The problem here is the value of n. Since you wrote that n = 600, the resulting number is too big for the computer to process, which assigns an Inf value to it. This is turns makes the result be a NaN as an output.

To sum up, the operation:

x.^(2*i)

should never be allowed to have an inf value. If you try to do:

5^(2*600); % My matlab gives me an infinite value here, its too big!

So the only thing that you need is to pay attention to the value of n. I set it to 100 and it is working properly for me now:

x = [-5:0.1:5];

y = cos(x); % Matlab

n = 100;

Y = cosin(n,x); % Own

figure

hold on

plot(x,y,'.-');

plot(x,Y);

legend('cos(x)','cosin(x)');

hold off

function [ Y ] = cosin( n,x)

s=size(x,2);

Y=zeros(1,s);

for i=0:n-1

%Y=Y+((((-1)^(i-1))*(x.^((2*i)-2)))/factorial((2*i)-2));

Y=Y+(((-1).^(i)).*(x.^(2.*i)))./factorial(2.*i);

end

end

##### 2 Comments

Jesus Sanchez
on 5 Mar 2020

### More Answers (1)

Jesus Sanchez
on 4 Mar 2020

For plot, you wrote that x is defined between -pi and pi.

For fplot, you can see the reason in its reference page

### See Also

### Community Treasure Hunt

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

Start Hunting!