J'ai besoin de calculer Tanh-1 en C #
(et sinh-1 et cosh-1) p>
Je ne l'ai pas trouvé dans la bibliothèque de mathématiques .. Toute suggestion? P>
EDIT: Tanh pas bronzer !! p>
4 Réponses :
Vous devez les définir vous-même.
http://fr.wikipedia.org / wiki / hyperbolique_function # inverse_fonctions_as_logarithmes p>
Notez que le logarithme naturel n'est également aucune fonction de la classe de mathématiques standard, cependant, le logarithme général est. Vous pouvez simplement utiliser le logarithme général avec la base E i> (qui est une constante dans la classe de mathématiques). Ce qui est bien sûr exactement la définition du logarithme naturel. Juste une note pour des raisons de complétude @kennytm +1 pour le math-art :)
Tu as raison, j'étais trop rapide :) en effet la surcharge par défaut de math.log qui prend seulement un double est le journal naturel.
Vous devez les dériver vous-même en utilisant les fonctions existantes par exemple. Math.sin
Vous pourriez trouver cela utile: p>
Je voulais juste ajouter: asec (x) = ACOS (1 / x), ACSC (x) = asin (1 / x), acot (x) = ATAN (1 / x) code>
TO .NET-IFY David Relihan's Formulas:
public static class MathHelper
{
// Secant
public static double Sec(double x)
{
return 1/Math.Cos(x);
}
// Cosecant
public static double Cosec(double x)
{
return 1/Math.Sin(x);
}
// Cotangent
public static double Cotan(double x)
{
return 1/Math.Tan(x);
}
// Inverse Sine
public static double Arcsin(double x)
{
return Math.Atan(x / Math.Sqrt(-x * x + 1));
}
// Inverse Cosine
public static double Arccos(double x)
{
return Math.Atan(-x / Math.Sqrt(-x * x + 1)) + 2 * Math.Atan(1);
}
// Inverse Secant
public static double Arcsec(double x)
{
return 2 * Math.Atan(1) - Math.Atan(Math.Sign(x) / Math.Sqrt(x * x - 1));
}
// Inverse Cosecant
public static double Arccosec(double x)
{
return Math.Atan(Math.Sign(x) / Math.Sqrt(x * x - 1));
}
// Inverse Cotangent
public static double Arccotan(double x)
{
return 2 * Math.Atan(1) - Math.Atan(x);
}
// Hyperbolic Sine
public static double HSin(double x)
{
return (Math.Exp(x) - Math.Exp(-x)) / 2 ;
}
// Hyperbolic Cosine
public static double HCos(double x)
{
return (Math.Exp(x) + Math.Exp(-x)) / 2 ;
}
// Hyperbolic Tangent
public static double HTan(double x)
{
return (Math.Exp(x) - Math.Exp(-x)) / (Math.Exp(x) + Math.Exp(-x));
}
// Hyperbolic Secant
public static double HSec(double x)
{
return 2 / (Math.Exp(x) + Math.Exp(-x));
}
// Hyperbolic Cosecant
public static double HCosec(double x)
{
return 2 / (Math.Exp(x) - Math.Exp(-x));
}
// Hyperbolic Cotangent
public static double HCotan(double x)
{
return (Math.Exp(x) + Math.Exp(-x)) / (Math.Exp(x) - Math.Exp(-x));
}
// Inverse Hyperbolic Sine
public static double HArcsin(double x)
{
return Math.Log(x + Math.Sqrt(x * x + 1)) ;
}
// Inverse Hyperbolic Cosine
public static double HArccos(double x)
{
return Math.Log(x + Math.Sqrt(x * x - 1));
}
// Inverse Hyperbolic Tangent
public static double HArctan(double x)
{
return Math.Log((1 + x) / (1 - x)) / 2 ;
}
// Inverse Hyperbolic Secant
public static double HArcsec(double x)
{
return Math.Log((Math.Sqrt(-x * x + 1) + 1) / x);
}
// Inverse Hyperbolic Cosecant
public static double HArccosec(double x)
{
return Math.Log((Math.Sign(x) * Math.Sqrt(x * x + 1) + 1) / x) ;
}
// Inverse Hyperbolic Cotangent
public static double HArccotan(double x)
{
return Math.Log((x + 1) / (x - 1)) / 2;
}
// Logarithm to base N
public static double LogN(double x, double n)
{
return Math.Log(x) / Math.Log(n);
}
}
Il existe également une formule plus rapide pour calculer TANH, nécessitant une seule exp (), car TANH est lié à la fonction logistique: p>
tanh (x) = 2 / (1 + exp (-2 * x)) - 1
aussi
tanh (x) = 1 - 2 / (1 + exp (2 * x)) p>