Výpočet ľubovoľnej mocniny
V minulej lekcii, LU rozklad, vlastné čísla a definitnost matíc , sme sa naučili robiť LU rozklad, ukázali si jeho aplikácie a dozvedeli sa, čo sú to vlastné čísla a definitnost matíc.
Algoritmus výpočtu n-tej mocniny je veľmi jednoduchý, avšak je potrebné si uvedomiť, že exponent mocniny môže byť aj záporný alebo nulový. Základ mocniny budeme považovať za argument aa exponent za argument b.
** **
Výpočet mocniny s kladným exponentom
Začneme s výpočtom mocniny s kladným exponentom. Budeme vychádzať z podstaty mocniny, teda z toho, že 2 3 = 2 * 2 * 2. Inými slovami, je potrebné argument a vynásobiť b - 1 krát argumentom a.
V tomto prípade:
a = 2;
b = 3;
b - 1 = 2
hodnotu a treba vynásobiť 2x hodnotou a (a * a * a).
Teraz nie je nič jednoduchšie, než použiť for cyklus bežiace od b do 2 (nie do jedna, pretože potrebujeme o jedno násobenie menej). Kód funkcie mocnenikladnym (a, b) sa nachádza nižšie.
Výpočet ľubovoľnej mocniny
Tu je potrebné rozložiť funkciu na 3 podmienky ****
- b> 0 - vypočítame klasickú mocninu s kladným exponentom (napr. 2 3)
- b <0 - výsledok je prevrátená hodnota také mocniny,
kde je argument b kladný (napr. 2 -3 = 1/2 3)
Na získanie kladného exponentu použijeme jeho absolútnu hodnotu. - b = 0 - výsledok je vždy 1 (napr. 2 0 = 1)
Aplikácie - zdrojový kód [Java]
Funkcia mocneni vráti argument a umocnený na argument b. Funkcia zavolanie týmto spôsobom: mocneni (2,3) vráti 2 na tretí, čo je 8.
/** * Vrati 'a' umocnene na 'b'. Pokud je 'b' kladne. */ static int mocnenikladnym(int a, int b) { int c = a; for (; b > 1; b--) { c = c * a; } return c; } /** * Vrati 'a' umocnene na 'b'. */ static int mocneni(int a, int b) { if (b > 0) { return mocnenikladnym(a, b); } if (b < 0) { return (1 / mocnenikladnym(a, Math.abs(b))); } return 1; }