Numerically stable implementation of sin(y*atan(x))/x
    6 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I am trying to implement a modified version of the Magic Tyre Formula. The simplified version of my problem ist that i need to calculate this function:
sin(y*atan(x))/x
especially at and around x = 0. I know that this function is defined for x = 0 because:
sin(y*atan(x))/x = sin(y*atan(x))/(y*atan(x)) * (y*atan(x))/x = sin(c)/c * atan(x)/x * y with c = y*atan(x)
Both
sin(c)/c and atan(x)/x
are defined for x = 0 and c = 0.
I would like to use built in functions to solve my problem, because im not that good at numerics.
What I have tried until now is:
1) I can calculate sin(c)/c by using the built in sinc function, but then I still have to calculate atan(x)/x which i have found no solution for by now.
2) I know that
sin(atan(x)) = x/(sqrt(1+x^2))
But i havent found a way to rewrite this equation using
sin(y*atan(x))
Does anyone have an idea how to solve my problem?
0 commentaires
Réponse acceptée
Plus de réponses (2)
  Majid Farzaneh
      
 le 17 Mai 2018
        Hi, You can easily add an epsilon to x like this:
sin(y*atan(x+eps))/(x+eps)
  Ameer Hamza
      
      
 le 17 Mai 2018
        How about defining it like this
f = @(x,y) y.*(x==0) + sin(y.*atan(x))./(x+(x==0)*1);
0 commentaires
Voir également
Catégories
				En savoir plus sur Numerical Integration and Differentiation 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!