why plot result is different from fplot's
83 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Jesus Sanchez
2020-3-5
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 个评论
Jesus Sanchez
2020-3-5
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 个)
Jesus Sanchez
2020-3-4
For plot, you wrote that x is defined between -pi and pi.
For fplot, you can see the reason in its reference page
6 个评论
Jesus Sanchez
2020-3-5
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!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!