raising negative number to a power

16 visualizzazioni (ultimi 30 giorni)
>> 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.

Risposta accettata

Callum Clarke
Callum Clarke il 3 Giu 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 Commenti
Jason
Jason il 18 Ott 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 il 18 Ott 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Exponents and Logarithms in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by