Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 15. 06. 2010 17:23

pizet
Místo: Levice/Praha
Příspěvky: 459
Reputace:   11 
 

Alogoritmus na n-tú odmocninu

Chcel by som naprogramovať fciu na počítanie n-tej odmocniny z čísla x.

Nevedel by niekto poradiť, neviem totižto spraviť tento algoritmus, lebo nepoznám v podstate ako sa odmocňuje alebo čo je to vlastne tá odmocnina. Tu som sa už na to pýtal, ale nevedeli poradiť.


Do you follow my way? Or you just see a black stain swimming in the Milky Way ...
KSP je určený pre študentov základných a stredných škôl, ktorí majú záujem naučiť sa niečo z oblasti algoritmov, logických úloh, programovania a informatiky.

Offline

  • (téma jako vyřešené označil(a) pizet)

#2 15. 06. 2010 19:29

Klobas
Zelenáč
Příspěvky: 8
Reputace:   
 

Re: Alogoritmus na n-tú odmocninu

Odmocnina z čísla je jeho umocnění na obrácenou hodnotu,např. druhá odmocnina je půltá mocnina.

Offline

 

#3 16. 06. 2010 08:01 — Editoval Honzc (16. 06. 2010 12:56)

Honzc
Příspěvky: 4647
Reputace:   248 
 

Re: Alogoritmus na n-tú odmocninu

↑ pizet:
Tady máš funkci (v Delphi), která umí vypočítat odmocninu pomocí Newtonovy metody.
Do funkce se zadá z čeho (st), jaká odmocnina (n) a přesnost výpočtu (tol)
Např. Jestliže chci vypočítat 3-tí odmocninu z -125 s přesností na 3 deseinná místa zadám
nejaka_promena_typu_string := Odmocnina('-125',3,0.001);

A zde je ta funkce

function Odmocnina(st:String;n:Integer;tol:Extended):String;
var i:Integer;
  aa,x,nx,px,cislo:Extended;
begin
  try
    cislo := StrToFloat(st);
    if cislo=0 then
      Result := '0'
    else
    begin
      if (st[1]='-')and(n mod 2=0) then
      begin
        MessageDlg('Sudá odmocnina ze záporného čísla neexistuje',mtError, [mbOK],0);
        Exit;
      end;
      x := cislo;
      px := 1;
      nx := 0;
      while abs(px-nx)>tol do
      begin
        px := x;
        aa := x;
        for i := 0 to n-3 do
          aa := aa*x;
        nx := ((n-1)*x+cislo/aa)/n; //obecně n-tá: nx := ((n-1)*x+cislo/Power(x,n-1))/n
        x := nx; //Newtonova metoda
      end;
      Result := FloatToStr(nx);
    end;
  except
    on EConvertError do MessageDlg(st+' není číslo',mtError, [mbOK],0);
  end;
end;

Offline

 

#4 16. 06. 2010 11:09

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Alogoritmus na n-tú odmocninu

V jakém jazyce to potřebuješ? Určitě Ti je mocnina bližší... To číslo, které chceš odmocnit hodit jako:

čislo na (1/základ odmocniny)

musel jsem napsat "na", jelikož mi nejde přepínat klávesnice a "stříšku" tu prostě nevymačkám. :-)


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#5 16. 06. 2010 11:37

Pavel Brožek
Místo: Praha
Příspěvky: 5694
Škola: Informatika na MFF UK
Pozice: Student
Reputace:   194 
 

Re: Alogoritmus na n-tú odmocninu

Nechť $a\in\mathbb{R}^+$, $b\in\mathbb{R}\setminus\{0\}$. Pak

$\sqrt[b]{a}=a^{\frac1b}=\rm{e}^{\frac{\ln a}b}$.

S využitím tohoto a funkcí z knihovny pro výpočet exponenciální funkce a přirozeného logaritmu už napíšeme velice krátký a srozumitelný algoritmus.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson