Octave, průvodce programem

  Hlavní stránka
  Přehled kapitol


  1. Krátké představení Octave   2. Práce s programem
  3. Datové typy
  4. Číselné datové typy
  5. Řetězce
  6. Datové struktury
  7. Datové kontejnery
  8. Proměnné
  9. Výrazy

10. Vyhodnocení

11. Příkazy
12. Funkce a skriptovací
      soubory
13. Vstup a výstup
14. Vykreslování
15. Práce s maticemi
16. Aritmetika
17. Lineární algebra
18. Nelineární rovnice
19. Kvadratura
20. Diferenciální rovnice
21. Práce s polynomy
22. Teorie řízení

10. Vyhodnocení

Normálně se výrazy vyhodnocují jednoduše napsáním na příkazový řádek Octave nebo požádáním Octave, aby zpracoval příkazy, které máte uloženy v souboru.

Někdy může být nezbytné vyhodnotit výraz, který byl počítán a uložen v řetězci nebo použít řetězec jako jméno funkce k zavolání.

Zabudovaná funkce: eval (try, catch)
Rozdělí řetězec try a vyhodnotí jej jako by to byl Octave program. Pokud selže vyhodnotí řetězec catch. Řetězec try je vyhodnocen v původním kontextu, takže jakýkoli výsledek zůstane dostupný po návratu funkce eval.

Zabudovaná funkce: feval (name, ...)
Vyhodnotí funkci jménem name. Jakýkoli argument, který následuje po prvním je předán jménu funkce. Například:

Výpis Octave

zavolá funkci acos s argumentem "-1".

Funkce feval je potřebná k tomu, aby bylo možné psát funkce, které volají uživatelem zadané funkce, protože Octave nemá možnost deklarovat ukazatele na funkce jako jazyk C nebo deklarovat speciální druh proměnné, která by mohla být použita k udržení jména funkce. Místo toho se musíte na funkce odvolávat jménem a použít feval k jejich zavolání.

Zde je jednoduchá funkce používající feval, která najde kořen uživatelem zadané funkce jedné proměnné pomocí Newtonovy metody.

function result = newtroot (fname, x)

# usage: newtroot (fname, x)
#
# fname : a string naming a function f(x).
# x : initial guess

delta = tol = sqrt (eps);
maxit = 200;
fx = feval (fname, x);
for i = 1:maxit
    if (abs (fx) < tol)
        result = x;
        return;
    else
        fx_new = feval (fname, x + delta);
        deriv = (fx_new - fx) / delta;
        x = x - fx / deriv;
        fx = fx_new;
    endif
endfor
result = x;
endfunction

 < 9.8 Priorita operátorů < > 11. Příkazy > 
© 2006 Michal Just
info(a)octave.cz
inzerce zdarma
Sport365.cz - squash, tenis, badminton ...