taylor expanssion calculation result is wrong
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Zeynep Toprak
le 3 Nov 2020
Commenté : Ameer Hamza
le 4 Nov 2020
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/401964/image.png)
function [SN] = sintaylorfunction(A, tol)
k = 0;
error = 0 ;
sin = 0;
SN = sin;
sinplus1 = 0;
SM = sinplus1;
while E <= tol
sin = (-1)^k * A^(2*k+1)/factorial(2*k+1);
SN = SN + sin;
sinplus1 = (-1)^(k+1) * A^(2*(k+1)+1)/factorial(2*(k+1)+1);
SM = SM + sinplus1;
error= abs( max(SM - SN));
end
end
I wrote the sin function in this way. When I calculate sin(pi/2), I get sin(pi/2) = 1.5708. However, we know that sin(pi/2) = 1. Where is my mistake in my function?
0 commentaires
Réponse acceptée
Ameer Hamza
le 3 Nov 2020
Modifié(e) : Ameer Hamza
le 3 Nov 2020
kou are not incrementing 'k' inside the while-loop. Also, the while-condition is incorrect. Try the following code
sintaylorfunction(pi/2, 0.01)
function [SN] = sintaylorfunction(A, tol)
k = 0;
error = inf;
sin = 0;
SN = sin;
sinplus1 = 0;
SM = sinplus1;
while error >= tol
sin = (-1)^k * A^(2*k+1)/factorial(2*k+1);
SN = SN + sin;
sinplus1 = (-1)^(k+1) * A^(2*(k+1)+1)/factorial(2*(k+1)+1);
SM = SM + sinplus1;
error= abs( max(SM - SN));
k = k+1;
end
end
6 commentaires
Plus de réponses (1)
Steven Lord
le 3 Nov 2020
Modifié(e) : Steven Lord
le 3 Nov 2020
I want to walk through your code and comment on a few places.
function [SN] = sintaylorfunction(A, tol)
k = 0;
error = 0 ;
sin = 0;
The identifier sin also already has a meaning in MATLAB, so I recommend you choose a different variable name.
SN = sin;
sinplus1 = 0;
SM = sinplus1;
while E <= tol
The variable E doesn't exist.
sin = (-1)^k * A^(2*k+1)/factorial(2*k+1);
From the role this plays, a better name might be term.
SN = SN + sin;
sinplus1 = (-1)^(k+1) * A^(2*(k+1)+1)/factorial(2*(k+1)+1);
SM = SM + sinplus1;
error= abs( max(SM - SN));
In this loop you change neither the (nonexistent) variable E nor the variable tol. So if this were to enter the loop, you'd never exit.
FYI, you might want to check your answer using the funm function to compute the matrix cosine and matrix sine.
0 commentaires
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!