IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

mocnina - Matematické algoritmy ** **

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 ****

  1. b> 0 - vypočítame klasickú mocninu s kladným exponentom (napr. 2 3)
  2. 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.
  3. b = 0 - výsledok je vždy 1 (napr. 2 0 = 1)
Funkcia na výpočet ľubovoľnej mocniny: mocneni (a, b)

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;
}

 

Predchádzajúci článok
LU rozklad, vlastné čísla a definitnost matíc
Všetky články v sekcii
Matematické algoritmy
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity