Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

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