raising negative number to a power

19 vues (au cours des 30 derniers jours)
William Perkins
William Perkins le 3 Juin 2016
Commenté : Steven Lord le 18 Oct 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.

Réponse acceptée

Callum Clarke
Callum Clarke le 3 Juin 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 commentaires
Jason
Jason le 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 le 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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Exponents and Logarithms dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by