why plot result is different from fplot's

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?

 采纳的回答

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 个评论

Thank you:) Do you know why plot can't compute this big n=600 but fplot can?
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.

请先登录,再进行评论。

更多回答(1 个)

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 个评论

I changed the x domain to (-5,5) But the answer is still wrong even for the first domain was wrong to we know that it's not the shape of cos(x).
Thank you for your answer Jesus:)
hello Pooneh,
what do you mean that that is not the shape of a cosine function? As fas as I see it, its exacty the same. Periodic behaviour, having value y=1 at x=0 and -1 at x= pi = 3.14 etc etc
EDIT: I just realized that you are using cosin instead of cos. You could ocmpare your function with matlab function for cosine is cos(x). Just plot them at the same graph using hold on.
Hi, I mean when I use plot it doesn't give me the whole shape of the cos(x).cosin(x) must be exactly like cos(x) because it is it's Taylor seri the result of fplot give me the right whole shape but plot give me limited part of the shape... Thank you ?
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!

请先登录,再进行评论。

类别

标签

Community Treasure Hunt

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

Start Hunting!

Translated by