Why power function give a complex number result?
Afficher commentaires plus anciens
I have tried to create Rosin-Rammler function for own use with my code
function q = rosinrammler(x, x50, n)
q = 1 - exp((-x/x50)^n);
However, when I input the value for example x = 2e-9, x50 = 100e-9 and n = 0.1 the output show me the complex number such as
q = rosinrammler(2e-9, 100e-9, 0.1)
q =
-0.861067915307539 - 0.394670349292600i
Where I think the result shoud be real number such as 0.491476239432908. This results I mannually calculate from 1 - exp(-0.02^0.1). I have found that the complex numer is generated when I try to power (-x/x50)^n.
So if anyone can help me, please I am very appreciate
Thank you
Bundit
Réponse acceptée
Plus de réponses (1)
Ildeberto de los Santos Ruiz
le 1 Nov 2019
0 votes
The "problem" appears when you raise the base (-x / x50) to power n.
In IEEE floating-point computations:
a ^ n = exp(n * log(a))
In your example, the base a is negative, hence the logarithm is a complex number.
Catégories
En savoir plus sur Sensors and Transducers 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!