Why power function give a complex number result?
32 views (last 30 days)
Show older comments
Bundit Boonkhao
on 1 Nov 2019
Answered: Ildeberto de los Santos Ruiz
on 1 Nov 2019
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
0 Comments
Accepted Answer
Walter Roberson
on 1 Nov 2019
1 - exp(-0.02^0.1)
implies taking 0.02^0.1 and taking the negative of that, and taking exp() of the result; this would be the same as 1/exp(0.02^01)
However, that is not what is coded. What is coded is exp((-x/x50)^n) which is exp((-positive/positive)^n) which is exp((negative number)^n) . negative number raised to a non-integer power is going to give a complex result
Be careful with where you put the negative signs.
0 Comments
More Answers (1)
Ildeberto de los Santos Ruiz
on 1 Nov 2019
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.
0 Comments
See Also
Categories
Find more on Thermal Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!