: index | programowanie | webmastering | algorytmika | download | projekty | słownik | grafika | flash | linki :

a l g o r y t m y > działania na liczbach >

O B L I C Z A N I E   W A R T O Ś C I   P O T Ę G

 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30

 
       

Jeśli mowa o potęgach, to nie można się nie zgodzić z faktem, że najlepszą podstawą potęgi (oprócz zera i jedynki) jest liczba 2. Potęgę o tej podstawie wyznacza się najczęściej wykonując przesunięcie bitowe w lewo:

Function DwaDoN(N : Byte) : LongInt;
Begin
  DwaDoN:=1 Shl N;
End;

W podobny sposób można wyznaczać potęgi o podstawach 4, 8, 16, 32, ... Z elementarnej matematyki wynika, że 16N=(24)N=24*N, tak więc 16N=DwaDoN(24*N).

Potęgę o dowolnej podstawie a i wykładniku natutalnym n wyznacza się wykonując n mnożeń przez podstawę potęgi a:

Function Potega(A : LongInt; N : Byte) : LongInt;
Var
  I     : Byte;
  Wynik : LongInt;
Begin
  Wynik:=1;
  For I:=1 To N Do Wynik:=Wynik*A;
  Potega:=Wynik;
End;

W przypadku zerowego wykładnika pętla For zostanie pominięta i funkcja zwróci wartość 1. Warto zwrócić uwagę, że funkcja ta wyznaczy potęgę również o ujemnej podstawie. Jeśli obliczany wynik przekroczy zakres typu LongInt funkcja zwróci wartość błędną.

Potęgę o dodatniej podstawie A i wykładniku rzeczywistym X obliczamy wykorzystując funkcję wykładniczą Exp:

Function Potega(A, X : Real) : Real;
Begin
  Potega:=Exp(X*Ln(A));
End;

Za pomocą funkcji Exp można również wyznaczyć pierwiastek arytmetyczny stopnia N (N>=2):

Function Pierwiastek(A : Real; N : Byte) : Real;
Begin
  Pierwiastek:=Exp(Ln(A)/N);
End;