Why the sums of cos(x) over 2*pi range not zero?
Afficher commentaires plus anciens
when evaluating the following codes:
t = linspace(-pi,pi,128); s = sin(t); c = cos(t); sum(s), sum(c)
ans =
6.811558403281303e-15
ans =
-0.999999999999978
Q: should not both be zero?
and try
sum(c(2:end))
ans =
2.5313e-14
also quad(@cos,-pi,pi)
ans =
4.0143e-09
Q: Why the discrepancy?
Thank you for your input.
Thanks J
Réponse acceptée
Plus de réponses (3)
Luffy
le 11 Juil 2012
In matlab,
sin(pi) = 1.2246e-16
The expression sin(pi) is not exactly zero because pi is not exactly π
Wayne King
le 11 Juil 2012
Modifié(e) : Wayne King
le 11 Juil 2012
If you're trying to establish some equivalence between the integral of cos(t) from -pi and pi and the sum of cos(t), you're forgetting a very important part and that is the dt
t = linspace(-pi,pi,1000);
dt = (pi-(-pi))/length(t);
sum(cos(t))*dt
Using other integration routines in MATLAB is more robust than what I've done, but you see it gets you much closer to zero. Think about the formula for a Riemann sum.
Wayne King
le 11 Juil 2012
I don't think you can say that simply summing cos(t) on an arbitrary grid should be zero. You have to be careful how the grid is constructed. For example
k = 1;
N = 100;
t = 0:99;
sum(cos(2*pi*k/N*t))
sum(sin(2*pi*k/N*t))
are both zero, because I used a Fourier frequency and a specific discrete-time vector. This has to do with the orthogonality of the N-th roots of unity.
1 commentaire
Tianyou Chen
le 11 Juil 2012
Catégories
En savoir plus sur Mathematics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!