raising negative number to a power

14 visualizaciones (últimos 30 días)
William Perkins
William Perkins el 3 de Jun. de 2016
Comentada: Steven Lord el 18 de Oct. de 2024
>> c=-1.5^2
c=-2.2500
>> c=-1.5*-1.5
c=2.2500
The latter result is correct. The former is incorrect. How to raise negative numbers to a power that is internally consistent and correct in Matlab.

Respuesta aceptada

Callum Clarke
Callum Clarke el 3 de Jun. de 2016
Just put your negative values in brackets:
(-1.5)^2 = 2.2500
In your case Matlab is applying the sign afterwards, as it sees it as a standard operator and is following the usual operation order by calculating the power before subtraction.
  4 comentarios
Jason
Jason el 18 de Oct. de 2024
Hello,
I typed a rather simple expression: (-8)^(1/3)
but the answer I got was 1.0000 + 1.7321i, instead of a nice -2. Any ideas...?
Thank you, Jason
Steven Lord
Steven Lord el 18 de Oct. de 2024
There are three values that when raised to the third power give -8. [Yes, the real parts of y are not all exactly -8 and y has a non-zero imaginary part. Such is floating point arithmetic.]
format longg
x = roots([1 0 0 8]) % roots of x^3+8 = 0 or x^3 = -8
x =
-2 + 0i 1 + 1.73205080756888i 1 - 1.73205080756888i
y = x.^3
y =
-8 + 0i -7.99999999999999 + 4.44089209850063e-16i -7.99999999999999 - 4.44089209850063e-16i
Alternately if you know that you want the real root, use nthroot.
z1 = nthroot(-8, 3)
z1 =
-2
w1 = z1.^3
w1 =
-8

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Exponents and Logarithms en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by