raising negative number to a power

16 views (last 30 days)
>> 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.

Accepted Answer

Callum Clarke
Callum Clarke on 3 Jun 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 Comments
Jason
Jason on 18 Oct 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 on 18 Oct 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

Sign in to comment.

More Answers (0)

Categories

Find more on Exponents and Logarithms 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!