why plot result is different from fplot's

181 views (last 30 days)
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?

Accepted Answer

Jesus Sanchez
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
pooneh shabdini
pooneh shabdini on 5 Mar 2020
Thank you:) Do you know why plot can't compute this big n=600 but fplot can?
Jesus Sanchez
Jesus Sanchez on 5 Mar 2020
If I understood the reference page, its because MATLAB uses n=23 as starting point and then performs an adaptive study of the solution, to find an optimal value Reference so I guess they force it to be less than that limit.

Sign in to comment.

More Answers (1)

Jesus Sanchez
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
fplot(f) plots the curve defined by the function y = f(x) over the default interval [-5 5] for x.
  6 Comments
Jesus Sanchez
Jesus Sanchez on 5 Mar 2020
I saw the result in matlab and it is indeed strange. The Taylor expansions resulting of Y gives "NaN" as a result for values of x that are not cointained within [-pi, pi].
The only mistake that I can see is that you have not written i-1 everywhere, so you are not implementeing correctly the function. I will give it more thought later!

Sign in to comment.

Categories

Find more on Line Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!