[genius] Rerun the help stuff
- From: George Lebl <jirka src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [genius] Rerun the help stuff
- Date: Mon, 14 May 2018 21:43:40 +0000 (UTC)
commit eb6f5fb1dc79a95ff90e14c51e11e4a5fc257294
Author: Jiri (George) Lebl <jiri lebl gmail com>
Date: Mon May 14 16:42:43 2018 -0500
Rerun the help stuff
help/C/html/index.html | 2 +-
help/cs/genius.xml | 6430 ++++++++++++++++++++++++++++
help/cs/html/ch03s02.html | 2 +-
help/cs/html/ch05s07.html | 53 +-
help/cs/html/ch06s05.html | 10 +-
help/cs/html/ch07s02.html | 29 +-
help/cs/html/ch11s04.html | 29 +-
help/cs/html/ch11s05.html | 40 +-
help/cs/html/ch11s06.html | 36 +-
help/cs/html/ch11s07.html | 69 +-
help/cs/html/ch11s08.html | 24 +-
help/cs/html/ch11s09.html | 64 +-
help/cs/html/ch11s10.html | 53 +-
help/cs/html/ch11s11.html | 30 +-
help/cs/html/ch11s12.html | 60 +-
help/cs/html/ch11s13.html | 72 +-
help/cs/html/ch11s14.html | 27 +-
help/cs/html/ch11s15.html | 5 +-
help/cs/html/ch11s18.html | 42 +-
help/cs/html/ch11s20.html | 18 +-
help/cs/html/index.html | 2 +-
help/de/genius.xml | 9762 +++++++++++++++++++++++++++++++++++++++++++
help/de/html/index.html | 2 +-
help/el/genius.xml | 7950 +++++++++++++++++++++++++++++++++++
help/el/html/ch11s02.html | 4 +-
help/el/html/index.html | 2 +-
help/es/genius.xml | 6999 +++++++++++++++++++++++++++++++
help/es/html/ch11s20.html | 2 +-
help/es/html/index.html | 2 +-
help/fr/genius.xml | 8530 +++++++++++++++++++++++++++++++++++++
help/fr/html/index.html | 2 +-
help/pt_BR/genius.xml | 9968 ++++++++++++++++++++++++++++++++++++++++++++
help/pt_BR/html/index.html | 2 +-
help/ru/genius.xml | 9669 ++++++++++++++++++++++++++++++++++++++++++
help/ru/html/index.html | 2 +-
help/sv/genius.xml | 6489 ++++++++++++++++++++++++++++
help/sv/html/index.html | 2 +-
37 files changed, 65853 insertions(+), 631 deletions(-)
---
diff --git a/help/C/html/index.html b/help/C/html/index.html
index f258a1e..9ce6265 100644
--- a/help/C/html/index.html
+++ b/help/C/html/index.html
@@ -58,7 +58,7 @@
EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
THE POSSIBILITY OF SUCH DAMAGES.
</p></li></ol></div><p>
- </p></div></div><div><div class="legalnotice"><a name="idm45584227695040"></a><p
class="legalnotice-title"><b>Feedback</b></p><p>
+ </p></div></div><div><div class="legalnotice"><a name="idm48"></a><p
class="legalnotice-title"><b>Feedback</b></p><p>
To report a bug or make a suggestion regarding the <span class="application">Genius Mathematics
Tool</span>
application or this manual, please visit the
<a class="ulink" href="http://www.jirka.org/genius.html" target="_top">Genius
diff --git a/help/cs/genius.xml b/help/cs/genius.xml
new file mode 100644
index 0000000..4722917
--- /dev/null
+++ b/help/cs/genius.xml
@@ -0,0 +1,6430 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="cs">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Příručka k matematickému nástroji Genius.</para></abstract>
+ <title>Příručka k aplikaci Genius</title>
+
+ <copyright>
+ <year>1997 – 2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>Je povoleno kopírovat, šířit a/nebo upravovat tento dokument za podmínek GNU Free Documentation
License (GFDL) ve verzi 1.1 nebo v jakékoli další verzi vydané nadací Free Software Foundation; bez neměnných
oddílů, bez textů předních desek a bez textů zadních desek. Kopii licence GFDL naleznete pod <ulink
type="help" url="ghelp:fdl">tímto odkazem</ulink> nebo v souboru COPYING-DOCS dodávaném s touto
příručkou.</para>
+ <para>Tato příručka je součástí sbírky příruček GNOME šířených za podmínek licence GFDL. Pokud
chcete tento dokument šířit odděleně od sbírky, musíte přiložit kopii licence dle popisu v oddílu 6 dané
licence.</para>
+
+ <para>Mnoho názvů použitých firmami k zviditelnění produktů nebo služeb jsou ochranné známky. Na
místech, kde jsou tyto názvy v dokumentaci použity a členové Dokumentačního projektu GNOME jsou si vědomi
skutečnosti, že se jedná o ochrannou známku, je takovýto název psán velkými písmeny celý nebo s velkým
písmenem na začátku.</para>
+
+ <para>DOKUMENT A JEHO UPRAVENÉ VERZE JSOU ŠÍŘENY V SOULADU SE ZNĚNÍM LICENCE GNU FREE DOCUMENTATION
LICENSE S NÁSLEDUJÍCÍM USTANOVENÍM: <orderedlist>
+ <listitem>
+ <para>DOKUMENT JE POSKYTOVÁN V PODOBĚ „JAK JE“, BEZ ZÁRUKY JAKÉHOKOLIV DRUHU, NEPOSKYTUJÍ
SE ANI ODVOZENÉ ZÁRUKY, ZÁRUKY, ŽE DOKUMENT, NEBO JEHO UPRAVENÁ VERZE, JE BEZCHYBNÝ, NEBO ZÁRUKY PRODEJNOSTI,
VHODNOSTI PRO URČITÝ ÚČEL, NEBO NEPORUŠENOSTI. RIZIKO NEKVALITY, NEPŘESNOSTI A ŠPATNÉHO PROVEDENÍ DOKUMENTU,
NEBO JEHO UPRAVENÉ VERZE, NESETE VY. POKUD JE TENTO DOKUMENT NEBO JEHO UPRAVENÁ VERZE VADNÁ V JAKÉMKOLIV
SMYSLU, VY (NIKOLIV PŮVODCE, AUTOR NEBO JAKÝKOLIV PŘISPĚVATEL) PŘEBÍRÁTE ODPOVĚDNOST ZA JAKÉKOLIV NÁKLADY NA
NUTNÉ ÚPRAVY, OPRAVY ČI SLUŽBY. TOTO PROHLÁŠENÍ O ZÁRUCE PŘEDSTAVUJE ZÁKLADNÍ SOUČÁST TÉTO LICENCE. BEZ
TOHOTO PROHLÁŠENÍ NENÍ PODLE TÉTO DOHODY POVOLENO UŽÍVÁNÍ ANI ÚPRAVY TOHOTO DOKUMENTU; DÁLE</para>
+ </listitem>
+ <listitem>
+ <para>ZA ŽÁDNÝCH OKOLNOSTÍ A ŽÁDNÝCH PRÁVNÍCH PŘEDPOKLADŮ, AŤ SE JEDNÁ O PŘEČIN (VČETNĚ
NEDBALOSTNÍCH), SMLOUVU NEBO JINÉ, NENÍ AUTOR, PŮVODNÍ PISATEL, KTERÝKOLIV PŘISPĚVATEL NEBO KTERÝKOLIV
DISTRIBUTOR TOHOTO DOKUMENTU NEBO UPRAVENÉ VERZE DOKUMENTU NEBO KTERÝKOLIV DODAVATEL NĚKTERÉ Z TĚCHTO STRAN
ODPOVĚDNÝ NĚJAKÉ OSOBĚ ZA PŘÍMÉ, NEPŘÍMÉ, SPECIÁLNÍ, NAHODILÉ NEBO NÁSLEDNÉ ŠKODY JAKÉHOKOLIV CHARAKTERU,
VČETNĚ, ALE NEJEN, ZA POŠKOZENÍ ZE ZTRÁTY DOBRÉHO JMÉNA, PŘERUŠENÍ PRÁCE, PORUCHY NEBO NESPRÁVNÉ FUNKCE
POČÍTAČE NEBO JINÉHO A VŠECH DALŠÍCH ŠKOD NEBO ZTRÁT VYVSTÁVAJÍCÍCH Z NEBO VZTAHUJÍCÍCH SE K POUŽÍVÁNÍ TOHOTO
DOKUMENTU NEBO UPRAVENÝCH VERZÍ DOKUMENTU, I KDYŽ BY TAKOVÁTO STRANA BYLA INFORMOVANÁ O MOŽNOSTI TAKOVÉHOTO
POŠKOZENÍ.</para>
+ </listitem>
+ </orderedlist></para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Státní oklahamská univerzita</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>Univerzita Queensland, Austrálie</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>Září 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>Tato příručka popisuje aplikaci Genius ve verzi 1.0.22.</releaseinfo>
+ <legalnotice>
+ <title>Ohlasy</title>
+ <para>Pokud chcete oznámit chybu nebo navrhnout vylepšení vztahující se k aplikaci
<application>matematický nástroj Genius</application> nebo této příručce, navštivte prosím <ulink
url="http://www.jirka.org/genius.html" type="http">webovou stránku aplikace Genius</ulink> nebo napište
autorovi na e-mail <email>jirka 5z com</email>.</para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Úvod</title>
+ <para>Aplikace <application>matematický nástroj Genius</application> je obecný kalkulátor pro potřeby
jako pracovní kalkulátor, výukový nástroj v matematice a rovněž je použitelný ve vědeckých oborech. Jazyk,
který <application>matematický nástroj Genius</application> používá, je navržen jako „matematický“ v tom
smyslu, že by mělo platit „dostanete to, co si myslíte“. To ale samozřejmě není zcela dosažitelný cíl.
<application>Matematický nástroj Genius</application> zahrnuje racionální čísla, celá čísla s libovolnou
přesností a desetinná čísla s vícenásobnou přesností díky knihovně GMP. Pracuje s komplexními čísly v
kartézské notaci. Umí dobře zpracovávat vektory a matice a umí základy lineární algebry. Programovací jazyk
dovoluje definovat uživatelské funkce, proměnné a upravovat parametry.</para>
+
+ <para><application>Matematický nástroj Genius</application> je šířen ve dvou verzích. Jedna verze je
grafická verze GNOME, ve stylu rozhraní IDE a schopností vykreslovat funkce jedné nebo dvou proměnných. Verze
pro příkazový řádek nevyžaduje GNOME, ale samozřejmě neimplementuje funkce, které vyžadují grafické
rozhraní.</para>
+
+ <para>Některé části této příručky popisují grafickou verzi kalkulátoru, ale jazyk je samozřejmě tentýž.
Verze pouze pro příkazový řádek postrádá grafické funkce a všechnu další funkčnost vyžadující grafické
uživatelské rozhraní.</para>
+
+ <para>Obecně, pokud se jedná o vlastnost jazyka (funkci, operátor apod.) jako novinku od verze 1.0.5, je
to zmíněno, ale ohledně starších verzí než 1.0.5 byste se měli podívat do souboru NEWS.</para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Začínáme</title>
+
+ <sect1 id="genius-to-start">
+ <title>Jak spustit <application>matematický nástroj Genius</application></title>
+ <para><application>Matematický nástroj Genius</application> můžete spustit následujícími
způsoby:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Nabídka <guimenu>Aplikace</guimenu></term>
+ <listitem>
+ <para>V závislosti na vašem operačním systému a jeho verzi se může položka nabídky
<application>Matematický nástroj Genius</application> vyskytovat na různých místech. Může být v podnabídkách
<guisubmenu>Vzdělávání</guisubmenu>, <guisubmenu>Příslušenství</guisubmenu>,
<guisubmenu>Kancelář</guisubmenu>, <guisubmenu>Věda</guisubmenu> nebo podobných, záleží na vašem konkrétním
nastavení. Název položky, kterou hledáte je <application>Matematický nástroj Genius</application>. Až položku
v nabídce naleznete, klikněte na ni a tím <application>matematický nástroj Genius</application>
spustíte.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Dialogové okno <guilabel>Spustit aplikaci</guilabel></term>
+ <listitem>
+ <para>Položka nabídky nemusí být v závislosti na instalaci vašeho systému dostupná. Pokud se tak
stane, můžete otevřít dialogové okno Spustit aplikaci a spustit <command>gnome-genius</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Příkazový řádek</term>
+ <listitem>
+ <para>Pro spuštění <application>Matematického nástroje Genius</application> ve verzi pro GNOME
spusťte z příkazového řádku <command>gnome-genius</command>.</para>
+ <para>Pokud chcete spustit jen verzi pro příkazový řádek, spusťte následující příkaz:
<command>genius</command>. Tato verze nezahrnuje grafické prostředí a některá funkcionalita, jako kreslení,
nebude dostupná.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>Když spustíte aplikaci Genius</title>
+ <para>Když spustíte <application>matematický nástroj Genius</application> ve vydání GNOME, zobrazí se
okno jako je na obrázku <xref linkend="mainwindow-fig"/>.</para>
+
+ <figure id="mainwindow-fig">
+ <title>Okno <application>Matematického nástroje Genius</application></title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Ukazuje hlavní okno aplikace <application>Matematický nástroj Genius</application>.
Obsahuje záhlaví, nabídkovou lištu, nástrojovou lištu a pracovní oblast. Nabídková lišta obsahuje nabídky
<guilabel>Soubor</guilabel>, <guilabel>Upravit</guilabel>, <guilabel>Kalkulátor</guilabel>,
<guilabel>Příklady</guilabel>, <guilabel>Programy</guilabel>, <guilabel>Nastavení</guilabel> a
<guilabel>Nápověda</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Okno <application>Matematického nástroje Genius</application> obsahuje následující prvky:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Lišta nabídek</term>
+ <listitem>
+ <para>Nabídky v liště nabídek obsahují všechny příkazy, které potřebujete pro práci se soubory v
<application>Matematickém nástroji Genius</application>. Nabídka <guilabel>Soubor</guilabel> obsahuje položky
pro načítání a ukládání položek a vytváření nových programů. Příkaz <guilabel>Načíst a spustit…</guilabel>
neotevírá nové okno pro program, ale program jen přímo spustí. To je to stejné, co dělá příkaz
<command>load</command>.</para>
+ <para>Nabídka <guilabel>Kalkulátor</guilabel> ovládá výpočetní jádro. Umožňuje vám spustit právě
vybraný program nebo přerušit právě probíhající výpočet. Můžete také hledat v úplných výrazech poslední
odpovědi (to je užitečné, když je poslední odpověď delší, než se vloze do jedné obrazovky konzoly) nebo si
zobrazovat seznam hodnot všech uživatelem definovaných proměnných. Rovněž můžete sledovat uživatelské
proměnné, což se hodí hlavně, když běží dlouhý výpočet nebo některý program ladíte. A nakonec poskytuje
kreslící funkce přes uživatelsky přívětivé dialogové okno.</para>
+ <para>Pod nabídkou <guilabel>Příklady</guilabel> je seznam příkladů a ukázkových programů. Když
nabídku otevřete, načte se příklad jako nový program, který můžete spouštět, upravovat, měnit a ukládat. Tyto
programy by měly být dobře zdokumentované a obecně předvádět některé z vlastností <application>matematického
nástroje Genius</application> nebo nějaký matematický koncept.</para>
+ <para>Pod nabídkou <guilabel>Programy</guilabel> je seznam právě otevřených programů a umožňuje
mezi nimi přepínat.</para>
+ <para>Ostatní nabídky mají funkce podobné jako v jiných aplikacích.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Lišta nástrojů</term>
+ <listitem>
+ <para>Lišta nástrojů obsahuje podmnožinu příkazů, které jsou dostupné z lišty nabídek.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Pracovní oblast</term>
+ <listitem>
+ <para>Pracovní oblast je hlavní způsob, jak s aplikací komunikovat.</para>
+ <para>Na začátku má pracovní oblast jedinou kartu <guilabel>Konzola</guilabel>, která je hlavním
způsobem, jak komunikovat s kalkulátorem. V ní zapisujete výrazy a po zmáčknutí klávesy Enter jsou v ní hned
vraceny výsledky.</para>
+ <para>Případně můžete psát delší programy a ty se pak mohou objevit v samostatných kartách.
Programy jsou sady příkazů nebo funkcí, které mohou být spuštěny naráz jako jeden celek, aniž byste je museli
postupně zadávat do příkazkového řádku. Programy mohou být uloženy do souborů pro pozdější opětovné
použití.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Základy používání</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Používání pracovní oblasti</title>
+
+ <para>Normálně s kalkulátorem komunikujete na kartě <guilabel>Konzola</guilabel> v pracovní oblasti.
Pokud spustíte pouze textovou verzi, je konzola jediná dostupná věc. Jestli chcete používat
<application>matematický nástroj Genius</application> pouze jako kalkulačku, jednoduše napište výraz do
konzoly. Bude vyhodnocen a vrácený výsledek vypsán.</para>
+
+ <para>Když chcete vyhodnotit výraz, zapište jej do <guilabel>Konzoly</guilabel> v pracovní oblasti a
zmáčkněte Enter. Výrazy se zapisují v jazyce nazývaném GEL. Většina jednoduchých výrazů v jazyce GEL vypadá
podobně, jak je zvykem v matematice (respektive programovacích jazycích). Například:
<screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen> nebo <screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen> nebo <screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen> nebo <screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen> (Poslední je součet harmonické řady od 1 do 70)</para>
+<para>Seznam funkcí a příkazů získáte zadáním: <screen><prompt>genius>
</prompt><userinput>help</userinput></screen>
+Když chcete získat podrobnější nápovědu ke konkrétní funkci, zadejte: <screen><prompt>genius>
</prompt><userinput>help NázevFunkce</userinput></screen>
+Pro zobrazení této příručky zadejte: <screen><prompt>genius>
</prompt><userinput>manual</userinput></screen></para>
+<para>Předpokládejme, že jste si již dříve uložili nějaké příkazy GEL jako program do souboru a teď je
chcete spustit. Program ze souboru <filename>cesta/k/programu.gel</filename> spustíte tak, že napíšete:
<screen><prompt>genius> </prompt><userinput>load cesta/k/programu.gel</userinput></screen>
+<application>Matematický nástroj Genius</application> sleduje, která složka je aktuální. Soubory v této
aktuální složce vypíšete příkazem <command>ls</command>, aktuální složku změníte pomocí <userinput>cd
složka</userinput>, stejně jako v UNIXovém příkazovém řádku.</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>Jak vytvořit nový program</title>
+ <para>Když si přejete zadat několik komplikovaných příkazů nebo napsat složitou funkci pomocí jazyka
<link linkend="genius-gel">GEL</link>, můžete vytvořit nový program.</para>
+ <para>Když chcete začít psát nový program, zvolte
<menuchoice><guimenu>Soubor</guimenu><guimenuitem>Nový program</guimenuitem></menuchoice> a v pracovní
oblasti se objeví nová karta. V té můžete nový program v jazyce <link linkend="genius-gel">GEL</link> psát.
Až jej dopíšete, můžete jej spustit pomocí
<menuchoice><guimenu>Kalkulátor</guimenu><guimenuitem>Spustit</guimenuitem></menuchoice> (nebo tlačítkem
<guilabel>Spustit</guilabel> na nástrojové liště). Tím se váš program provede a na kartě
<guilabel>Konzola</guilabel> zobrazí výstup. Ve výsledku je to stejné, jako byste vzali text celého programu
a napsali jej do konzoly. Jediný rozdíl je v tom, že vstup je proveden nezávisle na konzole, zatímco výstup
jde na konzolu. <menuchoice><guimenu>Kalkulátor</guimenu><guimenuitem>Spustit</guimenuitem></menuchoice> vždy
spustí aktuálně vybraný program, i když jste zrovna na kartě <guilabel>Konzola</guilabel>. Aktuálně vybran
ý program má svoji kartu označenou tučným písmem a vybere se tak, že na kartu prostě kliknete.</para>
+ <para>Abyste napsaný program uložili, zvolte <menuchoice><guimenu>Soubor</guimenu> <guimenuitem>Uložit
jako…</guimenuitem></menuchoice> Podobně, jako v jiných aplikacích, můžete zvolit
<menuchoice><guimenu>Soubor</guimenu> <guimenuitem>Uložit</guimenuitem></menuchoice> pro uložení programu,
který již má přidělený název souboru. V případě, že máte otevřených hodně programů, které upravujete, a
přejete si je uložit, můžete zvolit také <menuchoice><guimenu>Soubor</guimenu><guimenuitem>Uložit
neuložené</guimenuitem></menuchoice>.</para>
+ <para>Programy, ve kterých jsou neuložené změny, mají vedle svého názvu souboru „[+]“. Díky tomu
můžete rychle poznat, jestli se soubor na disku a otevřený v kartě odlišují. Programy, které zatím nemají
přidělený název souboru, jsou stále považovány za neuložené a „[+]“ se u nich nevypisuje.</para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Jak otevřít a spustit program</title>
+ <para>Když chcete otevřít soubor, zvolte
<menuchoice><guimenu>Soubor</guimenu><guimenuitem>Otevřít</guimenuitem></menuchoice>. V pracovní oblasti se
objeví nová karta obsahující daný soubor. Můžete ji využít k upravě souboru.</para>
+ <para>Pro spuštění programu ze souboru zvolte <menuchoice><guimenu>Soubor</guimenu><guimenuitem>Načíst
a spustit…</guimenuitem></menuchoice> Tím se program spustí, aniž by se otevírala zvláštní karta. To odpovídá
chování příkazu <command>load</command>.</para>
+ <para>Pokud jste v souboru provedli úpravy, které si přejte zahodit a načíst znovu původní verzi z
disku, můžete zvolit položku nabídky <menuchoice><guimenu>Soubor</guimenu><guimenuitem>Znovu načíst z
disku</guimenuitem></menuchoice>. To se hodí při experimentování s programem a při provádění dočasných změn,
kdy chcete spustit upravený program, ale změny nechcete uchovat.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Vykreslování</title>
+
+ <para>Vykreslování je podporováno pouze ve v grafické verzi GNOME. Veškeré vykreslování je přístupné z
grafického rozhraní, ke kterému se dostanete z okna <guilabel>Vytvoření grafu</guilabel>. K tomuto oknu se
dostanete kliknutím na tlačítko <guilabel>Graf</guilabel> na liště nástrojů nebo výběrem
<guilabel>Vykrestlit</guilabel></para>
+
+ <sect1 id="genius-line-plots">
+ <title>Čárové grafy</title>
+ <para>Pro vykreslení grafu reálně vyjadřujícího funkce jedné proměnné otevřete okno
<guilabel>Vytvoření grafu</guilabel>. Můžete také použít funkci <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> z příkazového řádku (viz její
dokumentace).</para>
+ <para>Když kliknete na tlačítko <guilabel>Vykreslit</guilabel>, otevře se okno s několika kartami.
Musíte být na kartě <guilabel>Čárový graf funkce</guilabel> a v ní na kartě
<guilabel>Funkce/výrazy</guilabel>. Viz <xref linkend="lineplot-fig"/>.</para>
+
+ <figure id="lineplot-fig">
+ <title>Okno Vytváření grafu</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Ukazuje okno vytváření čárového grafu.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Do textových polí zapište výrazy, ve kterých je <userinput>x</userinput> nezávislou proměnnou.
Stačí i napsat jen název funkce, jako <userinput>cos</userinput>, namísto vypisování
<userinput>cos(x)</userinput>. Naráz můžete vykreslit grafy až deseti funkcí. Pokud uděláte chybu a Genius
nemůže výstup zpracovat, naznačí to varovnou ikonou napravo od textového pole, ve kterém se chyba vyskytla a
zároveň se objeví dialogové okno s chybovým hlášením. V dolní části dialogového okna můžete měnit rozsah
závislé a nezávislé proměnné. Rozsah proměnné <varname>y</varname> (závislé) můžete nechat nastavit aumoticky
tím, že zaškrtnete políčko <guilabel>Přizpůsobit závislou osu</guilabel>. Měnit můžete také názvy proměnných.
Zmáčknutím tlačítka <guilabel>Vykreslit</guilabel> se graf zobrazí, podobně jako na obrázku <xref
linkend="lineplot2-fig"/>.</para>
+ <para>Proměnné lze přejmenovat kliknutím na tlačítko <guilabel>Změnit názvy proměnných…</guilabel>,
což se hodí, když chcete vytisknout nebo uložit obrázek a nechcete použít standardní názvy. Nakonec můžete
také úplně zakázat tisk legendy a popisů os, což se opět hodí při tisku nebo ukládání, když by tyto texty
způsobovaly nepřehlednost.</para>
+
+ <figure id="lineplot2-fig">
+ <title>Okno s grafem</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Výsledný graf.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Z tohoto místa můžete graf vytisknout, vytvořit z něj dokument ve formátu uzavřený postskript
nebo PNG a nebo změnit zvětšení. Pokud není závislá osa správně nastavena, můžete Genius přimět, aby ji
přizpůsobil pomocí nalezení extrému vykreslené funkce.</para>
+
+ <para>Ohledně kreslení pomocí příkazového řádku se podívejte do dokumentace na funkci <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Parametrické grafy</title>
+ <para>Na kartě vytváření grafu můžete zvolit také kartu <guilabel>Parametrické</guilabel>, pomocí
které můžete vytvářet dvourozměrné parametrické grafy. Jde o způsob, jak vykreslit jednoduchou parametrickou
funkci. Můžete zadat také body jako <varname>x</varname> a <varname>y</varname> nebo poskytnout jedno
komplexní číslo jako funkci proměnné <varname>t</varname>. Rozsah proměnné <varname>t</varname> je dán
explicitně a funkce je vzorkována v zadaných krocích. Rozsah <varname>x</varname> a <varname>y</varname> může
být zvolen automaticky zaškrtnutím políčka <guilabel>Přizpůsobit závislou osu</guilabel> nebo může být určen
explicitně. Viz <xref linkend="paramplot-fig"/>.</para>
+
+ <figure id="paramplot-fig">
+ <title>Karta parametrických grafů</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Parametrický graf v okně <guilabel>Vytváření grafu</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Příklad parametrického grafu je uveden na obrázku <xref linkend="paramplot2-fig"/>. Dělat můžete
podobné operace jako u jiných čárových grafů. Na to, jak vykreslení provést z příkazového řádku, se podívejte
do dokumentace na funkci <link
linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> nebo <link
linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>.</para>
+
+ <figure id="paramplot2-fig">
+ <title>Parametrické grafy</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Výslední parametrický graf.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Grafy směrových polí</title>
+ <para>Na kartě vytváření grafu můžete zvolit také kartu <guilabel>Směrové pole</guilabel>, pomocí
které můžete vytvářet dvourozměrný graf směrového pole. Dělat můžete podobné operace jako u jiných čárových
grafů. Na to, jak vykreslení provést z příkazového řádku, se podívejte do dokumentace na funkci <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>.</para>
+
+ <para>Když je aktivováno směrové pole, je přístupná dodatečná nabídka <guilabel>Řešitel</guilabel>,
přes kterou můžete zobrazit dialogové okno řešitele. Zde můžete Genius přimět vykreslit konkrétní řešení pro
zadané počáteční podmínky. Buď můžete počáteční podmínky zadat v dialogovém okně nebo kliknout přímo do grafu
a tím určit počáteční bod. Dokud je dialogové okno řešitele aktivní, nefunguje zvětšování/zmenšování
kliknutím a tažením. Pokud chcete měnit velikost pomocí myši, musíte dialogové okno nejdříve zavřít.</para>
+
+ <para>Řešitel používá standardní Rungeho-Kuttovu metodu. Grafy na obrazovce zůstávají, dokud nejsou
vymazány. Řešitel se zastaví vždy, když dosáhne hranice okna s grafem. Změnou velikosti omezení nebo
parametru se řešení nemění, musíte graf vymazat a znovu vykreslit se správnými parametry. Můžete také využít
funkci <link linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>
k vykreslení řešení z příkazového řádku nebo programu.</para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Grafy vektorových polí</title>
+ <para>Na kartě vytváření grafu můžete zvolit také kartu <guilabel>Vektorové pole</guilabel>, pomocí
které můžete vytvářet dvourozměrný graf vektorového pole. Dělat můžete podobné operace jako u jiných čárových
grafů. Na to, jak vykreslení provést z příkazového řádku, se podívejte do dokumentace na funkci <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>.</para>
+
+ <para>Standardně je zobrazen směr a velikost vektorového pole. Pokud chcete zobrazovat jen směr a
velikost ne, zaškrtněte příslušné políčko a délka šipek se sjednotí.</para>
+
+ <para>Když je aktivováno vektorové pole, je přístupná dodatečná nabídka <guilabel>Řešitel</guilabel>,
přes kterou můžete zobrazit dialogové okno řešitele. Zde můžete Genius přimět vykreslit konkrétní řešení pro
zadané počáteční podmínky. Buď můžete počáteční podmínky zadat v dialogovém okně nebo kliknout přímo do grafu
a tím určit počáteční bod. Dokud je dialogové okno řešitele aktivní, nefunguje zvětšování/zmenšování
kliknutím a tažením. Pokud chcete měnit velikost pomocí myši, musíte dialogové okno nejdříve zavřít.</para>
+
+ <para>Řešitel používá standardní Rungeho-Kuttovu metodu. Grafy na obrazovce zůstávají, dokud nejsou
vymazány. Změnou velikosti omezení nebo parametru se řešení nemění, musíte graf vymazat a znovu vykreslit se
správnými parametry. Můžete také využít funkci <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> k
vykreslení řešení z příkazového řádku nebo programu.</para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Plošné grafy</title>
+ <para>Genius umí vykreslovat i plochy. Vyberte kartu <guilabel>Plošný graf</guilabel> v hlavním sešitu
okna <guilabel>Vytváření grafu</guilabel>. Zde můžete zadat jeden výraz, který by měl používat buď
<varname>x</varname> a <varname>y</varname> jako reálné nezávislé proměnné nebo <varname>z</varname> jako
komplexní proměnnou (kde <varname>x</varname> je reálné část <varname>z</varname> a <varname>y</varname> jeho
imaginární část). Například pro vykreslení absolutní hodnoty funkce kosinus pro komplexní parametry, můžete
zadat <userinput>|cos(z)|</userinput>. To je ekvivalentní k <userinput>|cos(x+1i*y)|</userinput>. Viz <xref
linkend="surfaceplot-fig"/>. Na to, jak vykreslení provést z příkazového řádku, se podívejte do dokumentace
na funkci <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>Rozsah <varname>z</varname> může být nastaven automaticky zapnutím zaškrtávacího políčka
<guilabel>Přizpůsobit závislou osu</guilabel>. Proměnné mohou být přejmenovány kliknutím na tlačítko
<guilabel>Změnit názvy proměnných…</guilabel>, což se hodí, když chcete vytisknout nebo uložit obrázek a
nechcete na něm použít standardní názvy. Nakonec můžete zakázat tisk legendy, což se opět hodí při tisku a
ukládání, když by legenda způsobovala nepřehlednost.</para>
+
+ <figure id="surfaceplot-fig">
+ <title>Plošný graf</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Modul (absolutní hodnota) komplexní funkce kosinus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>V režimu plošných grafů levá a pravá šipka na klávesnici otáčí zobrazení okolo osy z. Případně
můžete otáčet kolem libovolné osy pomocí <guilabel>Otočit osu…</guilabel> v nabídce
<guilabel>Zobrazit</guilabel>. Nabídka <guilabel>Zobrazit</guilabel> obsahuje také režim pohledu shora, který
otáčí graf tak, že osa z směřuje ven, tj. díváte se na graf shora a dostanete základní barvy, které definují
hodnoty funkce získávající teplotní graf funkce. Nakonec byste také měli zkusit <guilabel>Spustit animované
otáčení…</guilabel>, které spustí plynulé pomalé otáčení. To je dobré hlavně na předvádění
<application>matematického nástroje Genius</application> publiku.</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>Základy jazyka GEL</title>
+
+ <para>GEL znamená Genius Extension Language (rozšiřující jazyk Genius). Jedná se o jazyk, ve kterém
píšete programy v kalkulátoru Genius. Program v jazyce GEL je jednoduše výraz, který je vyhodnocen jako
číslo, matice nebo nějaký jiný objekt v GEL. <application>Matematický nástroj Genius</application> tak může
sloužit jako jednoduchý kalkulátor a nebo jako mocný nástroj pro teoretický vědecký výzkum. Cílem syntaxe je,
aby byla snadná na naučení, jak jen to jde, zejména pro používání aplikace jako kalkulačky.</para>
+
+ <sect1 id="genius-gel-values">
+ <title>Hodnoty</title>
+
+ <para>Hodnotami v jazyce GEL mohou být <link linkend="genius-gel-values-numbers">čísla</link>, <link
linkend="genius-gel-values-booleans">pravdivostní hodnoty</link> nebo <link
linkend="genius-gel-values-strings">řetězce</link>. GEL zachází jako s hodnotami i s <link
linkend="genius-gel-matrices">maticemi</link>. Hodnoty mohou být mimo jiných věcí použity k výpočtům,
přiřazovány do proměnných a vraceny z funkcí.</para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Čísla</title>
+ <para>Prvním typem čísel v GEL jsou celá čísla (integer). Celá čísla se zapisují normálním způsobem.
<programlisting>1234
+</programlisting>V šestnáctkové a osmičkové soustavě mohou být zapsána pomoci notace jazyka C. Například:
<programlisting>0x123ABC
+01234
+</programlisting> Nebo můžete čísla zapsat v libovolné soustavě pomocí
<literal><základ>\<číslo></literal>. Číslice větší než 9 se zapisují pomocí písmen podobně jako u
šestnáctkové soustavy. Například číslo v třiadvacítkové soustavě můžete zapsat: <programlisting>23\1234ABCD
+</programlisting></para>
+
+ <para>Druhým typem čísel v GEL jsou racionální čísla (rational). Racionální čísla vznikají podělením
dvou celých čísel. Takže můžete zapsat: <programlisting>3/4
+</programlisting> abyste získali tři čtvrtiny. Racionální čísla rovněž akceptují smíšené zlomky. Takže
abyste získali jedna a tři desetiny, můžete napsat: <programlisting>1 3/10
+</programlisting></para>
+
+ <para>Dalším typem čísel jsou desetinná čísla – čísla s plovoucí desetinnou čárkou (floating).
Zadávají se ve formátu podobném notaci C. Jako oddělovač exponentu můžete použít <literal>E</literal>,
<literal>e</literal> or <literal>@</literal>. Upozorňujeme, že když použijete oddělovač exponentu, bude číslo
bráno jako desetinné, i když neobsahuje desetinnou tečku. Například: <programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting> Když Genius vypisuje desetinné číslo, vždy u něj přidá
<computeroutput>.0</computeroutput>, i když je celé. Tím se dává najevo, že desetinná čísla nemají dokonalou
přesnost. Pokud je číslo zapsáno ve vědecké notaci, jedná se vždy o desetinné číslo a Genius tak nemusí
vypisovat <computeroutput>.0</computeroutput>.</para>
+
+ <para>Posledním typem čísel v GEL jsou komplexní čísla (complex). Komplexní číslo můžete zadat jako
součet reálné a imaginární části. Imaginární část přidáte doplněním <literal>i</literal>. Zde jsou příklady
zápisu komplexních čísel: <programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting></para>
+
+ <important>
+ <para>Při zadávání imaginárních čísel musí číslo vždy předcházet před <literal>i</literal>. Pokud
byste použili samotné <literal>i</literal>, Genius by se k němu stavěl, jako k odkazu na proměnnou
<varname>i</varname>. Pokud potřebujete použít právě <literal>i</literal>, použijte místo toho
<literal>1i</literal>.</para>
+
+ <para>Pokud chcete u imaginárních čísel použít notaci složených zlomků, musíte složený zlomek
uzavřít do závorek, např. <userinput>(1 2/5)i</userinput>.</para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Pravdivostní hodnoty</title>
+ <para>Genius také nativně podporuje pravdivostní hodnoty (boolean). Jsou definovány dvě pravdivostní
konstanty, <constant>true</constant> (pravda) a <constant>false</constant> (nepravda). Tyto identifikátory
mohou být použity stejně jako jiné proměnné. Případně můžete použít i varianty <constant>True</constant>,
<constant>TRUE</constant>, <constant>False</constant> a <constant>FALSE</constant>.</para>
+ <para>Všude, kde je očekáván pravdivostní výraz, můžete použít pravdivostní hodnotu nebo libovolný
výraz, jehož výsledkem je číslo nebo pravdivostní hodnota. V případě, že má Genius vyhodnotit číslo jako
pravdivostní hodnotu, pak je nula brána jako <constant>false</constant> a všechna ostatní čísla jako
<constant>true</constant>.</para>
+ <para>Navíc můžete s pravdivostními hodnotami provádět aritmetické operace. Například:
<programlisting>( (1 + true) - false ) * true
+</programlisting> je to stejné jako: <programlisting>( (true or true) or not false ) and true
+</programlisting> Podporovány jsou akorát sčítání, odčítání a násobení. Pokud mícháte ve výrazu dohromady
čísla s pravdivostními hodnotami, jsou čísla nejprve převedena na pravdivostní hodnoty podle pravidel
popsaných výše. To znamená, že například: <programlisting>1 == true
+</programlisting> je vždy vyhodnoceno jako <constant>true</constant>, protože 1 bude před porovnáním s
<constant>true</constant> převedeno na <constant>true</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Řetězce</title>
+ <para>Stejně jako čísla a pravdivostní hodnoty, mohou být i řetězce (string) uloženy jako hodnoty v
proměnných a předávány do funkcí. Můžete také spojit řetězec s jiným řetězcem pomocí operátoru plus.
Například: <programlisting>a=2+3;"Výsledek je: "+a
+</programlisting> vytvoří řetězec: <programlisting>Výsledek je: 5
+</programlisting> Rovněž můžete používat escape sekvence ve stylu C, jako
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> a
<literal>\r</literal>. Když potřebujete v řetězci <literal>\</literal> nebo <literal>"</literal>, musíte mu
předřadit <literal>\</literal>. Například: <programlisting>"Lomítko: \\ Uvozovky: \" Tabulátory: \t1\t2\t3"
+</programlisting> vytvoří řetězec: <programlisting>Lomítko: \ Uvozovky: " Tabulátory: 1 2 3
+</programlisting> Je třeba ale poznamenat, že když je řetězec vrácen z funkce, jsou zpětná lomítka ošetřena,
takže takovýto výstup může být použit jako vstup. Pokud chcete řetězec vypsat jak je (bez použití escape
sekvencí), použijte funkci <link linkend="gel-function-print"><function>print</function></link> nebo <link
linkend="gel-function-printn"><function>printn</function></link>.</para>
+ <para>Navíc můžete použít knihovní funkci <link
linkend="gel-function-string"><function>string</function></link> k převodu čehokoliv na řetězec. Například:
<programlisting>string(22)
+</programlisting> vrátí <programlisting>"22"
+</programlisting> Řetězce je také možné porovnávat pomocí operátorů <literal>==</literal> (rovno),
<literal>!=</literal> (není rovno) a <literal><=></literal> (porovnání).</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>Existuje speciální hodnota nazývaná <constant>null</constant>. Nelze s ní provádět žádné
operace a když je vrácena, není nic vypsáno. Proto je hodnota <constant>null</constant> užitečná, když
nechcete z výrazu získat žádný výstup. Hodnotu <constant>null</constant> získáte tak, že napíšete výraz
<literal>.</literal>, konstantu <constant>null</constant> nebo nic. Tím se nemyslí nic jiného, než že když
výraz zakončíte oddělovačem <literal>;</literal>, je to stejné, jako byste jej zakončili oddělovačem
následovaným <constant>null</constant>.</para>
+ <para>Příklad: <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>Některé funkce vrací <constant>null</constant> v případě, že nelze vrátit žádnou hodnotu nebo nastane
chyba. <constant>null</constant> se rovněž používá jako prázdný vektor, prázdná matice nebo prázdná reference
(odkaz).</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Používání proměnných</title>
+
+ <para>Syntaxe: <programlisting>NazevPromenne
+</programlisting> Příklad: <screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen></para>
+
+ <para>Pro vyhodnocení proměnné jako takové jednoduše napište její název. Bude vrácena hodnota
proměnné. Proměnnou můžete použít kdekoliv, kde by se normálně použilo číslo nebo řetězec. Navíc jsou
proměnné nutné při definici funkcí, které vyžadují argumenty (viz <xref
linkend="genius-gel-functions-defining"/>).</para>
+
+ <tip>
+ <title>Dokončování pomocí Tab</title>
+ <para>Můžete používat klávesu Tab, aby vám Genius dokončoval názvy proměnných. Zkuste napsat prvních
pár písmen názvu a zmáčknout <userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Názvy proměnných rozlišují velikost písmen</title>
+ <para>U názvů proměnných se rozlišuje velikost písmen. To znamená, že proměnné
<varname>ahoj</varname>, <varname>AHOJ</varname> a <varname>Ahoj</varname> jsou různé.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Nastavování proměnných</title>
+ <para>Syntaxe: <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Příklad: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>Pro přiřazení hodnoty do proměnné se používá operátor <literal>=</literal> nebo
<literal>:=</literal>. Tyto operátory nastaví hodnotu proměnné a vrátí hodnotu, kterou jste nastavili, takže
můžete dělat věci jako <programlisting>a = b = 5
+</programlisting> Tím se nastaví <varname>b</varname> na 5 a rovněž se nastaví <varname>a</varname> na
5.</para>
+
+ <para>Pro nastavení proměnné lze použít jak operátor <literal>=</literal>, tak
<literal>:=</literal>. Rozdíl mezi nimi je v tom, že operátor <literal>:=</literal> vždy vystupuje jako
operátor přiřazení, zatímco operátor <literal>=</literal> může být interpretován jako test rovnosti, jestliže
je použit v místě, kde je očekáván pravdivostní výraz.</para>
+
+ <para>Ohledně více informací o rozsahu působnosti proměnných, čímž je míněno, kdy je která proměnná
viditelná, se podívejte na kapitolu <xref linkend="genius-gel-variables-global"/>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Vestavěné proměnné</title>
+ <para>Jazyk GEL má několik vestavěných „proměnných“, jako třeba <varname>e</varname>,
<varname>pi</varname> nebo <varname>GoldenRatio</varname>. Jedná se o široce používané konstanty s
příslušnými hodnotami, do kterých nelze přiřadit nové hodnoty. Těchto vestavěných proměnných je celá řada,
viz <xref linkend="genius-gel-function-list-constants"/> pro kompletní seznam. Upozorňujeme, že
<varname>i</varname> není standardně definována jako druhá odmocnina z mínus jedné (imaginární číslo) a ve
výchozím stavu je nedefinovaná, takže ji můžete používat jako počítadlo, jak je zvykem. Když chcete zapsat
imaginární číslo, musíte použít <userinput>1i</userinput>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Proměnná s posledním výsledkem</title>
+ <para>Proměnné <varname>Ans</varname> a <varname>ans</varname> je možné použít k získání výsledku
posledního výrazu. Například, když máte proveden nějaký výpočet a chcete k výsledku přičíst 389, můžete to
udělat takto: <programlisting>Ans+389
+</programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Používání funkcí</title>
+
+ <para>Syntaxe: <programlisting>NazevFunkce (argument1,argument2,...)
+</programlisting> Příklad: <programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting> Když chcete vyhodnotit funkci, zadejte její název následovaný argumenty v závorkách (pokud
nějaké má). Vrátí se výsledek vzniklý za použití argumentů. Počet argumentů se samozřejmě liší funkci od
funkce.</para>
+
+ <para>Existuje množství zabudovaných funkcí, jako třeba <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> a <link
linkend="gel-function-tan"><function>tan</function></link>. Můžete použít zabudovanou funkci <link
linkend="gel-command-help"><function>help</function></link> k výpisu dostupných funkcí nebo si přečíst
kapitolu <xref linkend="genius-gel-function-list"/>.</para>
+
+ <tip>
+ <title>Dokončování pomocí Tab</title>
+ <para>Můžete používat klávesu Tab, aby vám Genius dokončoval názvy funkcí. Zkuste napsat prvních pár
písmen názvu a zmáčknout <userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Názvy funkcí rozlišují velikost písmen</title>
+ <para>U názvů funkcí se rozlišuje velikost písmen. To znamená, že funkce pojmenované
<function>necoudelat</function>, <function>NECOUDELAT</function> a <function>NecoUdelat</function> jsou
rozdílné funkce.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Definování funkcí</title>
+ <para>Syntaxe: <programlisting><![CDATA[function <identifier>(<comma separated arguments>) =
<function body>
+<identifier> = (`() = <function body>)
+]]></programlisting> Znak <literal>`</literal> je zpětná uvozovka a je důležitý u anonymních funkcí. Jeho
nastavením do názvu proměnné se účinně definuje funkce.</para>
+
+ <para>Funkce přebírá buď žádný nebo více argumentů oddělených čárkou a vrací výsledek podle těla
funkce. Pro definování vašich vlastních funkcí je hlavním důvodem pohodlí. Jednou z možností je mít sady
funkcí definovaných v souborech GEL, které může Genius načíst a ty pak budou k dispozici. Například:
<programlisting>function addup(a,b,c) = a+b+c
+</programlisting> a <userinput>addup(1,4,9)</userinput> pak bude vracet 14.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Proměnný seznam argumentů</title>
+ <para>Když za název posledního argumentu v deklaraci funkce vložíte <literal>...</literal>, dovolí
Genius v místě tohoto argumentu zadat libovolný počet argumentů. Pokud není předán žádný argument, pak je
tento argument nastaven na <constant>null</constant>. V jiných případech bude vektorem obsahujícím všechny
argumenty. Například: <programlisting>function f(a,b...) = b
+</programlisting> Pak <userinput>f(1,2,3)</userinput> poskytne <computeroutput>[2,3]</computeroutput>,
zatímco <userinput>f(1)</userinput> poskytne <constant>null</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Předávání funkcí funkcím</title>
+
+ <para>V aplikaci Genius je možné předat funkci jako argument jiné funkci. To lze udělat buď pomocí
„uzlů funkcí“ nebo anonymních funkcí.</para>
+
+ <para>Když za název funkce nezadáte závorky, bude funkce vrácena jako „uzel funkce“, namísto toho,
aby byla vyhodnocena. Uzel funkce je možné předat jiné funkci. Například: <programlisting>function f(a,b) =
a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting></para>
+ <para>Pro předání funkce, která není definována, můžete použít anonymní funkce (viz <xref
linkend="genius-gel-functions-defining"/>). Tzn., že můžete předat funkci, aniž byste ji pojmenovali.
Syntaxe: <programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting> Příklad: <programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting> Vrátí hodnotu 5.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Operace s funkcemi</title>
+ <para>Některé funkce dovolují aritmetické operace a některé funkce s jedním argumentem, jako <link
linkend="gel-function-exp"><function>exp</function></link> nebo <link
linkend="gel-function-ln"><function>ln</function></link>, operace s funkcemi. Například
<programlisting>exp(sin*cos+4)
+</programlisting> vrátí funkci, která vezme <varname>x</varname> a vrátí
<userinput>exp(sin(x)*cos(x)+4)</userinput>. To funkčně odpovídá tomu, jako byste napsali
<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting> Takováto operace může být výhodná, kdy potřebujete rychle definovat funkci. Například k
vytvoření funkce nazvané <varname>f</varname>, která bude provádět operaci jako výše, prostě napište:
<programlisting>f = exp(sin*cos+4)
+</programlisting> Využít se to dá také při vykreslování grafů. Například k vykreslení druhé mocniny sinu
zadejte: <programlisting>LinePlot(sin^2)
+</programlisting></para>
+
+ <warning>
+ <para>Ne všechny funkce je možné použít tímto způsobem. Například, pokud použijete binární operaci,
musí funkce přebírat stejný počet argumentů.</para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Oddělovač</title>
+ <para>GEL je poněkud odlišný od jiných jazyků v tom, jak zachází s více příkazy a funkcemi. V GEL
musíte příkazy řetězit dohromady pomocí oddělovacího operátoru. To znamená, že když chcete napsat více než
jeden výraz, musíte mezi výrazy použít operátor <literal>;</literal>. Tímto způsobem se vyhodnotí oba výrazy
a výsledek druhého (nebo posledního, pokud je výrazů více než dva) je vrácen. Předpokládejme, že jste napsali
následující: <programlisting>3 ; 5
+</programlisting> Tento výraz vyplodí 5.</para>
+ <para>Občas to vyžaduje použití závorek, aby se předešlo nejednoznačnostem, zvláště když
<literal>;</literal> není nejvyšším primitivem. Liší se to trochu od jiných programovacích jazyků, kde
<literal>;</literal> je zakončovacím symbolem příkazů, zatímco v jazyce GEL je to v současnosti binární
operátor. Pokud jste zběhlí v jazyce Pascal, mělo by to pro vás být přirozené. Nicméně Genius může do určité
míry předstírat, že se jedná o zakončovací symbol. Když se <literal>;</literal> nachází na konci závorek nebo
bloku, Genius za něj připojí prázdný uzel podobně, jako byste napsali <userinput>;null</userinput>. To je
užitečné v případě, kdy chcete vrátit hodnotu, řekněme ze smyčky, nebo když pracujete s návratovými hodnotami
odděleně. Upozorňujeme, že to mírně zpomaluje provádění kódu, pokud je spouštěn často, protože je v něm navíc
další operátor.</para>
+ <para>Když v programu píšete výraz, nemusíte za něj přidávat středník. V takovém případě bude Genius
prostě vypisovat vrácenou hodnotu, kdykoliv se výraz vyhodnotí. Nicméně vezměte na vědomí, že když definujete
funkci, je celé tělo funkce jediný výraz.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Komentáře</title>
+ <para>V jazyce GEL, podobně jako v jiných skriptovacích jazycích, <literal>#</literal> označuje
komentář, cože je text, který se nemá vyhodnocovat. Vše za znakem mřížky až po konec řádku je jednoduše
ignorováno. Například <programlisting># Právě toto je komentář
+# každý řádek komentáře musí mít vlastní znak „mřížky“
+# na následujícím řádku se x nastaví na hodnotu 123
+x=123;
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Modulární aritmetika</title>
+ <para>Genius má implementovánu modulární aritmetiku. Když ji chcete použít, stačí přidat „mod
<celé_číslo>“ za výraz. Například: <userinput>2^(5!) * 3^(6!) mod 5</userinput> Pro modulární
aritmetiku by bylo možné použít i počítání s celými čísly a následně určením zbytku na konci pomocí operátoru
<literal>%</literal>, ale to je časově náročné, ne-li nemožné, při práci s většími čísly. Například
<userinput>10^(10^10) % 6</userinput> jednoduše nebude pracovat (exponent bude příliš velký), zatímco
<userinput>10^(10^10) mod 6</userinput> je spočteno v mžiku. V prvním příkladu se zkusí vypočítat
<userinput>10^(10^10)</userinput> a pak najít zbytek po dělení 6, zatímco v druhém příkladu se vyhodnotí vše
modulo 6 už na začátku.</para>
+ <para>Můžete počítat převrácenou hodnotu čísla mod nějaké celé číslo jednoduše pomocí racionálních
čísel (samozřejmě musí převrácená hodnota existovat). Například: <programlisting>10^-1 mod 101
+1/10 mod 101</programlisting> Modulární aritmetiku můžete použít i pro výpočty s maticemi, včetně inverze,
umocňování a dělení. Příklad: <programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting> Takto byste měli získat jednotkovou matici, protože B bude inverzní maticí A mod
5.</para>
+ <para>Některé funkce, jako třeba <link linkend="gel-function-sqrt"><function>sqrt</function></link>
nebo <link linkend="gel-function-log"><function>log</function></link> pracují v modulární aritmetice jiným
způsobem. Budou pracovat jako jejich diskrétní verze pracující v okruhu vámi vybraných celých čísel.
Například <programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4
+genius> 5*5 mod 7
+= 4</programlisting><function>sqrt</function> bude ve skutečnosti vracet všechny možné odmocniny.</para>
+ <para>Nezřetězujte operátory mod, umístěte jen jeden na konce výpočtu a všechny početní operace ve
výrazu nalevo budou ošetřeny v modulární aritmetice. Když umístíte mod do mod, obdržíte neočekávané výsledky.
Pokud chcete použít modulo na jediné číslo a jen zjistit, zda zůstane zbytek, je lepší použít operátor
<literal>%</literal>. Když potřebujete zřetězit několik výrazů v modulární aritmetice s různými děliteli,
může být lepší rozdělit výraz na více výrazů a použít dočasné proměnné, aby se předešlo vložení mod do
mod.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Seznam operátorů GEL</title>
+
+ <para>Vše v jazyce GEL jsou ve skutečnosti jen výrazy. Výrazy jsou dohromady řetězeny pomocí různých
operátorů. Jak jste již viděli, i oddělovač je ve skutečnosti jen binární operátor jazyka. Zde je seznam
operátorů jazyka GEL.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>Oddělovač, který vyhodnocuje jak <varname>a</varname>, tak <varname>b</varname>, ale vrací
výsledek pouze z <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>Operátor přiřazení. </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>Operátor přiřazení. Přiřadí <varname>b</varname> do <varname>a</varname>
(<varname>a</varname> musí být platná <link linkend="genius-gel-lvalues">l-hodnota</link>). Liší se od
<literal>=</literal>, protože se nikdy nepřevádí na <literal>==</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>Absolutní hodnota. V případě, že výraz je komplexní číslo, je vrácen modul (absolutní
hodnota komplexního čísla, někdy také nazýván norma), což je vzdálenost od počátku. Například: <userinput>|3
* e^(1i*pi)|</userinput> vrátí 3.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Absolutn%C3%AD_hodnota">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>Umocnění, umocní <varname>a</varname> na <varname>b</varname>-tou.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>Umocňování prvek po prvku. Umocní každý prvek matice <varname>a</varname> na
<varname>b</varname>-tou. Nebo, když je <varname>b</varname> matice stejné velikosti jako
<varname>a</varname>, umocňuje se prvek po prvku. Pokud je <varname>a</varname> číslo a <varname>b</varname>
je matice, pak se vytvoří matice stejné velikosti jako <varname>b</varname> s <varname>a</varname> umocněným
na všechny různé mocnitele v <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>Sčítání. Sečte dvě čísla, matice, funkce nebo řetězce. Pokud přičtete řetězec k čemukoliv,
výsledkem bude vždy řetězec. Pokud je jeden operand čtvercová matice a druhý číslo, je číslo vynásobeno
jednotkovou maticí.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>Odčítání. Odečte dvě čísla, matice nebo funkce.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>Násobení. Jedná se o normální násobení matic.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>Násobení prvek po prvku v situaci, kdy <varname>a</varname> a <varname>b</varname> jsou
matice.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>Dělení. Pokud jsou <varname>a</varname> a <varname>b</varname> čísla, jedná se o běžné
dělení. Pokud to jsou matice, odpovídá to <userinput>a*b^-1</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>Dělení prvek po prvku. Pro čísla je to stejné jako <userinput>a/b</userinput>, ale u matic
to funguje prvek po prvku.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>Zpětné dělení. Je to to stejné, jako <userinput>b/a</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>Zpětné dělení prvků prvky.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>Operátor zbytku. Nepřepíná do režimu <link
linkend="genius-gel-modular-evaluation">modulární aritmetiky</link>, ale jen prostě vrátí zbytek
celočíselného dělení <userinput>a/b</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>Operátor zbytku dělení prvků prvky. Vrací zbytky po dělení celočíselných prvků
celočíselnými prvky <userinput>a./b</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>Operátor modulární aritmetiky. Výraz <varname>a</varname> je vyhodnocen modulární
aritmetikou vůči <varname>b</varname>. Viz <xref linkend="genius-gel-modular-evaluation"/>. Některé funkce a
operátory se chovají odlišně při modulární aritmetice s celými čísly.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>Operátor faktoriálu. Je to jako <userinput>1*…*(n-2)*(n-1)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>Operátor dvojitého faktoriálu. Je to jako <userinput>1*…*(n-4)*(n-2)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>Operátor rovnosti, vrací <constant>true</constant> (pravda) nebo <constant>false</constant>
(nepravda) podle toho, zda <varname>a</varname> je <varname>b</varname> rovno nebo není rovno.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>Operátor nerovnosti, vrací <constant>true</constant> (pravda) v případě, že
<varname>a</varname> se nerovná <varname>b</varname>, jinak vrací <constant>false</constant>
(nepravda).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>Alternativní operátor nerovnosti, vrací <constant>true</constant> (pravda) v případě, že
<varname>a</varname> se nerovná <varname>b</varname>, jinak vrací <constant>false</constant>
(nepravda).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>Operátor menší než nebo rovno, vrací <constant>true</constant> (pravda) v případě, že
<varname>a</varname> je menší než nebo se rovná <varname>b</varname>, jinak vrací <constant>false</constant>
(nepravda). Je možné řetězit ve stylu <userinput>a <= b <= c</userinput> (a může se při tom kombinovat
s operátorem menší než).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>Operátor větší než nebo rovno, vrací <constant>true</constant> (pravda) v případě, že
<varname>a</varname> je větší než nebo se rovná <varname>b</varname>, jinak vrací <constant>false</constant>
(nepravda). Je možné řetězit ve stylu <userinput>a >= b >= c</userinput> (a může se při tom kombinovat
s operátorem větší než).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>Operátor menší než, vrací <constant>true</constant> (pravda) v případě, že
<varname>a</varname> je menší než <varname>b</varname>, jinak vrací <constant>false</constant> (nepravda). Je
možné řetězit ve stylu <userinput>a < b < c</userinput> (a může se při tom kombinovat s operátorem
menší než nebo rovno).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>Operátor větší než, vrací <constant>true</constant> (pravda) v případě, že
<varname>a</varname> je větší než <varname>b</varname>, jinak vrací <constant>false</constant> (nepravda). Je
možné řetězit ve stylu <userinput>a > b > c</userinput> (a může se při tom kombinovat s operátorem
větší než nebo rovno).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>Operátor porovnání. V případě, že <varname>a</varname> je rovno <varname>b</varname>, vrací
0, pokud je <varname>a</varname> menší než <varname>b</varname> vrací -1 a pokud je <varname>a</varname>
větší než <varname>b</varname>, vrací 1.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>Logické A (AND). Vrací pravda, když <varname>a</varname> i <varname>b</varname> jsou
pravda, ve všech ostatních případech nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno
jako s pravdivostní hodnotou pravda.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>Logické NEBO (OR). Vrací pravda, když je <varname>a</varname> nebo <varname>b</varname>
(nebo oboje) pravda, jinak vrací nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s
pravdivostní hodnotou pravda.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>Logické vylučovací NEBO (XOR). Vrací pravda, když právě <varname>a</varname> nebo
<varname>b</varname> je pravda, ve všech ostatních případech vrací nepravda. Pokud jsou předána čísla, je se
všemi nenulovými zacházeno jako s pravdivostní hodnotou pravda.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>Logická negace (NOT). Vrací logickou negaci <varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>Operátor negace. Vrací opačné číslo nebo matici (u matice pracuje prvek po prvku).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>Reference proměnné (pro předání odkazu na proměnnou). Viz <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Dereference proměnné (pro přístup k odkazované proměnné). Viz <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>Transponovat matici komplexně sdruženou (Hermiteovsky sdružená matice). Tj. řádky a sloupce
se prohodí a vezmou se komplexně sdružená čísla ke všem prvkům. To znamená, že když prvek i,j matice
<varname>a</varname> je x+iy, pak prvek j,i matice <userinput>a'</userinput> je x-iy.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>Transponovat matici (bez komplexního sdružení). To znamená, že prvek i,j matice
<varname>a</varname> se stane prvkem j,i matice <userinput>a.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>Získat prvek matice v řádku <varname>b</varname> a sloupci <varname>c</varname>. Pokud jsou
<varname>b</varname>, <varname>c</varname> vektory, získají se odpovídající řádky, sloupce nebo
podmatice.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>Získat řádek matice (nebo více řádků, pokud je <varname>b</varname> vektor).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>Stejné jako předchozí.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>Získat sloupec matice (nebo sloupce, pokud je <varname>c</varname> vektor).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>Stejné jako předchozí.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>Získat prvek z matice, s kterou se zachází jako s vektorem. Matice se prochází řádek pro
řádku.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>Sestavit vektor od <varname>a</varname> do <varname>b</varname> (nebo zadané části řádku,
sloupce pro operátor <literal>@</literal>). Například pro získání řádků 2 až 4 z matice <varname>A</varname>
byste mohli použít <programlisting>A@(2:4,)
+ </programlisting>, kdy <userinput>2:4</userinput> vrátí vektor
<userinput>[2,3,4]</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>Sestavit vektor od <varname>a</varname> do <varname>c</varname> s krokem
<varname>b</varname>. Tj. například <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting></para>
+ <para>Když jsou použita desetinná čísla, například <userinput>1.0:0.4:3.0</userinput>, je výstupem
to, co očekáváte, přestože se k 1,0 pětkrát přidá 0,4, je to jen o něco více než 3,0 z důvodu, jakým jsou
desetinná čísla uchována ve dvojkové soustavě (není to přesně 0,4, ale uložené číslo je obvykle o trochu
větší). Způsob, jakým je to zpracováváno, je stejný jako u cyklu a sčítacích a násobících smyček. Pokud je
konec v rámci <userinput>2^-20</userinput>násobku velikosti kroku koncového bodu, je koncový bod použit a
předpokládá se, že nastaly chyby zaokrouhlení. To sice není perfektní, ale řeší to většinu případů. Tato
kontrola se provádí až ve verzi 1.0.18 a novějších, takže provádění vašeho kódu může být ve starších verzích
odlišné. Pokud chcete této záležitosti předejít, používejte opravdová racionální čísla, případně použijte
funkci <function>float</function>, k
dyž si přejete na konci dostat desetinné číslo. Například <userinput>1:2/5:3</userinput> funguje správně a
<userinput>float(1:2/5:3)</userinput> vám poskytne desetinné číslo a přitom to bude nepatrně přesnější než
<userinput>1.0:0.4:3.0</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>Udělat z <varname>a</varname> imaginární číslo (vynásobit <varname>a</varname> imaginární
hodnotou <varname>i</varname>). Všimněte si, že normálně se <varname>i</varname> zapisuje jako
<varname>1i</varname>. Takže předchozí je vlastně ekvivalentní k <programlisting>(a)*1i
+ </programlisting></para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>Uvozovat identifikátor, kterýžto nebude vyhodnocen. Nebo uvozovat matici, takže nebude
rozšířena.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>Přehodit hodnotu proměnné <varname>a</varname> s hodnotou proměnné <varname>b</varname>. V
současnosti nepracuje s částmi prvků matice. Vrací <constant>null</constant>. Dostupné od verze 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>Zvýšit hodnotu proměnné <varname>a</varname> o 1. V případě, že <varname>a</varname> je
matice, je o 1 zvýšen každý prvek. Dělá to vlastně to stejné co <userinput>a=a+1</userinput>, akorát o něco
rychleji. Vrací <constant>null</constant>. Dostupné od verze 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>Zvýšit hodnotu proměnné <varname>a</varname> o <varname>b</varname>. V případě, že
<varname>a</varname> je matice, je o zvýšen každý prvek. Dělá to vlastně to stejné co
<userinput>a=a+b</userinput>, akorát o něco rychleji. Vrací <constant>null</constant>. Dostupné od verze
1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>Operátor @() dává operátoru : více možností. S ním můžete určovat části matice. Takže a@(2:4,6) jsou
řádky 2,3,4 sloupce 6. Nebo a@(,1:2) vám dá první dva sloupce matice. Do operátoru @() můžete i přiřazovat,
stačí když je pravou hodnotou matice o stejném rozměru jako určená oblast nebo je to jiný typ hodnoty.</para>
+</note>
+
+<note>
+<para>Porovnávací operátory (vyjma operátoru <=>, který se chová normálně) nejsou striktně binární
operátory, mohou být fakticky seskupovány běžným matematickým způsobem, např.: (1<x<=y<5) je platný
pravdivostní výraz a znamená přesně to, co by měl, tj. (1<x a x≤y a y<5)</para>
+</note>
+
+<note>
+<para>Unární operátor mínus funguje různými způsoby v závislosti na tom, kde se vyskytuje. Když se objeví
před číslem, váže se přímo k němu. Když se objeví před výrazem, má slabší vazbu než mocnina a faktoriál.
Například <userinput>-1^k</userinput> je ve skutečnosti <userinput>(-1)^k</userinput>, ale
<userinput>-neco(1)^k</userinput> je ve skutečnosti <userinput>-(neco(1)^k)</userinput>. Takže věnujte
pozornost tomu, jak je používáte a pokud máte pochybnosti, raději přidejte závorky.</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Programování s jazykem GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Podmínky</title>
+ <para>Syntaxe: <programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting> Pokud je vynecháno <literal>else</literal> a <literal>výraz1</literal> je vyhodnocen
jako <constant>false</constant> nebo 0, je vráceno <literal>NULL</literal>.</para>
+ <para>Příklady: <programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting> Všimněte si, že když je <literal>=</literal> použito uvnitř výrazu pro
<literal>if</literal>, je změněno na <literal>==</literal>, takže <programlisting>if a=5 then a=a-1
+</programlisting> bude interpretováno jako: <programlisting>if a==5 then a:=a-1
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Smyčky</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>Smyčky while</title>
+ <para>Syntaxe: <programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting> Je to podobné jako v jiných jazycích. Jelikož v
jazyce GEL jde ve skutečnosti jen o výraz, musí vracet nějakou hodnotu a proto konstrukce vrací výsledek
poslední iterace nebo <literal>NULL</literal>, pokud žádná iterace neproběhne. V pravdivostních výrazech se
<literal>=</literal> převádí na <literal>==</literal>, stejně jako u příkazu <literal>if</literal>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>Smyčky for</title>
+ <para>Syntaxe: <programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting> Smyčka s identifikátorem,
který je postupně nastaven na všechny hodnoty od <literal><from></literal> do
<literal><to></literal>, volitelně se použije jiný krok než 1. Jedná se o rychlejší, hezčí a
kompaktnější řešení, než je normální smyčka uvedená výše, ale je méně flexibilní. Identifikátor musí být
identifikátor a nemůže být dereferencí. Hodnota identifikátoru je poslední hodnotou identifikátoru nebo
<literal><from></literal>, pokud tělo nebylo vůbec vyhodnoceno. Je zaručeno, že proměnná bude po smyčce
inicializována, takže ji můžete bezpečně použít. <literal><from></literal>,
<literal><to></literal> a <literal><increment></literal> nesmí být komplexní hodnoty. Není
zaručeno, že bude dosaženo <literal><to></literal>, ale rozhodně nebude nikdy překročeno, například
následující kód vy
píše lichá čísla od 1 do 19: <programlisting>for i = 1 to 20 by 2 do print(i)
+</programlisting></para>
+ <para>Pokud je jedna z hodnot desetinné číslo, je závěrečná kontrola prováděna v rozmezí 2^-20 z
velikosti kroku. To znamená, že i když se překročí 2^-20 krát více, stále ještě bude provedena poslední
iterace. Tímto způsobem dá <programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting> očekávané výsledky, i když přičtením desetkrát 0,1 dostaneme o něco víc než 1,0 z důvodu,
jakým jsou desetinná čísla uložena ve dvojkové soustavě (není to 0,1, skutečné uložené číslo je nepatrně
větší). Není to sice perfektní řešení, ale stačí pro většinu případů. Jestli se chcete vyhnout tomuto
problému, použijte racionální číslo, například: <programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting>. Tato kontrola se dělá až do verze 1.0.16, takže provádění kódu se u starších verzí může
lišit.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Smyčky foreach</title>
+ <para>Syntaxe: <programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
Pro každý prvek matice, postupně řádek po řádku zleva doprava, se provede tělo s identifikátorem nastaveným
na aktuální prvek. Když chcete vypsat čísla 1,2,3 a 4 právě v takovémto pořadí, můžete to udělat takto:
<programlisting>for n in [1,2:3,4] do print(n)
+</programlisting> Jestli potřebujete projít řádky a sloupce matice, můžete použít funkce RowsOf a ColumnsOf,
které vrací vektor řádků nebo sloupců matice. Takže <programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
+</programlisting> vypíše [1,2] a pak [3,4].</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Break a continue</title>
+ <para>Ve smyčkách můžete použít také příkazy <literal>break</literal> a <literal>continue</literal>.
Příkaz <literal>continue</literal> posune smyčku na začátek následující iterace, zatímco příkaz
<literal>break</literal> aktuální smyčku ukončí. <programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Součty a součiny</title>
+ <para>Syntaxe: <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting> Když <literal>for</literal> nahradíte za
<literal>sum</literal> nebo <literal>prod</literal>, pak místo smyčky <literal>for</literal> získáte součet
nebo součin. Místo aby byla vrácena poslední hodnota, je vrácen součet nebo součin hodnot.</para>
+ <para>Pokud tělo není vůbec provedeno (například <userinput>sum i=1 to 0 do …</userinput>), vrátí
<literal>sum</literal> hodnotu 0 a <literal>prod</literal> hodnotu 1, což je standardní konvence.</para>
+ <para>Pro desetinná čísla se dělá stejná ochrana proti chybám zaokrouhlování jako u smyčky for. Viz
<xref linkend="genius-gel-loops-for"/>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Porovnávací operátory</title>
+ <para>V jazyce GEL jsou podporovány následující porovnávací operátory a mají obvyklý význam:
<literal>==</literal>, <literal>>=</literal>, <literal><=</literal>, <literal>!=</literal>,
<literal><></literal>, <literal><</literal>, <literal>></literal>. Vrací
<constant>true</constant> nebo <constant>false</constant>. Operátory <literal>!=</literal> a
<literal><></literal> jsou stejné a znamenají „není rovno“. GEL podporuje také operátor
<literal><=></literal>, který vrací -1, když je levá strana menší, 0, když jsou si strany rovny, a 1,
když je levá strana větší.</para>
+
+ <para>Pokud se <literal>=</literal> vyskytne někde, kde GEL očekává podmínku, jako v podmínce if, je
převedeno na <literal>==</literal>. Například <programlisting>if a=b then c
+if a==b then c
+</programlisting> jsou v jazyce GEL totéž. Ale jestli chcete, aby váš kód byl dobře čitelný a abyste se
vyvarovali chyb, měli byste ve skutečnosti používat jako operátor porovnání nebo přiřazení
<literal>==</literal> nebo <literal>:=</literal>.</para>
+
+ <para>Všechny operátory porovnávání (vyjma operátoru <literal><=></literal>, který se chová
normálně) nejsou striktně binární operátory, takže mohou být seskupovány běžným matematickým způsobem, např.
(<literal>1<x<=y<5</literal>) je platný pravdivostní výraz a znamená přesně to, co by měl, což je
(1<x a x≤y a y<5)</para>
+ <para>Pro sestavení logických výrazů používejte slov <literal>not</literal>, <literal>and</literal>,
<literal>or</literal> a <literal>xor</literal>. Operátory <literal>or</literal> a <literal>and</literal> jsou
zrádné v tom, že vyhodnocují své argumenty jeden po druhém, takže zde funguje obvyklý trik pro podmíněné
vyhodnocení. Například <literal>1 or a=1</literal> nikdy nenastaví <literal>a=1</literal>, protože první
argument je pravdivý.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Globální proměnné a působnost proměnných</title>
+ <para>GEL je <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">jazyk s dynamickým
rozsahem platnosti</ulink>. Co to znamená hned vysvětlíme. Je to to, že normální proměnné a funkce mají
dynamicky vymezenou platnost. Výjimkou jsou <link linkend="genius-gel-parameters">proměnné parametrů</link>,
kterou jsou vždy globální.</para>
+ <para>Podobně jako většina programovacích jazyků, i GEL má různé typy proměnných. Když je proměnná
normálně definována ve funkci, je viditelná z této funkce a ze všech funkcí, které jsou z ní volány (všechny
kontexty s vyšším číslem). Například předpokládejme, že funkce <function>f</function> definuje proměnnou
<varname>a</varname> a pak volá funkci <function>g</function>. Potom se funkce <function>g</function> může
odkazovat na proměnnou <varname>a</varname>. Ale jakmile dojde k návratu z funkce <function>f</function>,
platnost <varname>a</varname> zaniká. Např. následují kód vypíše 5. Funkce <function>g</function> nemůže být
volána z nejvyšší úrovně (mimo funkci <function>f</function>, protože proměnná <varname>a</varname> pak není
definována). <programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting></para>
+ <para>Pokud definujete proměnnou uvnitř funkce, přepíše jinou proměnnou definovanou ve volající
funkci. Například upravíme předchozí kód a napíšeme: <programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting> Tento kód bude stále vypisovat 5. Ale když zavoláte <function>g</function> mimo funkci
<function>f</function>, dostanete ve výpise 10. Všimněte si, že nastavení <varname>a</varname> na 5 uvnitř
funkce <function>f</function> nemění hodnotu <varname>a</varname> ve nejvyšší (globální) úrovni, takže když
si nyní ověříte hodnotu <varname>a</varname>, bude stále 10.</para>
+ <para>Argumenty funkce jsou úplně stejné jako proměnné definované uvnitř funkce vyjma toho, že jsou
inicializovány na hodnotu, která je funkci předána. Kromě této jediné věci se s nimi zachází úplně stejně,
jako se všemi ostatními proměnnými definovanými uvnitř funkce.</para>
+ <para>S funkcemi je zacházeno stejně jako s proměnnými. Proto také můžete lokálně předefinovávat
funkce. Normálně (v nejvyšší úrovni) nemůžete předefinovávat chráněné proměnné a funkce. Ale lokálně to
udělat můžete. Uvažujme následující situaci: <screen><prompt>genius> </prompt><userinput>function f(x) =
sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen></para>
+ <para>Funkce a proměnné definované v nejvyšší úrovni jsou považovány za globální. Jsou viditelné
odkudkoliv. Jak již bylo řečeno, následující funkce <function>f</function> nezmění hodnotu
<varname>a</varname> na 5. <programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting> Občas je ale nutné nastavit globální proměnnou uvnitř funkce. Když je takové chování
zapotřebí, použijte funkci <link linkend="gel-function-set"><function>set</function></link>. Předáním řetězce
nebo identifikátoru s uvozovkou do této funkce se nastaví globální proměnná (v nejvyšší úrovni). Například
pro nastavení <varname>a</varname> na hodnotu 3 byste mohli zavolat: <programlisting>set(`a,3)
+</programlisting> nebo: <programlisting>set("a",3)
+</programlisting></para>
+ <para>Funkce <function>set</function> nastavuje vždy globální proměnné v nejvyšší úrovni. Neexistuje
žádný způsob, jak nastavit lokální proměnnou v nějaké funkce z podřízené funkce. Pokud něco takového
potřebujete, musíte jedině použít předání reference (odkazu).</para>
+ <para>Viz také funkce <link linkend="gel-function-SetElement"><function>SetElement</function></link>
a <link linkend="gel-function-SetVElement"><function>SetVElement</function></link>.</para>
+ <para>Takže sesumírováno do technického jazyka: Genius pracuje s různými očíslovanými kontexty.
Nejvyšší úroveň je kontext 0 (nula). Kdykoliv se vstoupí do funkce, je kontext zvýšen a když se funkce
opouští, je kontext snížen. Funkce nebo proměnná je vždy viditelná ze všech kontextů, které mají vyšší číslo.
Když byla proměnná definována v kontextu s nižším číslem, má nastavení této proměnné vliv na vytváření nové
lokální proměnné v aktuálním čísle kontextu a tato proměnná bude nyní viditelná ze všech kontextů s vyšším
číslem.</para>
+ <para>Existují i skutečně lokální proměnné, které nejsou vidět nikde jinde, než v aktuálním kontextu.
Rovněž při vracení funkcí hodnotou je možné odkazovat na proměnnou, která není viditelná z vyššího kontextu a
to může být problém. Viz oddíl <link linkend="genius-gel-true-local-variables">Skutečně lokální
proměnné</link> a <link linkend="genius-gel-returning-functions">Vracení funkcí</link>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Proměnné parametrů</title>
+ <para>Jak jsme uvedli již dříve, existují speciální proměnné nazývané parametry, které jsou platné
všude. Pro deklaraci parametru nazvaného <varname>foo</varname> s počáteční hodnotou 1, napište
<programlisting><![CDATA[parameter foo = 1
+]]></programlisting> Od toho okamžiku je <varname>foo</varname> striktně globální proměnnou. Nastavením
proměnné <varname>foo</varname> uvnitř funkce se změní proměnná ve všech kontextech, což je tím, že funkce
nemají privátní kopii parametrů.</para>
+ <para>Když zrušíte definici parametru pomocí funkce <link
linkend="gel-function-undefine"><function>undefine</function></link>, přestane být parametrem.</para>
+ <para>Některé parametry jsou vestavěné a mění chování kalkulátoru Genius.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Návrat hodnot</title>
+ <para>Normálně je funkce tvořena jedním nebo několika výrazy oddělenými středníky a vrací se hodnota
posledního výrazu. To je fajn pro jednoduché funkce, ale někdy nechcete, aby funkce vracela to, co vypočítala
naposledy. Můžete se například chtít vrátit z prostředku funkce. V takovém případě můžete použít klíčové
slovo <literal>return</literal>. <literal>return</literal> přebírá jeden argument, který je hodnotou, která
bude vrácena.</para>
+ <para>Příklad: <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>Reference</title>
+ <para>Pro některé funkce je nutné, aby vracely více než jednu hodnotu. To lze zajistit vrácením
vektoru hodnot, ale častokrát je praktičtější použít předávání reference (odkazu) na proměnnou. Předáte
funkci referenci na proměnnou a funkce proměnnou nastaví pomocí dereference. Nemusíte se s používáním
referencí omezovat jen na tento účel, ale tohle je jejich hlavní využití.</para>
+ <para>Když používáte funkce, které vracejí hodnoty skrze reference v seznamu argumentů, jednoduše
předejte název proměnné s ampersandem. Například následující kód bude počítat vlastní čísla matice
<varname>A</varname> s počátečním vlastním vektorem odhadů <varname>x</varname> a uloží vypočítaný vlastní
vektor do proměnné pojmenované <varname>v</varname>: <programlisting><![CDATA[RayleighQuotientIteration
(A,x,0.001,100,&v)
+]]></programlisting></para>
+ <para>V detailech fungování a syntaxi jsou reference podobné jako v jazyku C. Operátor
<literal>&</literal> odkazuje na proměnnou a <literal>*</literal> provádí dereferenci proměnné. Obojí lze
uplatnit pouze na identifikátory, takže <literal>**a</literal> není v jazyce GEL platný výraz.</para>
+ <para>Reference je nejlépe vysvětlit na příkladu: <programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting> <varname>a</varname> nyní obsahuje 2. Můžete používat i reference na funkce:
<programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting> vrátí 4.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>L-hodnoty</title>
+ <para>L-hodnota je levou stranou v přiřazení. Jinými slovy, l-hodnota to, do čeho přiřazujete. Platné
l-hodnoty jsou: <variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>Identifikátor. V tomto případě by se nastavila proměnná s názvem <varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Dereference identifikátoru. Nastaví to, na co proměnná <varname>a</varname> ukazuje.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<část>)</userinput></term>
+ <listitem>
+ <para>Část matice. Část je určena normálně jako u běžného operátoru @() a může být jedinou hodnotou
nebo celou oblastí matice.</para>
+ </listitem>
+ </varlistentry>
+</variablelist></para>
+ <para>Příklady: <programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting> Poznamenejme, že oba operátory <literal>:=</literal> a <literal>=</literal> lze zaměňovat.
Jedinou výjimkou je, když se objeví v podmínce. Proto je bezpečnější dodržovat pravidlo, že
<literal>:=</literal> se použije, když myslíte přiřazení, a <literal>==</literal>, když máte na mysli
porovnání.</para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Pokročilé programování v jazyce GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Obsluha chyb</title>
+ <para>Pokud je zjištěna chyba ve vaší funkci, provádění funkce se přeruší. Pro normální chyby, jako
jsou nesprávné typy argumentů, můžete vyvolat selhání funkce přidáním výrazu <literal>bailout</literal>. Když
nastane něco opravdu špatného a vy chcete aktuální výpočet kompletně zabít, můžete použít
<literal>exception</literal>.</para>
+ <para>Když například chcete ve své funkci kontrolovat argumenty, můžete použít následující kód.
<programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M není matice!");
+ bailout
+ );
+ …
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Syntaxe v nejvyšší úrovni</title>
+ <para>Syntaxe se lehce liší, když zadáváte příkazy v nejvyšší úrovni a když jsou uvnitř závorek nebo
uvnitř funkce. Na nejvyšší úrovni zadání funguje stejně, jako když zmáčknete Enter na příkazovém řádku. Proto
uvažujte o programu, jako o sekvenci řádků, které byste zadávali na příkazovém řádku. Především nepotřebujete
zadávat oddělovač na konci řádku (ledaže se jedná o část několika příkazů v závorkách). Když výraz nekončí na
nejvyšší úrovni oddělovačem, bude výsledek vypsán až po spuštění.</para>
+ <para>Například, <programlisting>function f(x)=x^2
+f(3)
+</programlisting> vypíše se jako první výsledek nastavení funkce (tj. reprezentaci funkce, v tomto případě
<computeroutput>(`(x)=(x^2))</computeroutput>) a teprve pak očekávané číslo 9. Abyste tomu předešli, zadejte
za definici funkce oddělovače. <programlisting>function f(x)=x^2;
+f(3)
+</programlisting> Když potřebujete oddělovač použít přímo ve své funkci, musíte ji uzavřít do závorek.
Například: <programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting></para>
+ <para>Následující kód skončí chybou, pokud jej zadáte v nejvyšší úrovni programu, zatímco ve funkci
bude pracovat bez problémů. <programlisting>if Neco() then
+ UdelatNeco()
+else
+ UdelatNecoJineho()
+</programlisting></para>
+ <para>Problémem je, že po té, co <application>matematický nástroj Genius</application> uvidí konec
řádku po druhém řádku, usoudí, že příkaz už je celý a provede jej. Po té, co je provádění dokončeno, bude
<application>matematický nástroj Genius</application> pokračovat na následujícím řádku, uvidí
<literal>else</literal>, a vyvolá chybu zpracování. Řešením je použít závorek. <application>Matematický
nástroj Genius</application> nebude spokojen, dokud nenalezne všechny závorky uzavřené. <programlisting>if
Neco() then (
+ UdelatNeco()
+) else (
+ UdelatNecoJineho()
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Vracení funkcí</title>
+ <para>Existuje možnost, jak vracet funkce jako hodnoty. Tímto způsobem můžete vytvářet funkce, které
konstruují funkce pro speciální účely podle určitých parametrů. Trochu trik je, jak udělat proměnné, aby je
funkce viděla. Způsob, který funguje v jazyce GEL je, že když funkce vrací jinou funkci, tak všechny
identifikátory odkazované v těle funkce, které jdou mimo rozsah působnosti, mají předřazen privátní slovník
vracené funkce. Takže funkce bude vidět všechny proměnné, které byly v rozsahu působnosti, když byla
definována. Například nadefinujeme funkci, která vrací funkci, která přičítá 5 ke svému argumentu.
<programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting> Všimněte si, že funkce přičítá <varname>k</varname> k <varname>x</varname>. Použili byste
ji následovně: <programlisting>g = f();
+g(5)
+</programlisting> A <userinput>g(5)</userinput> by mělo vrátit 10.</para>
+ <para>Jedna věc, kterou je potřeba si uvědomit, je, že hodnota <varname>k</varname>, která je
použita, je ve skutečnosti ta ve chvíli, kdy se vrací funkce <function>f</function>. Například
<programlisting>function f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting> bude vracet funkci, která ke svému argumentu přičítá 10 a ne 5. To proto, že je vytvořen
dodatečný slovník, jen když kontext, ve kterém končí definice funkce, je ten jako když se funkce
<function>f</function> vrací. Což je konzistentní s tím, jak byste očekávali, že bude funkce
<function>r</function> pracovat uvnitř funkce <function>f</function> podle pravidel o rozsahu působnosti
proměnných v jazyce GEL. Do dodatečného slovníku jsou přidány jen ty proměnné, které jsou v kontextu, který
právě končí a nadále již neexistuje. Proměnné použité ve funkci, které jsou ve stále platném kontextu, budou
pracovat obvykle s použitím aktuální hodnoty proměnné. Jediný rozdíl je v globálních proměnných a funkcích.
Všechny identifikátory, které odkazovaly na globální proměnné ve chvíli, kdy definice funkce není přidána do
privátního slovníku. To je kvůli tomu, aby se zabránilo nepotřebné práci
, když se vrací funkce a zřídka by byly problémem. Například předpokládejme, že vymažete z funkce
<function>f</function> výraz „n=5“ a v nejvyšší úrovni definujete <varname>k</varname>, které bude řekněme 5.
Když pak spustíte funkci <function>f</function>, funkce <function>r</function> nebude proměnnou
<varname>k</varname> vkládat do privátního slovníku, protože je v době definice <function>r</function>
globální (v nejvyšší úrovni).</para>
+ <para>Někdy je lepší mít větší kontrolu na tím, jak jsou proměnné kopírovány do privátního slovníku.
Od verze 1.0.7 můžete určovat, které proměnné jsou kopírovány do privátního slovníku tak, že za argumenty
vložíte dodatečné hranaté závorky se seznamem proměnných oddělených čárkou, které se mají kopírovat. Pokud
tak učiníte, proměnné jsou zkopírovány do privátního slovníku v okamžiku definice funkce a dodatečně se již
slovník nemění. Například <programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting> bude vracet funkci, která při zavolání přičte 5 ke svému argumentu. Lokální kopie
<varname>k</varname> byla vytvořena ve chvíli, kdy byla funkce definována.</para>
+ <para>Když chcete, aby funkce neměla žádný privátní slovník, tak vložte za seznam argumentů prázdné
hranaté závorky. V takovém případě nebude vytvořen vůbec žádný privátní slovník. To je dobré pro zvýšení
efektivity v situacích, kdy žádný privátní slovník není zapotřebí nebo když chcete, aby funkce hledala
všechny proměnné takové, jaké jsou v okamžiku volání. Například předpokládejme že chcete, aby funkce vracená
funkcí <function>f</function> viděla hodnotu <varname>n</varname> z nejvyšší úrovně, přestože existuje
lokální proměnná stejného jména během definování. Potom kód <programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting> bude vrace 20 a ne 15, což by nastalo v případě, že <varname>n</varname> s hodnotou 5 bylo
přidáno do privátního slovníku.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>Skutečně lokální proměnné</title>
+ <para>Když předáváte funkce do jiných funkcí, může být normální rozsah působnosti proměnných
nežádoucí. Například u <programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting> budete pravděpodobně chtít, aby funkce <function>r</function> při předání jako
<function>g</function> do <function>f</function> viděla v proměnné <varname>k</varname> hodnotu 10 a ne 5, a
kód tak vracel 11 a ne 6. Ale tak, jak je to napsáno, funkce při spuštění bude vidět <varname>k</varname>
rovno 5. Existují dva způsoby, jak to vyřešit. Jeden je přimět funkci <function>r</function>, aby dostala
<varname>k</varname> v privátním slovníku pomocí notace s hranatými závorkami, jak je ukázáno v kapitole
<link linkend="genius-gel-returning-functions">Vracení funkcí</link>.</para>
+ <para>Je zde ale i jiné řešení. Od verze 1.0.7 jsou k dispozici skutečně lokální proměnné. Jde o
proměnné, které jsou viditelné pouze z aktuálního kontextu a ne z jakékoliv volané funkce. Mohli bychom
definovat <varname>k</varname> jako lokální proměnnou ve funkci <function>f</function>. Uděláte to tak, že
přidáte příkaz <command>local</command> jako první příkaz ve funkci (musí to být vždy první příkaz ve
funkci). Lokální proměnnou můžete udělat také z kteréhokoliv argumentu. Pak to bude takto
<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting> a kód bude pracovat jak očekáváte a vypisovat 11. Upozorňujeme, že příkaz
<command>local</command> inicializuje všechny odkazované proměnné (vyjma argumentů funkce) na
<constant>null</constant>.</para>
+ <para>Pokud mají být jako lokální vytvořeny všechny proměnné, můžete místo seznamu proměnných prostě
předat hvězdičku. V takovém případě nebudou proměnné inicializovány, dokud opravdu nejsou nastaveny. Takto
bude i následující definice <function>f</function> pracovat: <programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting></para>
+ <para>Je dobrým zvykem, aby všechny funkce, které přebírají jiné funkce jako argumenty, používaly
lokální proměnné. Je to způsob, jak zabránit, aby předávaná funkce neviděla implementační podrobnosti a
nemátlo ji to.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>Spouštěcí procedura GEL</title>
+ <para>Nejdříve program hledá soubor nainstalovaných knihoven (přeložená verze
<filename>lib.cgel</filename>) v instalační složce, pak se dívá do aktuální složky a po té zkouší načíst
nepřeložený soubor nazvaný <filename>~/.geniusinit</filename>.</para>
+ <para>Pokaždé, když změníte knihovnu v místě její instalace, musíte ji nejprve přeložit pomocí
<command>genius --compile loader.gel > lib.cgel</command></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Načítání programů</title>
+ <para>Někdy můžete mít delší program, který jste zapsali do souboru a chcete jej z tohoto souboru
načíst do <application>matematického nástroje Genius</application>. V takové situaci máte dvě možnosti.
Můžete mít funkce, které používáte nejčastěji, v souboru <filename>~/.geniusinit</filename>. Nebo, pokud
chcete načíst soubor v průběhu sezení (nebo z jiného souboru), můžete napsat na příkazovém řádku
<command>load <seznam názvů souborů></command>. To musí být provedeno v nejvyšší úrovni a ne uvnitř
nějaké funkce nebo něčeho a nesmí to být součástí výrazu. Má to také mírně odlišnou syntaxi než zbytek
příkazů v kalkulátoru Genius, více se to podobá syntaxi shellu. Soubor můžete zadat v uvozovkách. Když
použijete uvozovky '', dostanete řetězec přesně tak, jak jste jej zapsali, když uvozovky "", budou zpracovány
escape sekvence pro speciální znaky. Například: <programlisting>load prog
ram1.gel program2.gel
+load "Nezvyklý název souboru s MEZERAMI.gel"
+</programlisting> K dispozici jsou také vestavěné příkazy <command>cd</command>, <command>pwd</command> a
<command>ls</command>. Příkaz <command>cd</command> přijímá jeden argument, <command>ls</command> přijímá
argument, který je podobný jako u glob v UNIXovém shellu (např. můžete používat divoké znaky).
<command>pwd</command> nepřijímá žádné argumenty. Například: <programlisting>cd
složka_s_programemy_v_jazyce_gel
+ls *.gel
+</programlisting></para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Matice v jazyce GEL</title>
+
+ <para>Genius podporuje vektory a matice a jeho součástí je rozsáhlá knihovna pro práci s maticemi a s
funkcemi lineární algebry.</para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Zadávání matic</title>
+ <para>K zadávání matic můžete použít jednu z následujících dvou syntaxí. Buď můžete zadat matici na
jednom řádku, kdy hodnoty oddělujete čárkami a řádky středníky. Nebo můžete zadávat každý řádek na jednom
řádku, kdy hodnoty oddělujete čárkami. Můžete také jednoduše kombinovat obě metody. Takže zadání matice 3×3 z
čísel 1 – 9 byste mohli zadat <programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting> nebo <programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting> Přesto nepoužívejte naráz „;“ a enter na stejném řádku.</para>
+
+ <para>Při vkládání matic můžete také použít funkci rozšíření matice. Například můžete udělat
následující: <programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting> a měli byste získat <programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting> Podobně můžete sestavit matice z vektorů a dalších podobných věcí.</para>
+
+ <para>Další věcí je, že nezadaná místa se inicializují na 0, takže <programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting> bude ve výsledku <programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting></para>
+
+ <para>Když jsou matice vyhodnocovány, jsou vyhodnocovány a procházeny po řádcích. Je to úplně stejné
jako operátor <literal>M@(j)</literal>, který prochází matice po řádcích.</para>
+
+ <note>
+ <para>Věnujte pozornost při vracení z výrazů uvnitř závorek <literal>[ ]</literal>, protože tam mají
lehce odlišný význam. Začnete tím nový řádek.</para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Operátor konjugované transpozice a transpozice</title>
+ <para>Konjugovanou transpozici matice můžete provádět pomocí operátoru <literal>'</literal>. Tj. prvek
v <varname>i</varname>-tém sloupci a <varname>j</varname>-tém řádku bude komplexním konjugátem prvku v
<varname>j</varname>-tém sloupci a <varname>i</varname>-tém řádku původní matice. Například:
<programlisting>[1,2,3]*[4,5,6]'
+</programlisting> Transponujeme druhý vektor, aby bylo možné matici násobit. Pokud chcete matici jen
transponovat bez konjugace, použijte operátor <literal>.'</literal>. Například:
<programlisting>[1,2,3]*[4,5,6i].'
+</programlisting></para>
+ <para>Poznamenejme, že normální transpozice, tj. operátor <literal>.'</literal>, je mnohem rychlejší
a nevytváří novou kopii matice v paměti. Konjugovaná transpozice bohužel novou kopii vytváří. Při práci se
skutečnými maticemi a vektory je doporučováno vždy používat operátor <literal>.'</literal>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Lineární algebra</title>
+ <para>Genius implementuje velmi užitečné rutiny pro lineární algebru a práci s maticemi. Viz <link
linkend="genius-gel-function-list-linear-algebra">Lineární algebra</link> a <link
linkend="genius-gel-function-list-matrix">Práce s maticemi</link> v kapitole se seznamem funkcí GEL.</para>
+ <para>Rutiny lineární algebry implementované v jazyce GEL v současnosti nepochází s příliš testovaného
balíku pro numeriku a proto by neměly být používány pro kritické numerické výpočty. Na druhou stranu Genius
implementuje opravdu hodně operací lineární algebry s racionálními a celočíselnými koeficienty. Ty jsou
přirozeně přesné a v praxi vám poskytnou mnohem lepší výsledky, než běžné rutiny pro lineární algebru s
dvojitou přesností.</para>
+ <para>Například je pro praktické účely zbytečné počítat hodnost nebo nulový prostor matice desetinných
čísel, musíme vzít v úvahu, že matice mají určité malé chyby. To může vést k tomu, že získáte jiné výsledky,
než očekáváte. Problém je, že za malou odchylkou každé matice je plná hodnost a invertovatelnost. Avšak pokud
je matice z racionálních čísel, pak hodnost a nulový prostor jsou vždy přesné.</para>
+ <para>Vzato obecně, když Genius počítá podle určitého prostoru vektorů (například s funkcí <link
linkend="gel-function-NullSpace"><function>NullSpace</function></link>), získá báze jako matici, ve které
jsou sloupce vektory báze. Když Genius mluví o lineárním podprostoru, míní tím matici, jejíž prostor sloupců
je daný lineární podprostor.</para>
+ <para>Měli byste vzít na vědomí, že Genius si umí zapamatovat určité vlastnosti matice. Například si
bude pamatovat, že je v řádkově redukované podobě. Když je prováděno hodně volání funkcí, které interně
používají řádkově redukovanou matici, můžeme matici řádkově redukovat dopředu. Postupná volání <link
linkend="gel-function-rref"><function>rref</function></link> budou velmi rychlá.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Polynomy v jazyce GEL</title>
+
+ <para>V současnosti Genius umí pracovat s polynomy jedné proměnné zapsanými jako vektory a umí s nimi
některé základní operace. Do budoucna se počítá s rozšířením této funkcionality.</para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Používání polynomů</title>
+ <para>V současnosti jsou polynomy jedné proměnné prostě jen vodorovné vektory s hodnotami jednotlivých
koeficientů. Podstatná je pozice ve vektoru, kdy první pozice je 0. Takže <programlisting>[1,2,3]
+</programlisting> se převede na polynom <programlisting>1 + 2*x + 3*x^2
+</programlisting></para>
+ <para>Polynomy můžete sčítat, odčítat a násobit pomocí funkcí <link
linkend="gel-function-AddPoly"><function>AddPoly</function></link>, <link
linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link> a <link
linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link>. Vypisovat je můžete pomocí
funkce <link linkend="gel-function-PolyToString"><function>PolyToString</function></link>. Například
<programlisting>PolyToString([1,2,3],"y")
+</programlisting> vrátí <programlisting>3*y^2 + 2*y + 1
+</programlisting> Můžete také získat funkci představující polynom, takže jej můžete vyhodnotit. Udělá se to
pomocí funkce <link linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>, ktrá
vrací anonymní funkce. <programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting></para>
+ <para>Rovněž je možné hledat kořeny polynomů 1. až 4. stupně pomocí funkce <link
linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>, která volá funkce s
příslušnými vzorci. Vyšší stupně polynomů musí být převedeny na funkce a řešeny numericky pomocí funkcí, jako
je <link linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>, <link
linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>, <link
linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link> nebo <link
linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.</para>
+ <para>Ohledně ostatních funkcí týkajících se polynomů se podívejte se na <xref
linkend="genius-gel-function-list-polynomials"/> v seznamu funkcí.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Teorie množin v jazyce GEL</title>
+
+ <para>Genius má vestavěnou základní funkcionalitu pro teorii množin. V současnosti je množina prostě jen
vektor (nebo matice). S každým jednotlivým objektem je zacházeno jako s odlišným prvkem.</para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Používání množin</title>
+ <para>Podobně jako u vektorů, i v množinách mohou být objekty čísla, řetězce,
<constant>null</constant>, matice a vektory. Do budoucna je pro množiny plánován samostatný typ namísto
vektorů. Upozorňujeme, že desetinná čísla (float) se odlišují od celých čísel (integer), i když vypadají
stejně. Takže Genius bude s <constant>0</constant> a <constant>0.0</constant> zacházet jako s různými prvky.
<constant>null</constant> je považováno za prázdnou množinu.</para>
+ <para>K sestavení množiny vektorů použijte funkci <link
linkend="gel-function-MakeSet"><function>MakeSet</function></link>. V současnosti vrátí akorát nový vektor,
ve kterém je každý prvek jedinečný. <screen><prompt>genius>
</prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen></para>
+
+ <para>Podobně jsou k dispozici funkce <link
linkend="gel-function-Union"><function>Union</function></link>, <link
linkend="gel-function-Intersection"><function>Intersection</function></link>, <link
linkend="gel-function-SetMinus"><function>SetMinus</function></link>, které vrací sjednocení, průnik a rozdíl
množin. Například: <screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen> Upozorňujeme, že u vracených hodnot není zaručeno žádné pořadí. Pokud chcete vektor seřadit, měli
byste použít funkci <link linkend="gel-function-SortVector"><function>SortVector</function></link>.</para>
+
+ <para>Pro test, zda je prvkem množiny, slouží funkce <link
linkend="gel-function-IsIn"><function>IsIn</function></link> a <link
linkend="gel-function-IsSubset"><function>IsSubset</function></link>, které vrací pravdivostní hodnotu.
Například: <screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen> Vstup <userinput>IsIn(x,X)</userinput> je samozřejmě shodný s
<userinput>IsSubset([x],X)</userinput>. Uvědomte si, že vzhledem k tomu, že prázdná množina je podmnožinou
kterékoliv množiny, volání <userinput>IsSubset(null,X)</userinput> vrátí vždy true (pravda).</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Seznam funkcí GEL</title>
+
+ <!--&gel-function-list;-->
+
+ <para>Pro získání nápovědy ke konkrétní funkci napište v konzole: <programlisting>help NazevFunkce
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Příkazy</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>help NázevFunkce</synopsis>
+ <para>Vypsat nápovědu (nebo nápovědu k funkci/příkazu).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "soubor.gel"</synopsis>
+ <para>Načíst soubor do interpretru. Obsah souboru bude proveden stejně, jako by byl napsán do
příkazového řádku.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /název/složky</synopsis>
+ <para>Změnit pracovní složku na <filename>/název/složky</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Vypsat název aktuální pracovní složky.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Vypsat soubory v aktuální složce.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin název_zásuvného_modulu</synopsis>
+ <para>Načíst zásuvný modul. Zásuvný modul se zadaným názvem musí být v systému nainstalován ve
správné složce.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Základy</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (otazka)</synopsis>
+ <synopsis>AskButtons (otazka, tlacitko1, ...)</synopsis>
+ <para>Položit uživateli otázku a poskytnout mu seznam tlačítek (nebo nabídku voleb v textovém
režimu). Vrací index zmáčknutého tlačítka. Index začíná od jedné, tj. vrací 1, když je zmáčknuto první
tlačítko, 2, když je zmáčknuto druhé tlačítko atd. Pokud uživatel zavře okno (nebo prostě zmáčkne Enter v
textovém režimu), je vráceno <constant>null</constant>. Dokud uživatel nezareaguje, je další provádění
programu blokováno.</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (otazka)</synopsis>
+ <synopsis>AskString (otazka, vychozi)</synopsis>
+ <para>Položit uživateli otázku a umožnit mu zadat řetězec, který pak bude vrácen. Pokud uživatel
dotaz zruší nebo okno zavře, bude vráceno <constant>null</constant>. Provádění programu je blokováno, dokud
uživatel neodpoví. Pokud je zadán argument <varname>vychozi</varname>, bude uživateli předvyplněn, takže mu
bude stačit zmáčknout Enter (od verze 1.0.6).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Složit dvě funkce a vrátit funkci, která je spojením <function>f</function> a
<function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Složit a provést funkci samu se sebou <varname>n</varname> krát, přičemž jí předat argument
<varname>x</varname>. Pokud se <varname>n</varname> rovná 0, vrací <varname>x</varname>. Příklad:
<screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (retezec)</synopsis>
+ <para>Analyzovat a vyhodnotit řetězec.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Získat aktuální modulo z kontextu mimo funkci. To jest, pokud jste mimo funkci spuštěnou v
modulární aritmetice (pomocí <literal>mod</literal>), bude vráceno to, co bylo tímto zbytkem. Normálně není
tělo volané funkce prováděno v modulární aritmetice a díky této vestavěné funkci je možné, aby funkce GEL
probíhaly v modulární aritmetice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Funkce identity, která vrací svůj argument. Odpovídá to <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (pravdhodnota)</synopsis>
+ <para>Udělat z pravdivostní hodnoty celé číslo (0 pro <constant>false</constant> nebo 1 pro
<constant>true</constant>). <varname>pravdhodnota</varname> může být i číslo, v kterém tož případě bude
nenulová hodnota brána jako <constant>true</constant> a nulová jako <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument pravdivostní hodnota (a ne číslo).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Zkontrolovat, zda je id definováno. Měli byste předat řetězec nebo identifikátor. Pokud
předáte matici, bude každá položka vyhodnocena samostatně a matice by měla obsahovat řetězce nebo
identifikátory.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument funkcí.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument funkcí nebo identifikátorem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument odkazem na funkci. Zahrnuje to i odkazy na proměnné.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument maticí. Ačkoliv je <constant>null</constant> občas považováno
za prázdnou matici, funkce <function>IsMatrix</function> hodnotu <constant>null</constant> za matici
nepovažuje.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument textovým řetězcem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (argument)</synopsis>
+ <para>Zkontrolovat, zda je argument číslem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (retezec)</synopsis>
+ <para>Analyzovat, ale nevyhodnocovat řetězec. Berte ale na vědomí, že během fáze analýzy se
provádí určité předvýpočty.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,priznaky...)</synopsis>
+ <para>Nastavit příznaky pro funkci, v současnosti jsou k dispozici
<literal>"PropagateMod"</literal> a <literal>"NoModuloArguments"</literal>. Pokud je nastaveno
<literal>"PropagateMod"</literal>, je vyhodnocování těla funkce prováděno v modulární aritmetice v situaci,
kdy je funkce volána uvnitř bloku, který je vyhodnocován v modulární aritmetice (pomocí
<literal>mod</literal>). Pokud je nastaveno <literal>"NoModuloArguments"</literal>, nejsou argumenty funkce
nikdy vyhodnocovány pomocí modulární aritmetiky.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,kategorie,popis)</synopsis>
+ <para>Nastavit kategorii funkce a řádek jejího popisu v nápovědě.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,altnazev)</synopsis>
+ <para>Nastavit alternativní název do nápovědy.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (složka)</synopsis>
+ <para>Změnit aktuální složku, stejné jako <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Vrátit aktuální UNIXový čas s přesností na mikrovteřiny v podobě desetinného čísla.
Prakticky se jedná o počet vteřin uplynulých od 1. ledna 1970.</para>
+ <para>Verze 1.0.15 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (retezec,vyraz)</synopsis>
+ <para>Zobrazit retezec a vyraz navzájem oddělené dvojtečkou.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (prom1,prom2,...)</synopsis>
+ <para>Zobrazit sadu proměnných. Proměnné mohou být předány jako řetězce nebo jako identifikátory.
Například: <programlisting>DisplayVariables (`x,`y,`z)
+ </programlisting></para>
+ <para>Pokud je zavoláno bez argumentů (musí být předán prázdný seznam argumentů) jako
<programlisting>DisplayVariables ()
+ </programlisting>, budou vypsány všechny proměnné včetně stavu zásobníku, podobně jako u
<guilabel>Zobrazit uživatelské proměnné</guilabel> v grafické verzi.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (retezec)</synopsis>
+ <para>Vypsat retezec do chybového proudu (na konzole).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Alternativní názvy: <function>quit</function></para>
+ <para>Ukončit program.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Alternativní názvy: <function>False</function> <function>FALSE</function></para>
+ <para>Pravdivostní hodnota <constant>false</constant> (nepravda).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Zobrazit uživatelskou příručku.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (retezec)</synopsis>
+ <para>Vypsat výraz a poté odřádkovat. Argument <varname>retezec</varname> může být libovolný
výraz. Před vypsáním je převeden na řetězec.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (retezec)</synopsis>
+ <para>Vypsat výraz bez odřádkování. Argument <varname>retezec</varname> může být libovolný výraz.
Před vypsáním je převeden na řetězec.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Vypsat tabulku hodnot pro funkci. Hodnoty jsou ve vektoru <varname>v</varname>. Můžete použít
vestavěnou notaci vektoru takto: <programlisting>PrintTable (f,[0:10])
+ </programlisting> Pokud je <varname>v</varname> celé kladné číslo, použije se tabulka celých
čísel od 1 do v včetně.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Ochránit proměnnou proti změnám. Stejný postup je použit u interních funkcí GEL, aby se
zabránilo nechtěnému přepsání.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Ochránit všechny aktuálně definované proměnné, parametry a funkce proti změnám. Stejný
postup je použit u interních funkcí GEL, aby se zabránilo nechtěnému přepsání. Normálně
<application>matematický nástroj Genius</application> považuje nechráněné proměnné za definované
uživatelem.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,hodnota)</synopsis>
+ <para>Nastavit globální proměnnou. Argument <varname>id</varname> může být buď řetězec nebo
identifikátor s uvozovkou. Například: <programlisting>set(`x,1)
+ </programlisting> nastaví globální proměnnou <varname>x</varname> na hodnotu 1.</para>
+ <para>Funkce vrací <varname>hodnotu</varname>, což je užitečné pro řetězení.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,radek,sloupec,hodnota)</synopsis>
+ <para>Nastavit prvek globální proměnné, která je maticí. Argument <varname>id</varname> může být
buď řetězec nebo identifikátor s uvozovkou. Příklad: <programlisting>SetElement(`x,2,3,1)
+ </programlisting> nastaví prvek ve druhém řádku třetím sloupci globální proměnné
<varname>x</varname> na hodnotu 1. V případě, že neexistuje globální proměnná s daným názvem nebo je
nastavena na něco jiného než matici, vytvoří se nová nulová matice příslušné velikosti.</para>
+ <para>Argumenty <varname>row</varname> a <varname>col</varname> mohou být i rozsahy a sémanticky je
to stejné, jako běžné nastavení prvků pomocí znaménka rovnosti.</para>
+ <para>Funkce vrací <varname>hodnotu</varname>, což je užitečné pro řetězení.</para>
+ <para>Dostupné ve verzi 1.0.18 a novějších.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,prvek,hodnota)</synopsis>
+ <para>Nastavit prvek globální proměnné, která je vektorem. Argument <varname>id</varname> může být
buď řetězec nebo identifikátor s uvozovkou. Příklad: <programlisting>SetElement(`x,2,1)
+ </programlisting> nastaví druhý prvek globálního vektoru <varname>x</varname> na hodnotu 1. V
případě, že neexistuje globální proměnná s daným názvem nebo je nastavena na něco jiného než vektor (matici),
vytvoří se nový nulový vektor příslušné velikosti.</para>
+ <para>Argument <varname>prvek</varname> může být i rozsah a sémanticky je to stejné, jako běžné
nastavení prvků pomocí znaménka rovnosti.</para>
+ <para>Funkce vrací <varname>hodnotu</varname>, což je užitečné pro řetězení.</para>
+ <para>Dostupné ve verzi 1.0.18 a novějších.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Vytvořit řetězec. Vytvoří řetězec podle libovolného argumentu.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Alternativní názvy: <function>True</function> <function>TRUE</function></para>
+ <para>Pravdivostní hodnota <constant>true</constant> (pravda).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Alternativní názvy: <function>Undefine</function></para>
+ <para>Zrušit definici proměnné. Což zahrnuje lokální a globální, všechny hodnoty ve všech úrovních
kontextu jsou vymazány. Tato funkce by opravdu neměla být používána na lokální proměnné. Je možné předat i
vektor identifikátorů a v takovém případě bude zrušena definice několika proměnných.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Zrušit definice všech nechráněných globálních proměnných (včetně funkcí a parametrů).
Normálně <application>matematický nástroj Genius</application> považuje chráněné proměnné za funkce a
proměnné definované systémem. Upozorňujeme, že funkce <function>UndefineAll</function> odstraní pouze
globální definice symbolů, lokální ne, takže může být bezpečně spouštěna i z těla jiných funkcí.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Zrušit ochranu proměnné proti změnám.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Vrátit vektor všech uživatelem definovaných (nechráněných) globálních proměnných.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (vteřiny)</synopsis>
+ <para>Čekat zadaný počet vteřin. Počet <varname>vteřiny</varname> musí být nezáporný. Nula se
akceptuje a v takovém případě se nic neprovede, vyjma možnosti, že jsou zpracovány události uživatelského
rozhraní.</para>
+ <para>Protože od verze 1.0.18 může být argument <varname>vteřiny</varname> neceločíselný, bude
například <userinput>wait(0.1)</userinput> čekat jednu desetinu vteřiny.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Vrátit verzi kalkulátoru Genius jako svislý 3prvkový vektor s hlavním číslem jako prvním,
následuje vedlejší číslo a nakonec úroveň záplat.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Poskytnout informace o licenci.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Parametry</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = číslo</synopsis>
+ <para>Tolerance funkce <function>Chop</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = číslo</synopsis>
+ <para>Kolik iterací zkusit pro nalezení limity pro spojitost a limit.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = číslo</synopsis>
+ <para>Kolik postupných kroků, aby to bylo v rámci tolerance pro výpočet spojitosti.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = číslo</synopsis>
+ <para>Tolerance pro spojitost funkcí a výpočet limity.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = číslo</synopsis>
+ <para>Kolik iterací zkusit pro nalezení limity pro derivaci.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = číslo</synopsis>
+ <para>Kolik postupných kroků, aby to bylo v rámci tolerance pro výpočet derivace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = číslo</synopsis>
+ <para>Tolerance pro výpočet derivací funkcí.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = číslo</synopsis>
+ <para>Tolerance chybové funkce <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = číslo</synopsis>
+ <para>Přesnost desetinných čísel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = pravdivostní hodnota</synopsis>
+ <para>Vypisovat úplné výrazy, i když mají více než jeden řádek.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = číslo</synopsis>
+ <para>Tolerance funkce <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = číslo</synopsis>
+ <para>Číselná soustava vypisovaných celých čísel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = číslo</synopsis>
+ <para>Počet Miller-Rabinových testů, které se mají spustit na číslo před prohlášením, že je to
prvočíslo, ve funkci <link linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Říká kalkulátoru genius, aby vykresloval legendy pro <link
linkend="genius-gel-function-list-plotting">funkce čárových grafů</link>, jako třeba <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Říká kalkulátoru genius, aby vykresloval popisky os pro <link
linkend="genius-gel-function-list-plotting">funkce čárových grafů</link>, jako třeba <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Říká kalkulátoru genius, které názvy proměnných jsou použity jako výchozí názvy pro <link
linkend="genius-gel-function-list-plotting">funkce čárových grafů</link>, jako třeba <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> a spol.</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Nastavuje meze pro <link linkend="genius-gel-function-list-plotting">funkce čárových
grafů</link>, jako třeba <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = číslo</synopsis>
+ <para>Maximální počet číslic, který se má zobrazovat.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = číslo</synopsis>
+ <para>Maximální počet chyb, které se mají zobrazovat.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = pravdivostní hodnota</synopsis>
+ <para>Pokud je nastaveno na true, budou vypisovány složené zlomky.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = funkce</synopsis>
+ <para>Funkce používaná pro numerické integrování v <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = číslo</synopsis>
+ <para>Počet kroků, které se mají provést ve funkci <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = číslo</synopsis>
+ <para>Když je jiné číslo ve vypisovaném objektu (matici nebo hodnotě) větší než
10<superscript>-OutputChopWhenExponent</superscript> a vypisované číslo je menší než
10<superscript>-OutputChopExponent</superscript>, pak se místo tohoto čísla zobrazí
<computeroutput>0.0</computeroutput>.</para>
+<para>Výstup není nikdy osekán, pokud je <function>OutputChopExponent</function> nula. Vždy musí být
nezáporné celé číslo.</para>
+<para>Jestliže chcete, aby byl výstup vždy osekáván podle <function>OutputChopExponent</function>, tak
nastavte <function>OutputChopWhenExponent</function> na cokoliv většího nebo rovného
<function>OutputChopExponent</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = číslo</synopsis>
+ <para>Kdy osekávat výstup. Viz <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = řetězec</synopsis>
+ <para>Styl výstupu, může jít o jeden z <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> nebo <literal>troff</literal>.</para>
+ <para>Z větší části to ovlivňuje, jak se vypisují matice a zlomky a je to užitečné pro vkládání do
dokumentů. Například to můžete nastavit na latex pomocí: <programlisting>OutputStyle = "latex"
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = pravdivostní hodnota</synopsis>
+ <para>Před vypsáním převést všechny výsledky na desetinná čísla.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = pravdivostní hodnota</synopsis>
+ <para>Používat vědeckou notaci.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [svisle,vodorovne]</synopsis>
+ <para>Nastavuje počet svislých a vodorovných měřítkových značek v grafu směrového pole. (Viz <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = číslo</synopsis>
+ <para>Kolik iterací se má zkusit pro <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> a <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = číslo</synopsis>
+ <para>Kolik postupných kroků, aby to bylo v rámci tolerance pro <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> a <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = číslo</synopsis>
+ <para>Tolerance pro funkce <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> a <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Říká kalkulátoru genius, aby vykresloval legendy pro <link
linkend="genius-gel-function-list-plotting">funkce grafů ploch</link>, jako třeba <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Říká kalkulátoru genius, které názvy proměnných jsou použity jako výchozí názvy pro <link
linkend="genius-gel-function-list-plotting">funkce plošných grafů</link>, tj. <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>. Uvědomte si, že
<varname>z</varname> neodkazuje na závislou (svislou) osu, ale na nezávislou komplexní proměnnou
<userinput>z=x+iy</userinput>.</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Nastavuje meze pro vykreslování ploch. (Viz <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Zda by měl mít graf vektorového pole normalizovanou délku šipek. Pokud je nastaveno na true,
bude vektorové pole ukazovat pouze směr a ne velikost. (Viz <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [svisle,vodorovne]</synopsis>
+ <para>Nastavuje počet svislých a vodorovných měřítkových značek v grafu vektorového pole. (Viz
<link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Konstanty</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>Catalanova konstanta, přibližně 0,915… Je definována jako řada se členy
<userinput>(-1^k)/((2*k+1)^2)</userinput>, kde <varname>k</varname> je z intervalu 0 až nekonečno.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Alternativní názvy: <function>gamma</function></para>
+ <para>Eulerova konstanta gama. Někdy nazývaná také Eulerova-Mascheroniho konstanta.</para>
+ <para>Více informací najdete v encyklopediíc <ulink
url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> (text je v angličtině) a
<ulink url="https://cs.wikipedia.org/wiki/Eulerova_konstanta">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>Zlatý řez.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/GoldenRatio">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Zlat%C3%BD_%C5%99ez">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Tíhové zrychlení na úrovni moře v metrech za sekundu na druhou. Jedná se o standardní
gravitační konstantu 9,80665. Gravitace v končinách vašeho lesa se může lišit, kvůli jiné nadmořské výšce a
kvůli tomu, že Země není ideálně kulatá a jednolitá.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink>(text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>Základ přirozeného logaritmu. <userinput>e^x</userinput> je exponenciální funkce <link
linkend="gel-function-exp"><function>exp</function></link>. Hodnota konstanty je přibližně 2,71828182846…
Toto číslo bývá někdy nazýváno Eulerovo, ačkoliv existuje několik čísel rovněž nazývaných Eulerovo. Například
konstanta gamma: <link linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/E">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Eulerovo_%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>Číslo pí, což je poměr obvodu kružnice vůči jejímu průměru. Přibližně to je
3,14159265359…</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Pi">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/P%C3%AD_%28%C4%8D%C3%ADslo%29">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Práce s čísly</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Alternativní názvy: <function>abs</function></para>
+ <para>Absolutní hodnota čísla <varname>x</varname>, případně modul v případě komplexního čísla
<varname>x</varname>. U komplexního čísla to je vlastně vzdálenost <varname>x</varname> od počátku. Je to to
stejné, jako <userinput>|x|</userinput>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Absolutn%C3%AD_hodnota">Wikipedia</ulink>, <ulink
url="http://planetmath.org/AbsoluteValue">Planetmath (absolutní hodnota; text je v angličtině)</ulink>,
<ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (absolutní hodnota komplexního čísla;
text je v angličtině)</ulink>, <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld
(absolutní hodnota; text je v angličtině)</ulink> a <ulink
url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (absolutní hodnota komplexního čísla; text
je v angličtině)</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Nahrazovat velmi malá čísla nulou.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Alternativní názvy: <function>conj</function> <function>Conj</function></para>
+ <para>Vypočítá komplexně sdružené číslo ke komplexnímu číslu <varname>z</varname>. Pokud je
<varname>z</varname> vektor nebo matice, vypočítají se komplexně sdružená čísla pro všechny prvky.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Komplexn%C4%9B_sdru%C5%BEen%C3%A9_%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Získat jmenovatel racionálního čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Jmenovatel">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Vrátit část čísla za desetinnou čárkou.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Alternativní názvy: <function>ImaginaryPart</function></para>
+ <para>Vrátit imaginární část komplexního čísla. Například <userinput>Re(3+4i)</userinput> vyplodí
4.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Imagin%C3%A1rn%C3%AD_%C4%8D%C3%A1st#Z.C3.A1pis_a_souvisej.C3.ADc.C3.AD_pojmy">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Dělit beze zbytku.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (num)</synopsis>
+ <para>Zkontrolovat, jestli je argument komplexní (ne reálné) číslo. Tím se míní opravdu číslo,
které není reálné. Takže <userinput>IsComplex(3)</userinput> vrátí <constant>false</constant>, zatímco
<userinput>IsComplex(3-1i)</userinput> vrátí <constant>true</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (num)</synopsis>
+ <para>Zkontrolovat, zda je argument komplexní racionální číslo. Tzn., že jak reální, tak imaginární
část jsou zadány jako racionální čísla. Racionálním se samozřejmě myslí, že „není uloženo jako desetinné
číslo s plovoucí čárkou“.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (num)</synopsis>
+ <para>Zkontrolovat, zda je argument reálné desetinné číslo (ne komplexní).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (num)</synopsis>
+ <para>Alternativní názvy: <function>IsComplexInteger</function></para>
+ <para>Zkontrolovat, jestli je argument celé komplexní číslo. Celé komplexní číslo je číslo ve tvaru
<userinput>n+1i*m</userinput>, kde <varname>n</varname> a <varname>m</varname> jsou celá čísla.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (num)</synopsis>
+ <para>Zkontrolovat, zda je argument celé číslo (ne komplexní).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (num)</synopsis>
+ <para>Zkontrolovat, zda je argument nezáporné reálné celé číslo. Tj. buď kladné celé číslo nebo
nula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (num)</synopsis>
+ <para>Alternativní názvy: <function>IsNaturalNumber</function></para>
+ <para>Zkontrolovat, zda je argument kladné reálné celé číslo. Upozorňujeme, že se řídíme konvencí,
že 0 není přirozené číslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (num)</synopsis>
+ <para>Zkontrolovat, zda je argument racionální (ne komplexní) číslo. Racionální samozřejmě prostě
znamená „není uloženo jako desetinné číslo s plovoucí čárkou“.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (num)</synopsis>
+ <para>Zkontrolovat, zda je argument reálné číslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Získat čitatel racionálního čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/%C4%8Citatel">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Alternativní názvy: <function>RealPart</function></para>
+ <para>Vrátit reálnou část komplexního čísla. Například <userinput>Re(3+4i)</userinput> vyplodí
3.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Re%C3%A1ln%C3%A1_%C4%8D%C3%A1st#Z.C3.A1pis_a_souvisej.C3.ADc.C3.AD_pojmy">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Alternativní názvy: <function>sign</function></para>
+ <para>Vrátit znaménko čísla. Konkrétně vrací <literal>-1</literal> u záporných čísel,
<literal>0</literal> pro nulu a <literal>1</literal> u kladných čísel. Pokud je <varname>x</varname>
komplexní hodnota, pak <function>Sign</function> vrací směr nebo 0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Alternativní názvy: <function>Ceiling</function></para>
+ <para>Získat nejnižší celé číslo, které je větší nebo rovno <varname>n</varname>. Například:
<screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen></para>
+ <para>Měli byste být obezřetní a uvědomit si, že desetinná čísla jsou uchovávána v binární podobě,
takže nemusí mít naprosto přesně tu hodnotu, kterou očekáváte. Například <userinput>ceil(420/4.2)</userinput>
vrací 101 a ne 100, jak byste asi očekávali. To je tím, že 4,2 je ve skutečnosti uloženo jako nepatrně méně
než 4,2. Pokud chcete přesné výsledky, použijte racionální vyjádření <userinput>42/10</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>Exponenciální funkce. Jedná se o funkci <userinput>e^x</userinput>, kde <varname>e</varname>
je <link linkend="gel-function-e">základ přirozeného logaritmu</link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Exponenci%C3%A1ln%C3%AD_funkce#Exponenci.C3.A1la_o_z.C3.A1kladu_e">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Udělá z čísla desetinné číslo. Tzn., že vrací hodnotu čísla <varname>x</varname> v podobě
čísla s plovoucí desetinnou čárkou.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Alternativní názvy: <function>Floor</function></para>
+ <para>Vrátit nejvyšší celé číslo, které je menší nebo rovno <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>Přirozený logaritmus, logaritmus o základu <varname>e</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Logaritmus#P.C5.99irozen.C3.BD_logaritmus">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logaritmus <varname>x</varname> o základu <varname>b</varname> (v režimu modulární aritmetiky
nazýván <link linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link>), pokud není základ
uveden, použije se <link linkend="gel-function-e"><varname>e</varname></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Logaritmus čísla <varname>x</varname> o základu 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Alternativní názvy: <function>lg</function></para>
+ <para>Logaritmus čísla <varname>x</varname> o základu 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,argumenty...)</synopsis>
+ <para>Alternativní názvy: <function>Max</function> <function>Maximum</function></para>
+ <para>Vrací maximum z argumentů nebo matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,argumenty...)</synopsis>
+ <para>Alternativní názvy: <function>Min</function> <function>Minimum</function></para>
+ <para>Vrátit minimum z argumentů nebo matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (velikost...)</synopsis>
+ <para>Generovat náhodné desetinné číslo z intervalu <literal>[0,1)</literal>. Pokud je zadána
velikost, pak se vygeneruje matice (zadána dvě čísla) nebo vektor (zadáno jedno číslo) této velikosti.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,velikost...)</synopsis>
+ <para>Generovat náhodné číslo z intervalu <literal>[0,max)</literal>. Pokud je zadána velikost,
pak se vygeneruje matice (zadána dvě čísla) nebo vektor (zadáno jedno číslo) této velikosti. Například
<screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Alternativní názvy: <function>Round</function></para>
+ <para>Zaokrouhlit číslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Alternativní názvy: <function>SquareRoot</function></para>
+ <para>Druhá odmocnina. Při práci v režimu modulární aritmetiky s celými čísly vrací buď
<constant>null</constant> nebo vektor druhých odmocnin. Příklady: <screen><prompt>genius></prompt>
<userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+<prompt>genius></prompt> <userinput>5*5 mod 7</userinput>
+= 4
+</screen></para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Druh%C3%A1_odmocnina">Wikipedia</ulink> a <ulink
url="http://planetmath.org/SquareRoot">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Alternativní názvy: <function>Truncate</function><function>IntegerPart</function></para>
+ <para>Oříznout číslo na celé číslo (vrátí celou část).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Trigonometrie</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Alternativní názvy: <function>arccos</function></para>
+ <para>Funkce arkus kosinus (inverzní kosinus).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Alternativní názvy: <function>arccosh</function></para>
+ <para>Funkce arkus hyperbolický kosinus (inverzní cosh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Alternativní názvy: <function>arccot</function></para>
+ <para>Funkce arkus kotangens (inverzní kotangens).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Alternativní názvy: <function>arccoth</function></para>
+ <para>Funkce arkus hyperbolický kotangens (inverzní coth).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Alternativní názvy: <function>arccsc</function></para>
+ <para>Funkce inverzní kosekans.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Alternativní názvy: <function>arccsch</function></para>
+ <para>Funkce inverzní hyperbolický kosekans.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Alternativní názvy: <function>arcsec</function></para>
+ <para>Funkce inverzní sekans.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Alternativní názvy: <function>arcsech</function></para>
+ <para>Funkce inverzní hyperbolický sekans.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Alternativní názvy: <function>arcsin</function></para>
+ <para>Funkce arkus sinus (inverzní sinus).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Alternativní názvy: <function>arcsinh</function></para>
+ <para>Funkce arkus hyperbolický sinus (inverzní sinh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Alternativní názvy: <function>arctan</function></para>
+ <para>Vypočítat funkce arkus tangens (inverzní tangens).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Arkus_tangens">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Alternativní názvy: <function>arctanh</function></para>
+ <para>Funkce arkus hyperbolický tangens (inverzní tanh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Alternativní názvy: <function>arctan2</function></para>
+ <para>Vypočítat funkci arctan2. Jestliže je <userinput>x>0</userinput>, pak vrací
<userinput>atan(y/x)</userinput>. Jestliže je <userinput>x<0</userinput>, vrací <userinput>sign(y) * (pi -
atan(|y/x|)</userinput>. A při <userinput>x=0</userinput> vrací <userinput>sign(y) *
+ pi/2</userinput>. Volání <userinput>atan2(0,0)</userinput> vrací 0 namísto selhání.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Arctg2">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Vypočítat funkci kosinus.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Vypočítat funkci hyperbolický kosinus.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>Funkce kotangens.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>Funkce hyperbolický kotangens.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>Funkce kosekans.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>Funkce hyperbolický kosekans.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>Funkce sekans.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>Funkce hyperbolický sekans.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Vypočítat funkci sinus.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Vypočítat funkci hyperbolický sinus.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Vypočítat funkci tangens.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>Funkce hyperbolický tangens.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce">Wikipedia</ulink> a <ulink
url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Teorie čísel</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>Jsou reálná celá čísla <varname>a</varname> a <varname>b</varname> nesoudělná? Vrací
<constant>true</constant> nebo <constant>false</constant>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Nesoud%C4%9Bln%C3%A1_%C4%8D%C3%ADsla">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Vrátit <varname>n</varname>-té Bernoulliho číslo.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Alternativní názvy: <function>CRT</function></para>
+ <para>Najít pomocí čínské věty o zbytcích <varname>x</varname>, které řeší systém zadaný vektorem
<varname>a</varname>, a zbytky prvků <varname>m</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> (text je v angličtině) a
<ulink
url="https://cs.wikipedia.org/wiki/%C4%8C%C3%ADnsk%C3%A1_v%C4%9Bta_o_zbytc%C3%ADch">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Jsou-li dány dva rozklady, vrátit rozklad (faktorizaci) součinu.</para>
+ <para>Viz <link linkend="gel-function-Factorize">Factorize</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Převést vektor hodnot udávajících mocniny <varname>b</varname> na číslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Převést číslo na vektor mocnin prvků o základu <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Najít diskrétní logaritmus <varname>n</varname> o základu <varname>b</varname> v
F<subscript>q</subscript>, konečné grupě řádu <varname>q</varname>, kde <varname>q</varname> je prvočíslo,
pomocí Silverova-Pohligova-Hellmanova algoritmu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Diskr%C3%A9tn%C3%AD_logaritmus">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Zkontrolovat dělitelnost (zda <varname>m</varname> dělí <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>Spočítat Eulerovu funkci fí pro <varname>n</varname>, to je počet celých čísel mezi 1 a
<varname>n</varname>, relativně prvočíselných vůči <varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/EulerPhifunction">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Eulerova_funkce">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>Vrátit <userinput>n/d</userinput>, ale jen pokud <varname>d</varname> dělí
<varname>n</varname>. Pokud <varname>d</varname> nedělí <varname>n</varname>, vrací funkce nesmysly. Pro
velmi velká čísla je to rychlejší než operace <userinput>n/d</userinput>, ale je to samozřejmě použitelné jen
v případě, kdy přesně víte, co dělíte.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>Vrátit rozklad (faktorizaci) čísla jako matici. První řádek jsou prvočísla v rozkladu
(včetně 1) a druhý řádek jsou mocnitelé. Takže například <screen><prompt>genius></prompt>
<userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Faktorizace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>Vrátit všechny činitele čísla <varname>n</varname> jako vektor. Součástí jsou i
neprvočíselní činitelé, což zahrnuje také 1 a přímo ono číslo. Takže například pro výpis všech dokonalých
čísel (to jsou taková, která jsou součtem všech svých činitelů) až do 1000 můžete udělat toto (je to však
značně neefektivní) <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,pokusy)</synopsis>
+ <para>Zkusit Fermatův rozklad <varname>n</varname> na <userinput>(t-s)*(t+s)</userinput>. Pokud to
je možné, vrací <varname>t</varname> a <varname>s</varname> jako vektor, jinak vrací
<constant>null</constant>. Argument <varname>pokusy</varname> určuje počet pokusu, než se výpočet vzdá.</para>
+ <para>Jedná se o docela dobrý rozklad za předpokladu, že je vaše číslo součinem dvou přibližně
stejně velkých čísel.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Najít první primitivní prvek v F<subscript>q</subscript>, konečné grupě řádu
<varname>q</varname>. Je samozřejmé, že <varname>q</varname> musí být prvočíslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Najít náhodný primitivní prvek v F<subscript>q</subscript>, konečné grupě řádu
<varname>q</varname>. Je samozřejmé, že <varname>q</varname> musí být prvočíslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Spočítat diskrétní logaritmus <varname>n</varname> o základu <varname>b</varname> v
F<subscript>q</subscript>, konečné grupě řádu <varname>q</varname> (<varname>q</varname> prvočíslo) pomocí
faktorizační báze <varname>S</varname>. <varname>S</varname> by měl být sloupec prvočísel, pokud možno s
druhým sloupcem předpočítaným pomocí <link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Provést přípravný krok výpočtu funkce <link
linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> pro logaritmy o základu
<varname>b</varname> v F<subscript>q</subscript>, konečné grupě řádu <varname>q</varname>
(<varname>q</varname> prvočíslo), pro faktorizační bázi <varname>S</varname> (kde <varname>S</varname> je
sloupcový vektor prvočísel). Logaritmy budou předpočítány a vráceny v druhém sloupci.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Otestovat, zda je celé číslo sudé.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>Zjistit, jestli je kladné celé číslo <varname>p</varname> Mersennovo prvočíslo. Tj. zda
2<superscript>p</superscript>-1 je prvočíslo. Provádí se to hledáním v tabulce známých hodnot, která je
relativně krátká. Viz také <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
a <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/MersenneNumbers">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> (text je v angličtině), <ulink
url="http://www.mersenne.org/">GIMPS</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Mersennovo_prvo%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>Zjistit, jestli je racionální číslo <varname>m</varname> perfektní <varname>n</varname>-tou
mocninou . Viz také <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link> a <link
linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Otestovat, zda je celé číslo liché.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Zkontrolovat, zda je celé číslo perfekntí mocninou a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>Zkontrolovat, zda je celé číslo perfektní druhou mocninou celého čísla. Číslo musí být celé
číslo. Záporná celá čísla samozřejmě perfektními druhými mocninami celých čísel být nemohou.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>Testuje prvočíselnost celých čísel, pro čísla menší než 2.5e10 je odpověď deterministická
(tedy pokud je Riemannova hypotéza platná). Pro větší čísla závisí falešné kladné odpovědi na <link
linkend="gel-function-IsPrimeMillerRabinReps"><function>IsPrimeMillerRabinReps</function></link>. Což
znamená, že pravděpodobnost nesprávné kladné odpovědi je ¼ umocněná na
<function>IsPrimeMillerRabinReps</function>. Výchozí hodnota 22 dává pravděpodobnost zhruba 5.7e-14.</para>
+ <para>Když je vráceno <constant>false</constant>, můžete si být jisti, že se jedná o složené
číslo. Jestliže si potřebujete být absolutně jistí, že máte prvočíslo, můžete použít funkci <link
linkend="gel-function-MillerRabinTestSure"><function>MillerRabinTestSure</function></link>, ale může to trvat
trochu déle.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/PrimeNumber">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Zkontrolovat, zda je <varname>g</varname> primitivní v F<subscript>q</subscript>, konečné
grupě řádu <varname>q</varname>, kde <varname>q</varname> je prvočíslo. Pokud <varname>q</varname> není
prvočíslo, jsou výsledky nesmyslné.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Zkontrolovat, zda je <varname>g</varname> primitivní v F<subscript>q</subscript>, konečné
grupě řádu <varname>q</varname>, kde <varname>q</varname> je prvočíslo a <varname>f</varname> je vektor
prvočíselných činitelů <varname>q</varname>-1. Pokud <varname>q</varname> není prvočíslo, jsou výsledky
nesmyslné.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>Zda je <varname>n</varname> pseudoprvočíslo o základu <varname>b</varname>, ale ne
prvočíslo, tj. jestli <userinput>b^(n-1) == 1 mod n</userinput>. Volá se funkce <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Zjistit, zda je <varname>n</varname> silné pseudoprvočíslo o základu <varname>b</varname>,
ale ne prvočíslo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Alternativní názvy: <function>JacobiSymbol</function></para>
+ <para>Spočítat Jacobiho symbol (a/b) (b by mělo být liché).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Alternativní názvy: <function>JacobiKroneckerSymbol</function></para>
+ <para>Spočítat Jacobiho symbol (a/b) s Kroneckerovým rozšířením (a/2)=(2/a), když
<varname>a</varname> je liché, nebo (a/2)=0, když <varname>a</varname> je sudé.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Vrátit zbytek <varname>a</varname> mod <varname>n</varname> s nejmenší absolutní hodnotou (v
intervalu -n/2 až n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Alternativní názvy: <function>LegendreSymbol</function></para>
+ <para>Spočítat Legendrův symbol (a/p).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Legendre%C5%AFv_symbol">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Zjistit pomocí Lucasova-Lehmerova testu, zda je 2<superscript>p</superscript>-1 Mersennovo
prvočíslo. Viz také <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> a <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink> (text je v
angličtině), <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink> (text je v angličtině) a
<ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> (text je v
agličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Vrátit <varname>n</varname>-té Lucasovo číslo.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink> (text je v angličtině), <ulink
url="http://planetmath.org/LucasNumbers">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Vrátit všechny maximální mocniny prvočísel v rozkladu čísla.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>Vektor se známými exponenty Mersennových prvočísel, což je seznam kladných celých čísel
<varname>p</varname> takových, že 2<superscript>p</superscript>-1 je prvočíslo. Viz také <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link> a <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/MersenneNumbers">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> (text je v angličtině), <ulink
url="http://www.mersenne.org/">GIMPS</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Mersennovo_prvo%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,opak)</synopsis>
+ <para>Použít Millerův-Rabinův test prvočíselnosti na <varname>n</varname>, <varname>opak</varname>
udává kolikrát. Pravděpodobnost falešné kladné odpovědi je <userinput>(1/4)^opak</userinput>. Pravděpodobně
je obvykle lepší použít funkci <link linkend="gel-function-IsPrime"><function>IsPrime</function></link>,
protože je rychlejší a lepší u menších celých čísel.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> (text je v
angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Miller%C5%AFv-Rabin%C5%AFv_test_prvo%C4%8D%C3%ADselnosti">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>Použít Millerův-Rabinův test prvočíselnosti na <varname>n</varname> s tolika bázemi, že za
předpokladu zobecněné Riemannovy hypotézy je výsledek deterministický.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> (text je v
angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Miller%C5%AFv-Rabin%C5%AFv_test_prvo%C4%8D%C3%ADselnosti">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Vrátit převrácenou hodnotu n mod m.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>Vrátit Möbiovu funkci μ vyhodnocenu na <varname>n</varname>. Což znamená, že vrátí 0 v
případě, že <varname>n</varname> není součin různých prvočísel, a <userinput>(-1)^k</userinput> v případě, že
je součin <varname>k</varname> různých prvočísel.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/M%C3%B6biova_funkce">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>Vrátit nejmenší prvočíslo větší než <varname>n</varname>. Záporná prvočísla jsou považována
za prvočísla, takže předchozí prvočíslo můžete získat jako <userinput>-NextPrime(-n)</userinput>.</para>
+ <para>Tato funkce používá funkci <function>mpz_nextprime</function> z knihovny GMP, která zase
používá pravděpodobnostní Millerův-Rabinův test (viz také <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>). Pravděpodobnost falešné
kladné odpovědi není nastavitelná, ale je dostatečně malá pro praktické účely.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/PrimeNumber">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Vrátit p-adické ohodnocení (počet koncových nul v základu <varname>p</varname>).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://planetmath.org/PAdicValuation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>Spočítat <userinput>a^b mod m</userinput>. <varname>b</varname>-tá mocnina čísla
<varname>a</varname> modulo <varname>m</varname>. Tuto funkci není nutné používat, protože se automaticky
použije v režimu modulární aritmetiky. Z tohoto důvodu je <userinput>a^b mod m</userinput> stejně
rychlé.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Alternativní názvy: <function>prime</function></para>
+ <para>Vrátit <varname>n</varname>-té prvočíslo (až do limitu).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/PrimeNumber">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Vrátit v podobě vektoru všechny prvočinitele čísla.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Test pseudoprvočíselnosti, vrací <constant>true</constant> když a jen když <userinput>b^(n-1)
== 1 mod n</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Pseudoprime">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Pseudoprvo%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Odstranit všechny instance činitele <varname>m</varname> z čísla <varname>n</varname>.
Prakticky to znamená, že je poděleno nejvyšší mocninou čísla <varname>m</varname>, která je dělitelem
<varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Divisibility">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/D%C4%9Blitelnost">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Najít diskrétní logaritmus <varname>n</varname> o základu <varname>b</varname> v
F<subscript>q</subscript>, konečné grupě řádu <varname>q</varname>, kde <varname>q</varname> je prvočíslo,
pomocí Silverova-Pohligova-Hellmanova algoritmu, dané <varname>f</varname> je rozkladem
<varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Najít druhou odmocninu z <varname>n</varname> modulo <varname>p</varname> (kde
<varname>p</varname> je prvočíslo). Pokud není kvadratickým zbytkem, je vráceno null.</para>
+ <para>Více informací najdete v encyklopedicíh <ulink
url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Spustit silný test pseudoprvočíselnosti o základu <varname>b</varname> na
<varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,argumenty...)</synopsis>
+ <para>Alternativní názvy: <function>GCD</function></para>
+ <para>Největší společný dělitel celých čísel. V seznamu argumentů můžete uvést libovolný počet
celých čísel, nebo je můžete zadat jako vektor nebo matici celých čísel. Pokud zadáte více než jednu matici
stejné velikosti, bude největší společný dělitel určen prvek po prvku.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> (text je v angličtině) a
<ulink
url="https://cs.wikipedia.org/wiki/Nejv%C4%9Bt%C5%A1%C3%AD_spole%C4%8Dn%C3%BD_d%C4%9Blitel">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,argumenty...)</synopsis>
+ <para>Alternativní názvy: <function>LCM</function></para>
+ <para>Nejmenší společný násobek celých čísel. V seznamu argumentů můžete uvést libovolný počet
celých čísel, nebo je můžete zadat jako vektor nebo matici celých čísel. Pokud zadáte více než jednu matici
stejné velikosti, bude nejmenší společný násobek určen prvek po prvku.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Nejmen%C5%A1%C3%AD_spole%C4%8Dn%C3%BD_n%C3%A1sobek">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Práce s maticemi</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,fce)</synopsis>
+ <para>Použít funkci na všechny prvky matice a vrátit matici výsledků.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,fce)</synopsis>
+ <para>Použít funkci na všechny prvky 2 matic (nebo 1 hodnoty a 1 matice) a vrátit matici
výsledků.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Vrátit sloupce matice jako vodorovný vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Odstranit sloupec (či slupce) a řádek (či řádky) z matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Spočítat <varname>k</varname>-tou složenou matici matice A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>Spočítat počet nulových sloupců v matici. Například, jakmile zredukujete sloupce matice,
můžete to využít k nalezení nulovosti. Viz <link linkend="gel-function-cref"><function>cref</function></link>
a <link linkend="gel-function-Nullity"><function>Nullity</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,sloupec)</synopsis>
+ <para>Smazat sloupec matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,radek)</synopsis>
+ <para>Smazat řádek matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Získat diagonální prvky matice jako sloupcový vektor.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Diagon%C3%A1ln%C3%AD_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Získat skalární součin dvou vektorů. Vektory musí mít stejnou velikost. Nepřijímají se
konjugované vektory, protože jde o bilineární formu, i když pracuje i s komplexními čísly. Jedná se o
bilineární skalární součin, ne půldruhý lineární (seskvilineární). Pro ten slouží funkce <link
linkend="gel-function-HermitianProduct">HermitianProduct</link></para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/DotProduct">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Skal%C3%A1rn%C3%AD_sou%C4%8Din">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>Rozšířit matici, stejně když zadáte matici bez uvozovky. Takto se rozbalí do bloku libovolná
interní matice. Je to způsob, jak sestrojit matice z jiných menších a normálně je to prováděno na vstupu
automaticky, s výjimkou kdy je matice zadána s uvozovkou.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Alternativní názvy: <function>InnerProduct</function></para>
+ <para>Získat hermitovský součin dvou vektorů. Vektory musí mít stejnou velikost. Jedná se o
polybilineární formu používající jednotkovou matici.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> (text je v angličtině) a
<ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Alternativní názvy: <function>eye</function></para>
+ <para>Vrátit jednotkovou matici zadané velikosti, tj. <varname>n</varname> krát
<varname>n</varname>. Pokud je <varname>n</varname> rovno 0, vrátí <constant>null</constant>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Jednotkov%C3%A1_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vektor,mvelikost)</synopsis>
+ <para>Vrátit doplňkový index vektoru indexů. Vše je s jednou bází. Například pro vektor
<userinput>[2,3]</userinput> a velikost <userinput>5</userinput> dostaneme <userinput>[1,4,5]</userinput>.
Pokud je <varname>mvelikost</varname> rovna 0, vrací vždy <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Je matice diagonální?</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Diagon%C3%A1ln%C3%AD_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Zkontrolovat, zda je matice jednotková. Pokud matice není čtvercová, tak automaticky vrátí
<varname>false</varname>. Funguje i pro čísla, v kterémžto případě je to stejné jako
<userinput>x==1</userinput>. Pokud je argument <varname>x</varname> roven <constant>null</constant> (což
můžeme považovat za matici 0 krát 0), nezpůsobí to chybu a vrátí <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Jde o dolní trojúhelníkovou matici? To je taková, která má všechny prvky nad diagonálou
nulové.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Zkontrolovat, zda je matice maticí celých (nekomplexních) čísel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Zkontrolovat, zda je matice nezáporná, tj. zda je každý z prvků nezáporný. Nepleťte si
pozitivní matice s pozitivně definitními maticemi.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Zkontrolovat, zda je matice pozitivní, tj. zda je každý z prvků kladný (a tudíž reálný).
Především není žádný prvek 0. Nepleťte si positivní matice s pozitivně definitními maticemi.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Zkontrolovat, zda je matice maticí z racionálních (nekomplexních) čísel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Zkontrolovat, zda je matice složená z reálných (na komplexních) čísel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>Zkontrolovat, zda je matice čtvercová, tj. šířka je stejná jako výška.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Jde o horní trojúhelníkovou matici? To je taková, která má všechny prvky pod diagonálou
nulové.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Zkontrolovat, zda se matice skládá pouze z čísel. Mnoho interních funkcí provádí tuto
kontrolu. Hodnoty mohou být libovolná čísla včetně komplexních.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>Je argument vodorovný nebo svislý vektor? Genius nerozlišuje mezi maticí a vektorem, vektor
je prostě jen matice 1 krát <varname>n</varname> nebo <varname>n</varname> krát 1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Zkontrolovat, zda se matice skládá jen z nul. Funguje to i pro čísla, kdy je to ekvivalentní
výrazu <userinput>x==0</userinput>. Když je <varname>x</varname> rovno <constant>null</constant> (můžeme to
považovat za matici 0 krát 0), nezpůsobí to žádnou chybu, ale vrátí se <constant>true</constant>, protože
podmínka je prázdná.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Vrátit kopii matice <varname>M</varname> se všemi prvky nad diagonálou nastavenými na
nulu.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,argument...)</synopsis>
+ <para>Alternativní názvy: <function>diag</function></para>
+ <para>Vytvořit diagonální matici z vektoru. Případně můžete hodnoty, které se mají umístit na
diagonálu, zadat jako jednotlivé parametry. Takže <userinput>MakeDiagonal([1,2,3])</userinput> je to stejné
jako <userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Diagon%C3%A1ln%C3%AD_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Vytvořit sloupcový vektor z matice poskládáním sloupců na sebe. Pokud je předáno
<constant>null</constant>, vrátí <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>Spočítat součin všech prvků matice nebo vektoru. To znamená, že se vynásobí všechny prvky a
vrátí se číslo, které je násobkem všech těchto prvků.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>Spočítat součet všech prvků matice nebo vektoru. To znamená, že se sečtou všechny prvky a
vrátí se číslo, které je součtem všech těchto prvků.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Spočítat součet druhých mocnin všech prvků matice nebo vektoru.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Vrátit řádkový vektor s indexy nenulových sloupců v matici <varname>M</varname>.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Vrátit řádkový vektor s indexy nenulových prvků ve vektoru <varname>v</varname>.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Získat vnější součin dvou vektorů. Takže, když dejme tomu jsou <varname>u</varname> a
<varname>v</varname> svislé vektory, pak vnější součin je <userinput>v * u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Převrátit pořadí prvků ve vektoru. Pokud je předáno <constant>null</constant>, tak vrací
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Vypočítat součet každého řádku v matici a vrátit svislý vektor s výsledkem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Vypočítat součet druhých mocnin každého řádku v matici a vrátit svislý vektor s
výsledkem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Získat řádky matice jako svislý vektor. Každý z prvků vektoru je vodorovný vektor, který
odpovídá řádku matice <varname>M</varname>. Tato funkce je užitečná, když chcete ve smyčce procházet řádky
matice. Například takto: <userinput>for r in RowsOf(M) do
+neco(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,radku,sloupcu)</synopsis>
+ <para>Vytvořit novou matici zadané velikosti z jiné staré. To znamená, že nová matice bude vrácena
jako kopie té staré. Prvky, které přebývají, jsou odříznuty a volné místo je vyplněno nulami. Pokud je
argument <varname>radku</varname> nebo <varname>sloupcu</varname> roven nule, je vráceno
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Zamíchat pořadí prvků ve vektoru. Pokud je předáno <constant>null</constant>, tak vrací
<constant>null</constant>.</para>
+ <para>Verze 1.0.13 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Seřadit prvky vektoru ve vzestupném pořadí.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Odstranit všechny čistě nulové sloupce matice <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Odstranit všechny čistě nulové řádky matice <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,s)</synopsis>
+ <para>Vrátit sloupec (či sloupce) a řádek (či řádky) z matice. Je to stejné jako
<userinput>m@(r,s)</userinput>. Argumenty <varname>r</varname> a <varname>s</varname> by měly být vektory se
seznamy řádků a sloupců (nebo samostatná čísla, pokud požadujete jen jeden řádek nebo sloupec).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,radek1,radek2)</synopsis>
+ <para>Prohodit dva řádky v matici.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Vrátit kopii matice <varname>M</varname> se všemi prvky pod diagonálou nastavenými na
nulu.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Vrátit počet sloupců matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Vrátit celkový počet prvků matice. Tj. počet sloupců krát počet řádků.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (radku,sloupcu...)</synopsis>
+ <para>Vytvořit matici ze samých jedniček (nebo řádkový vektor, pokud je zadán jen jeden argument).
Když je <varname>radku</varname> nebo <varname>sloupcu</varname> rovno nule, vrátí
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Vrátit počet řádků matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (radku,sloupcu...)</synopsis>
+ <para>Vytvořit matici celou z nul (nebo řádkový vektor, pokud je zadán jen jeden argument). Pokud
je argument <varname>radku</varname> nebo <varname>sloupcu</varname> roven nule, je vráceno
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Lineární algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Získat pomocnou jednotkovou matici velikosti <varname>n</varname>. Jde o čtvercovou matici
ze samých nul vyjma diagonály, na které jsou jedničky. Je to Jordanův blok s jedním vlastním číslem
nula.</para>
+ <para>Více informací o Jordanově kanonické formě najdete v encyklopediích <ulink
url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="http://cs.wikipedia.org/wiki/Jordanova_norm%C3%A1ln%C3%AD_forma">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Spočítat (v,w) vzhledem k bilineární formě dané maticí A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Vrátit funkci takovou, že vyhodnocuje dva vektory vzhledem k bilineární formě dané maticí
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Alternativní názvy: <function>CharPoly</function></para>
+ <para>Získat charakteristický polynom v podobě vektoru. Konkrétně vrací koeficienty polynomu
počínaje konstantním členem. Jedná se o polynom definovaný pomocí <userinput>det(M-xI)</userinput>. Kořeny
tohoto polynomu jsou vlastní čísla matice <varname>M</varname>. Viz <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> (text je v anličtině) a
<ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Získat charakteristický polynom v podobě funkce. Jedná se o polynom definovaný pomocí
<userinput>det(M-xI)</userinput>. Kořeny tohoto polynomu jsou vlastní čísla matice <varname>M</varname>. Viz
<link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> (text je v anličtině) a
<ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Získat bázi matice pro prostor sloupců matice. Prakticky se vrátí matice, jejíž sloupce jsou
bázemi pro prostor sloupců matice <varname>M</varname>. To je prostor rozložený podle sloupců matice
<varname>M</varname>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Vrátit komutační matici <userinput>K(m,n)</userinput>, což je jedinečná matice velikosti
<userinput>m*n</userinput> krát <userinput>m*n</userinput>, která splňuje <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> pro všechny matice <varname>A</varname> velikosti <varname>m</varname> krát
<varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Doplňková matice polynomu (jako vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Konjugovaná transpozice matice (adjungovaná). Je to stejné jako operátor
<userinput>'</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Alternativní názvy: <function>convol</function></para>
+ <para>Spočítat konvoluci dvou vodorovných vektorů.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Spočítat konvoluci dvou vodorovných vektorů. Výsledek vrátí jako vektor a ne sečtené
dohromady.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>Vektorový součin dvou vektorů v R<superscript>3</superscript> jako sloupcový vektor.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Vektorov%C3%BD_sou%C4%8Din">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Získat determinantové dělitele celočíselné matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Přímý součet matic.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/S%C4%8D%C3%ADt%C3%A1n%C3%AD_matic#Direktn.C3.AD_sou.C4.8Det">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Přímý součet vektoru matic.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/S%C4%8D%C3%ADt%C3%A1n%C3%AD_matic#Direktn.C3.AD_sou.C4.8Det">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Alternativní názvy: <function>eig</function></para>
+ <para>Získat vlastní čísla čtvercové matice. V současnosti pracuje pouze pro matice do velikosti 4
krát 4 nebo pro trojúhelníkové matice (pro které jsou vlastní čísla na diagonále).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Eigenvalue">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Vlastn%C3%AD_%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M,&vlastni_cisla)</synopsis>
+ <synopsis>Eigenvectors (M, &vlastni_cisla, &nasobnosti)</synopsis>
+ <para>Získat vlastní vektory čtvercové matice. Volitelně získat také vlastní čísla a jejich
algebraické násobnosti. V současnosti pracuje pouze s maticemi do velikosti 2 krát 2.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Eigenvector">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Vlastn%C3%AD_%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Použít Gramův-Schmidtův proces (na sloupce) vzhledem k unitárnímu prostoru danému
<varname>B</varname>. Pokud <varname>B</varname> není zadáno, je použit standardní hermitovský součin.
<varname>B</varname> může být buď polybilineární funkce dvou argumentů nebo to může být matice v
polybilineární formě. Vektory budou vytvořeny ortogonální vzhledem k <varname>B</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Gramova-Schmidtova_ortogonalizace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>Henkelova matice, což je matice se stejnými vedlejšími diagonálami. <varname>c</varname> je
první řádek a <varname>r</varname> je poslední sloupec. Předpokládá se, že oba argumenty budou vektory a
poslední prvek <varname>c</varname> bude stejný jako první prvek <varname>r</varname>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Hilbertova matice řádu <varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Získat obraz (sloupcový prostor) lineární transformace.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Získat k vektoru normu typu nekonečno, někdy také nazývanou maximální norma.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Získat invariantní činitele čtvercové celočíselné matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Inverzní Hilbertova matice řádu <varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Je matice hermitovská? Tj. zda je rovna své konjugované transpozici.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Zjistit, zda je vektor v podprostoru.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Je matice (nebo číslo) invertovatelná (matice celých čísel je invertovatelná, když je
invertovatelná nad celými čísly)?</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Je matice (nebo číslo) invertovatelná nad tělesem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Je <varname>M</varname> normální matice. To jest, zda <userinput>M*M' ==
M'*M</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/NormalMatrix">Planetmath</ulink> (text je v angličtině) nebo <ulink
url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Je matice <varname>M</varname> hermitovská pozitivně definitní matice? To znamená, zda je
<userinput>HermitianProduct(M*v,v)</userinput> vždy striktně pozitivní pro libovolný vektor
<varname>v</varname>. <varname>M</varname> musí být čtvercová a hermitovská, aby byla pozitivně definitní.
Kontrola, zda tomu tak je, spočívá v tom, zda každá hlavní podmatice má nezáporný determinant. (Viz <link
linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Poznamenejme, že někteří autoři (např. Mathworld) nevyžadují, aby matice <varname>M</varname>
byla hermitovská a tak podmínka není skutečnu částí unitárního prostoru, ale neberte to za dogma. Pokud
chcete takovou kontrolu provést, jednoduše zkontrolujte hermitovskou část matice <varname>M</varname> takto:
<userinput>IsPositiveDefinite(M+M')</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/PositiveDefinite">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> (text je v angličtině) a
<ulink url="https://cs.wikipedia.org/wiki/Pozitivn%C4%9B_definitn%C3%AD_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Je matice <varname>M</varname> hermitovská pozitivně semidefinitní matice? To znamená, zda
je <userinput>HermitianProduct(M*v,v)</userinput> vždy nezáporná pro libovolný vektor <varname>v</varname>.
<varname>M</varname> musí být čtvercová a hermitovská, aby byla pozitivně semidefinitní. Kontrola, zda tomu
tak je, spočívá v tom, zda každá hlavní podmatice má nezáporný determinant. (Viz <link
linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Poznamenejme, že někteří autoři (např. Mathworld) nevyžadují, aby matice <varname>M</varname>
byla hermitovská a tak podmínka není skutečnu částí unitárního prostoru, ale neberte to za dogma. Pokud
chcete takovou kontrolu provést, jednoduše zkontrolujte hermitovskou část matice <varname>M</varname> takto:
<userinput>IsPositiveSemidefinite(M+M')</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> (text je v angličtině) nebo <ulink
url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> (text je v
angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Je matice antihermitovská? To znamená, zda je konjugovaná transpozice rovna negativní
matici.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Je matice unitární? To je, zda <userinput>M'*M</userinput> a <userinput>M*M'</userinput>
dají stejnou jednotkovou matici.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="http://cs.wikipedia.org/wiki/Unit%C3%A1rn%C3%AD_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Alternativní názvy: <function>J</function></para>
+ <para>Získat Jordanův blok odpovídající vlastnímu číslu <varname>lambda</varname> s násobností
<varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Jordanova_norm%C3%A1ln%C3%AD_forma">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Získat jádro (nulový prostor) lineární transformace.</para>
+ <para>(Viz <link linkend="gel-function-NullSpace">NullSpace</link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Alternativní názvy: <function>TensorProduct</function></para>
+ <para>Spočítat Kroneckerův součin (tenzorový součin ve standardní bázi) dvou matic.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink> (text je v angličtině), <ulink
url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> (text je v angličtině).</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>Získat LU rozklad matice <varname>A</varname> tak, že se najde dolní a horní trojúhelníková
matice, jejichž součinem je <varname>A</varname>. Výsledek se uloží v <varname>L</varname> a
<varname>U</varname>, což by měly být odkazy na proměnné. V případě úspěchu vrací <constant>true</constant>.
Například předpokládejme, že A je čtvercová matice, pak po spuštění: <screen><prompt>genius></prompt>
<userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen> budete mít dolní matici uloženou v proměnné s názvem <varname>L</varname> a horní matici v
proměnné s názvem <varname>U</varname>.</para>
+ <para>Jedná se o LU rozklad matice známý také jako Croutův a/nebo Choleského rozklad. (ISBN
0-201-11577-8 pp.99-103) Horní trojúhelníková matice zahrnuje diagonálu hodnot 1. Nejedná se o Doolittlovu
metodu, která zahrnuje diagonálu jedniček do dolní matice.</para>
+ <para>Ne všechny matice mají LU rozklad, například <userinput>[0,1;1,0]</userinput> jej nemá a tato
funkce v takovém případě vrátí <constant>false</constant> a nastaví <varname>L</varname> a
<varname>U</varname> na <constant>null</constant>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/LUDecomposition">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/LU_rozklad">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Získat subdeterminant (též minor) <varname>i</varname>-<varname>j</varname> matice.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/Minor">Planetmath</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Vrátit sloupce matice, které nemají pivot.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Alternativní názvy: <function>norm</function></para>
+ <para>Získat normu typu p (nebo typu 2, pokud není zadáno p) vektoru.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Získat nulový prostor matice. Tj. jádro lineární transformace, která matici představuje.
Výsledek se vrací v podobě matice, jejíž sloupcový prostor je nulovým prostorem z <varname>T</varname>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/Nullspace">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Alternativní názvy: <function>nullity</function></para>
+ <para>Získat nulovost matice. Tzn. vrátit rozměry nulového prostoru; rozměry jádra matice
<varname>M</varname>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/Nullity">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Získat ortogonální doplněk sloupcového prostoru.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Vrátit sloupce matice s pivoty, tzn. sloupce, které mají 1 v řádkově redukované podobě.
Rovněž vrací řádek, ve kterém se vyskytly.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Projekce vektoru <varname>v</varname> do podprostoru <varname>W</varname> vzhledem k
unitárnímu prostoru danému <varname>B</varname>. Pokud <varname>B</varname> není zadáno, je použit standardní
hermitovský součin. <varname>B</varname> může být buď polybilineární funkce dvou argumentů nebo to může být
matice v polybilineární formě.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>Získat QR rozklad čtvercové matice <varname>A</varname>, vrací horní trojúhelníkovou matici
<varname>R</varname> a nastavuje <varname>Q</varname> na ortogonální (unitární) matici. <varname>Q</varname>
by měl být odkaz na proměnnou nebo <constant>null</constant>, pokud nic vrátit nechcete. Například pro
<screen><prompt>genius></prompt> <userinput>R = QRDecomposition(A,&Q)</userinput>
+</screen> budete mít horní trojúhelníkovou matici uloženou v proměnné s názvem <varname>R</varname> a
ortogonální (unitární) matici v <varname>Q</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/QRDecomposition">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/QR_rozklad">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Vrátit Rayleighův podíl (nazývaný také Rayleighův-Ritzův koeficient nebo podíl) matice a
vektoru.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Najít vlastní čísla matice <varname>A</varname> pomocí iterační metody Rayleighova podílu.
<varname>x</varname> je odhadovaný vlastní vektor a mohl by být náhodný. Měl by mít nenulovou imaginární
část, pokud existuje nějaká možnost, že budou nalezena komplexní vlastní čísla. Kód bude nanejvýše v
<varname>maxiter</varname> iteracích a vracet <constant>null</constant>, pokud není možné získat výsledek v
rámci chyby <varname>epsilon</varname>. <varname>vecref</varname> by měl být buď <constant>null</constant>
nebo odkaz na proměnnou, do které by se měl uložit vlastní vektor.</para>
+ <para>Více informací o Rayleighově podíle najdete v encyklopedii <ulink
url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Alternativní názvy: <function>rank</function></para>
+ <para>Získat hodnost matice.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Vrátit Rosserovu matici, která je klasickým symetrickým problémem testu vlastního
čísla.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (úhel)</synopsis>
+ <para>Alternativní názvy: <function>RotationMatrix</function></para>
+ <para>Vrátit matici odpovídající otočení okolo počátku v R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (úhel)</synopsis>
+ <para>Vrátit matici odpovídající otočení okolo počátku v R<superscript>3</superscript> kolem osy
x.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (úhel)</synopsis>
+ <para>Vrátit matici odpovídající otočení okolo počátku v R<superscript>3</superscript> kolem osy
y.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (úhel)</synopsis>
+ <para>Vrátit matici odpovídající otočení okolo počátku v R<superscript>3</superscript> kolem osy
z.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Získat bázi matice pro prostor řádků matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Vyhodnotit (v,w) vzhledem k polybilineární formě dané maticí <varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Vrátit funkci vyhodnocující dva vektory vzhledem k polybilineární formě dané maticí
<varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Vrátit Smithův kanonický tvar (normální forma) matice nad poli (bude končit s jedničkami na
diagonále).</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> (článek je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Vrátit Smithův kanonický tvar (normální formu) pro čtvercové celočíselné matice nad celými
čísly.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> (článek je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,argumenty...)</synopsis>
+ <para>Vyřešit lineární systém Mx=V, vrátit řešení V, pokud existuje jedinečné řešení, jinak vrátit
<constant>null</constant>. Je možné použít dva dodatečné parametry předávané odkazem, ve kterých získáte
redukované M a V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (s, r...)</synopsis>
+ <para>Vrátit Teplitzovu matici sestavenou podle zadaného prvního sloupce <varname>c</varname> a
(volitelně) prvního řádku <varname>r</varname>. Pokud je zadán pouze sloupec <varname>c</varname>, je pro
první řádek použita konjugovaná a nekonjugovaná verze, aby se získala hermitovská matice (samozřejmě za
předpokladu, že je první prvek reálný).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Alternativní názvy: <function>trace</function></para>
+ <para>Spočítat stopu matice. Jedná se o součet prvků na hlavní diagonále čtvercové matice.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Stopa_%28algebra%29">Wikipedia</ulink> a <ulink
url="http://planetmath.org/Trace">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Transponovat matici. Funkčně je to stejné, jako operátor <userinput>.'</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://cs.wikipedia.org/wiki/Transpozice_matice">Wikipedia</ulink> a <ulink
url="http://planetmath.org/Transpose">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Alternativní názvy: <function>vander</function></para>
+ <para>Vrátit Vandermondovu matici.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Vandermondova_matice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>Úhel dvou vektorů vzhledem k unitárnímu prostoru daného <varname>B</varname>. Pokud
<varname>B</varname> není zadáno, je použit standardní hermitovský součin. <varname>B</varname> může být buď
polybilineární funkce dvou argumentů nebo to může být matice v polybilineární formě.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>Přímý součet vektorových prostorů M a N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Průnik podprostorů daných pomocí M a N</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>Součet vektorových prostorů M a N, tj. {w | w=m+n, m in M, n in N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Alternativní názvy: <function>Adjugate</function></para>
+ <para>Získat adjungovanou (reciproku) matici.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Alternativní názvy: <function>CREF</function>
<function>ColumnReducedEchelonForm</function></para>
+ <para>Spočítat sloupcově odstupňovaný tvar matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Alternativní názvy: <function>Determinant</function></para>
+ <para>Získat determinant matice.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Determinant2">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Determinant">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Alternativní názvy: <function>REF</function> <function>RowEchelonForm</function></para>
+ <para>Získat řádkově odstupňovaný tvar matice. To jest, použít Gaussovu eliminaci, ale bez zpětného
dosazování do <varname>M</varname>. Nenulové řádky jsou poděleny, aby všechny pivoty byly 1.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Alternativní názvy: <function>RREF</function>
<function>ReducedRowEchelonForm</function></para>
+ <para>Získat redukovaný řádkově odstupňovaný tvar matice. To jest, použít Gaussovu eliminaci se
zpětným dosazováním do <varname>M</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> (text je v angličtině) a
<ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Kombinatorika</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Získat <varname>n</varname>-té Catalanovo číslo.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Catalanova_%C4%8D%C3%ADsla">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Získat jako vektor vektorů všechny kombinace k-té třídy z prvků 1 až n. (Viz také <link
linkend="gel-function-NextCombination">NextCombination</link>)</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Kombinace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Dvojitý faktoriál: <userinput>n(n-2)(n-4)…</userinput></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Faktoriál: <userinput>n(n-1)(n-2)…</userinput></para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Factorial">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Faktori%C3%A1l">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Klesající faktoriál: <userinput>(n)_k = n(n-1)…(n-(k-1))</userinput></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/FallingFactorial">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Alternativní názvy: <function>fib</function></para>
+ <para>Vypočítat <varname>n</varname>-té Fibonacciho číslo. Tj. číslo definované rekurzivně jako
<userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> a <userinput>Fibonacci(1) =
Fibonacci(2) = 1</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>Spočítat Frobeniusovo číslo. Tzn. spočítat největší číslo, které nemůže být dáno jako
lineární kombinace celých nezáporných čísel zadaných jako vektor nezáporných celých čísel. Vektor může být
zadán jako samostatná čísla nebo jeden vektor. Všechna zadaná čísla by měla mít největšího společného
dělitele 1.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> (text je v angličtině) a <ulink
url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (kombinacni_pravidlo)</synopsis>
+ <para>Galoisova matice daná lineárním kombinačním pravidlem (a_1*x_1+…+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>Najít takový vektor <varname>c</varname> nezáporných celých čísel, že skalární součin s
<varname>v</varname> je roven <varname>n</varname>. Když to není možné, vrátí <constant>null</constant>.
Vektor <varname>v</varname> by měl být předán seřazený ve vzestupném pořadí a měl by se skládat z nezáporných
celých čísel.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Hladov%C3%BD_algoritmus">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Alternativní názvy: <function>HarmonicH</function></para>
+ <para>Harmonické číslo, <varname>n</varname>-té harmonické číslo řádu <varname>r</varname>. Jedná
se o součet <userinput>1/k^r</userinput> pro <varname>k</varname> od 1 do n. Je to to stejné jako
<userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Hofstadterova funkce q(n) definovaná jako q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2))</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> (text je v angličtině). Posloupnost
je <ulink url="https://oeis.org/A005185">A005185 podle encyklopedie OEIS</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (pocatecni_hodnoty,kombinacni_pravidlo,n)</synopsis>
+ <para>Spočítat lineární rekurzivní posloupnost pomocí Galoisova krokování.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Spočítat multinomické koeficienty. Přebírá vektor <varname>k</varname> nezáporných celých
čísel a spočítá multinomický koeficient. To odpovídá koeficientu v homogenním polynomu v <varname>k</varname>
proměnných s odpovídajícími mocninami.</para>
+ <para>Vzorec pro <userinput>Multinomial(a,b,c)</userinput> se dá napsat jako:
<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting> Jinými slovy, pokud máme jen dva prvky, pak <userinput>Multinomial(a,b)</userinput> je to
stejné, jako <userinput>Binomial(a+b,a)</userinput> nebo <userinput>Binomial(a+b,b)</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> (text je v angličtině) a
<ulink url="https://cs.wikipedia.org/wiki/Multinomick%C3%A1_v%C4%9Bta">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Získat kombinaci, která by následovala po kombinaci <varname>v</varname> v pořadí kombinací,
první kombinací by měla být <userinput>[1:k]</userinput>. To je užitečné, pokud máte hodně kombinací, které
chcete projít a nechcete plýtvat pamětí na uložení všech.</para>
+ <para>S funkcí Combinations byste normálně napsali smyčku jako: <screen><userinput>for n in
Combinations (4,6) do (
+ NejakaFunkce (n)
+);</userinput>
+</screen> Ale s funkcí NextCombination byste napsali něco takového: <screen><userinput>n:=[1:4];
+do (
+ NejakaFunkce (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen> Viz <link linkend="gel-function-Combinations">Combinations</link>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Kombinace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Získat Pascalův trojúhelník v podobě matice. Vrátí dolní trojúhelníkovou matici
<varname>i</varname>+1 krát <varname>i</varname>+1, která je Pascalovým trojúhelníkem po <varname>i</varname>
iteracích.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Pascal%C5%AFv_troj%C3%BAheln%C3%ADk">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Získat jako vektor vektorů všechny variace <varname>k</varname>-té třídy z prvků 1 až
<varname>n</varname> prvků, případně permutace pro <varname>k</varname>=<varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Permutace">Wikipedia</ulink> (permutace) a <ulink
url="https://cs.wikipedia.org/wiki/Variace_%28kombinatorika%29">Wikipedia</ulink> (variace).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Alternativní názvy: <function>Pochhammer</function></para>
+ <para>(Pochhammerův) stoupacící faktoriál: (n)_k = n(n+1)…(n+(k-1))</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/RisingFactorial">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Alternativní názvy: <function>StirlingS1</function></para>
+ <para>Stirlingovo číslo prvního druhu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> (text je v angličtině) nebo
<ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> (text je v
angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Alternativní názvy: <function>StirlingS2</function></para>
+ <para>Stirlingovo číslo druhého druhu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> (text je v angličtině) nebo <ulink
url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink> (text je v
angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfaktoriál: n! krát suma_{k=0}^n (-1)^k/k!</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (n)</synopsis>
+ <para>Spočítat <varname>n</varname>-té trojúhelníkové číslo.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Troj%C3%BAheln%C3%ADkov%C3%A9_%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Alternativní názvy: <function>Binomial</function></para>
+ <para>Spočítat kombinace, tj. kombinační číslo. <varname>n</varname> může být libovolné reálné
číslo.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/Choose">Planetmath</ulink> (text je v angličtině) a <ulink
url="http://cs.wikipedia.org/wiki/Kombina%C4%8Dn%C3%AD_%C4%8D%C3%ADslo">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,k)</synopsis>
+ <para>Spočítat počet variací <varname>k</varname>-té třídy z prvků 1 až <varname>n</varname>,
respektive počet permutací při <varname>k</varname> rovno <varname>n</varname>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Permutace">Wikipedia</ulink> (permutace) a <ulink
url="https://cs.wikipedia.org/wiki/Variace_%28kombinatorika%29">Wikipedia</ulink> (variace).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Diferenciální/integrální počet </title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Integrovat f složeným Simpsonovým pravidlem na intervalu [a,b] s n podintervaly s chybou
podle max(f'''')*h^4*(b-a)/180. Upozorňujeme, že n by mělo být sudé.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,omezeni_ctvrte_derivace,tolerance)</synopsis>
+ <para>Integrovat f složeným Simpsonovým pravidlem na intervalu [a,b] s počtem kroků počítaným
podle omezení čtvrté derivace a podle požadované tolerance.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Zkusit spočítat derivaci, nejprve symbolicky a pak numericky.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Derivace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Vrátit funkci, která je sudým periodickým rozšířením <function>f</function> s poloviční
periodou <varname>L</varname>. Tj. funkce definovaná na intervalu <userinput>[0,L]</userinput> rozšířená, aby
byla sudá na <userinput>[-L,L]</userinput> a pak rozšířená, aby byla periodická s periodou
<userinput>2*L</userinput>.</para>
+ <para>Viz také <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> a
<link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Vrátit funkci, která je Fourierovu řadou s koeficienty danými vektory <varname>a</varname>
(sinové) a <varname>b</varname> (kosinové). Vezměte na vědomí, že <userinput>a@(1)</userinput> je konstantní
koeficient! To znamená, že <userinput>a@(n)</userinput> odkazuje na člen
<userinput>cos(x*(n-1)*pi/L)</userinput>, zatímco <userinput>b@(n)</userinput> odkazuje na člen
<userinput>sin(x*n*pi/L)</userinput>. Buďto <varname>a</varname> nebo <varname>b</varname> může být
<constant>null</constant>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (fce,start,prirustek)</synopsis>
+ <para>Zkusit spočítat nekonečný součin funkce s jedním parametrem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (fce,arg,start,prirustek)</synopsis>
+ <para>Zkusit spočítat nekonečný součin funkce se dvěma parametry s fce (arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (fce,start,prirustek)</synopsis>
+ <para>Zkusit spočítat nekonečný součet funkce s jedním parametrem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (fce,arg,start,prirustek)</synopsis>
+ <para>Zkusit spočítat nekonečný součet funkce se dvěma parametry s fce (arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Zkusit zjistit pomocí výpočtu limity v x0, jestli je funkce reálné proměnné v tomto bodě
spojitá.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Otestovat na diferencovatelnost aproximací limit zleva a zprava a porovnáním.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Spočítat limitu zleva funkce reálné proměnné v x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Spočítat limitu funkce reálné proměnné v x0. Zkusí vypočítat limitu zleva i zprava.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Integrovat trojúhelníkovou metodou (pravidlem prostředního bodu).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Alternativní názvy: <function>NDerivative</function></para>
+ <para>Zkusit vypočítat numerickou derivaci.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Derivace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Vrátit vektor vektorů <userinput>[a,b]</userinput>, kde <varname>a</varname> jsou kosinové
koeficienty a <varname>b</varname> sinové koeficienty Fourierovy řady funkce <function>f</function> s
poloviční periodou <varname>L</varname> (tj. definovanou na <userinput>[-L,L]</userinput> a periodicky
rozšířenou) s numericky spočítanými koeficienty do <varname>N</varname>-té harmonické. Koeficienty jsou
spočítány numerickou integrací pomocí <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Vrátit funkci, která je Fourierovou řadou funkce <function>f</function> s poloviční periodou
<varname>L</varname> (tj. definovanou na <userinput>[-L,L]</userinput> a periodicky rozšířenou) s numericky
spočítanými koeficienty do <varname>N</varname>-té harmonické. Jde o čistě trigonometrickou řadu složenou ze
sinů a kosinů. Koeficienty jsou spočítány numerickou integrací pomocí <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> (text je v angličtině) nebo <ulink
url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Vrátit vektor koeficientů kosinové Fourierovy řady funkce <function>f</function> s poloviční
periodou <varname>L</varname>. To jest, vezmeme funkci <function>f</function> definovanou na
<userinput>[0,L]</userinput>, provedeme sudé periodické rozšíření a spočteme Fourierovu řadu, která má pouze
kosinové členy. Řada je spočítána do <varname>N</varname>-té harmonické. Koeficienty jsou spočítány
numerickou integrací pomocí <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>. Poznamenejme, že
<userinput>a@(1)</userinput> je konstantní koeficient! To znamená, že <userinput>a@(n)</userinput> odkazuje
na člen <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> (text je v angličtině) nebo
<ulink url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Vrátit funkci, která je kosinovou Fourierovu řadou funkce <function>f</function> s poloviční
periodou <varname>L</varname>. To jest, vezmeme funkci <function>f</function> definovanou na
<userinput>[0,L]</userinput>, provedeme sudé periodické rozšíření a spočteme Fourierovu řadu, která má pouze
kosinové členy. Řada je spočítána do <varname>N</varname>-té harmonické. Koeficienty jsou spočítány
numerickou integrací pomocí <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> (text je v angličtině) nebo
<ulink url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Vrátit vektor koeficientů sinové Fourierovy řady funkce <function>f</function> s poloviční
periodou <varname>L</varname>. To jest, vezmeme funkci <function>f</function> definovanou na
<userinput>[0,L]</userinput>, provedeme liché periodické rozšíření a spočteme Fourierovu řadu, která má pouze
sinové členy. Řada je spočítána do <varname>N</varname>-té harmonické. Koeficienty jsou spočítány numerickou
integrací pomocí <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> (text je v angličtině) nebo
<ulink url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Vrátit funkci, která je sinovou Fourierovu řadou funkce <function>f</function> s poloviční
periodou <varname>L</varname>. To jest, vezmeme funkci <function>f</function> definovanou na
<userinput>[0,L]</userinput>, provedeme liché periodické rozšíření a spočteme Fourierovu řadu, která má pouze
sinové členy. Řada je spočítána do <varname>N</varname>-té harmonické. Koeficienty jsou spočítány numerickou
integrací pomocí <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> (text je v angličtině) nebo
<ulink url="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Integrovat pravidlem nastaveným v NumericalIntegralFunction jako funkcí f od a do b pomocí
kroků NumericalIntegralSteps.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Zkusit vypočítat numerickou levou derivaci.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,serie_pro_uspech,N)</synopsis>
+ <para>Pokusit se spočítat limitu f(step_fun(i)) pro i od 1 do N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Zkusit vypočítat numerickou pravou derivaci.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Vrátit funkci, která je lichým periodickým rozšířením <function>f</function> s poloviční
periodou <varname>L</varname>. Tj. funkce definovaná na intervalu <userinput>[0,L]</userinput> rozšířená, aby
byla lichá na <userinput>[-L,L]</userinput> a pak rozšířená, aby byla periodická s periodou
<userinput>2*L</userinput>.</para>
+ <para>Viz také <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link> a
<link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Spočítat jednostrannou derivaci pomocí pětibodového vzorce.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Spočítat jednostrannou derivaci pomocí tříbodového vzorce.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Vrátit funkci, která je periodickým rozšířením <function>f</function> definované na intervalu
<userinput>[a,b]</userinput> a s periodou <userinput>b-a</userinput>.</para>
+ <para>Viz také <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> a
<link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.</para>
+ <para>Verze 1.0.7 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Spočítat limitu zprava funkce reálné proměnné v x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Spočítat oboustrannou derivaci pomocí pětibodového vzorce.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Spočítat oboustrannou derivaci pomocí tříbodového vzorce.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Funkce</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Alternativní názvy: <function>Arg</function><function>arg</function></para>
+ <para>Argument (orientovaný úhel) komplexního čísla.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Besselova funkce prvního druhu řádu 0. Je implementována pouze pro reálná čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Besselova_funkce">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Besselova funkce prvního druhu řádu 1. Je implementována pouze pro reálná čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Besselova_funkce">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Besselova funkce prvního druhu řádu <varname>n</varname>. Je implementována pouze pro reálná
čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Besselova_funkce">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Besselova funkce druhého druhu řádu 0. Je implementována pouze pro reálná čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Besselova_funkce">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Besselova funkce druhého druhu řádu 1. Je implementována pouze pro reálná čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Besselova_funkce">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Besselova funkce druhého druhu řádu <varname>n</varname>. Je implementována pouze pro reálná
čísla.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Besselova_funkce">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichletovo jádro řádu <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Vrátit 1, když a jen když jsou všechny prvky nulové.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Alternativní názvy: <function>erf</function></para>
+ <para>Chybová funkce, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/ErrorFunction">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Chybov%C3%A1_funkce">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Fejerovo jádro řádu <varname>n</varname> vyhodnocené v <varname>t</varname>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/FejerKernel">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Alternativní názvy: <function>Gamma</function></para>
+ <para>Funkce Gama. V současnosti je implementována pouze pro reálná čísla.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/GammaFunction">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Gama_funkce">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Vrátit 1, když a jen když se všechny prvky rovnají.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>Hlavní větev Lambertovy funkce W vypočítaná pro čistě reálná čísla větší nebo rovna
<userinput>-1/e</userinput>. Funkce <function>LambertW</function> je inverzní k výrazu
<userinput>x*e^x</userinput>. Dokonce i pro reálná <varname>x</varname> tento výraz není jedna k jedné a
proto má dvě větve pro <userinput>[-1/e,0)</userinput>. Viz <link
linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> ohledně další reálné větve.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> (text je v angličtině).</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>Vedlejší (mínus první) větev Lambertovy funkce W vypočítaná pro čistě reálná čísla větší nebo
rovna <userinput>-1/e</userinput>. Funkce <function>LambertWm1</function> je druhou větví k inverzi výrazu
<userinput>x*e^x</userinput>. Viz <link linkend="gel-function-LambertW"><function>LambertW</function></link>
ohledně hlavní větve.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (fce,x,prirust)</synopsis>
+ <para>Najít první hodnotu, kdy f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Möbiova transformace (lineární lomené zobrazení) kruhu na sebe sama ku 0.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> (text je v angličtině) a
<ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Möbiova transformace (lineární lomené zobrazení) pomocí dvojpoměrů z2,z3,z4 ku 1,0 a
nekonečnu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> (text je v angličtině) a
<ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Möbiova transformace (lineární lomené zobrazení) pomocí dvojpoměrů nekonečna ku nekonečnu a
z2,z3 ku 1 a 0.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> (text je v angličtině) a
<ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Möbiova transformace (lineární lomené zobrazení) pomocí dvojpoměrů nekonečna ku 1 a z3,z4 ku
0 a nekonečnu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> (text je v angličtině) a
<ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Möbiova transformace (lineární lomené zobrazení) pomocí dvojpoměrů nekonečna ku 0 a z2,z4 ku
1 a nekonečnu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> (text je v angličtině) a
<ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Poissonovo jádro na D(0,1) (nenormalizované na 1, tj. integrál je 2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Poissonovo jádro na D(0,R) (nenormalizované na 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Alternativní názvy: <function>zeta</function></para>
+ <para>Riemannova funkce zeta. V současnosti je implementována jen pro reálná čísla.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Riemannova_funkce_zeta">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>Funkce jednotkového skoku je rovna 0 pro x<0 a jedné v ostatních případech. Jedná se o
integrál Diracovy funkce delta. Bývá také nazývána Heavisideova funkce.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Heavisideova_funkce">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>Funkce <function>cis</function>, což je to stejné jako
<userinput>cos(x)+1i*sin(x)</userinput></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Převést stupně na radiány.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Převést radiány na stupně.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Vypočítat nenormalizovanou funkci sinc, což je <userinput>sin(x)/x</userinput>. Jestli chcete
normalizovanou funkci, volejte <userinput>sinc(pi*x)</userinput>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Sinc">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Řešení rovnic</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>Vypočítat kořeny kubického (3. stupně) polynomu pomocí kubické rovnice. Polynom by měl být
zadán jako vektor koeficientů. Tj. <userinput>4*x^3 + 2*x + 1</userinput> odpovídá vektoru
<userinput>[1,2,0,4]</userinput>. Vrací sloupcový vektor tří řešení. První řešení je vždy reálné, protože
kubická rovnice má vždy jedno reálné řešení.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/CubicFormula">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Kubick%C3%A1_rovnice">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>Použít klasickou Eulerovu metodu k numerickému řešení y'=f(x,y) pro počáteční
<varname>x0</varname>, <varname>y0</varname> měnící se do <varname>x1</varname> s přírůstky
<varname>n</varname> a vrátit <varname>y</varname> v <varname>x1</varname>. Pokud nechcete výslovně použít
Eulerovu metodu, měli byste vážně popřemýšlet o použití <link
linkend="gel-function-RungeKutta">RungeKutta</link> k řešení obyčejných diferenciálních rovnic.</para>
+ <para>Systémy je možné vyřešit jednoduše tak, že <varname>y</varname> musí být všude (sloupcový)
vektor. To znamená, že <varname>y0</varname> může být vektor v případech, kdy by <varname>f</varname> mělo
přebírat <varname>x</varname> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné
velikosti.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Eulerova_metoda">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>Použít klasickou Eulerovu metodu k numerickému řešení y'=f(x,y) pro počáteční
<varname>x0</varname>, <varname>y0</varname> měnící se do <varname>x1</varname> s přírůstky
<varname>n</varname> a vrátit matici <userinput>n+1</userinput> krát 2 s hodnotami <varname>x</varname> a
<varname>y</varname>. Pokud nechcete výslovně použít Eulerovu metodu, měli byste vážně popřemýšlet o použití
<link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link> k řešení obyčejných diferenciálních rovnic.
Vhodné pro zapojení do <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> nebo <link
linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.</para>
+ <para>Příklad: <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponenciální vývoj");</userinput>
+</screen></para>
+ <para>Systémy je možné vyřešit jednoduše tak, že <varname>y</varname> musí být všude (sloupcový)
vektor. To znamená, že <varname>y0</varname> může být vektor v případech, kdy by <varname>f</varname> mělo
přebírat <varname>x</varname> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné
velikosti.</para>
+ <para>Výstup pro systém je nicméně matice n krát 2 s druhou položkou v podobě vektoru. Když si
přejete vykreslit čáru, ujistěte se, že používáte řádkové vektory a pak převeďte matici na vektor pomocí
<link linkend="gel-function-ExpandMatrix">ExpandMatrix</link> a vyberte si pravý sloupec. Například:
<screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","První");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Druhý");</userinput>
+</screen></para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Eulerova_metoda">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Najít kořen funkce pomocí metody bisekce. <varname>a</varname> a <varname>b</varname> je
počáteční odhad intervalu, <userinput>f(a)</userinput> a <userinput>f(b)</userinput> by měly mít opačná
znaménka. <varname>TOL</varname> je požadovaná tolerance a <varname>N</varname> je omezení počtu iterací,
které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor
<userinput>[uspech,hodnota,iteratce]</userinput>, kde <varname>uspech</varname> je pravdivostní hodnota
signalizující úspěch, <varname>hodnota</varname> je poslední spočtená hodnota a <varname>iterace</varname> je
počet dokončených iterací.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Najít kořen funkce pomocí metody tětiv. <varname>a</varname> a <varname>b</varname> je
počáteční odhad intervalu, <userinput>f(a)</userinput> a <userinput>f(b)</userinput> by měly mít opačná
znaménka. <varname>TOL</varname> je požadovaná tolerance a <varname>N</varname> je omezení počtu iterací,
které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor
<userinput>[uspech,hodnota,iteratce]</userinput>, kde <varname>uspech</varname> je pravdivostní hodnota
signalizující úspěch, <varname>hodnota</varname> je poslední spočtená hodnota a <varname>iterace</varname> je
počet dokončených iterací.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Najít kořen funkce pomocí Mullerovy metody. <varname>TOL</varname> je požadovaná tolerance a
<varname>N</varname> je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací
vektor <userinput>[uspech,hodnota,iteratce]</userinput>, kde <varname>uspech</varname> je pravdivostní
hodnota signalizující úspěch, <varname>hodnota</varname> je poslední spočtená hodnota a
<varname>iterace</varname> je počet dokončených iterací.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Najít kořen funkce pomocí metody sečen. <varname>a</varname> a <varname>b</varname> je
počáteční odhad intervalu, <userinput>f(a)</userinput> a <userinput>f(b)</userinput> by měly mít opačná
znaménka. <varname>TOL</varname> je požadovaná tolerance a <varname>N</varname> je omezení počtu iterací,
které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor
<userinput>[uspech,hodnota,iteratce]</userinput>, kde <varname>uspech</varname> je pravdivostní hodnota
signalizující úspěch, <varname>hodnota</varname> je poslední spočtená hodnota a <varname>iterace</varname> je
počet dokončených iterací.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,odhad,epsilon,maxn)</synopsis>
+ <para>Najde nuly pomocí Halleyovy metody. <varname>f</varname> je funkce, <varname>df</varname> je
její derivace a <varname>ddf</varname> její druhá derivace. <varname>odhad</varname> je počáteční odhad.
Funkce vrací výsledek po dvou úspěšných hodnotách, které každá spadají do <varname>epsilon</varname> nebo po
<varname>maxn</varname> pokusech, v kterémžto případě vrací <constant>null</constant>, což značí
selhání.</para>
+ <para>Viz také <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>
a <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Příklad vyhledání druhé odmocniny z 10: <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> (text je v angličtině).</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,odhad,epsilon,maxn)</synopsis>
+ <para>Najde nuly pomocí metody tečen (Newtonovy metody). <varname>f</varname> je funkce a
<varname>df</varname> je její derivace. <varname>odhad</varname> je počáteční odhad. Funkce vrací výsledek po
dvou úspěšných hodnotách, které každá spadají do <varname>epsilon</varname> nebo po <varname>maxn</varname>
pokusech, v kterémžto případě vrací <constant>null</constant>, což značí selhání.</para>
+ <para>Viz také <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> a <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Příklad vyhledání druhé odmocniny z 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Metoda_te%C4%8Den">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>Vypočítat kořeny polynomu (1. až 4. stupně) pomocí jedné z rovnic pro takovéto polynomy.
Polynom by měl být zadán jako vektor koeficientů. Tj. <userinput>4*x^3 + 2*x + 1</userinput> odpovídá vektoru
<userinput>[1,2,0,4]</userinput>. Vrací sloupcový vektor řešení.</para>
+ <para>Funkce volá <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>, <link
linkend="gel-function-CubicFormula">CubicFormula</link> a <link
linkend="gel-function-QuarticFormula">QuarticFormula</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>Vypočítat kořeny kvadratického (2. stupně) polynomu pomocí kvadratické rovnice. Polynom by
měl být zadán jako vektor koeficientů. Tj. <userinput>3*x^2 + 2*x + 1</userinput> odpovídá vektoru
<userinput>[1,2,3]</userinput>. Vrací sloupcový vektor dvou řešení.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/QuadraticFormula">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>Vypočítat kořeny kvartického (4. stupně) polynomu pomocí kvartické rovnice. Polynom by měl
být zadán jako vektor koeficientů. Tj. <userinput>5*x^4 + 2*x + 1</userinput> odpovídá vektoru
<userinput>[1,2,0,0,5]</userinput>. Vrací sloupcový vektor čtyř řešení.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://planetmath.org/QuarticFormula">Planetmath</ulink> (text je v angličtině), <ulink
url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>Použít klasickou neadaptivní Rungeho-Kuttovu metodu čtvrtého řádu k numerickému řešení
y'=f(x,y) pro počáteční <varname>x0</varname>, <varname>y0</varname> měnící se do <varname>x1</varname> s
přírůstky <varname>n</varname>, vrací <varname>y</varname> v <varname>x1</varname>.</para>
+ <para>Systémy je možné vyřešit jednoduše tak, že <varname>y</varname> musí být všude (sloupcový)
vektor. To znamená, že <varname>y0</varname> může být vektor v případech, kdy by <varname>f</varname> mělo
přebírat <varname>x</varname> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné
velikosti.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Numerick%C3%A9_%C5%99e%C5%A1en%C3%AD_oby%C4%8Dejn%C3%BDch_diferenci%C3%A1ln%C3%ADch_rovnic#Metody_Runge-Kutta">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>Použít klasickou neadaptivní metodu Runge-Kutta čtvrtého řádu k numerickému řešení y'=f(x,y)
pro počáteční <varname>x0</varname>, <varname>y0</varname> měnící se do <varname>x1</varname> s přírůstky
<varname>n</varname> a vrátit matici <userinput>n+1</userinput> krát 2 s hodnotami <varname>x</varname> a
<varname>y</varname>. Vhodné pro zapojení do <link
linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> nebo <link
linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.</para>
+ <para>Příklad: <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponenciální vývoj");</userinput>
+</screen></para>
+ <para>Systémy je možné vyřešit jednoduše tak, že <varname>y</varname> musí být všude (sloupcový)
vektor. To znamená, že <varname>y0</varname> může být vektor v případech, kdy by <varname>f</varname> mělo
přebírat <varname>x</varname> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné
velikosti.</para>
+ <para>Výstup pro systém je nicméně matice n krát 2 s druhou položkou v podobě vektoru. Když si
přejete vykreslit čáru, ujistěte se, že používáte řádkové vektory a pak převeďte matici na vektor pomocí
<link linkend="gel-function-ExpandMatrix">ExpandMatrix</link> a vyberte si pravý sloupec. Například:
<screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","První");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Druhý");</userinput>
+</screen></para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Numerick%C3%A9_%C5%99e%C5%A1en%C3%AD_oby%C4%8Dejn%C3%BDch_diferenci%C3%A1ln%C3%ADch_rovnic#Metody_Runge-Kutta">Wikipedia</ulink>.</para>
+ <para>Verze 1.0.10 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Statistika</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Alternativní názvy:
<function>average</function><function>Mean</function><function>mean</function></para>
+ <para>Vypočítat průměr (aritmetickou střední hodnotu) z celé matice.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Integrál Gaussovy funkce od 0 do <varname>x</varname> (oblast pod normální křivkou).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Norm%C3%A1ln%C3%AD_rozd%C4%9Blen%C3%AD">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>Normalizovaného Gaussova funkce rozdělení (normální křivka).</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Norm%C3%A1ln%C3%AD_rozd%C4%9Blen%C3%AD">Wikipedia</ulink>.</para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Alternativní názvy: <function>median</function></para>
+ <para>Vypočítat medián z celé matice.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Medi%C3%A1n">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Alternativní názvy: <function>stdevp</function></para>
+ <para>Spočítat standardní odchylku souboru celé matice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Alternativní názvy: <function>RowMean</function></para>
+ <para>Vypočítat průměr každého řádku v matici. Tj. vypočitat aritmetickou střední hodnotu.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Vypočítat medián každého řádku v matici a vrátit sloupcový vektor mediánů.</para>
+ <para>Více informací najdete v encyklopediích <ulink
url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> (text je v angličtině) a <ulink
url="https://cs.wikipedia.org/wiki/Medi%C3%A1n">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Alternativní názvy: <function>rowstdevp</function></para>
+ <para>Spočítat standardní odchylku souboru řádků matice a vrátit svislý vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Alternativní názvy: <function>rowstdev</function></para>
+ <para>Spočítat standardní odchylku řádků matice a vrátit svislý vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Alternativní názvy: <function>stdev</function></para>
+ <para>Spočítat standardní odchylku celé matice.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Polynomy</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Sečíst dva polynomy (vektory).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Podělit dva polynomy (jako vektory) pomocí dlouhého dělení. Vrátit rozdíl dvou polynomů.
Volitelný argument <varname>r</varname> se použije k vrácení zbytku. Zbytek bude mít nižší řád, než polynom
<varname>q</varname>.</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> (text je v angličtině).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Zkontrolovat, zda je vektor použitelný jako polynom.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Vynásobit dva polynomy (jako vektory).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,odhad,epsilon,maxn)</synopsis>
+ <para>Najde kořeny polynomu pomocí metody tečen (Newtonovy metody). <varname>poly</varname> je
polynom v podobě vektoru a <varname>odhad</varname> je počáteční odhad. Funkce vrací výsledek po dvou
úspěšných hodnotách, které každá spadají do <varname>epsilon</varname> nebo po <varname>maxn</varname>
pokusech, v kterémžto případě vrací <constant>null</constant>, což značí selhání.</para>
+ <para>Viz také <link
linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.</para>
+ <para>Příklad vyhledání druhé odmocniny z 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Metoda_te%C4%8Den">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Vypočítat druhou derivaci polynomu (jako vektoru).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Derivovat polynom (jako vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Vytvořit funkci z polynomu (jako vektoru).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,prom...)</synopsis>
+ <para>Vytvořit řetězec z polynomu (jako vektoru).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Odečíst dva polynomy (jako vektory).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Odstranit nuly z polynomu (jako vektoru).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Teorie množin</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Vrátit průnik množin X a Y (X a Y jsou vektory považované za množiny).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Vrátit <constant>true</constant> (pravda), pokud je x prvkem množiny X (kde X je vektor
považovaný za množinu).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Vrátit <constant>true</constant> (pravda), pokud X je podmnožinu Y (X a Y jsou vektory
považované za množiny).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Vrátit vektor, ve kterém se každý prvek X vyskytuje jen jednou.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Vrátit rozdíl množin X-Y (X a Y jsou vektory považované za množiny).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Vrátit sjednocení množin X a Y (X a Y jsou vektory považované za množiny).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Komutativní algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>Pro Hilbertovu funkci jde o c pro stupeň d, daný Macaulayho ohraničením pro Hilbertovu
funkci stupně d+1 (operátor c^<d> z Greenova důkazu)</para>
+ <para>Verze 1.0.15 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>Operátor c_<d> z Greenova důkazu Macaulayova teorému</para>
+ <para>Verze 1.0.15 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Vrátit d-tou Macaulayho reprezentaci celého kladného čísla c.</para>
+ <para>Verze 1.0.15 a novější.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Různé</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vektor)</synopsis>
+ <para>Převést vektor hodnot ASCII na řetězec. Viz také <link
linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.</para>
+ <para>Příklad: <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/ASCII">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vektor,abeceda)</synopsis>
+ <para>Převést vektor na hodnoty indexů písmen indexované od 0 (nacházejících se v textovém řetězci)
na řetězec. Vektor <constant>null</constant> vede na prázdný řetězec. Viz také <link
linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (retezec)</synopsis>
+ <para>Převést řetězec na (řádkový) vektor hodnot ASCII. Viz také <link
linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.</para>
+ <para>Příklad: <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/ASCII">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (retezec,abeceda)</synopsis>
+ <para>Převést řetězec na (řádkový) vektor na hodnoty indexů písmen indexované od 0 (nacházejících
se v textovém řetězci), případně -1 pro neznámá písmena. Prázdný řetězec vede na <constant>null</constant>.
Viz také <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Symbolické operace</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Zkusit symbolicky derivovat funkci f, kde f je funkce jedné proměnné.</para>
+ <para>Příklady: <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen></para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Derivace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Zkusit symbolicky derivovat funkci f, kde f je funkce jedné proměnné, při neúspěchu vrátit
potichu <constant>null</constant>. (Viz <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Derivace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Zkusit symbolicky n-krát derivovat funkci. (Viz <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Derivace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Zkusit symbolicky n-krát derivovat funkci, při neúspěchu vrátit potichu
<constant>null</constant>. (Viz <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)</para>
+ <para>Více informací najdete v encyklopedii <ulink
url="https://cs.wikipedia.org/wiki/Derivace">Wikipedia</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Zkusit sestavit Taylorův polynom do n-tého řádku se středem x0, který aproximuje zadanou
funkci. (Viz <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Vykreslování</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (soubor,typ)</synopsis>
+ <synopsis>ExportPlot (soubor)</synopsis>
+ <para>Exportovat obsah okna s grafem do souboru. Typ je řetězec, který určuje typ souboru, který
se má použít – „png“, „eps“ nebo „ps“. Když typ souboru není zadán, určí se podle přípony, která by v takovém
případě mela být „.png“, „.eps“ nebo „.ps“.</para>
+ <para>Upozorňujeme, že soubory se přepisují bez dotazu.</para>
+ <para>Při úspěšném exportu je vrácena hodnota pravda. Jinak je vypsána chyba a vyvolána
výjimka.</para>
+ <para>Příklady: <screen><prompt>genius></prompt> <userinput>ExportPlot("soubor.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/složka/soubor","eps")</userinput>
+</screen></para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (fce1,fce2,fce3,...)</synopsis>
+ <synopsis>LinePlot (fce1,fce2,fce3,x1,x2)</synopsis>
+ <synopsis>LinePlot (fce1,fce2,fce3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (fce1,fce2,fce3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (fce1,fce2,fce3,[x1,x2,y1,y2])</synopsis>
+ <para>Vykreslí funkci (nebo několik funkcí) v podobě čárového grafu. Prvních (až 10) argumentů
jsou funkce, volitelně můžete zadat meze vykreslovaného okna jako souřadnice <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Pokud žádné meze nejsou zadány, použijí
se aktuálně nastavené meze (viz <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Pokud nejsou zadány jen
meze v ose y, funkce se propočítají a vezme se jejich minimum a maximu.</para>
+ <para>Parametr <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ovládá
vykreslování legendy.</para>
+ <para>Příklady: <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>Zobrazí okno pro vykreslování čar a vymaže funkce a ostatní čáry, které jsou v něm
vykresleny.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (fce,...)</synopsis>
+ <synopsis>LinePlotCParametric (fce,t1,t2,tprirust)</synopsis>
+ <synopsis>LinePlotCParametric (fce,t1,t2,tprirust,x1,x2,y1,y2)</synopsis>
+ <para>Vykreslit parametrickou funkci komplexní hodnoty v podobě čárového grafu. Jako první se
předává funkce, která vrací <computeroutput>x+iy</computeroutput>, následovaná volitelnými omezeními
<userinput>t1,t2,tprirust</userinput> pro <varname>t</varname> a pak mezemi v podobě
<userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Místo mezí x a y je možné
zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.</para>
+ <para>Parametr <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ovládá
vykreslování legendy.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>Vykreslit čáru z <varname>x1</varname>,<varname>y1</varname> do
<varname>x2</varname>,<varname>y2</varname>. <varname>x1</varname>,<varname>y1</varname>,
<varname>x2</varname>,<varname>y2</varname> může být pro delší lomené čáry nahrazeno maticí
<varname>n</varname> krát 2. Připadně vektor <varname>v</varname> může být sloupcový vektor komplexních
čísel, což je matice <varname>n</varname> krát 1 a jednotlivá komplexní čísla jsou pak považována za body v
rovině.</para>
+ <para>Mohou být přidány dodatečné parametry, které určují barvu, tloušťku a šipky čáry a
vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput>, <userinput>"arrow"</userinput> nebo
<userinput>"legend"</userinput> a za ním určit barvu, tloušťku, okno jako 4prvkový vektor, typ šipky nebo
legendu. (Šipka a okno jsou podporovány od verze 1.0.6.)</para>
+ <para>Pokud je čára považovaná za vyplněný mnohoúhelník, vyplněný danou barvou, můžete zadat
argument <userinput>"filled"</userinput>. K dispozici od verze 1.0.22.</para>
+ <para>Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná
GTK, jako <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>, apod.
Nebo druhou možností je zadat barvu ve formátu RGB jako <userinput>"#rgb"</userinput>,
<userinput>"#rrggbb"</userinput> nebo <userinput>"#rrrrggggbbbb"</userinput>, kde r, g a b jsou číslice
šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je
také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až
1, např. <userinput>[1.0,0.5,0.1]</userinput>.</para>
+ <para>Okno by mělo být zadáno buď obvyklým způsobem jako <userinput>[x1,x2,y1,y2]</userinput> nebo
alternativně může být použit řetězec <userinput>"fit"</userinput>, v kterémž to případě bude rozsah x určen
přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.</para>
+ <para>Specifikace šipky by měla být <userinput>"origin"</userinput> (počátek),
<userinput>"end"</userinput> (konec), <userinput>"both"</userinput> (obojí) nebo
<userinput>"none"</userinput> (nic).</para>
+ <para>A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu.
Samozřejmě jen v případě, že se legenda tiskne.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Řešení")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen></para>
+ <para>Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli je předán sloupcový nebo
řádkový vektor, při zadávání bodů v podobě vektoru komplexních čísel je kvůli možným nejednoznačnostem nutné
vždy zadat sloupcový vektor.</para>
+ <para>Zadávání <varname>v</varname> jako sloupcového vektoru komplexních čísel je implementováno od
verze 1.0.22.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>Vykreslit bod v <varname>x</varname>, <varname>y</varname>. Vstupem může být matice
<varname>n</varname> krát 2 pro <varname>n</varname> různých bodů. Tato funkce má v podstatě stejné vstupní
údaje jako <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>. Případně vektor
<varname>v</varname> může být sloupcový vektor komplexních čísel, což je matice <varname>n</varname> krát 1 a
jednotlivá komplexní čísla jsou považována za body v rovině.</para>
+ <para>Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna
nebo legendy. Stačí přidat argument v podobě řetězce <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput> nebo <userinput>"legend"</userinput> a za
ním určit barvu, tloušťku, okno jako 4prvkový vektor nebo legendu.</para>
+ <para>Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná
GTK, jako <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>, apod.
Nebo druhou možností je zadat barvu ve formátu RGB jako <userinput>"#rgb"</userinput>,
<userinput>"#rrggbb"</userinput> nebo <userinput>"#rrrrggggbbbb"</userinput>, kde r, g a b jsou číslice
šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy
vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.</para>
+ <para>Okno by mělo být zadáno buď obvyklým způsobem jako <userinput>[x1,x2,y1,y2]</userinput> nebo
alternativně může být použit řetězec <userinput>"fit"</userinput>, v kterémž to případě bude rozsah x určen
přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.</para>
+ <para>A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu.
Samozřejmě jen v případě, že se legenda tiskne.</para>
+ <para>Examples: <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Řešení")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","Sedmá
odmocnina z jednotky")</userinput>
+</screen></para>
+ <para>Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli jim předáte sloupcový nebo
řádkový vektor, může u předávání bodu v podobě vektoru komplexních čísel docházet k nejednoznačnostem. Proto
musíte vždy předat sloupcový vektor. Všimněte si v posledním příkladu transpozice vektoru
<userinput>0:6</userinput>, aby se z něj stal sloupcový vektor.</para>
+ <para>Dostupné od verze 1.0.18. Zadávání <varname>v</varname> v podobě sloupcového vektoru
komplexních čísel je implementováno od verze 1.0.22.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>Vrátit řádkový vektor v kreslení odpovídající aktuální pozici myši. Pokud kreslení není
viditelné, vypíše se chyba a vrátí <constant>null</constant>. V takovém případě byste měli spustit <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> nebo <link
linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link>, abyste přepnuli okno s grafem
do režimu kreslení. Viz také <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfce,yfce,...)</synopsis>
+ <synopsis>LinePlotParametric (xfce,yfce,t1,t2,tprirust)</synopsis>
+ <synopsis>LinePlotParametric (xfce,yfce,t1,t2,tprirust,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfce,yfce,t1,t2,tprirust,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfce,yfce,t1,t2,tprirust, "fit")</synopsis>
+ <para>Vykreslit parametrickou funkci v podobě čárového grafu. Jako první se zadávají funkce pro
<varname>x</varname> a <varname>y</varname>, následované volitelnými omezeními
<userinput>t1,t2,tprirust</userinput> pro <varname>t</varname> a pak mezemi v podobě
<userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Místo mezí x a y je možné
zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.</para>
+ <para>Parametr <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ovládá
vykreslování legendy.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>Pokud je v režimu kreslení, čeká na kliknutí v kreslícím okně a následně vrátí pozici
kliknutí v podobě řádkového vektoru. Pokud je okno zavřené, vrátí se funkce okamžitě s hodnotou
<constant>null</constant>. Pokud okno není v režimu kreslení, přepne jej do něj a, pokud není zobrazené,
zobrazí jej. Viz také <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>Dočasně zmrazí vykreslování grafu na plátno. To se hodí, když kreslíte spoustu prvků a
chcete to pozdržet, aby se fyzicky vykreslilo až všechno naráz a předešlo se tím blikání. Až máte veškeré
kreslení hotovo, měli byste zavolat funkci <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.</para>
+ <para>Na konci jakéhokoliv provádění je plátno automaticky rozmrazeno, takže by se nemělo stát, že
zůstane zmrazené. Kupříkladu ve chvíli, kdy se zobrazí nový příkazový řádek, dojde k automatickému
rozmrazení. Také si všimněte, že volání zmrazení a rozmrazení mohou být zanořená.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>Rozmrazí plátno pro vykreslování grafu zmrazené pomocí <link
linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link> a ihned jej překreslí.
Platno je také rozmrazeno vždy po skončení provádění libovolného programu.</para>
+ <para>Verze 1.0.18 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>Zobrazí a přenese do popředí vykreslovací okno, případně jej vytvoří, pokud je třeba.
Normálně je okno vytvořeno, když je zavolána některá z kreslících funkcí, ale nemusí být vždy přeneseno do
popředí, když je schováno za jinými okny. Proto je dobré volat tento kript, když bylo vykreslovací okno
vytvořeno již dříve a nyní je schováno za konzolí nebo jinými okny.</para>
+ <para>Verze 1.0.19 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>Vymazat řešení vykreslená funkcí <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>Když je aktivní vykreslování směrového pole, vykreslí řešení se zadanou počáteční podmínkou.
Použita je standardní Rungeho-Kuttova metoda s přírůstkem <varname>dx</varname>. Řešení v grafu zůstanou,
dokud není zobrazen jiný graf nebo není zavolána funkce <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>. Pro
vykreslení řešení můžete použít i grafické rozhraní a počáteční podmínky zadat pomocí myši.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (fce)</synopsis>
+ <synopsis>SlopefieldPlot (fce,x1,x2,y1,y2)</synopsis>
+ <para>Vykreslit směrové pole. Funkce <varname>fce</varname> by měla přebírat dvě reálná čísla
<varname>x</varname> a <varname>y</varname> nebo jedno komplexní číslo. Volitelně můžete zadat meze
vykreslovacího okna jako souřadnice <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>,
<varname>y2</varname>. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavení mezí (viz <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Parametr <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ovládá
vykreslování legendy.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (fce)</synopsis>
+ <synopsis>SurfacePlot (fce,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (fce,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (fce,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (fce,[x1,x2,y1,y2])</synopsis>
+ <para>Vykreslit funkci plochy, která přebírá buď dva argumenty nebo komplexní číslo. Jako první se
předává funkce, pak následují meze <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>,
<varname>y2</varname>, <varname>z1</varname>, <varname>z2</varname>. Pokud žádné meze nejsou zadány, použijí
se aktuálně nastavené meze (viz <link
linkend="gel-function-LinePlotWindow"><function>SurfacePlotWindow</function></link>). V současnosti umí
Genius vykreslovat jen funkci jedné plochy.</para>
+ <para>Když nejsou meze zadány, použije se pro ně minimum a maximum funkce.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>Zobrazí okno pro vykreslování povrchů a vymaže funkce a ostatní čáry, které jsou v něm
vykresleny.</para>
+ <para>Dostupné ve verzi 1.0.19 a novějších.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,popisek)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,popisek,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,popisek,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>Vykreslit povrch podle dat. Data jsou matice n × 3, jejíž řádky jsou souřadnice x, y a z.
Případně data mohou být vektor, jehož délka je dělitelná 3 a který obsahuje trojice x, y, z. Data by měla
obsahovat nejméně 3 body.</para>
+ <para>Volitelně je možné předat popisek a také volitelné meze. Když meze nejsou uvedeny, vypočtou
se z dat, ale nepoužívá se funkce <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>, pokud ji chcete
použít, musíte to provést explicitně. Když není předán popisek, použije se prázdný.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"Moje data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen></para>
+ <para>Zde je příklad, jak vykreslit graf v polárních souřadnicích a především jak vykreslit funkci
<userinput>-r^2 * θ</userinput>: <screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to 1 by 0.1
do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen></para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],popisek)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],popisek)</synopsis>
+ <para>Vykreslit plochu podle pravidelných obdélníkových dat. Data jsou dána v matici n krát m, kde
řádky jsou souřadnice x a sloupce souřadnice y. Souřadnice x je rozdělena do stejnoměrných n-1 intervalů a
souřadnice y do stejnoměrných m-1 intervalů. Meze <varname>x1</varname> a <varname>x2</varname> udávájí
rozsah na ose x, který se má použit a obdobně meze <varname>y1</varname> a <varname>y2</varname> udávají
rozsah na ose y. Pokud nejsou uvedeny meze <varname>z1</varname> a <varname>z2</varname>, jsou vypočteny z
dat (budou to extrémní hodnoty v datech).</para>
+ <para>Volitelně se může zadat popisek, pokud zadán není, použije se prázdný.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"Moje data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"poloviční sedlo")</userinput>
+</screen></para>
+ <para>Verze 1.0.16 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>Vykreslit čáru z <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> do
<varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>. <varname>x1</varname>,
<varname>y1</varname>, <varname>z1</varname>, <varname>x2</varname>, <varname>y2</varname>,
<varname>z2</varname> může být pro delší lomené čáry nahrazeno maticí <varname>n</varname> krát 3.</para>
+ <para>Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna
nebo legendy. Stačí přidat argument v podobě řetězce <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput> nebo <userinput>"legend"</userinput> a za
ním určit barvu, tloušťku, okno jako 6prvkový vektor nebo legendu.</para>
+ <para>Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná
GTK, jako <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>, apod.
Nebo druhou možností je zadat barvu ve formátu RGB jako <userinput>"#rgb"</userinput>,
<userinput>"#rrggbb"</userinput> nebo <userinput>"#rrrrggggbbbb"</userinput>, kde r, g a b jsou číslice
šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je
také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až
1, např. <userinput>[1.0,0.5,0.1]</userinput>.</para>
+ <para>Okno by mělo být zadáno buď obvyklým způsobem jako <userinput>[x1,x2,y1,y2,z1,z2]</userinput>
nebo alternativně může být použit řetězec <userinput>"fit"</userinput>, v kterémž to případě bude rozsah x
určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.</para>
+ <para>A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu.
Samozřejmě jen v případě, že se legenda tiskne.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen></para>
+ <para>Dostupné ve verzi 1.0.19 a novějších.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>Vykreslit bod v <varname>x</varname>,<varname>y</varname>,<varname>z</varname>. Vstupem může
být matice <varname>n</varname> krát 3 pro <varname>n</varname> různých bodů. Tato funkce má v podstatě
stejné vstupní údaje jako <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.</para>
+ <para>Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna
nebo legendy. Stačí přidat argument v podobě řetězce <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput> nebo <userinput>"legend"</userinput> a za
ním určit barvu, tloušťku, okno jako 6prvkový vektor nebo legendu.</para>
+ <para>Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná
GTK, jako <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>, apod.
Nebo druhou možností je zadat barvu ve formátu RGB jako <userinput>"#rgb"</userinput>,
<userinput>"#rrggbb"</userinput> nebo <userinput>"#rrrrggggbbbb"</userinput>, kde r, g a b jsou číslice
šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy
vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.</para>
+ <para>Okno by mělo být zadáno buď obvyklým způsobem jako <userinput>[x1,x2,y1,y2,z1,z2]</userinput>
nebo alternativně může být použit řetězec <userinput>"fit"</userinput>, v kterémž to případě bude rozsah x
určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.</para>
+ <para>A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu.
Samozřejmě jen v případě, že se legenda tiskne.</para>
+ <para>Příklady: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen></para>
+ <para>Dostupné ve verzi 1.0.19 a novějších.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>Vymazat řešení vykreslené funkcí <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>.</para>
+ <para>Verze 1.0.6 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tdelka)</synopsis>
+ <para>Když je aktivní vykreslování vektorového pole, vykreslí řešení se zadanou počáteční
podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem <varname>dt</varname> pro interval délky
<varname>tdelka</varname>. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána funkce
<link linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>.
Pro vykreslení řešení můžete použít i grafické rozhraní a počáteční podmínky zadat pomocí myši.</para>
+ <para>Verze 1.0.6 a novější.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (fcex, fcey)</synopsis>
+ <synopsis>VectorfieldPlot (fcex, fcey, x1, x2, y1, y2)</synopsis>
+ <para>Vykreslit dvourozměrné vektorové pole. Funkce <varname>fcex</varname> by měla být dx/dt
vektorového pole a funkce <varname>fcey</varname> by měla být dy/dt vektorového pole. Funkce by měly přebírat
dvě reálná čísla <varname>x</varname> a <varname>y</varname> nebo jedno komplexní číslo. Pokud je parametr
<link linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link> nastaven
na <constant>true</constant>, pak je velikost vektorů normalizována. To znamená, že je zobrazen jen směr a
velikost ne.</para>
+ <para>Volitelně můžete zadat meze vykreslovaného okna jako souřadnice <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Pokud žádné meze nejsou zadány, použijí
se aktuálně nastavené meze (viz <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Parametr <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ovládá
vykreslování legendy.</para>
+ <para>Příklady: <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y,
`(x,y)=y^2-x, -1, 1, -1, 1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Příklad programů v jazyce GEL</title>
+
+ <para>Zde je funkce, která vypočítává faktoriály: <programlisting><![CDATA[function f(x) = if x <= 1
then 1 else (f(x-1)*x)
+]]></programlisting></para>
+ <para>Naformátovaná odsazováním vypadá takto: <programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting></para>
+ <para>Tady je přímá portace funkce pro výpočet faktoriálu z manuálové stránky
<application>bc</application>. Syntaxe vypadá podobně jako u <application>bc</application>, s tím rozdílem v
jazyce GEL, že poslední výraz je to, co je vráceno. Pokud by se místo toho použila funkce
<literal>return</literal>, vypadalo by to takto: <programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting></para>
+
+ <para>Nejjednodušším způsobem, jak definovat funkci pro výpočet faktoriálu by bylo použití násobení ve
smyčce, jak je ukázáno níže. Nejde pravděpodobně o nejkratší a nejrychlejší řešení, ale je to nejlépe čitelná
verze. <programlisting>function f(x) = prod k=1 to x do k
+</programlisting></para>
+
+ <para>Následuje větší příklad, který v podstatě předefinovává interní funkci <link
linkend="gel-function-ref"><function>ref</function></link>, aby vypočítávala odstupňovaný kanonický tvar
matice. Funkce <function>ref</function> je vestavěná a mnohem rychlejší, ale tento příklad má ilustrovat
některé komplexnější vlastnosti jazyka GEL. <programlisting><![CDATA[# Calculate the row-echelon form of a
matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting></para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Nastavení</title>
+
+ <para>Pokud chcete upravit nastavení <application>matematického nástroje Genius</application>, zvolte
<menuchoice><guimenu>Nastavení</guimenu><guimenuitem>Předvolby</guimenuitem></menuchoice>. Oproti parametrům,
které poskytuje standardní knihovna je zde navíc pár základních parametrů poskytovaných kalkulátorem. Ty
určují, jak se kalkulátor má chovat.</para>
+
+ <note>
+ <title>Změna nastavení pomocí GEL</title>
+ <para>Většina nastavení v aplikaci Genius jsou ve skutečnosti globální proměnné, u kterých můžete
zjistit hodnotu a hodnotu jim přiřadit, stejně jako u normálních proměnných. Viz <xref
linkend="genius-gel-variables"/> o vyhodnocování a přiřazování proměnných a <xref
linkend="genius-gel-function-parameters"/> pro seznam nastavení, která lze tímto způsobem měnit.</para>
+ <para>Jako příklad uveďme, jak můžete nastavit maximální počet číslic ve výsledcích na 12 tím, že
napíšete: <programlisting>MaxDigits = 12
+</programlisting></para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Výstup</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximum číslic na výstupu</guilabel>
+ </term>
+ <listitem>
+ <para>Maximum číslic ve výsledcích (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Výsledky jako čísla s plovoucí desetinnou čárkou</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by se výsledky měly vždy vypisovat v podobě desetinných čísel (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Čísla s plovoucí desetinnou čárkou ve vědecké notaci</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by desetinná čísla měla být ve vědecké notaci (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Vždy vypisovat celé výrazy</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by se měly vypisovat úplné výrazy pro vrácené nečíselné hodnoty (delší než řádek)
(<link linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Vypisovat smíšené zlomky</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by zlomky měly být vypisovány jako smíšené, například „1 1/3“ místo „4/3“. (<link
linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Zobrazovat 0.0, když je desetinné číslo menší než 10^-x (0=nikdy neosekávat)</guilabel>
+ </term>
+ <listitem>
+ <para>Jak osekávat výstup. Ale jen když jsou ostatní sousedící čísla velká. Podívejte se na
dokumentaci k parametru <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Osekávat čísla jen když je jiné číslo větší než 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>Kdy osekávat výstup. Nastavení je dáno parametrem <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>. Viz
dokumentace k parametru <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Pamatovat si nastavení výstupu pro další sezení</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by se měla nastavení zadaná ve skupině <guilabel>Volby výstup čísel/výrazů</guilabel>
zapamatovat pro příští sezení. Neplatí pro nastavení ve skupině <guilabel>Volby výstupu
chyb/informací</guilabel>.</para>
+ <para>Když není zaškrtnuto, požívají se při každém spuštění kalkulátoru Genisu výchozí nebo
dříve uložená nastavení. Uvědomte si, že nastavení jsou ukládána na konci sezení, takže pokud si chcete
uložit výchozí nastavení postupujte následovně: zaškrtněte políčko, <application>matematický nástroj
Genius</application> restartujte a u políčka zaškrtnutí zase zrušte.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Zobrazovat chyby v dialogovém okně</guilabel>
+ </term>
+ <listitem>
+ <para>Když je nataveno, budou chyby zobrazovány v samostatném dialogovém okně, když není nastaveno,
budou vypisovány v konzole.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Zobrazovat informativní zprávy v dialogovém okně</guilabel>
+ </term>
+ <listitem>
+ <para>Když je nastaveno, budou informativní zprávy zobrazovány v samostatném dialogovém okně, když
není nataveno, budou vypisovány v konzole.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Maximum zobrazovaných chyb</guilabel>
+ </term>
+ <listitem>
+ <para>Maximální počet chyb, který je vrácen během jednoho vyhodnocení (<link
linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). Pokud nastavíte na 0, budou vždy
vráceny všechny chyby. Obvykle když smyčka způsobí hodně chyb, je nepravděpodobné, že jich bude mít význam
více než pár, takže prohlížení dlouhého seznam nemá žádný přínos.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Mimo tyto předvolby existují ještě další předvolby, které mohou být změněny pouze přes prostředí
konzoly. Tyto další volby, které se týkají výstupu najdete v kapitole <xref
linkend="genius-gel-function-parameters"/>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>Číselná soustava, která se bude používat pro vypisování celých čísel</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>Řetězec, který může nabývat hodnot <literal>„normal“</literal>, <literal>„latex“</literal>,
<literal>„mathml“</literal> nebo <literal>„troff“</literal> a bude ovlivňovat, jak se mají vypisovat matice
(a samozřejmě i další věci), což je důležité pro vkládání do dokumentů. Styl Normal je výchozí styl výpisu
<application>matematického nástroje Genius</application> čitelný pro člověka. Ostatní styly jsou pro sazbu v
aplikacích LaTeX, MathML (XML) nebo Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Přesnost</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Přesnost desetinných čísel</guilabel>
+ </term>
+ <listitem>
+ <para>Přesnost desetinných čísel v bitech (<link
linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>). Vemte na vědomí, že změny
se použijí až na nově vypočtené hodnoty. Staré hodnoty uložené v proměnných zůstanou samozřejmě v původní
přesnosti a pokud je budete chtít s nově nastavenou přesností, musíte je přepočítat. Výjimkou jsou systémové
konstanty, jako <link linkend="gel-function-pi"><function>pi</function></link> nebo <link
linkend="gel-function-e"><function>e</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Pamatovat si nastavené přesnosti pro další sezení</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by se přesnost měla zapamatovat pro příští sezení. Když není zaškrtnuto, požívají se při
každém spuštění kalkulátoru Genisu výchozí nebo dříve uložená nastavení. Uvědomte si, že nastavení jsou
ukládána na konci sezení, takže pokud si chcete uložit výchozí nastavení postupujte následovně: zaškrtněte
políčko, Genius restartujte a u políčka zaškrtnutí zase zrušte.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Terminál</title>
+
+ <para>Terminál představuje konzolu v pracovní oblasti.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Paměť řádků</guilabel>
+ </term>
+ <listitem>
+ <para>Počet řádků, o které se dá v terminálu vracet zpět.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Písmo</guilabel>
+ </term>
+ <listitem>
+ <para>Písmo, které se má používat v terminálu.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Černé na bílém</guilabel>
+ </term>
+ <listitem>
+ <para>Zda se má terminálu používat černá na bílé.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Blikající kurzor</guilabel>
+ </term>
+ <listitem>
+ <para>Zda by měl kurzor v terminálu blikat, když je terminál zaměřen. To může být někdy nepříjemné a
vytvářet provoz při nečinnosti v případě, že používáte aplikaci Genius vzdáleně.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Paměť</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximum alokovaných uzlů</guilabel>
+ </term>
+ <listitem>
+ <para>Interně se data ukládají do malých úseků paměti. Tato hodnota udává maximální počet úseků,
které se mohou pro výpočty přidělit. Tímto omezením se předejde problémům s vyčerpáním paměti při chybách,
které paměti spotřebují velké množství, například při nekonečné rekurzi. Při vyčerpání paměti by došlo ke
zpomalení počítače a bylo by obtížné program přerušit.</para>
+ <para>Pokud je limit dosažen, <application>matematický nástroj Genius</application> se dotáže, zda
si výpočet přejete přerušit nebo se má pokračovat. Jestliže budete pokračovat, žádný limit nebude uplatněn a
může nastat, že program paměť vyčerpá. Limit se použije znovu při dalším spuštění programu nebo vyhodnocení
výrazu v konzole bez ohledu na to, co jste na dotaz odpověděli.</para>
+ <para>Nastavení limitu na nulu znamená, že na množství paměti použité kalkulátorem Genius nebude
žádný limit uplatňován.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>O <application>Matematickém nástroji Genius</application></title>
+
+ <para><application>Matematický nástroj Genius</application> napsal Jiří Lebl (<email>jirka 5z
com</email>). Historie <application>matematického nástroje Genius</application> se datuje do roku 1997. Zprvu
se jednalo o kalkulačku pro GNOME, ale postupně přerostl v kalkulátor s pracovním rozhraním. Více informací o
něm najdete na <ulink url="http://www.jirka.org/genius.html" type="http">webových stránkách
Genius</ulink>.</para>
+ <para>Pokud chcete oznámit chybu nebo navrhnout vylepšení vztahující se k této aplikaci nebo této
příručce, pošlete e-mail autorovi nebo do poštovní konference (viz webové stránky).</para>
+
+ <para>Tento program je šířen podle ustanovení licence GNU General Public License, vydávané Free Software
Foundation; a to buď verze 3 této licence anebo (podle vlastního uvážení) kterékoliv pozdější verze. Kopii
této licence naleznete <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">pod tímto
odkazem</ulink> nebo v souboru COPYING přiloženém ke zdrojovým kódům tohoto programu.</para>
+
+ <para>Jiří Lebl byl během různých částí vývoje částečně podporován v práci od NSF granty DMS 0900885 a
DMS 1362337 a univerzitou Illinois v Urbana-Champaign, univerzitou California v San Diegu, univerzitou
Wisconsin-Madison a státní univerzitou Oklahoma. Software byl využíván jak k výuce, tak k výzkumu.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/cs/html/ch03s02.html b/help/cs/html/ch03s02.html
index 90bf364..5a2b449 100644
--- a/help/cs/html/ch03s02.html
+++ b/help/cs/html/ch03s02.html
@@ -1 +1 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Jak vytvořit nový
program</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch03.html" title="Kapitola 3.
Základy používání"><link rel="prev" href="ch03.html" title="Kapitola 3. Základy používání"><link rel="next"
href="ch03s03.html" title="Jak otevřít a spustit program"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Jak vytvořit nový program</th></tr><tr><td width="20%"
align="left"><a accesskey="p" href="ch03.html">Předcházející</a> </td><th width="60%" align="center">Kapitola
3. Základy používání</th><td width="20%" align="right"> <a accesskey="n"
href="ch03s03.html">Další</a></td></tr></table><hr></
div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="genius-usage-create-program"></a>Jak vytvořit nový program</h2></div></div></div><p>Když si přejete
zadat několik komplikovaných příkazů nebo napsat složitou funkci pomocí jazyka <a class="link"
href="ch05.html" title="Kapitola 5. Základy jazyka GEL">GEL</a>, můžete vytvořit nový program.</p><p>Když
chcete začít psát nový program, zvolte <span class="guimenu">Soubor</span> → <span class="guimenuitem">Nový
program</span> a v pracovní oblasti se objeví nová karta. V té můžete nový program v jazyce <a class="link"
href="ch05.html" title="Kapitola 5. Základy jazyka GEL">GEL</a> psát. Až jej dopíšete, můžete jej spustit
pomocí <span class="guimenu">Kalkulátor</span> → <span class="guimenuitem">Spustit</span> (nebo tlačítkem
<span class="guilabel">Spustit</span> na nástrojové liště). Tím se váš program provede a na kartě <span c
lass="guilabel">Konzola</span> zobrazí výstup. Ve výsledku je to stejné, jako byste vzali text celého
programu a napsali jej do konzoly. Jediný rozdíl je v tom, že vstup je proveden nezávisle na konzole, zatímco
výstup jde na konzolu. <span class="guimenu">Kalkulátor</span> → <span class="guimenuitem">Spustit</span>
vždy spustí aktuálně vybraný program, i když jste zrovna na kartě <span class="guilabel">Konzola</span>.
Aktuálně vybraný program má svoji kartu označenou tučným písmem a vybere se tak, že na kartu prostě
kliknete.</p><p>Abyste napsaný program uložili, zvolte <span class="guimenu">Soubor</span> → <span
class="guimenuitem">Uložit jako… PodobnSoubor Ulo pro uloSoubor Ulo.</span></p><p>Programy, ve kterých jsou
neuložené změny, mají vedle svého názvu souboru „[+]“. Díky tomu můžete rychle poznat, jestli se soubor na
disku a otevřený v kartě odlišují. Programy, které zatím nemají přidělený název souboru,
jsou stále považovány za neuložené a „[+]“ se u nich nevypisuje.</p></div><div class="navfooter"><hr><table
width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch03.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch03.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch03s03.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitola 3. Základy
používání </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Jak otevřít a spustit program</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Jak vytvořit nový
program</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch03.html" title="Kapitola 3.
Základy používání"><link rel="prev" href="ch03.html" title="Kapitola 3. Základy používání"><link rel="next"
href="ch03s03.html" title="Jak otevřít a spustit program"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Jak vytvořit nový program</th></tr><tr><td width="20%"
align="left"><a accesskey="p" href="ch03.html">Předcházející</a> </td><th width="60%" align="center">Kapitola
3. Základy používání</th><td width="20%" align="right"> <a accesskey="n"
href="ch03s03.html">Další</a></td></tr></table><hr></
div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="genius-usage-create-program"></a>Jak vytvořit nový program</h2></div></div></div><p>Když si přejete
zadat několik komplikovaných příkazů nebo napsat složitou funkci pomocí jazyka <a class="link"
href="ch05.html" title="Kapitola 5. Základy jazyka GEL">GEL</a>, můžete vytvořit nový program.</p><p>Když
chcete začít psát nový program, zvolte <span class="guimenu">Soubor</span> → <span class="guimenuitem">Nový
program</span> a v pracovní oblasti se objeví nová karta. V té můžete nový program v jazyce <a class="link"
href="ch05.html" title="Kapitola 5. Základy jazyka GEL">GEL</a> psát. Až jej dopíšete, můžete jej spustit
pomocí <span class="guimenu">Kalkulátor</span> → <span class="guimenuitem">Spustit</span> (nebo tlačítkem
<span class="guilabel">Spustit</span> na nástrojové liště). Tím se váš program provede a na kartě <span c
lass="guilabel">Konzola</span> zobrazí výstup. Ve výsledku je to stejné, jako byste vzali text celého
programu a napsali jej do konzoly. Jediný rozdíl je v tom, že vstup je proveden nezávisle na konzole, zatímco
výstup jde na konzolu. <span class="guimenu">Kalkulátor</span> → <span class="guimenuitem">Spustit</span>
vždy spustí aktuálně vybraný program, i když jste zrovna na kartě <span class="guilabel">Konzola</span>.
Aktuálně vybraný program má svoji kartu označenou tučným písmem a vybere se tak, že na kartu prostě
kliknete.</p><p>Abyste napsaný program uložili, zvolte <span class="guimenu">Soubor</span> → <span
class="guimenuitem">Uložit jako…</span> Podobně, jako v jiných aplikacích, můžete zvolit <span
class="guimenu">Soubor</span> → <span class="guimenuitem">Uložit</span> pro uložení programu, který již má
přidělený název souboru. V případě, že máte otevřených hodně programů, které upravujete, a přejete
si je uložit, můžete zvolit také <span class="guimenu">Soubor</span> → <span class="guimenuitem">Uložit
neuložené</span>.</p><p>Programy, ve kterých jsou neuložené změny, mají vedle svého názvu souboru „[+]“. Díky
tomu můžete rychle poznat, jestli se soubor na disku a otevřený v kartě odlišují. Programy, které zatím
nemají přidělený název souboru, jsou stále považovány za neuložené a „[+]“ se u nich
nevypisuje.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td
width="40%" align="left"><a accesskey="p" href="ch03.html">Předcházející</a> </td><td width="20%"
align="center"><a accesskey="u" href="ch03.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch03s03.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitola
3. Základy používání </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td
width="40%
" align="right" valign="top"> Jak otevřít a spustit program</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch05s07.html b/help/cs/html/ch05s07.html
index 8f8ec84..e9f094e 100644
--- a/help/cs/html/ch05s07.html
+++ b/help/cs/html/ch05s07.html
@@ -1,53 +1,6 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Seznam operátorů
GEL</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch05.html" title="Kapitola 5.
Základy jazyka GEL"><link rel="prev" href="ch05s06.html" title="Modulární aritmetika"><link rel="next"
href="ch06.html" title="Kapitola 6. Programování s jazykem GEL"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Seznam operátorů GEL</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch05s06.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 5. Základy
jazyka GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch06.html">Další</a></td></tr></table><hr></div><div class="sec
t1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="genius-gel-operator-list"></a>Seznam operátorů GEL</h2></div></div></div><p>Vše v jazyce GEL jsou ve
skutečnosti jen výrazy. Výrazy jsou dohromady řetězeny pomocí různých operátorů. Jak jste již viděli, i
oddělovač je ve skutečnosti jen binární operátor jazyka. Zde je seznam operátorů jazyka GEL.</p><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><strong
class="userinput"><code>a;b</code></strong></span></dt><dd><p>Oddělovač, který vyhodnocuje jak <code
class="varname">a</code>, tak <code class="varname">b</code>, ale vrací výsledek pouze z <code
class="varname">b</code>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a=b</code></strong></span></dt><dd><p>Operátor přiřazení. </p></dd><dt><span
class="term"><strong class="userinput"><code>a:=b</code></strong></span></dt><dd><p>Operátor přiřazení.
Přiřadí <code cla
ss="varname">b</code> do <code class="varname">a</code> (<code class="varname">a</code> musí být platná <a
class="link" href="ch06s09.html" title="L-hodnoty">l-hodnota</a>). Liší se od <code class="literal">=</code>,
protože se nikdy nepřevádí na <code class="literal">==</code>.</p></dd><dt><span class="term"><strong
class="userinput"><code>|a|</code></strong></span></dt><dd><p>Absolutní hodnota. V případě, že výraz je
komplexní číslo, je vrácen modul (absolutní hodnota komplexního čísla, někdy také nazýván norma), což je
vzdálenost od počátku. Například: <strong class="userinput"><code>|3 * e^(1i*pi)|</code></strong> vrátí
3.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/AbsoluteValue.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="http://cs.wikipedia.org/wiki/Absolutn%C3%AD_hodnota"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a^b</code></strong></span></dt><dd><p>Umocnění, umocní <code
class="varname">a</code> na <code class="varname">b</code>-tou.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.^b</code></strong></span></dt><dd><p>Umocňování prvek po prvku. Umocní každý prvek
matice <code class="varname">a</code> na <code class="varname">b</code>-tou. Nebo, když je <code
class="varname">b</code> matice stejné velikosti jako <code class="varname">a</code>, umocňuje se prvek po
prvku. Pokud je <code class="varname">a</code> číslo a <code class="varname">b</code> je matice, pak se
vytvoří matice stejné velikosti jako <code class="varname">b</code> s <code class="varname">a</code>
umocněným na všechny různé mocnitele v <code class="varname">b</code>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a+b</code></strong></span></dt><dd><p>Sčítání. Sečte dvě čísla, matice, funkce nebo
řetězce. Pokud přičtete řetě
zec k čemukoliv, výsledkem bude vždy řetězec. Pokud je jeden operand čtvercová matice a druhý číslo, je
číslo vynásobeno jednotkovou maticí.</p></dd><dt><span class="term"><strong
class="userinput"><code>a-b</code></strong></span></dt><dd><p>Odčítání. Odečte dvě čísla, matice nebo
funkce.</p></dd><dt><span class="term"><strong
class="userinput"><code>a*b</code></strong></span></dt><dd><p>Násobení. Jedná se o normální násobení
matic.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.*b</code></strong></span></dt><dd><p>Násobení prvek po prvku v situaci, kdy <code
class="varname">a</code> a <code class="varname">b</code> jsou matice.</p></dd><dt><span class="term"><strong
class="userinput"><code>a/b</code></strong></span></dt><dd><p>Dělení. Pokud jsou <code
class="varname">a</code> a <code class="varname">b</code> čísla, jedná se o běžné dělení. Pokud to jsou
matice, odpovídá to <strong class="userinput"><code>a*b^-1</c
ode></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a./b</code></strong></span></dt><dd><p>Dělení prvek po prvku. Pro čísla je to stejné
jako <strong class="userinput"><code>a/b</code></strong>, ale u matic to funguje prvek po
prvku.</p></dd><dt><span class="term"><strong
class="userinput"><code>a\b</code></strong></span></dt><dd><p>Zpětné dělení. Je to to stejné, jako <strong
class="userinput"><code>b/a</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.\b</code></strong></span></dt><dd><p>Zpětné dělení prvků prvky.</p></dd><dt><span
class="term"><strong class="userinput"><code>a%b</code></strong></span></dt><dd><p>
- The mod operator. This does not turn on the <a class="link" href="ch05s06.html"
title="Modulární aritmetika">modular mode</a>, but
- just returns the remainder of integer division
- <strong class="userinput"><code>a/b</code></strong>.
- </p></dd><dt><span class="term"><strong
class="userinput"><code>a.%b</code></strong></span></dt><dd><p>
- Element by element mod operator. Returns the remainder
- after element by element integer division
- <strong class="userinput"><code>a./b</code></strong>.
- </p></dd><dt><span class="term"><strong class="userinput"><code>a mod
b</code></strong></span></dt><dd><p>Operátor modulární aritmetiky. Výraz <code class="varname">a</code> je
vyhodnocen modulární aritmetikou vůči <code class="varname">b</code>. Viz <a class="xref" href="ch05s06.html"
title="Modulární aritmetika">„Modulární aritmetika“</a>. Některé funkce a operátory se chovají odlišně při
modulární aritmetice s celými čísly.</p></dd><dt><span class="term"><strong
class="userinput"><code>a!</code></strong></span></dt><dd><p>Operátor faktoriálu. Je to jako <strong
class="userinput"><code>1*…*(n-2)*(n-1)*n</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a!!</code></strong></span></dt><dd><p>Operátor dvojitého faktoriálu. Je to jako
<strong class="userinput"><code>1*…*(n-4)*(n-2)*n</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a==b</code></strong></span></dt><dd><p
Operátor rovnosti, vrací <code class="constant">true</code> (pravda) nebo <code
class="constant">false</code> (nepravda) podle toho, zda <code class="varname">a</code> je <code
class="varname">b</code> rovno nebo není rovno.</p></dd><dt><span class="term"><strong
class="userinput"><code>a!=b</code></strong></span></dt><dd><p>Operátor nerovnosti, vrací <code
class="constant">true</code> (pravda) v případě, že <code class="varname">a</code> se nerovná <code
class="varname">b</code>, jinak vrací <code class="constant">false</code> (nepravda).</p></dd><dt><span
class="term"><strong class="userinput"><code>a<>b</code></strong></span></dt><dd><p>Alternativní
operátor nerovnosti, vrací <code class="constant">true</code> (pravda) v případě, že <code
class="varname">a</code> se nerovná <code class="varname">b</code>, jinak vrací <code
class="constant">false</code> (nepravda).</p></dd><dt><span class="term"><strong
class="userinput"><code>a<=b</code></str
ong></span></dt><dd><p>Operátor menší než nebo rovno, vrací <code class="constant">true</code> (pravda) v
případě, že <code class="varname">a</code> je menší než nebo se rovná <code class="varname">b</code>, jinak
vrací <code class="constant">false</code> (nepravda). Je možné řetězit ve stylu <strong
class="userinput"><code>a <= b <= c</code></strong> (a může se kombinovat s operátorem menší
než).</p></dd><dt><span class="term"><strong
class="userinput"><code>a>=b</code></strong></span></dt><dd><p>
- Greater than or equal operator,
- returns <code class="constant">true</code> if <code class="varname">a</code> is
- greater than or equal to
- <code class="varname">b</code> else returns <code class="constant">false</code>.
- These can be chained as in <strong class="userinput"><code>a >= b >= c</code></strong>
- (and they can also be combined with the greater than operator).
- </p></dd><dt><span class="term"><strong
class="userinput"><code>a<=b</code></strong></span></dt><dd><p>
- Less than operator,
- returns <code class="constant">true</code> if <code class="varname">a</code> is
- less than
- <code class="varname">b</code> else returns <code class="constant">false</code>.
- These can be chained as in <strong class="userinput"><code>a < b < c</code></strong>
- (they can also be combined with the less than or equal to operator).
- </p></dd><dt><span class="term"><strong
class="userinput"><code>a>=b</code></strong></span></dt><dd><p>
- Greater than operator,
- returns <code class="constant">true</code> if <code class="varname">a</code> is
- greater than
- <code class="varname">b</code> else returns <code class="constant">false</code>.
- These can be chained as in <strong class="userinput"><code>a > b > c</code></strong>
- (they can also be combined with the greater than or equal to operator).
- </p></dd><dt><span class="term"><strong
class="userinput"><code>a<=>b</code></strong></span></dt><dd><p>Operátor porovnání. V případě, že <code
class="varname">a</code> je rovno <code class="varname">b</code>, vrací 0, pokud je <code
class="varname">a</code> menší než <code class="varname">b</code> vrací -1 a pokud je <code
class="varname">a</code> větší než <code class="varname">b</code>, vrací 1.</p></dd><dt><span
class="term"><strong class="userinput"><code>a and b</code></strong></span></dt><dd><p>Logické A (AND). Vrací
pravda, když <code class="varname">a</code> i <code class="varname">b</code> jsou pravda, ve všech ostatních
případech nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s pravdivostní hodnotou
pravda.</p></dd><dt><span class="term"><strong class="userinput"><code>a or
b</code></strong></span></dt><dd><p>Logické NEBO (OR). Vrací pravda, když je <code class="varname">a</code>
nebo <
code class="varname">b</code> (nebo oboje) pravda, jinak vrací nepravda. Pokud jsou předána čísla, je se
všemi nenulovými zacházeno jako s pravdivostní hodnotou pravda.</p></dd><dt><span class="term"><strong
class="userinput"><code>a xor b</code></strong></span></dt><dd><p>
- Logical xor.
- Returns true if exactly one of
- <code class="varname">a</code> or <code class="varname">b</code> is true,
- else returns false. If given numbers, nonzero numbers
- are treated as true.
- </p></dd><dt><span class="term"><strong class="userinput"><code>not
a</code></strong></span></dt><dd><p>
- Logical not. Returns the logical negation of <code class="varname">a</code>.
- </p></dd><dt><span class="term"><strong
class="userinput"><code>-a</code></strong></span></dt><dd><p>Operátor negace. Vrací opačné číslo nebo matici
(u matice pracuje prvek po prvku).</p></dd><dt><span class="term"><strong
class="userinput"><code>&a</code></strong></span></dt><dd><p>Reference proměnné (pro předání odkazu na
proměnnou). Viz <a class="xref" href="ch06s08.html" title="Reference">„Reference“</a>.</p></dd><dt><span
class="term"><strong class="userinput"><code>*a</code></strong></span></dt><dd><p>Dereference proměnné (pro
přístup k odkazované proměnné). Viz <a class="xref" href="ch06s08.html"
title="Reference">„Reference“</a>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a'</code></strong></span></dt><dd><p>Transponovat matici komplexně sdruženou
(Hermiteovsky sdružená matice). Tj. řádky a sloupce se prohodí a vezmou se komplexně sdružená čísla ke všem
prvkům. To znamená, že když prvek i,
j matice <code class="varname">a</code> je x+iy, pak prvek j,i matice <strong
class="userinput"><code>a'</code></strong> je x-iy.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.'</code></strong></span></dt><dd><p>Transponovat matici (bez komplexního sdružení).
To znamená, že prvek i,j matice <code class="varname">a</code> se stane prvkem j,i matice <strong
class="userinput"><code>a.'</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a@(b,c)</code></strong></span></dt><dd><p>
- Get element of a matrix in row <code class="varname">b</code> and column
- <code class="varname">c</code>. If <code class="varname">b</code>,
- <code class="varname">c</code> are vectors, then this gets the corresponding
- rows, columns or submatrices.
- </p></dd><dt><span class="term"><strong
class="userinput"><code>a@(b,)</code></strong></span></dt><dd><p>Získat řádek matice (nebo více řádků, pokud
je <code class="varname">b</code> vektor).</p></dd><dt><span class="term"><strong
class="userinput"><code>a@(b,:)</code></strong></span></dt><dd><p>Stejné jako předchozí.</p></dd><dt><span
class="term"><strong class="userinput"><code>a@(,c)</code></strong></span></dt><dd><p>Získat sloupec matice
(nebo sloupce, pokud je <code class="varname">c</code> vektor).</p></dd><dt><span class="term"><strong
class="userinput"><code>a@(:,c)</code></strong></span></dt><dd><p>Stejné jako předchozí.</p></dd><dt><span
class="term"><strong class="userinput"><code>a@(b)</code></strong></span></dt><dd><p>Získat prvek z matice, s
kterou se zachází jako s vektorem. Matice se prochází řádek pro řádku.</p></dd><dt><span class="term"><strong
class="userinput"><code>a:b</code></strong></span></dt><dd><p>Sestavit vektor o
d <code class="varname">a</code> do <code class="varname">b</code> (nebo zadané části řádku, sloupce pro
operátor <code class="literal">@</code>). Například pro získání řádků 2 až 4 z matice <code
class="varname">A</code> byste mohli použít </p><pre class="programlisting">A@(2:4,)
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Seznam operátorů
GEL</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch05.html" title="Kapitola 5.
Základy jazyka GEL"><link rel="prev" href="ch05s06.html" title="Modulární aritmetika"><link rel="next"
href="ch06.html" title="Kapitola 6. Programování s jazykem GEL"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Seznam operátorů GEL</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch05s06.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 5. Základy
jazyka GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch06.html">Další</a></td></tr></table><hr></div><div class="sec
t1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="genius-gel-operator-list"></a>Seznam operátorů GEL</h2></div></div></div><p>Vše v jazyce GEL jsou ve
skutečnosti jen výrazy. Výrazy jsou dohromady řetězeny pomocí různých operátorů. Jak jste již viděli, i
oddělovač je ve skutečnosti jen binární operátor jazyka. Zde je seznam operátorů jazyka GEL.</p><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><strong
class="userinput"><code>a;b</code></strong></span></dt><dd><p>Oddělovač, který vyhodnocuje jak <code
class="varname">a</code>, tak <code class="varname">b</code>, ale vrací výsledek pouze z <code
class="varname">b</code>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a=b</code></strong></span></dt><dd><p>Operátor přiřazení. </p></dd><dt><span
class="term"><strong class="userinput"><code>a:=b</code></strong></span></dt><dd><p>Operátor přiřazení.
Přiřadí <code cla
ss="varname">b</code> do <code class="varname">a</code> (<code class="varname">a</code> musí být platná <a
class="link" href="ch06s09.html" title="L-hodnoty">l-hodnota</a>). Liší se od <code class="literal">=</code>,
protože se nikdy nepřevádí na <code class="literal">==</code>.</p></dd><dt><span class="term"><strong
class="userinput"><code>|a|</code></strong></span></dt><dd><p>Absolutní hodnota. V případě, že výraz je
komplexní číslo, je vrácen modul (absolutní hodnota komplexního čísla, někdy také nazýván norma), což je
vzdálenost od počátku. Například: <strong class="userinput"><code>|3 * e^(1i*pi)|</code></strong> vrátí
3.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/AbsoluteValue.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="http://cs.wikipedia.org/wiki/Absolutn%C3%AD_hodnota"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a^b</code></strong></span></dt><dd><p>Umocnění, umocní <code
class="varname">a</code> na <code class="varname">b</code>-tou.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.^b</code></strong></span></dt><dd><p>Umocňování prvek po prvku. Umocní každý prvek
matice <code class="varname">a</code> na <code class="varname">b</code>-tou. Nebo, když je <code
class="varname">b</code> matice stejné velikosti jako <code class="varname">a</code>, umocňuje se prvek po
prvku. Pokud je <code class="varname">a</code> číslo a <code class="varname">b</code> je matice, pak se
vytvoří matice stejné velikosti jako <code class="varname">b</code> s <code class="varname">a</code>
umocněným na všechny různé mocnitele v <code class="varname">b</code>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a+b</code></strong></span></dt><dd><p>Sčítání. Sečte dvě čísla, matice, funkce nebo
řetězce. Pokud přičtete řetě
zec k čemukoliv, výsledkem bude vždy řetězec. Pokud je jeden operand čtvercová matice a druhý číslo, je
číslo vynásobeno jednotkovou maticí.</p></dd><dt><span class="term"><strong
class="userinput"><code>a-b</code></strong></span></dt><dd><p>Odčítání. Odečte dvě čísla, matice nebo
funkce.</p></dd><dt><span class="term"><strong
class="userinput"><code>a*b</code></strong></span></dt><dd><p>Násobení. Jedná se o normální násobení
matic.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.*b</code></strong></span></dt><dd><p>Násobení prvek po prvku v situaci, kdy <code
class="varname">a</code> a <code class="varname">b</code> jsou matice.</p></dd><dt><span class="term"><strong
class="userinput"><code>a/b</code></strong></span></dt><dd><p>Dělení. Pokud jsou <code
class="varname">a</code> a <code class="varname">b</code> čísla, jedná se o běžné dělení. Pokud to jsou
matice, odpovídá to <strong class="userinput"><code>a*b^-1</c
ode></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a./b</code></strong></span></dt><dd><p>Dělení prvek po prvku. Pro čísla je to stejné
jako <strong class="userinput"><code>a/b</code></strong>, ale u matic to funguje prvek po
prvku.</p></dd><dt><span class="term"><strong
class="userinput"><code>a\b</code></strong></span></dt><dd><p>Zpětné dělení. Je to to stejné, jako <strong
class="userinput"><code>b/a</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a.\b</code></strong></span></dt><dd><p>Zpětné dělení prvků prvky.</p></dd><dt><span
class="term"><strong class="userinput"><code>a%b</code></strong></span></dt><dd><p>Operátor zbytku. Nepřepíná
do režimu <a class="link" href="ch05s06.html" title="Modulární aritmetika">modulární aritmetiky</a>, ale jen
prostě vrátí zbytek celočíselného dělení <strong
class="userinput"><code>a/b</code></strong>.</p></dd><dt><span class="term"><strong class="
userinput"><code>a.%b</code></strong></span></dt><dd><p>Operátor zbytku dělení prvků prvky. Vrací zbytky po
dělení celočíselných prvků celočíselnými prvky <strong
class="userinput"><code>a./b</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a mod b</code></strong></span></dt><dd><p>Operátor modulární aritmetiky. Výraz <code
class="varname">a</code> je vyhodnocen modulární aritmetikou vůči <code class="varname">b</code>. Viz <a
class="xref" href="ch05s06.html" title="Modulární aritmetika">„Modulární aritmetika“</a>. Některé funkce a
operátory se chovají odlišně při modulární aritmetice s celými čísly.</p></dd><dt><span class="term"><strong
class="userinput"><code>a!</code></strong></span></dt><dd><p>Operátor faktoriálu. Je to jako <strong
class="userinput"><code>1*…*(n-2)*(n-1)*n</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a!!</code></strong></span></dt><dd><p>Oper
átor dvojitého faktoriálu. Je to jako <strong
class="userinput"><code>1*…*(n-4)*(n-2)*n</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a==b</code></strong></span></dt><dd><p>Operátor rovnosti, vrací <code
class="constant">true</code> (pravda) nebo <code class="constant">false</code> (nepravda) podle toho, zda
<code class="varname">a</code> je <code class="varname">b</code> rovno nebo není rovno.</p></dd><dt><span
class="term"><strong class="userinput"><code>a!=b</code></strong></span></dt><dd><p>Operátor nerovnosti,
vrací <code class="constant">true</code> (pravda) v případě, že <code class="varname">a</code> se nerovná
<code class="varname">b</code>, jinak vrací <code class="constant">false</code> (nepravda).</p></dd><dt><span
class="term"><strong class="userinput"><code>a<>b</code></strong></span></dt><dd><p>Alternativní
operátor nerovnosti, vrací <code class="constant">true</code> (pravda) v případě, že <code c
lass="varname">a</code> se nerovná <code class="varname">b</code>, jinak vrací <code
class="constant">false</code> (nepravda).</p></dd><dt><span class="term"><strong
class="userinput"><code>a<=b</code></strong></span></dt><dd><p>Operátor menší než nebo rovno, vrací <code
class="constant">true</code> (pravda) v případě, že <code class="varname">a</code> je menší než nebo se rovná
<code class="varname">b</code>, jinak vrací <code class="constant">false</code> (nepravda). Je možné řetězit
ve stylu <strong class="userinput"><code>a <= b <= c</code></strong> (a může se při tom kombinovat s
operátorem menší než).</p></dd><dt><span class="term"><strong
class="userinput"><code>a>=b</code></strong></span></dt><dd><p>Operátor větší než nebo rovno, vrací <code
class="constant">true</code> (pravda) v případě, že <code class="varname">a</code> je větší než nebo se rovná
<code class="varname">b</code>, jinak vrací <code class="constan
t">false</code> (nepravda). Je možné řetězit ve stylu <strong class="userinput"><code>a >= b >=
c</code></strong> (a může se při tom kombinovat s operátorem větší než).</p></dd><dt><span
class="term"><strong class="userinput"><code>a<=b</code></strong></span></dt><dd><p>Operátor menší než,
vrací <code class="constant">true</code> (pravda) v případě, že <code class="varname">a</code> je menší než
<code class="varname">b</code>, jinak vrací <code class="constant">false</code> (nepravda). Je možné řetězit
ve stylu <strong class="userinput"><code>a < b < c</code></strong> (a může se při tom kombinovat s
operátorem menší než nebo rovno).</p></dd><dt><span class="term"><strong
class="userinput"><code>a>=b</code></strong></span></dt><dd><p>Operátor větší než, vrací <code
class="constant">true</code> (pravda) v případě, že <code class="varname">a</code> je větší než <code
class="varname">b</code>, jinak vrací <code
class="constant">false</code> (nepravda). Je možné řetězit ve stylu <strong class="userinput"><code>a >
b > c</code></strong> (a může se při tom kombinovat s operátorem větší než nebo rovno).</p></dd><dt><span
class="term"><strong class="userinput"><code>a<=>b</code></strong></span></dt><dd><p>Operátor
porovnání. V případě, že <code class="varname">a</code> je rovno <code class="varname">b</code>, vrací 0,
pokud je <code class="varname">a</code> menší než <code class="varname">b</code> vrací -1 a pokud je <code
class="varname">a</code> větší než <code class="varname">b</code>, vrací 1.</p></dd><dt><span
class="term"><strong class="userinput"><code>a and b</code></strong></span></dt><dd><p>Logické A (AND). Vrací
pravda, když <code class="varname">a</code> i <code class="varname">b</code> jsou pravda, ve všech ostatních
případech nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s pravdivostní hod
notou pravda.</p></dd><dt><span class="term"><strong class="userinput"><code>a or
b</code></strong></span></dt><dd><p>Logické NEBO (OR). Vrací pravda, když je <code class="varname">a</code>
nebo <code class="varname">b</code> (nebo oboje) pravda, jinak vrací nepravda. Pokud jsou předána čísla, je
se všemi nenulovými zacházeno jako s pravdivostní hodnotou pravda.</p></dd><dt><span class="term"><strong
class="userinput"><code>a xor b</code></strong></span></dt><dd><p>Logické vylučovací NEBO (XOR). Vrací
pravda, když právě <code class="varname">a</code> nebo <code class="varname">b</code> je pravda, ve všech
ostatních případech vrací nepravda. Pokud jsou předána čísla, je se všemi nenulovými zacházeno jako s
pravdivostní hodnotou pravda.</p></dd><dt><span class="term"><strong class="userinput"><code>not
a</code></strong></span></dt><dd><p>Logická negace (NOT). Vrací logickou negaci <code
class="varname">a</code>.</p></dd><dt><span class="term">
<strong class="userinput"><code>-a</code></strong></span></dt><dd><p>Operátor negace. Vrací opačné číslo
nebo matici (u matice pracuje prvek po prvku).</p></dd><dt><span class="term"><strong
class="userinput"><code>&a</code></strong></span></dt><dd><p>Reference proměnné (pro předání odkazu na
proměnnou). Viz <a class="xref" href="ch06s08.html" title="Reference">„Reference“</a>.</p></dd><dt><span
class="term"><strong class="userinput"><code>*a</code></strong></span></dt><dd><p>Dereference proměnné (pro
přístup k odkazované proměnné). Viz <a class="xref" href="ch06s08.html"
title="Reference">„Reference“</a>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a'</code></strong></span></dt><dd><p>Transponovat matici komplexně sdruženou
(Hermiteovsky sdružená matice). Tj. řádky a sloupce se prohodí a vezmou se komplexně sdružená čísla ke všem
prvkům. To znamená, že když prvek i,j matice <code class="varname">a</code> je
x+iy, pak prvek j,i matice <strong class="userinput"><code>a'</code></strong> je x-iy.</p></dd><dt><span
class="term"><strong class="userinput"><code>a.'</code></strong></span></dt><dd><p>Transponovat matici (bez
komplexního sdružení). To znamená, že prvek i,j matice <code class="varname">a</code> se stane prvkem j,i
matice <strong class="userinput"><code>a.'</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a@(b,c)</code></strong></span></dt><dd><p>Získat prvek matice v řádku <code
class="varname">b</code> a sloupci <code class="varname">c</code>. Pokud jsou <code class="varname">b</code>,
<code class="varname">c</code> vektory, získají se odpovídající řádky, sloupce nebo
podmatice.</p></dd><dt><span class="term"><strong
class="userinput"><code>a@(b,)</code></strong></span></dt><dd><p>Získat řádek matice (nebo více řádků, pokud
je <code class="varname">b</code> vektor).</p></dd><dt><span class="term"><strong class="userinp
ut"><code>a@(b,:)</code></strong></span></dt><dd><p>Stejné jako předchozí.</p></dd><dt><span
class="term"><strong class="userinput"><code>a@(,c)</code></strong></span></dt><dd><p>Získat sloupec matice
(nebo sloupce, pokud je <code class="varname">c</code> vektor).</p></dd><dt><span class="term"><strong
class="userinput"><code>a@(:,c)</code></strong></span></dt><dd><p>Stejné jako předchozí.</p></dd><dt><span
class="term"><strong class="userinput"><code>a@(b)</code></strong></span></dt><dd><p>Získat prvek z matice, s
kterou se zachází jako s vektorem. Matice se prochází řádek pro řádku.</p></dd><dt><span class="term"><strong
class="userinput"><code>a:b</code></strong></span></dt><dd><p>Sestavit vektor od <code
class="varname">a</code> do <code class="varname">b</code> (nebo zadané části řádku, sloupce pro operátor
<code class="literal">@</code>). Například pro získání řádků 2 až 4 z matice <code class="varname">A</code>
byste mohli použít </p><
pre class="programlisting">A@(2:4,)
</pre><p>, kdy <strong class="userinput"><code>2:4</code></strong> vrátí vektor <strong
class="userinput"><code>[2,3,4]</code></strong>.</p></dd><dt><span class="term"><strong
class="userinput"><code>a:b:c</code></strong></span></dt><dd><p>Sestavit vektor od <code
class="varname">a</code> do <code class="varname">c</code> s krokem <code class="varname">b</code>. Tj.
například </p><pre class="programlisting">genius> 1:2:9
=
`[1, 3, 5, 7, 9]
-</pre><p>Když jsou použita desetinná čísla, například <strong
class="userinput"><code>1.0:0.4:3.0</code></strong>, je výstupem to, co očekáváte, přestože se k 1,0 pětkrát
přidá 0,4, je to jen o něco více než 3,0 z důvodu, jakým jsou desetinná čísla uchována ve dvojkové soustavě
(není to přesně 0,4, ale uložené číslo je obvykle o trochu větší). Způsob, jakým je to zpracováváno, je
stejný jako u cyklu a sčítacích a násobících smyček. Pokud je konec v rámci <strong
class="userinput"><code>2^-20</code></strong>násobku velikosti kroku koncového bodu, je koncový bod použit a
předpokládá se, že nastaly chyby zaokrouhlení. To sice není perfektní, ale řeší to většinu případů. Tato
kontrola se provádí až ve verzi 1.0.18 a novějších, takže provádění vašeho kódu může být ve starších verzích
odlišné. Pokud chcete této záležitosti předejít, používejte opravdová racionální čísla, případn
ě použijte funkci <code class="function">float</code>, když si přejete na konci dostat desetinné číslo.
Například <strong class="userinput"><code>1:2/5:3</code></strong> funguje správně a <strong
class="userinput"><code>float(1:2/5:3)</code></strong> vám poskytne desetinné číslo a přitom to bude nepatrně
přesnější než <strong class="userinput"><code>1.0:0.4:3.0</code></strong>.</p></dd><dt><span
class="term"><strong class="userinput"><code>(a)i</code></strong></span></dt><dd><p>
- Make <code class="varname">a</code> into an imaginary number (multiply <code
class="varname">a</code> by the
- imaginary). Normally the imaginary number <code class="varname">i</code> is
- written as <strong class="userinput"><code>1i</code></strong>. So the above is equal to
- </p><pre class="programlisting">(a)*1i
- </pre><p>
- </p></dd><dt><span class="term"><strong
class="userinput"><code>`a</code></strong></span></dt><dd><p>Uvozovat identifikátor, kterýžto nebude
vyhodnocen. Nebo uvozovat matici, takže nebude rozšířena.</p></dd><dt><span class="term"><strong
class="userinput"><code>a swapwith b</code></strong></span></dt><dd><p>Přehodit hodnotu proměnné <code
class="varname">a</code> s hodnotou proměnné <code class="varname">b</code>. V současnosti nepracuje s částmi
prvků matice. Vrací <code class="constant">null</code>. Dostupné od verze 1.0.13.</p></dd><dt><span
class="term"><strong class="userinput"><code>increment a</code></strong></span></dt><dd><p>Zvýšit hodnotu
proměnné <code class="varname">a</code> o 1. V případě, že <code class="varname">a</code> je matice, je o 1
zvýšen každý prvek. Dělá to vlastně to stejné co <strong class="userinput"><code>a=a+1</code></strong>,
akorát o něco rychleji. Vrací <code class="constant">null</code>. Dostup
né od verze 1.0.13.</p></dd><dt><span class="term"><strong class="userinput"><code>increment a by
b</code></strong></span></dt><dd><p>Zvýšit hodnotu proměnné <code class="varname">a</code> o <code
class="varname">b</code>. V případě, že <code class="varname">a</code> je matice, je o zvýšen každý prvek.
Dělá to vlastně to stejné co <strong class="userinput"><code>a=a+b</code></strong>, akorát o něco rychleji.
Vrací <code class="constant">null</code>. Dostupné od verze 1.0.13.</p></dd></dl></div><div class="note"
style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Poznámka</h3><p>Operátor @() dává
operátoru : více možností. S ním můžete určovat části matice. Takže a@(2:4,6) jsou řádky 2,3,4 sloupce 6.
Nebo a@(,1:2) vám dá první dva sloupce matice. Do operátoru @() můžete i přiřazovat, stačí když je pravou
hodnotou matice o stejném rozměru jako určená oblast nebo je to jiný typ hodnoty.</p></div><div class="no
te" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Poznámka</h3><p>Porovnávací operátory
(vyjma operátoru <=>, který se chová normálně) nejsou striktně binární operátory, mohou být fakticky
seskupovány běžným matematickým způsobem, např.: (1<x<=y<5) je platný pravdivostní výraz a znamená
přesně to, co by měl, tj. (1<x a x≤y a y<5)</p></div><div class="note" style="margin-left: 0.5in;
margin-right: 0.5in;"><h3 class="title">Poznámka</h3><p>Unární operátor mínus funguje různými způsoby v
závislosti na tom, kde se vyskytuje. Když se objeví před číslem, váže se přímo k němu. Když se objeví před
výrazem, má slabší vazbu než mocnina a faktoriál. Například <strong
class="userinput"><code>-1^k</code></strong> je ve skutečnosti <strong
class="userinput"><code>(-1)^k</code></strong>, ale <strong
class="userinput"><code>-neco(1)^k</code></strong> je ve skutečnosti <strong class="useri
nput"><code>-(neco(1)^k)</code></strong>. Takže věnujte pozornost tomu, jak je používáte a pokud máte
pochybnosti, raději přidejte závorky.</p></div></div><div class="navfooter"><hr><table width="100%"
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch05s06.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch05.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch06.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Modulární aritmetika
</td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Kapitola 6. Programování s jazykem GEL</td></tr></table></div></body></html>
+</pre><p>Když jsou použita desetinná čísla, například <strong
class="userinput"><code>1.0:0.4:3.0</code></strong>, je výstupem to, co očekáváte, přestože se k 1,0 pětkrát
přidá 0,4, je to jen o něco více než 3,0 z důvodu, jakým jsou desetinná čísla uchována ve dvojkové soustavě
(není to přesně 0,4, ale uložené číslo je obvykle o trochu větší). Způsob, jakým je to zpracováváno, je
stejný jako u cyklu a sčítacích a násobících smyček. Pokud je konec v rámci <strong
class="userinput"><code>2^-20</code></strong>násobku velikosti kroku koncového bodu, je koncový bod použit a
předpokládá se, že nastaly chyby zaokrouhlení. To sice není perfektní, ale řeší to většinu případů. Tato
kontrola se provádí až ve verzi 1.0.18 a novějších, takže provádění vašeho kódu může být ve starších verzích
odlišné. Pokud chcete této záležitosti předejít, používejte opravdová racionální čísla, případn
ě použijte funkci <code class="function">float</code>, když si přejete na konci dostat desetinné číslo.
Například <strong class="userinput"><code>1:2/5:3</code></strong> funguje správně a <strong
class="userinput"><code>float(1:2/5:3)</code></strong> vám poskytne desetinné číslo a přitom to bude nepatrně
přesnější než <strong class="userinput"><code>1.0:0.4:3.0</code></strong>.</p></dd><dt><span
class="term"><strong class="userinput"><code>(a)i</code></strong></span></dt><dd><p>Udělat z <code
class="varname">a</code> imaginární číslo (vynásobit <code class="varname">a</code> imaginární hodnotou <code
class="varname">i</code>). Všimněte si, že normálně se <code class="varname">i</code> zapisuje jako <code
class="varname">1i</code>. Takže předchozí je vlastně ekvivalentní k </p><pre class="programlisting">(a)*1i
+ </pre></dd><dt><span class="term"><strong
class="userinput"><code>`a</code></strong></span></dt><dd><p>Uvozovat identifikátor, kterýžto nebude
vyhodnocen. Nebo uvozovat matici, takže nebude rozšířena.</p></dd><dt><span class="term"><strong
class="userinput"><code>a swapwith b</code></strong></span></dt><dd><p>Přehodit hodnotu proměnné <code
class="varname">a</code> s hodnotou proměnné <code class="varname">b</code>. V současnosti nepracuje s částmi
prvků matice. Vrací <code class="constant">null</code>. Dostupné od verze 1.0.13.</p></dd><dt><span
class="term"><strong class="userinput"><code>increment a</code></strong></span></dt><dd><p>Zvýšit hodnotu
proměnné <code class="varname">a</code> o 1. V případě, že <code class="varname">a</code> je matice, je o 1
zvýšen každý prvek. Dělá to vlastně to stejné co <strong class="userinput"><code>a=a+1</code></strong>,
akorát o něco rychleji. Vrací <code class="constant">null</code>. Dostupné
od verze 1.0.13.</p></dd><dt><span class="term"><strong class="userinput"><code>increment a by
b</code></strong></span></dt><dd><p>Zvýšit hodnotu proměnné <code class="varname">a</code> o <code
class="varname">b</code>. V případě, že <code class="varname">a</code> je matice, je o zvýšen každý prvek.
Dělá to vlastně to stejné co <strong class="userinput"><code>a=a+b</code></strong>, akorát o něco rychleji.
Vrací <code class="constant">null</code>. Dostupné od verze 1.0.13.</p></dd></dl></div><div class="note"
style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Poznámka</h3><p>Operátor @() dává
operátoru : více možností. S ním můžete určovat části matice. Takže a@(2:4,6) jsou řádky 2,3,4 sloupce 6.
Nebo a@(,1:2) vám dá první dva sloupce matice. Do operátoru @() můžete i přiřazovat, stačí když je pravou
hodnotou matice o stejném rozměru jako určená oblast nebo je to jiný typ hodnoty.</p></div><div class="note"
style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Poznámka</h3><p>Porovnávací operátory
(vyjma operátoru <=>, který se chová normálně) nejsou striktně binární operátory, mohou být fakticky
seskupovány běžným matematickým způsobem, např.: (1<x<=y<5) je platný pravdivostní výraz a znamená
přesně to, co by měl, tj. (1<x a x≤y a y<5)</p></div><div class="note" style="margin-left: 0.5in;
margin-right: 0.5in;"><h3 class="title">Poznámka</h3><p>Unární operátor mínus funguje různými způsoby v
závislosti na tom, kde se vyskytuje. Když se objeví před číslem, váže se přímo k němu. Když se objeví před
výrazem, má slabší vazbu než mocnina a faktoriál. Například <strong
class="userinput"><code>-1^k</code></strong> je ve skutečnosti <strong
class="userinput"><code>(-1)^k</code></strong>, ale <strong
class="userinput"><code>-neco(1)^k</code></strong> je ve skutečnosti <strong class="userinpu
t"><code>-(neco(1)^k)</code></strong>. Takže věnujte pozornost tomu, jak je používáte a pokud máte
pochybnosti, raději přidejte závorky.</p></div></div><div class="navfooter"><hr><table width="100%"
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch05s06.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch05.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch06.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Modulární aritmetika
</td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Kapitola 6. Programování s jazykem GEL</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch06s05.html b/help/cs/html/ch06s05.html
index 50dbc67..59bb53e 100644
--- a/help/cs/html/ch06s05.html
+++ b/help/cs/html/ch06s05.html
@@ -1,12 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Globální proměnné a
působnost proměnných</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch06.html" title="Kapitola 6.
Programování s jazykem GEL"><link rel="prev" href="ch06s04.html" title="Porovnávací operátory"><link
rel="next" href="ch06s06.html" title="Proměnné parametrů"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Globální proměnné a působnost proměnných</th></tr><tr><td
width="20%" align="left"><a accesskey="p" href="ch06s04.html">Předcházející</a> </td><th width="60%"
align="center">Kapitola 6. Programování s jazykem GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch06s06.htm
l">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="genius-gel-variables-global"></a>Globální proměnné a působnost
proměnných</h2></div></div></div><p>
- GEL is a
- <a class="ulink" href="https://en.wikipedia.org/wiki/Scope_%28programming%29" target="_top">
- dynamically scoped language</a>. We will explain what this
- means below. That is, normal variables and functions are dynamically
- scoped. The exception are
- <a class="link" href="ch06s06.html" title="Proměnné parametrů">parameter variables</a>,
- which are always global.
- </p><p>Podobně jako většina programovacích jazyků, i GEL má různé typy proměnných. Když je proměnná
normálně definována ve funkci, je viditelná z této funkce a ze všech funkcí, které jsou z ní volány (všechny
kontexty s vyšším číslem). Například předpokládejme, že funkce <code class="function">f</code> definuje
proměnnou <code class="varname">a</code> a pak volá funkci <code class="function">g</code>. Potom se funkce
<code class="function">g</code> může odkazovat na proměnnou <code class="varname">a</code>. Ale jakmile dojde
k návratu z funkce <code class="function">f</code>, platnost <code class="varname">a</code> zaniká. Např.
následují kód vypíše 5. Funkce <code class="function">g</code> nemůže být volána z nejvyšší úrovně (mimo
funkci <code class="function">f</code>, protože proměnná <code class="varname">a</code> pak není definována).
</p><pre class="programlisting">function f() = (a:=5; g());
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Globální proměnné a
působnost proměnných</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch06.html" title="Kapitola 6.
Programování s jazykem GEL"><link rel="prev" href="ch06s04.html" title="Porovnávací operátory"><link
rel="next" href="ch06s06.html" title="Proměnné parametrů"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Globální proměnné a působnost proměnných</th></tr><tr><td
width="20%" align="left"><a accesskey="p" href="ch06s04.html">Předcházející</a> </td><th width="60%"
align="center">Kapitola 6. Programování s jazykem GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch06s06.htm
l">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="genius-gel-variables-global"></a>Globální proměnné a působnost
proměnných</h2></div></div></div><p>GEL je <a class="ulink"
href="https://en.wikipedia.org/wiki/Scope_%28programming%29" target="_top">jazyk s dynamickým rozsahem
platnosti</a>. Co to znamená hned vysvětlíme. Je to to, že normální proměnné a funkce mají dynamicky
vymezenou platnost. Výjimkou jsou <a class="link" href="ch06s06.html" title="Proměnné parametrů">proměnné
parametrů</a>, kterou jsou vždy globální.</p><p>Podobně jako většina programovacích jazyků, i GEL má různé
typy proměnných. Když je proměnná normálně definována ve funkci, je viditelná z této funkce a ze všech
funkcí, které jsou z ní volány (všechny kontexty s vyšším číslem). Například předpokládejme, že funkce <code
class="function">f</code> definuje
proměnnou <code class="varname">a</code> a pak volá funkci <code class="function">g</code>. Potom se funkce
<code class="function">g</code> může odkazovat na proměnnou <code class="varname">a</code>. Ale jakmile dojde
k návratu z funkce <code class="function">f</code>, platnost <code class="varname">a</code> zaniká. Např.
následují kód vypíše 5. Funkce <code class="function">g</code> nemůže být volána z nejvyšší úrovně (mimo
funkci <code class="function">f</code>, protože proměnná <code class="varname">a</code> pak není definována).
</p><pre class="programlisting">function f() = (a:=5; g());
function g() = print(a);
f();
</pre><p>Pokud definujete proměnnou uvnitř funkce, přepíše jinou proměnnou definovanou ve volající funkci.
Například upravíme předchozí kód a napíšeme: </p><pre class="programlisting">function f() = (a:=5; g());
diff --git a/help/cs/html/ch07s02.html b/help/cs/html/ch07s02.html
index 711839c..66c8258 100644
--- a/help/cs/html/ch07s02.html
+++ b/help/cs/html/ch07s02.html
@@ -1,35 +1,14 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Syntaxe v nejvyšší
úrovni</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch07.html" title="Kapitola 7.
Pokročilé programování v jazyce GEL"><link rel="prev" href="ch07.html" title="Kapitola 7. Pokročilé
programování v jazyce GEL"><link rel="next" href="ch07s03.html" title="Vracení funkcí"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table
width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Syntaxe v nejvyšší
úrovni</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch07.html">Předcházející</a> </td><th
width="60%" align="center">Kapitola 7. Pokročilé programování v jazyce GEL</th><td width="20%" align="right">
<a accesskey="n" href="ch07s03.h
tml">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="genius-gel-toplevel-syntax"></a>Syntaxe v nejvyšší
úrovni</h2></div></div></div><p>
- The syntax is slightly different if you enter statements on
- the top level versus when they are inside parentheses or
- inside functions. On the top level, enter acts the same as if
- you press return on the command line. Therefore think of programs
- as just a sequence of lines as if they were entered on the command line.
- In particular, you do not need to enter the separator at the end of the
- line (unless it is of course part of several statements inside
- parentheses). When a statement does not end with a separator on the
- top level, the result is printed after being executed.
- </p><p>
- For example,
- </p><pre class="programlisting">function f(x)=x^2
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Syntaxe v nejvyšší
úrovni</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch07.html" title="Kapitola 7.
Pokročilé programování v jazyce GEL"><link rel="prev" href="ch07.html" title="Kapitola 7. Pokročilé
programování v jazyce GEL"><link rel="next" href="ch07s03.html" title="Vracení funkcí"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table
width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Syntaxe v nejvyšší
úrovni</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch07.html">Předcházející</a> </td><th
width="60%" align="center">Kapitola 7. Pokročilé programování v jazyce GEL</th><td width="20%" align="right">
<a accesskey="n" href="ch07s03.h
tml">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2
class="title" style="clear: both"><a name="genius-gel-toplevel-syntax"></a>Syntaxe v nejvyšší
úrovni</h2></div></div></div><p>Syntaxe se lehce liší, když zadáváte příkazy v nejvyšší úrovni a když jsou
uvnitř závorek nebo uvnitř funkce. Na nejvyšší úrovni zadání funguje stejně, jako když zmáčknete Enter na
příkazovém řádku. Proto uvažujte o programu, jako o sekvenci řádků, které byste zadávali na příkazovém řádku.
Především nepotřebujete zadávat oddělovač na konci řádku (ledaže se jedná o část několika příkazů v
závorkách). Když výraz nekončí na nejvyšší úrovni oddělovačem, bude výsledek vypsán až po
spuštění.</p><p>Například, </p><pre class="programlisting">function f(x)=x^2
f(3)
-</pre><p>
- will print first the result of setting a function (a representation of
- the function, in this case <code class="computeroutput">(`(x)=(x^2))</code>)
- and then the expected 9. To avoid this, enter a separator
- after the function definition.
- </p><pre class="programlisting">function f(x)=x^2;
+</pre><p> vypíše se jako první výsledek nastavení funkce (tj. reprezentaci funkce, v tomto případě <code
class="computeroutput">(`(x)=(x^2))</code>) a teprve pak očekávané číslo 9. Abyste tomu předešli, zadejte za
definici funkce oddělovače. </p><pre class="programlisting">function f(x)=x^2;
f(3)
-</pre><p>
- If you need to put a separator into your function then you have to surround with
- parenthesis. For example:
-</p><pre class="programlisting">function f(x)=(
+</pre><p> Když potřebujete oddělovač použít přímo ve své funkci, musíte ji uzavřít do závorek. Například:
</p><pre class="programlisting">function f(x)=(
y=1;
for j=1 to x do
y = y+j;
y^2
);
-</pre><p>
- </p><p>Následující kód skončí chybou, pokud jej zadáte v nejvyšší úrovni programu, zatímco ve funkci
bude pracovat bez problémů. </p><pre class="programlisting">if Neco() then
+</pre><p>Následující kód skončí chybou, pokud jej zadáte v nejvyšší úrovni programu, zatímco ve funkci bude
pracovat bez problémů. </p><pre class="programlisting">if Neco() then
UdelatNeco()
else
UdelatNecoJineho()
diff --git a/help/cs/html/ch11s04.html b/help/cs/html/ch11s04.html
index 9c76f0b..a5f01d9 100644
--- a/help/cs/html/ch11s04.html
+++ b/help/cs/html/ch11s04.html
@@ -1,28 +1 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Konstanty</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s03.html" title="Parametry"><link rel="next" href="ch11s05.html" title="Práce s čísly"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table
width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Konstanty</th></tr><tr><td
width="20%" align="left"><a accesskey="p" href="ch11s03.html">Předcházející</a> </td><th width="60%"
align="center">Kapitola 11. Seznam funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s05.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="title" st
yle="clear: both"><a name="genius-gel-function-list-constants"></a>Konstanty</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-CatalanConstant"></a>CatalanConstant</span></dt><dd><pre
class="synopsis">CatalanConstant</pre><p>Catalanova konstanta, přibližně 0,915… Je definována jako řada se
členy <strong class="userinput"><code>(-1^k)/((2*k+1)^2)</code></strong>, kde <code class="varname">k</code>
je z intervalu 0 až nekonečno.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Catalan%27s_constant"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/CatalansConstant.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-EulerConstant"></a>EulerConstant</span></dt><dd><pre
class="synopsis">EulerConstant</pre><p>Alternativní názvy: <code class="function">gamma</code></p><p>Eulerova
konstanta gama. Někdy nazývaná také Eulerova-Mascheroniho konstanta.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MascheroniConstant" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/Euler-MascheroniConstant.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-GoldenRatio"></a>GoldenRatio</span></dt><dd><pre
class="synopsis">GoldenRatio</pre><p>Zlatý řez.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Golden_ratio" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/GoldenRatio" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/GoldenRatio.html" target="_top">Mathworld</a>
for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Gravity"></a>Gravity</span></dt><dd><pre
class="synopsis">Gravity</pre><p>Tíhové zrychlení na úrovni moře v metrech za sekundu na druhou. Jedná se o
standardní gravitační konstantu 9,80665. Gravitace v končinách vašeho lesa se může lišit, kvůli jiné
nadmořské výšce a kvůli tomu, že Země není ideálně kulatá a jednolitá.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Standard_gravity"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-e"></a>e</span></dt><dd><pre
class="synopsis">e</pre><p>Základ přirozeného logaritmu. <strong class="userinput"><code>e^x</code></strong>
je exponenciální funkce <a class="link" href="ch11s05.html#gel-function-exp"><code
class="function">exp</code></a>. Hodnota konstanty je přibližně 2,71828182846… Toto číslo bývá někdy nazýváno
Eulerovo, ačkoliv existuje několik čísel rovněž nazývaných Eulerovo. Například konstanta gamma: <a
class="link" href="ch11s04.html#gel-function-EulerConstant"><code
class="function">EulerConstant</code></a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/E_(mathematical_constant)"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/E" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/e.html" target="_top">Mathworld</a> for more
information.
- </p></dd><dt><span class="term"><a name="gel-function-pi"></a>pi</span></dt><dd><pre
class="synopsis">pi</pre><p>Číslo pí, což je poměr obvodu kružnice vůči jejímu průměru. Přibližně to je
3,14159265359…</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Pi" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/Pi" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/Pi.html" target="_top">Mathworld</a> for more
information.
- </p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s03.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s05.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Parametry
</td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Práce s čísly</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Konstanty</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s03.html" title="Parametry"><link rel="next" href="ch11s05.html" title="Práce s čísly"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table
width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Konstanty</th></tr><tr><td
width="20%" align="left"><a accesskey="p" href="ch11s03.html">Předcházející</a> </td><th width="60%"
align="center">Kapitola 11. Seznam funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s05.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="title" st
yle="clear: both"><a name="genius-gel-function-list-constants"></a>Konstanty</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-CatalanConstant"></a>CatalanConstant</span></dt><dd><pre
class="synopsis">CatalanConstant</pre><p>Catalanova konstanta, přibližně 0,915… Je definována jako řada se
členy <strong class="userinput"><code>(-1^k)/((2*k+1)^2)</code></strong>, kde <code class="varname">k</code>
je z intervalu 0 až nekonečno.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/CatalansConstant.html" target="_top">Mathworld</a> (text je v angličtině)
a <a class="ulink" href="https://en.wikipedia.org/wiki/Catalan%27s_constant" target="_top">Wikipedia</a>
(text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-EulerConstant"></a>EulerConstant</span></dt><dd><pre
class="synopsis">EulerConstant</pre><p>Alternativní názvy: <code
class="function">gamma</code></p><p>Eulerova konstanta gama. Někdy nazývaná také Eulerova-Mascheroniho
konstanta.</p><p>Více informací najdete v encyklopediíc <a class="ulink"
href="http://planetmath.org/MascheroniConstant" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/Euler-MascheroniConstant.html" target="_top">Mathworld</a>
(text je v angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Eulerova_konstanta"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-GoldenRatio"></a>GoldenRatio</span></dt><dd><pre
class="synopsis">GoldenRatio</pre><p>Zlatý řez.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/GoldenRatio" target="_top">Planetmath</a> (text je v angličtině),
<a class="ulink" href="http://mathworld.wolfram.com/GoldenRatio.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="
https://cs.wikipedia.org/wiki/Zlat%C3%BD_%C5%99ez" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-Gravity"></a>Gravity</span></dt><dd><pre
class="synopsis">Gravity</pre><p>Tíhové zrychlení na úrovni moře v metrech za sekundu na druhou. Jedná se o
standardní gravitační konstantu 9,80665. Gravitace v končinách vašeho lesa se může lišit, kvůli jiné
nadmořské výšce a kvůli tomu, že Země není ideálně kulatá a jednolitá.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="https://en.wikipedia.org/wiki/Standard_gravity"
target="_top">Wikipedia</a>(text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-e"></a>e</span></dt><dd><pre class="synopsis">e</pre><p>Základ přirozeného logaritmu.
<strong class="userinput"><code>e^x</code></strong> je exponenciální funkce <a class="link"
href="ch11s05.html#gel-function-exp"><code class="function">exp</code></a>. Hodnota konstanty je př
ibližně 2,71828182846… Toto číslo bývá někdy nazýváno Eulerovo, ačkoliv existuje několik čísel rovněž
nazývaných Eulerovo. Například konstanta gamma: <a class="link"
href="ch11s04.html#gel-function-EulerConstant"><code class="function">EulerConstant</code></a>.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://planetmath.org/E"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/e.html" target="_top">Mathworld</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Eulerovo_%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-pi"></a>pi</span></dt><dd><pre class="synopsis">pi</pre><p>Číslo pí, což je poměr obvodu
kružnice vůči jejímu průměru. Přibližně to je 3,14159265359…</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/Pi" target="_top">
Planetmath</a> (text je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/Pi.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/P%C3%AD_%28%C4%8D%C3%ADslo%29"
target="_top">Wikipedia</a>.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%"
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s03.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s05.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Parametry </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Práce s čísly</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s05.html b/help/cs/html/ch11s05.html
index 943fb85..b344f29 100644
--- a/help/cs/html/ch11s05.html
+++ b/help/cs/html/ch11s05.html
@@ -1,44 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Práce s
čísly</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s04.html" title="Konstanty"><link rel="next"
href="ch11s06.html" title="Trigonometrie"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Práce s čísly</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s04.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s06.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class
="title" style="clear: both"><a name="genius-gel-function-list-numeric"></a>Práce s
čísly</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AbsoluteValue"></a>AbsoluteValue</span></dt><dd><pre class="synopsis">AbsoluteValue
(x)</pre><p>Alternativní názvy: <code class="function">abs</code></p><p>Absolutní hodnota čísla <code
class="varname">x</code>, případně modul v případě komplexního čísla <code class="varname">x</code>. U
komplexního čísla to je vlastně vzdálenost <code class="varname">x</code> od počátku. Je to to stejné, jako
<strong class="userinput"><code>|x|</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Absolute_value" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/AbsoluteValue" target="_top">Planetmath (absolute
value)</a>,
- <a class="ulink" href="http://planetmath.org/ModulusOfComplexNumber" target="_top">Planetmath
(modulus)</a>,
- <a class="ulink" href="http://mathworld.wolfram.com/AbsoluteValue.html" target="_top">Mathworld
(absolute value)</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/ComplexModulus.html" target="_top">Mathworld
(complex modulus)</a>
-for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Chop"></a>Chop</span></dt><dd><pre
class="synopsis">Chop (x)</pre><p>Nahrazovat velmi malá čísla nulou.</p></dd><dt><span class="term"><a
name="gel-function-ComplexConjugate"></a>ComplexConjugate</span></dt><dd><pre
class="synopsis">ComplexConjugate (z)</pre><p>Alternativní názvy: <code class="function">conj</code> <code
class="function">Conj</code></p><p>Vypočítá komplexně sdružené číslo ke komplexnímu číslu <code
class="varname">z</code>. Pokud je <code class="varname">z</code> vektor nebo matice, vypočítají se komplexně
sdružená čísla pro všechny prvky.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Complex_conjugate"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-Denominator"></a>Denominator</span></dt><dd><pre class="synopsis">Denominator
(x)</pre><p>Získat jmenovatel racionálního čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Denominator" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a
name="gel-function-FractionalPart"></a>FractionalPart</span></dt><dd><pre class="synopsis">FractionalPart
(x)</pre><p>Vrátit část čísla za desetinnou čárkou.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fractional_part" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Im"></a>Im</span></dt><dd><pre
class="synopsis">Im (z)</pre><p>Alternativní názvy: <code class="function">ImaginaryPart</code></p><p>Vrátit
imaginární část komplexního čísla. Například <strong class="userinput"><code>Re(3+4i)</code></strong> vyplodí
4.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Imaginary_part" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-IntegerQuotient"></a>IntegerQuotient</span></dt><dd><pre class="synopsis">IntegerQuotient
(m,n)</pre><p>Dělit beze zbytku.</p></dd><dt><span class="term"><a
name="gel-function-IsComplex"></a>IsComplex</span></dt><dd><pre class="synopsis">IsComplex
(num)</pre><p>Zkontrolovat, jestli je argument komplexní (ne reálné) číslo. Tím se míní opravdu číslo, které
není reálné. Takže <strong class="userinput"><code>IsComplex(3)</code></strong> vrátí <code
class="constant">false</code>, zatímco <strong class="userinput"><code>IsComplex(3-1i)</code></strong> vrátí
<code class="constant">true</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsComplexRational"></a>IsComplexRational</span></dt><dd><pre
class="synopsis">IsComplexRational (num)</pre><p>Zkontrolovat, zda je argument komplexní racionální číslo.
Tzn., že jak reální, tak imaginární část jsou zadány jako racionální čís
la. Racionálním se samozřejmě myslí, že „není uloženo jako desetinné číslo s plovoucí
čárkou“.</p></dd><dt><span class="term"><a name="gel-function-IsFloat"></a>IsFloat</span></dt><dd><pre
class="synopsis">IsFloat (num)</pre><p>Zkontrolovat, zda je argument reálné desetinné číslo (ne
komplexní).</p></dd><dt><span class="term"><a
name="gel-function-IsGaussInteger"></a>IsGaussInteger</span></dt><dd><pre class="synopsis">IsGaussInteger
(num)</pre><p>Alternativní názvy: <code class="function">IsComplexInteger</code></p><p>Zkontrolovat, jestli
je argument celé komplexní číslo. Celé komplexní číslo je číslo ve tvaru <strong
class="userinput"><code>n+1i*m</code></strong>, kde <code class="varname">n</code> a <code
class="varname">m</code> jsou celá čísla.</p></dd><dt><span class="term"><a
name="gel-function-IsInteger"></a>IsInteger</span></dt><dd><pre class="synopsis">IsInteger
(num)</pre><p>Zkontrolovat, zda je argument celé číslo (ne komp
lexní).</p></dd><dt><span class="term"><a
name="gel-function-IsNonNegativeInteger"></a>IsNonNegativeInteger</span></dt><dd><pre
class="synopsis">IsNonNegativeInteger (num)</pre><p>Zkontrolovat, zda je argument nezáporné reálné celé
číslo. Tj. buď kladné celé číslo nebo nula.</p></dd><dt><span class="term"><a
name="gel-function-IsPositiveInteger"></a>IsPositiveInteger</span></dt><dd><pre
class="synopsis">IsPositiveInteger (num)</pre><p>Alternativní názvy: <code
class="function">IsNaturalNumber</code></p><p>Zkontrolovat, zda je argument kladné reálné celé číslo.
Upozorňujeme, že se řídíme konvencí, že 0 není přirozené číslo.</p></dd><dt><span class="term"><a
name="gel-function-IsRational"></a>IsRational</span></dt><dd><pre class="synopsis">IsRational
(num)</pre><p>Zkontrolovat, zda je argument racionální (ne komplexní) číslo. Racionální samozřejmě prostě
znamená „není uloženo jako desetinné číslo s plovoucí čárkou“.</p></
dd><dt><span class="term"><a name="gel-function-IsReal"></a>IsReal</span></dt><dd><pre
class="synopsis">IsReal (num)</pre><p>Zkontrolovat, zda je argument reálné číslo.</p></dd><dt><span
class="term"><a name="gel-function-Numerator"></a>Numerator</span></dt><dd><pre class="synopsis">Numerator
(x)</pre><p>Získat čitatel racionálního čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Numerator" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a name="gel-function-Re"></a>Re</span></dt><dd><pre
class="synopsis">Re (z)</pre><p>Alternativní názvy: <code class="function">RealPart</code></p><p>Vrátit
reálnou část komplexního čísla. Například <strong class="userinput"><code>Re(3+4i)</code></strong> vyplodí
3.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Real_part" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a name="gel-function-Sign"></a>Sign</span></dt><dd><pre
class="synopsis">Sign (x)</pre><p>Alternativní názvy: <code class="function">sign</code></p><p>Vrátit
znaménko čísla. Konkrétně vrací <code class="literal">-1</code> u záporných čísel, <code
class="literal">0</code> pro nulu a <code class="literal">1</code> u kladných čísel. Pokud je <code
class="varname">x</code> komplexní hodnota, pak <code class="function">Sign</code> vrací směr nebo
0.</p></dd><dt><span class="term"><a name="gel-function-ceil"></a>ceil</span></dt><dd><pre
class="synopsis">ceil (x)</pre><p>Alternativní názvy: <code class="function">Ceiling</code></p><p>Získat
nejnižší celé číslo, které je větší nebo rovno <code class="varname">n</code>. Například: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>ceil(1.1)</code></strong>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Práce s
čísly</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s04.html" title="Konstanty"><link rel="next"
href="ch11s06.html" title="Trigonometrie"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Práce s čísly</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s04.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s06.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class
="title" style="clear: both"><a name="genius-gel-function-list-numeric"></a>Práce s
čísly</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AbsoluteValue"></a>AbsoluteValue</span></dt><dd><pre class="synopsis">AbsoluteValue
(x)</pre><p>Alternativní názvy: <code class="function">abs</code></p><p>Absolutní hodnota čísla <code
class="varname">x</code>, případně modul v případě komplexního čísla <code class="varname">x</code>. U
komplexního čísla to je vlastně vzdálenost <code class="varname">x</code> od počátku. Je to to stejné, jako
<strong class="userinput"><code>|x|</code></strong>.</p><p>Více informací najdete v encyklopedii <a
class="ulink" href="https://cs.wikipedia.org/wiki/Absolutn%C3%AD_hodnota" target="_top">Wikipedia</a>, <a
class="ulink" href="http://planetmath.org/AbsoluteValue" target="_top">Planetmath (absolutní hodnota; text je
v angličtině)</a>, <a class="ulink" hr
ef="http://planetmath.org/ModulusOfComplexNumber" target="_top">Planetmath (absolutní hodnota komplexního
čísla; text je v angličtině)</a>, <a class="ulink" href="http://mathworld.wolfram.com/AbsoluteValue.html"
target="_top">Mathworld (absolutní hodnota; text je v angličtině)</a> a <a class="ulink"
href="http://mathworld.wolfram.com/ComplexModulus.html" target="_top">Mathworld (absolutní hodnota
komplexního čísla; text je v angličtině)</a>.</p></dd><dt><span class="term"><a
name="gel-function-Chop"></a>Chop</span></dt><dd><pre class="synopsis">Chop (x)</pre><p>Nahrazovat velmi malá
čísla nulou.</p></dd><dt><span class="term"><a
name="gel-function-ComplexConjugate"></a>ComplexConjugate</span></dt><dd><pre
class="synopsis">ComplexConjugate (z)</pre><p>Alternativní názvy: <code class="function">conj</code> <code
class="function">Conj</code></p><p>Vypočítá komplexně sdružené číslo ke komplexnímu číslu <code
class="varname">z</code>. Pokud je <code
class="varname">z</code> vektor nebo matice, vypočítají se komplexně sdružená čísla pro všechny
prvky.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Komplexn%C4%9B_sdru%C5%BEen%C3%A9_%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Denominator"></a>Denominator</span></dt><dd><pre class="synopsis">Denominator
(x)</pre><p>Získat jmenovatel racionálního čísla.</p><p>Více informací najdete v encyklopedii <a
class="ulink" href="https://cs.wikipedia.org/wiki/Jmenovatel" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-FractionalPart"></a>FractionalPart</span></dt><dd><pre
class="synopsis">FractionalPart (x)</pre><p>Vrátit část čísla za desetinnou čárkou.</p><p>Více informací
najdete v encyklopedii <a class="ulink" href="https://en.wikipedia.org/wiki/Fractional_part"
target="_top">Wikipedia</a> (text je v angličtině).</p
</dd><dt><span class="term"><a name="gel-function-Im"></a>Im</span></dt><dd><pre class="synopsis">Im
(z)</pre><p>Alternativní názvy: <code class="function">ImaginaryPart</code></p><p>Vrátit imaginární část
komplexního čísla. Například <strong class="userinput"><code>Re(3+4i)</code></strong> vyplodí 4.</p><p>Více
informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Imagin%C3%A1rn%C3%AD_%C4%8D%C3%A1st#Z.C3.A1pis_a_souvisej.C3.ADc.C3.AD_pojmy"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IntegerQuotient"></a>IntegerQuotient</span></dt><dd><pre
class="synopsis">IntegerQuotient (m,n)</pre><p>Dělit beze zbytku.</p></dd><dt><span class="term"><a
name="gel-function-IsComplex"></a>IsComplex</span></dt><dd><pre class="synopsis">IsComplex
(num)</pre><p>Zkontrolovat, jestli je argument komplexní (ne reálné) číslo. Tím se míní opravdu číslo,
které není reálné. Takže <strong class="userin
put"><code>IsComplex(3)</code></strong> vrátí <code class="constant">false</code>, zatímco <strong
class="userinput"><code>IsComplex(3-1i)</code></strong> vrátí <code
class="constant">true</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsComplexRational"></a>IsComplexRational</span></dt><dd><pre
class="synopsis">IsComplexRational (num)</pre><p>Zkontrolovat, zda je argument komplexní racionální číslo.
Tzn., že jak reální, tak imaginární část jsou zadány jako racionální čísla. Racionálním se samozřejmě myslí,
že „není uloženo jako desetinné číslo s plovoucí čárkou“.</p></dd><dt><span class="term"><a
name="gel-function-IsFloat"></a>IsFloat</span></dt><dd><pre class="synopsis">IsFloat
(num)</pre><p>Zkontrolovat, zda je argument reálné desetinné číslo (ne komplexní).</p></dd><dt><span
class="term"><a name="gel-function-IsGaussInteger"></a>IsGaussInteger</span></dt><dd><pre
class="synopsis">IsGaussInteger (num)</pre><p>Al
ternativní názvy: <code class="function">IsComplexInteger</code></p><p>Zkontrolovat, jestli je argument celé
komplexní číslo. Celé komplexní číslo je číslo ve tvaru <strong
class="userinput"><code>n+1i*m</code></strong>, kde <code class="varname">n</code> a <code
class="varname">m</code> jsou celá čísla.</p></dd><dt><span class="term"><a
name="gel-function-IsInteger"></a>IsInteger</span></dt><dd><pre class="synopsis">IsInteger
(num)</pre><p>Zkontrolovat, zda je argument celé číslo (ne komplexní).</p></dd><dt><span class="term"><a
name="gel-function-IsNonNegativeInteger"></a>IsNonNegativeInteger</span></dt><dd><pre
class="synopsis">IsNonNegativeInteger (num)</pre><p>Zkontrolovat, zda je argument nezáporné reálné celé
číslo. Tj. buď kladné celé číslo nebo nula.</p></dd><dt><span class="term"><a
name="gel-function-IsPositiveInteger"></a>IsPositiveInteger</span></dt><dd><pre
class="synopsis">IsPositiveInteger (num)</pre><p>Alternativní názvy: <co
de class="function">IsNaturalNumber</code></p><p>Zkontrolovat, zda je argument kladné reálné celé číslo.
Upozorňujeme, že se řídíme konvencí, že 0 není přirozené číslo.</p></dd><dt><span class="term"><a
name="gel-function-IsRational"></a>IsRational</span></dt><dd><pre class="synopsis">IsRational
(num)</pre><p>Zkontrolovat, zda je argument racionální (ne komplexní) číslo. Racionální samozřejmě prostě
znamená „není uloženo jako desetinné číslo s plovoucí čárkou“.</p></dd><dt><span class="term"><a
name="gel-function-IsReal"></a>IsReal</span></dt><dd><pre class="synopsis">IsReal (num)</pre><p>Zkontrolovat,
zda je argument reálné číslo.</p></dd><dt><span class="term"><a
name="gel-function-Numerator"></a>Numerator</span></dt><dd><pre class="synopsis">Numerator (x)</pre><p>Získat
čitatel racionálního čísla.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/%C4%8Citatel" target="_top"
Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function-Re"></a>Re</span></dt><dd><pre
class="synopsis">Re (z)</pre><p>Alternativní názvy: <code class="function">RealPart</code></p><p>Vrátit
reálnou část komplexního čísla. Například <strong class="userinput"><code>Re(3+4i)</code></strong> vyplodí
3.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Re%C3%A1ln%C3%A1_%C4%8D%C3%A1st#Z.C3.A1pis_a_souvisej.C3.ADc.C3.AD_pojmy"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Sign"></a>Sign</span></dt><dd><pre class="synopsis">Sign (x)</pre><p>Alternativní názvy:
<code class="function">sign</code></p><p>Vrátit znaménko čísla. Konkrétně vrací <code
class="literal">-1</code> u záporných čísel, <code class="literal">0</code> pro nulu a <code
class="literal">1</code> u kladných čísel. Pokud je <code class="varname">x</code> komplexní hodnota, pak
<code class="fun
ction">Sign</code> vrací směr nebo 0.</p></dd><dt><span class="term"><a
name="gel-function-ceil"></a>ceil</span></dt><dd><pre class="synopsis">ceil (x)</pre><p>Alternativní názvy:
<code class="function">Ceiling</code></p><p>Získat nejnižší celé číslo, které je větší nebo rovno <code
class="varname">n</code>. Například: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>ceil(1.1)</code></strong>
= 2
<code class="prompt">genius></code> <strong class="userinput"><code>ceil(-1.1)</code></strong>
= -1
-</pre><p>Měli byste být obezřetní a uvědomit si, že desetinná čísla jsou uchovávána v binární podobě, takže
nemusí mít naprosto přesně tu hodnotu, kterou očekáváte. Například <strong
class="userinput"><code>ceil(420/4.2)</code></strong> vrací 101 a ne 100, jak byste asi očekávali. To je tím,
že 4,2 je ve skutečnosti uloženo jako nepatrně méně než 4,2. Pokud chcete přesné výsledky, použijte
racionální vyjádření <strong class="userinput"><code>42/10</code></strong>.</p></dd><dt><span class="term"><a
name="gel-function-exp"></a>exp</span></dt><dd><pre class="synopsis">exp (x)</pre><p>Exponenciální funkce.
Jedná se o funkci <strong class="userinput"><code>e^x</code></strong>, kde <code class="varname">e</code> je
<a class="link" href="ch11s04.html#gel-function-e">základ přirozeného logaritmu</a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Exponential_function"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/LogarithmFunction" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/ExponentialFunction.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-float"></a>float</span></dt><dd><pre
class="synopsis">float (x)</pre><p>Udělá z čísla desetinné číslo. Tzn., že vrací hodnotu čísla <code
class="varname">x</code> v podobě čísla s plovoucí desetinnou čárkou.</p></dd><dt><span class="term"><a
name="gel-function-floor"></a>floor</span></dt><dd><pre class="synopsis">floor (x)</pre><p>Alternativní
názvy: <code class="function">Floor</code></p><p>Vrátit nejvyšší celé číslo, které je menší nebo rovno <code
class="varname">n</code>.</p></dd><dt><span class="term"><a name="gel-function-ln"></a>ln</span></dt><dd><pre
class="synopsis">ln (x)</pre><p>Přirozený logaritmus, logaritmus o základu <code
class="varname">e</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Natural_logarithm"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/LogarithmFunction" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/NaturalLogarithm.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-log"></a>log</span></dt><dd><pre
class="synopsis">log (x)</pre><pre class="synopsis">log (x,b)</pre><p>Logaritmus <code
class="varname">x</code> o základu <code class="varname">b</code> (v režimu modulární aritmetiky nazýván <a
class="link" href="ch11s07.html#gel-function-DiscreteLog"><code class="function">DiscreteLog</code></a>),
pokud není základ uveden, použije se <a class="link" href="ch11s04.html#gel-function-e"><code
class="varname">e</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-log10"></a>log10</span></dt><dd><pre class="synopsis">log10 (x)</pre><p>Logaritmus čísla
<code class="varname">x</code> o základu 10.</p></dd><dt><span class="term"><a
name="gel-function-log2"></a>log2</span></dt><dd><pre class="synopsis">log2 (x)</pre><p>Alternativní názvy:
<code class="function">lg</code></p><p>Logaritmus čísla <code class="varname">x</code> o základu
2.</p></dd><dt><span class="ter
m"><a name="gel-function-max"></a>max</span></dt><dd><pre class="synopsis">max
(a,argumenty...)</pre><p>Alternativní názvy: <code class="function">Max</code> <code
class="function">Maximum</code></p><p>Vrací maximum z argumentů nebo matice.</p></dd><dt><span
class="term"><a name="gel-function-min"></a>min</span></dt><dd><pre class="synopsis">min
(a,argumenty...)</pre><p>Alternativní názvy: <code class="function">Min</code> <code
class="function">Minimum</code></p><p>Vrátit minimum z argumentů nebo matice.</p></dd><dt><span
class="term"><a name="gel-function-rand"></a>rand</span></dt><dd><pre class="synopsis">rand
(velikost...)</pre><p>Generovat náhodné desetinné číslo z intervalu <code class="literal">[0,1)</code>. Pokud
je zadána velikost, pak se vygeneruje matice (zadána dvě čísla) nebo vektor (zadáno jedno číslo) této
velikosti.</p></dd><dt><span class="term"><a name="gel-function-randint"></a>randint</span></dt><dd><pre
class="synopsis">randint (max
,velikost...)</pre><p>Generovat náhodné číslo z intervalu <code class="literal">[0,max)</code>. Pokud je
zadána velikost, pak se vygeneruje matice (zadána dvě čísla) nebo vektor (zadáno jedno číslo) této velikosti.
Například </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>randint(4)</code></strong>
+</pre><p>Měli byste být obezřetní a uvědomit si, že desetinná čísla jsou uchovávána v binární podobě, takže
nemusí mít naprosto přesně tu hodnotu, kterou očekáváte. Například <strong
class="userinput"><code>ceil(420/4.2)</code></strong> vrací 101 a ne 100, jak byste asi očekávali. To je tím,
že 4,2 je ve skutečnosti uloženo jako nepatrně méně než 4,2. Pokud chcete přesné výsledky, použijte
racionální vyjádření <strong class="userinput"><code>42/10</code></strong>.</p></dd><dt><span class="term"><a
name="gel-function-exp"></a>exp</span></dt><dd><pre class="synopsis">exp (x)</pre><p>Exponenciální funkce.
Jedná se o funkci <strong class="userinput"><code>e^x</code></strong>, kde <code class="varname">e</code> je
<a class="link" href="ch11s04.html#gel-function-e">základ přirozeného logaritmu</a>.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/LogarithmFunction"
target="_top">Planetma
th</a> (text je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/ExponentialFunction.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Exponenci%C3%A1ln%C3%AD_funkce#Exponenci.C3.A1la_o_z.C3.A1kladu_e"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-float"></a>float</span></dt><dd><pre class="synopsis">float (x)</pre><p>Udělá z čísla
desetinné číslo. Tzn., že vrací hodnotu čísla <code class="varname">x</code> v podobě čísla s plovoucí
desetinnou čárkou.</p></dd><dt><span class="term"><a name="gel-function-floor"></a>floor</span></dt><dd><pre
class="synopsis">floor (x)</pre><p>Alternativní názvy: <code class="function">Floor</code></p><p>Vrátit
nejvyšší celé číslo, které je menší nebo rovno <code class="varname">n</code>.</p></dd><dt><span
class="term"><a name="gel-function-ln"></a>ln</span></dt><dd><pre class="synopsis">ln (x)</pr
e><p>Přirozený logaritmus, logaritmus o základu <code class="varname">e</code>.</p><p>Více informací najdete
v encyklopediích <a class="ulink" href="http://planetmath.org/LogarithmFunction" target="_top">Planetmath</a>
(text je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/NaturalLogarithm.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Logaritmus#P.C5.99irozen.C3.BD_logaritmus"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-log"></a>log</span></dt><dd><pre class="synopsis">log (x)</pre><pre class="synopsis">log
(x,b)</pre><p>Logaritmus <code class="varname">x</code> o základu <code class="varname">b</code> (v režimu
modulární aritmetiky nazýván <a class="link" href="ch11s07.html#gel-function-DiscreteLog"><code
class="function">DiscreteLog</code></a>), pokud není základ uveden, použije se <a class="link"
href="ch11s04.html#gel-function-e"
<code class="varname">e</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-log10"></a>log10</span></dt><dd><pre class="synopsis">log10 (x)</pre><p>Logaritmus čísla
<code class="varname">x</code> o základu 10.</p></dd><dt><span class="term"><a
name="gel-function-log2"></a>log2</span></dt><dd><pre class="synopsis">log2 (x)</pre><p>Alternativní názvy:
<code class="function">lg</code></p><p>Logaritmus čísla <code class="varname">x</code> o základu
2.</p></dd><dt><span class="term"><a name="gel-function-max"></a>max</span></dt><dd><pre
class="synopsis">max (a,argumenty...)</pre><p>Alternativní názvy: <code class="function">Max</code> <code
class="function">Maximum</code></p><p>Vrací maximum z argumentů nebo matice.</p></dd><dt><span
class="term"><a name="gel-function-min"></a>min</span></dt><dd><pre class="synopsis">min
(a,argumenty...)</pre><p>Alternativní názvy: <code class="function">Min</code> <code
class="function">Minimum</code></p><p>Vrátit mi
nimum z argumentů nebo matice.</p></dd><dt><span class="term"><a
name="gel-function-rand"></a>rand</span></dt><dd><pre class="synopsis">rand (velikost...)</pre><p>Generovat
náhodné desetinné číslo z intervalu <code class="literal">[0,1)</code>. Pokud je zadána velikost, pak se
vygeneruje matice (zadána dvě čísla) nebo vektor (zadáno jedno číslo) této velikosti.</p></dd><dt><span
class="term"><a name="gel-function-randint"></a>randint</span></dt><dd><pre class="synopsis">randint
(max,velikost...)</pre><p>Generovat náhodné číslo z intervalu <code class="literal">[0,max)</code>. Pokud je
zadána velikost, pak se vygeneruje matice (zadána dvě čísla) nebo vektor (zadáno jedno číslo) této velikosti.
Například </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>randint(4)</code></strong>
= 3
<code class="prompt">genius></code> <strong class="userinput"><code>randint(4,2)</code></strong>
=
diff --git a/help/cs/html/ch11s06.html b/help/cs/html/ch11s06.html
index baf23b5..5422541 100644
--- a/help/cs/html/ch11s06.html
+++ b/help/cs/html/ch11s06.html
@@ -1,34 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Trigonometrie</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s05.html" title="Práce s
čísly"><link rel="next" href="ch11s07.html" title="Teorie čísel"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Trigonometrie</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s05.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s07.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 cla
ss="title" style="clear: both"><a
name="genius-gel-function-list-trigonometry"></a>Trigonometrie</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-acos"></a>acos</span></dt><dd><pre class="synopsis">acos (x)</pre><p>Alternativní názvy:
<code class="function">arccos</code></p><p>Funkce arkus kosinus (inverzní kosinus).</p></dd><dt><span
class="term"><a name="gel-function-acosh"></a>acosh</span></dt><dd><pre class="synopsis">acosh
(x)</pre><p>Alternativní názvy: <code class="function">arccosh</code></p><p>Funkce arkus hyperbolický kosinus
(inverzní cosh).</p></dd><dt><span class="term"><a name="gel-function-acot"></a>acot</span></dt><dd><pre
class="synopsis">acot (x)</pre><p>Alternativní názvy: <code class="function">arccot</code></p><p>Funkce arkus
kotangens (inverzní kotangens).</p></dd><dt><span class="term"><a
name="gel-function-acoth"></a>acoth</span></dt><dd><pre class="synopsis">acoth (x)</pre
<p>Alternativní názvy: <code class="function">arccoth</code></p><p>Funkce arkus hyperbolický kotangens
(inverzní coth).</p></dd><dt><span class="term"><a name="gel-function-acsc"></a>acsc</span></dt><dd><pre
class="synopsis">acsc (x)</pre><p>Alternativní názvy: <code class="function">arccsc</code></p><p>Funkce
inverzní kosekans.</p></dd><dt><span class="term"><a
name="gel-function-acsch"></a>acsch</span></dt><dd><pre class="synopsis">acsch (x)</pre><p>Alternativní
názvy: <code class="function">arccsch</code></p><p>Funkce inverzní hyperbolický kosekans.</p></dd><dt><span
class="term"><a name="gel-function-asec"></a>asec</span></dt><dd><pre class="synopsis">asec
(x)</pre><p>Alternativní názvy: <code class="function">arcsec</code></p><p>Funkce inverzní
sekans.</p></dd><dt><span class="term"><a name="gel-function-asech"></a>asech</span></dt><dd><pre
class="synopsis">asech (x)</pre><p>Alternativní názvy: <code class="function">arcsech</code></p><p>Funkce
inverzn�
� hyperbolický sekans.</p></dd><dt><span class="term"><a
name="gel-function-asin"></a>asin</span></dt><dd><pre class="synopsis">asin (x)</pre><p>Alternativní názvy:
<code class="function">arcsin</code></p><p>Funkce arkus sinus (inverzní sinus).</p></dd><dt><span
class="term"><a name="gel-function-asinh"></a>asinh</span></dt><dd><pre class="synopsis">asinh
(x)</pre><p>Alternativní názvy: <code class="function">arcsinh</code></p><p>Funkce arkus hyperbolický sinus
(inverzní sinh).</p></dd><dt><span class="term"><a name="gel-function-atan"></a>atan</span></dt><dd><pre
class="synopsis">atan (x)</pre><p>Alternativní názvy: <code class="function">arctan</code></p><p>Vypočítat
funkce arkus tangens (inverzní tangens).</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Arctangent" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/InverseTangent.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-atanh"></a>atanh</span></dt><dd><pre
class="synopsis">atanh (x)</pre><p>Alternativní názvy: <code class="function">arctanh</code></p><p>Funkce
arkus hyperbolický tangens (inverzní tanh).</p></dd><dt><span class="term"><a
name="gel-function-atan2"></a>atan2</span></dt><dd><pre class="synopsis">atan2 (y, x)</pre><p>Alternativní
názvy: <code class="function">arctan2</code></p><p>Vypočítat funkci arctan2. Jestliže je <strong
class="userinput"><code>x>0</code></strong>, pak vrací <strong
class="userinput"><code>atan(y/x)</code></strong>. Jestliže je <strong
class="userinput"><code>x<0</code></strong>, vrací <strong class="userinput"><code>sign(y) * (pi -
atan(|y/x|)</code></strong>. A při <strong class="userinput"><code>x=0</code></strong> vrací <strong
class="userinput"><code>sign(y) *
- pi/2</code></strong>. Volání <strong class="userinput"><code>atan2(0,0)</code></strong> vrací 0
namísto selhání.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Atan2" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/InverseTangent.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-cos"></a>cos</span></dt><dd><pre
class="synopsis">cos (x)</pre><p>Vypočítat funkci kosinus.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trigonometric_functions"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry"
target="_top">Planetmath</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-cosh"></a>cosh</span></dt><dd><pre
class="synopsis">cosh (x)</pre><p>Vypočítat funkci hyperbolický kosinus.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce"
target="_top">Wikipedia</a> a <a class="ulink" href="http://planetmath.org/HyperbolicFunctions"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-cot"></a>cot</span></dt><dd><pre class="synopsis">cot (x)</pre><p>Funkce kotangens.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trigonometric_functions"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry"
target="_top">Planetmath</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-coth"></a>coth</span></dt><dd><pre
class="synopsis">coth (x)</pre><p>Funkce hyperbolický kotangens.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce"
target="_top">Wikipedia</a> a <a class="ulink" href="http://planetmath.org/HyperbolicFunctions"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-csc"></a>csc</span></dt><dd><pre class="synopsis">csc (x)</pre><p>Funkce kosekans.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trigonometric_functions"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry"
target="_top">Planetmath</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-csch"></a>csch</span></dt><dd><pre
class="synopsis">csch (x)</pre><p>Funkce hyperbolický kosekans.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a
<a class="ulink" href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-sec"></a>sec</span></dt><dd><pre
class="synopsis">sec (x)</pre><p>Funkce sekans.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trigonometric_functions"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry"
target="_top">Planetmath</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-sech"></a>sech</span></dt><dd><pre
class="synopsis">sech (x)</pre><p>Funkce hyperbolický sekans.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a
<a class="ulink" href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-sin"></a>sin</span></dt><dd><pre
class="synopsis">sin (x)</pre><p>Vypočítat funkci sinus.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trigonometric_functions"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry"
target="_top">Planetmath</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-sinh"></a>sinh</span></dt><dd><pre
class="synopsis">sinh (x)</pre><p>Vypočítat funkci hyperbolický sinus.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce"
target="_top">Wikipedia</a> a <a class="ulink" href="http://planetmath.org/HyperbolicFunctions"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-tan"></a>tan</span></dt><dd><pre class="synopsis">tan (x)</pre><p>Vypočítat funkci
tangens.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trigonometric_functions"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry"
target="_top">Planetmath</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-tanh"></a>tanh</span></dt><dd><pre
class="synopsis">tanh (x)</pre><p>Funkce hyperbolický tangens.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a
<a class="ulink" href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
angličtině).</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s05.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s07.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Práce s
čísly </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign=
"top"> Teorie čísel</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Trigonometrie</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s05.html" title="Práce s
čísly"><link rel="next" href="ch11s07.html" title="Teorie čísel"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Trigonometrie</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s05.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s07.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 cla
ss="title" style="clear: both"><a
name="genius-gel-function-list-trigonometry"></a>Trigonometrie</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-acos"></a>acos</span></dt><dd><pre class="synopsis">acos (x)</pre><p>Alternativní názvy:
<code class="function">arccos</code></p><p>Funkce arkus kosinus (inverzní kosinus).</p></dd><dt><span
class="term"><a name="gel-function-acosh"></a>acosh</span></dt><dd><pre class="synopsis">acosh
(x)</pre><p>Alternativní názvy: <code class="function">arccosh</code></p><p>Funkce arkus hyperbolický kosinus
(inverzní cosh).</p></dd><dt><span class="term"><a name="gel-function-acot"></a>acot</span></dt><dd><pre
class="synopsis">acot (x)</pre><p>Alternativní názvy: <code class="function">arccot</code></p><p>Funkce arkus
kotangens (inverzní kotangens).</p></dd><dt><span class="term"><a
name="gel-function-acoth"></a>acoth</span></dt><dd><pre class="synopsis">acoth (x)</pre
<p>Alternativní názvy: <code class="function">arccoth</code></p><p>Funkce arkus hyperbolický kotangens
(inverzní coth).</p></dd><dt><span class="term"><a name="gel-function-acsc"></a>acsc</span></dt><dd><pre
class="synopsis">acsc (x)</pre><p>Alternativní názvy: <code class="function">arccsc</code></p><p>Funkce
inverzní kosekans.</p></dd><dt><span class="term"><a
name="gel-function-acsch"></a>acsch</span></dt><dd><pre class="synopsis">acsch (x)</pre><p>Alternativní
názvy: <code class="function">arccsch</code></p><p>Funkce inverzní hyperbolický kosekans.</p></dd><dt><span
class="term"><a name="gel-function-asec"></a>asec</span></dt><dd><pre class="synopsis">asec
(x)</pre><p>Alternativní názvy: <code class="function">arcsec</code></p><p>Funkce inverzní
sekans.</p></dd><dt><span class="term"><a name="gel-function-asech"></a>asech</span></dt><dd><pre
class="synopsis">asech (x)</pre><p>Alternativní názvy: <code class="function">arcsech</code></p><p>Funkce
inverzn�
� hyperbolický sekans.</p></dd><dt><span class="term"><a
name="gel-function-asin"></a>asin</span></dt><dd><pre class="synopsis">asin (x)</pre><p>Alternativní názvy:
<code class="function">arcsin</code></p><p>Funkce arkus sinus (inverzní sinus).</p></dd><dt><span
class="term"><a name="gel-function-asinh"></a>asinh</span></dt><dd><pre class="synopsis">asinh
(x)</pre><p>Alternativní názvy: <code class="function">arcsinh</code></p><p>Funkce arkus hyperbolický sinus
(inverzní sinh).</p></dd><dt><span class="term"><a name="gel-function-atan"></a>atan</span></dt><dd><pre
class="synopsis">atan (x)</pre><p>Alternativní názvy: <code class="function">arctan</code></p><p>Vypočítat
funkce arkus tangens (inverzní tangens).</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/InverseTangent.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="https://cs.wikipedia.org/wiki/Arkus_tangens" target="_top
">Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function-atanh"></a>atanh</span></dt><dd><pre
class="synopsis">atanh (x)</pre><p>Alternativní názvy: <code class="function">arctanh</code></p><p>Funkce
arkus hyperbolický tangens (inverzní tanh).</p></dd><dt><span class="term"><a
name="gel-function-atan2"></a>atan2</span></dt><dd><pre class="synopsis">atan2 (y, x)</pre><p>Alternativní
názvy: <code class="function">arctan2</code></p><p>Vypočítat funkci arctan2. Jestliže je <strong
class="userinput"><code>x>0</code></strong>, pak vrací <strong
class="userinput"><code>atan(y/x)</code></strong>. Jestliže je <strong
class="userinput"><code>x<0</code></strong>, vrací <strong class="userinput"><code>sign(y) * (pi -
atan(|y/x|)</code></strong>. A při <strong class="userinput"><code>x=0</code></strong> vrací <strong
class="userinput"><code>sign(y) *
+ pi/2</code></strong>. Volání <strong class="userinput"><code>atan2(0,0)</code></strong> vrací 0
namísto selhání.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/InverseTangent.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="https://cs.wikipedia.org/wiki/Arctg2" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-cos"></a>cos</span></dt><dd><pre class="synopsis">cos
(x)</pre><p>Vypočítat funkci kosinus.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/DefinitionsInTrigonometry" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-cosh"></a>cosh</span></dt><dd><pre
class="synopsis">cosh (x)</pre><p>Vypočítat funkci hyperbolický kosinus.</p>
<p>Více informací najdete v encyklopediích <a class="ulink"
href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-cot"></a>cot</span></dt><dd><pre
class="synopsis">cot (x)</pre><p>Funkce kotangens.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce" target="_top">Wikipedia</a> a <a
class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-coth"></a>coth</span></dt><dd><pre
class="synopsis">coth (x)</pre><p>Funkce hyperbolický kotangens.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="
_top">Wikipedia</a> a <a class="ulink" href="http://planetmath.org/HyperbolicFunctions"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-csc"></a>csc</span></dt><dd><pre class="synopsis">csc (x)</pre><p>Funkce
kosekans.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/DefinitionsInTrigonometry" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-csch"></a>csch</span></dt><dd><pre
class="synopsis">csch (x)</pre><p>Funkce hyperbolický kosekans.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a
<a class="ulink" href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
anglič
tině).</p></dd><dt><span class="term"><a name="gel-function-sec"></a>sec</span></dt><dd><pre
class="synopsis">sec (x)</pre><p>Funkce sekans.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce" target="_top">Wikipedia</a> a <a
class="ulink" href="http://planetmath.org/DefinitionsInTrigonometry" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-sech"></a>sech</span></dt><dd><pre
class="synopsis">sech (x)</pre><p>Funkce hyperbolický sekans.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a
<a class="ulink" href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-sin"></a>sin</span></dt><dd><pre
class="synopsis">sin (x)</pre><p>Vypočítat
funkci sinus.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://cs.wikipedia.org/wiki/Goniometrick%C3%A1_funkce" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/DefinitionsInTrigonometry" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-sinh"></a>sinh</span></dt><dd><pre
class="synopsis">sinh (x)</pre><p>Vypočítat funkci hyperbolický sinus.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce"
target="_top">Wikipedia</a> a <a class="ulink" href="http://planetmath.org/HyperbolicFunctions"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-tan"></a>tan</span></dt><dd><pre class="synopsis">tan (x)</pre><p>Vypočítat funkci
tangens.</p><p>Více informací najdete v encyklopediích <a class="ulink" href="https://cs.wikipedia.org/wiki
/Goniometrick%C3%A1_funkce" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/DefinitionsInTrigonometry" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-tanh"></a>tanh</span></dt><dd><pre
class="synopsis">tanh (x)</pre><p>Funkce hyperbolický tangens.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://cs.wikipedia.org/wiki/Hyperbolick%C3%A9_funkce" target="_top">Wikipedia</a> a
<a class="ulink" href="http://planetmath.org/HyperbolicFunctions" target="_top">Planetmath</a> (text je v
angličtině).</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s05.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s07.html">Další</a></td></tr><tr><
td width="40%" align="left" valign="top">Práce s čísly </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top"> Teorie
čísel</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s07.html b/help/cs/html/ch11s07.html
index b6c32fd..69f1416 100644
--- a/help/cs/html/ch11s07.html
+++ b/help/cs/html/ch11s07.html
@@ -1,71 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Teorie
čísel</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s06.html" title="Trigonometrie"><link rel="next"
href="ch11s08.html" title="Práce s maticemi"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Teorie čísel</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s06.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s08.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 c
lass="title" style="clear: both"><a name="genius-gel-function-list-number-theory"></a>Teorie
čísel</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AreRelativelyPrime"></a>AreRelativelyPrime</span></dt><dd><pre
class="synopsis">AreRelativelyPrime (a,b)</pre><p>Jsou reálná celá čísla <code class="varname">a</code> a
<code class="varname">b</code> nesoudělná? Vrací <code class="constant">true</code> nebo <code
class="constant">false</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/RelativelyPrime" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/RelativelyPrime.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Nesoud%C4%9Bln%C3%A1_%C4%8D%C3%ADsla"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function
-BernoulliNumber"></a>BernoulliNumber</span></dt><dd><pre class="synopsis">BernoulliNumber
(n)</pre><p>Vrátit <code class="varname">n</code>-té Bernoulliho číslo.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bernoulli_number"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/BernoulliNumber.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-ChineseRemainder"></a>ChineseRemainder</span></dt><dd><pre
class="synopsis">ChineseRemainder (a,m)</pre><p>Alternativní názvy: <code
class="function">CRT</code></p><p>Najít pomocí čínské věty o zbytcích <code class="varname">x</code>, které
řeší systém zadaný vektorem <code class="varname">a</code>, a zbytky prvků <code
class="varname">m</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Chinese_remainder_theorem"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/ChineseRemainderTheorem"
target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/ChineseRemainderTheorem.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-CombineFactorizations"></a>CombineFactorizations</span></dt><dd><pre
class="synopsis">CombineFactorizations (a,b)</pre><p>Jsou-li dány dva rozklady, vrátit rozklad (faktorizaci)
součinu.</p><p>Viz <a class="link"
href="ch11s07.html#gel-function-Factorize">Factorize</a>.</p></dd><dt><span class="term"><a
name="gel-function-ConvertFromBase"></a>ConvertFromBase</span></dt><dd><pre class="synopsis">ConvertFromBase
(v,b)</pre><p>Převést vektor hodnot udávajících mocniny <code class="varname">b</code> na
číslo.</p></dd><dt><span class="term"><a
name="gel-function-ConvertToBase"></a>ConvertToBase</span></dt><dd><pre class="synopsis">ConvertToBase
(n,b)</pre><p>Převést číslo na vektor mocnin prvků o základu <code
class="varname">b</code>.</p></dd><dt><span class="term"><a
name="gel-function-DiscreteLog"></a>DiscreteLog</span></dt><dd><pre class="synopsis">DiscreteLog
(n,b,q)</pre><p>Najít diskrétní logaritmu
s <code class="varname">n</code> o základu <code class="varname">b</code> v F<sub>q</sub>, konečné grupě
řádu <code class="varname">q</code>, kde <code class="varname">q</code> je prvočíslo, pomocí
Silverova-Pohligova-Hellmanova algoritmu.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Discrete_logarithm"
target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/DiscreteLogarithm" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/DiscreteLogarithm.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Divides"></a>Divides</span></dt><dd><pre
class="synopsis">Divides (m,n)</pre><p>Zkontrolovat dělitelnost (zda <code class="varname">m</code> dělí
<code class="varname">n</code>).</p></dd><dt><span class="term"><a
name="gel-function-EulerPhi"></a>EulerPhi</span></dt><dd><pre class="synopsis">EulerPhi (n)</pre><p>Spočítat
Eulerovu funkci fí pro <code class="varname">n</code>, to je počet celých čísel mezi 1 a <code
class="varname">n</code>, relativně prvočíselných vůči <code class="varname">n</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Euler_phi" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/EulerPhifunction" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/TotientFunction.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-ExactDivision"></a>ExactDivision</span></dt><dd><pre class="synopsis">ExactDivision
(n,d)</pre><p>Vrátit <strong class="userinput"><code>n/d</code></strong>, ale jen pokud <code
class="varname">d</code> dělí <code class="varname">n</code>. Pokud <code class="varname">d</code> nedělí
<code class="varname">n</code>, vrací funkce nesmysly. Pro velmi velká čísla je to rychlejší než operace
<strong class="userinput"><code>n/d</code></strong>, ale je to samozřejmě použitelné jen v případě, kdy
přesně víte, co dělíte.</p></dd><dt><span class="term"><a
name="gel-function-Factorize"></a>Factorize</span></dt><dd><pre class="synopsis">Factorize (n)</pre><p>Vrátit
rozklad (faktorizaci) čísla jako matici. První řádek jsou prvočísla v rozkladu (včetně 1) a druhý řádek jsou
mocnitelé. Takže například </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code
Factorize(11*11*13)</code></strong>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Teorie
čísel</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s06.html" title="Trigonometrie"><link rel="next"
href="ch11s08.html" title="Práce s maticemi"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Teorie čísel</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s06.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s08.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 c
lass="title" style="clear: both"><a name="genius-gel-function-list-number-theory"></a>Teorie
čísel</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AreRelativelyPrime"></a>AreRelativelyPrime</span></dt><dd><pre
class="synopsis">AreRelativelyPrime (a,b)</pre><p>Jsou reálná celá čísla <code class="varname">a</code> a
<code class="varname">b</code> nesoudělná? Vrací <code class="constant">true</code> nebo <code
class="constant">false</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/RelativelyPrime" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/RelativelyPrime.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Nesoud%C4%9Bln%C3%A1_%C4%8D%C3%ADsla"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function
-BernoulliNumber"></a>BernoulliNumber</span></dt><dd><pre class="synopsis">BernoulliNumber
(n)</pre><p>Vrátit <code class="varname">n</code>-té Bernoulliho číslo.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Bernoulli_number"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink"
href="http://mathworld.wolfram.com/BernoulliNumber.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-ChineseRemainder"></a>ChineseRemainder</span></dt><dd><pre
class="synopsis">ChineseRemainder (a,m)</pre><p>Alternativní názvy: <code
class="function">CRT</code></p><p>Najít pomocí čínské věty o zbytcích <code class="varname">x</code>, které
řeší systém zadaný vektorem <code class="varname">a</code>, a zbytky prvků <code
class="varname">m</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/ChineseR
emainderTheorem" target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/ChineseRemainderTheorem.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/%C4%8C%C3%ADnsk%C3%A1_v%C4%9Bta_o_zbytc%C3%ADch"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-CombineFactorizations"></a>CombineFactorizations</span></dt><dd><pre
class="synopsis">CombineFactorizations (a,b)</pre><p>Jsou-li dány dva rozklady, vrátit rozklad (faktorizaci)
součinu.</p><p>Viz <a class="link"
href="ch11s07.html#gel-function-Factorize">Factorize</a>.</p></dd><dt><span class="term"><a
name="gel-function-ConvertFromBase"></a>ConvertFromBase</span></dt><dd><pre class="synopsis">ConvertFromBase
(v,b)</pre><p>Převést vektor hodnot udávajících mocniny <code class="varname">b</code> na
číslo.</p></dd><dt><span class="term"><a name="gel-function-ConvertToBase"></a>Con
vertToBase</span></dt><dd><pre class="synopsis">ConvertToBase (n,b)</pre><p>Převést číslo na vektor mocnin
prvků o základu <code class="varname">b</code>.</p></dd><dt><span class="term"><a
name="gel-function-DiscreteLog"></a>DiscreteLog</span></dt><dd><pre class="synopsis">DiscreteLog
(n,b,q)</pre><p>Najít diskrétní logaritmus <code class="varname">n</code> o základu <code
class="varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code class="varname">q</code>, kde <code
class="varname">q</code> je prvočíslo, pomocí Silverova-Pohligova-Hellmanova algoritmu.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/DiscreteLogarithm"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/DiscreteLogarithm.html" target="_top">Mathworld</a> (text je v angličtině)
a <a class="ulink" href="https://cs.wikipedia.org/wiki/Diskr%C3%A9tn%C3%AD_logaritmus" target="_top">Wikipe
dia</a>.</p></dd><dt><span class="term"><a name="gel-function-Divides"></a>Divides</span></dt><dd><pre
class="synopsis">Divides (m,n)</pre><p>Zkontrolovat dělitelnost (zda <code class="varname">m</code> dělí
<code class="varname">n</code>).</p></dd><dt><span class="term"><a
name="gel-function-EulerPhi"></a>EulerPhi</span></dt><dd><pre class="synopsis">EulerPhi (n)</pre><p>Spočítat
Eulerovu funkci fí pro <code class="varname">n</code>, to je počet celých čísel mezi 1 a <code
class="varname">n</code>, relativně prvočíselných vůči <code class="varname">n</code>.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/EulerPhifunction"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/TotientFunction.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="https://cs.wikipedia.org/wiki/Eulerova_funkce"
target="_top">Wikipedia</a>.</p></dd><dt>
<span class="term"><a name="gel-function-ExactDivision"></a>ExactDivision</span></dt><dd><pre
class="synopsis">ExactDivision (n,d)</pre><p>Vrátit <strong class="userinput"><code>n/d</code></strong>, ale
jen pokud <code class="varname">d</code> dělí <code class="varname">n</code>. Pokud <code
class="varname">d</code> nedělí <code class="varname">n</code>, vrací funkce nesmysly. Pro velmi velká čísla
je to rychlejší než operace <strong class="userinput"><code>n/d</code></strong>, ale je to samozřejmě
použitelné jen v případě, kdy přesně víte, co dělíte.</p></dd><dt><span class="term"><a
name="gel-function-Factorize"></a>Factorize</span></dt><dd><pre class="synopsis">Factorize (n)</pre><p>Vrátit
rozklad (faktorizaci) čísla jako matici. První řádek jsou prvočísla v rozkladu (včetně 1) a druhý řádek jsou
mocnitelé. Takže například </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>Factorize(11*11
*13)</code></strong>
=
[1 11 13
- 1 2 1]</pre><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Factorization" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Factors"></a>Factors</span></dt><dd><pre
class="synopsis">Factors (n)</pre><p>Vrátit všechny činitele čísla <code class="varname">n</code> jako
vektor. Součástí jsou i neprvočíselní činitelé, což zahrnuje také 1 a přímo ono číslo. Takže například pro
výpis všech dokonalých čísel (to jsou taková, která jsou součtem všech svých činitelů) až do 1000 můžete
udělat toto (je to však značně neefektivní) </p><pre class="programlisting">for n=1 to 1000 do (
+ 1 2 1]</pre><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Faktorizace" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-Factors"></a>Factors</span></dt><dd><pre class="synopsis">Factors
(n)</pre><p>Vrátit všechny činitele čísla <code class="varname">n</code> jako vektor. Součástí jsou i
neprvočíselní činitelé, což zahrnuje také 1 a přímo ono číslo. Takže například pro výpis všech dokonalých
čísel (to jsou taková, která jsou součtem všech svých činitelů) až do 1000 můžete udělat toto (je to však
značně neefektivní) </p><pre class="programlisting">for n=1 to 1000 do (
if MatrixSum (Factors(n)) == 2*n then
print(n)
)
-</pre></dd><dt><span class="term"><a
name="gel-function-FermatFactorization"></a>FermatFactorization</span></dt><dd><pre
class="synopsis">FermatFactorization (n,pokusy)</pre><p>Zkusit Fermatův rozklad <code
class="varname">n</code> na <strong class="userinput"><code>(t-s)*(t+s)</code></strong>. Pokud to je možné,
vrací <code class="varname">t</code> a <code class="varname">s</code> jako vektor, jinak vrací <code
class="constant">null</code>. Argument <code class="varname">pokusy</code> určuje počet pokusu, než se
výpočet vzdá.</p><p>Jedná se o docela dobrý rozklad za předpokladu, že je vaše číslo součinem dvou přibližně
stejně velkých čísel.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fermat_factorization"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-FindPrimitiveElementMod"></a>FindPrimitiveElementMod</span></dt><dd><pre
class="synopsis">FindPrimitiveElementMod (q)</pre><p>Najít první primitivní prvek v F<sub>q</sub>, konečné
grupě řádu <code class="varname">q</code>. Je samozřejmé, že <code class="varname">q</code> musí být
prvočíslo.</p></dd><dt><span class="term"><a
name="gel-function-FindRandomPrimitiveElementMod"></a>FindRandomPrimitiveElementMod</span></dt><dd><pre
class="synopsis">FindRandomPrimitiveElementMod (q)</pre><p>Najít náhodný primitivní prvek v F<sub>q</sub>,
konečné grupě řádu <code class="varname">q</code>. Je samozřejmé, že <code class="varname">q</code> musí být
prvočíslo.</p></dd><dt><span class="term"><a
name="gel-function-IndexCalculus"></a>IndexCalculus</span></dt><dd><pre class="synopsis">IndexCalculus
(n,b,q,S)</pre><p>Spočítat diskrétní logaritmus <code class="varname">n</code> o základu <code class="
varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code class="varname">q</code> (<code
class="varname">q</code> prvočíslo) pomocí faktorizační báze <code class="varname">S</code>. <code
class="varname">S</code> by měl být sloupec prvočísel, pokud možno s druhým sloupcem předpočítaným pomocí <a
class="link" href="ch11s07.html#gel-function-IndexCalculusPrecalculation"><code
class="function">IndexCalculusPrecalculation</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-IndexCalculusPrecalculation"></a>IndexCalculusPrecalculation</span></dt><dd><pre
class="synopsis">IndexCalculusPrecalculation (b,q,S)</pre><p>Provést přípravný krok výpočtu funkce <a
class="link" href="ch11s07.html#gel-function-IndexCalculus"><code class="function">IndexCalculus</code></a>
pro logaritmy o základu <code class="varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code
class="varname">q</code> (<code class="varname">q</code> prvočíslo), pro fa
ktorizační bázi <code class="varname">S</code> (kde <code class="varname">S</code> je sloupcový vektor
prvočísel). Logaritmy budou předpočítány a vráceny v druhém sloupci.</p></dd><dt><span class="term"><a
name="gel-function-IsEven"></a>IsEven</span></dt><dd><pre class="synopsis">IsEven (n)</pre><p>Otestovat, zda
je celé číslo sudé.</p></dd><dt><span class="term"><a
name="gel-function-IsMersennePrimeExponent"></a>IsMersennePrimeExponent</span></dt><dd><pre
class="synopsis">IsMersennePrimeExponent (p)</pre><p>Zjistit, jestli je kladné celé číslo <code
class="varname">p</code> Mersennovo prvočíslo. Tj. zda 2<sup>p</sup>-1 je prvočíslo. Provádí se to hledáním v
tabulce známých hodnot, která je relativně krátká. Viz také <a class="link"
href="ch11s07.html#gel-function-MersennePrimeExponents">MersennePrimeExponents</a> a <a class="link"
href="ch11s07.html#gel-function-LucasLehmer">LucasLehmer</a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Mersenne_prime" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/MersenneNumbers" target="_top">Planetmath</a>,
- <a class="ulink" href="http://mathworld.wolfram.com/MersennePrime.html"
target="_top">Mathworld</a> or
- <a class="ulink" href="http://www.mersenne.org/" target="_top">GIMPS</a>
- for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-IsNthPower"></a>IsNthPower</span></dt><dd><pre class="synopsis">IsNthPower
(m,n)</pre><p>Zjistit, jestli je racionální číslo <code class="varname">m</code> perfektní <code
class="varname">n</code>-tou mocninou . Viz také <a class="link"
href="ch11s07.html#gel-function-IsPerfectPower">IsPerfectPower</a> a <a class="link"
href="ch11s07.html#gel-function-IsPerfectSquare">IsPerfectSquare</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsOdd"></a>IsOdd</span></dt><dd><pre class="synopsis">IsOdd (n)</pre><p>Otestovat, zda je
celé číslo liché.</p></dd><dt><span class="term"><a
name="gel-function-IsPerfectPower"></a>IsPerfectPower</span></dt><dd><pre class="synopsis">IsPerfectPower
(n)</pre><p>Zkontrolovat, zda je celé číslo perfekntí mocninou a<sup>b</sup>.</p></dd><dt><span
class="term"><a name="gel-function-IsPerfectSquare"></a>IsPerfectSquare</span></dt><dd><pre
class="synopsis">IsPerfectSquare (n)<
/pre><p>
- Check an integer for being a perfect square of an integer. The number must
- be an integer. Negative integers are of course never perfect
- squares of integers.
- </p></dd><dt><span class="term"><a name="gel-function-IsPrime"></a>IsPrime</span></dt><dd><pre
class="synopsis">IsPrime (n)</pre><p>Testuje prvočíselnost celých čísel, pro čísla menší než 2.5e10 je
odpověď deterministická (tedy pokud je Riemannova hypotéza platná). Pro větší čísla závisí falešné kladné
odpovědi na <a class="link" href="ch11s03.html#gel-function-IsPrimeMillerRabinReps"><code
class="function">IsPrimeMillerRabinReps</code></a>. Což znamená, že pravděpodobnost nesprávné kladné odpovědi
je ¼ umocněná na <code class="function">IsPrimeMillerRabinReps</code>. Výchozí hodnota 22 dává
pravděpodobnost zhruba 5.7e-14.</p><p>Když je vráceno <code class="constant">false</code>, můžete si být
jisti, že se jedná o složené číslo. Jestliže si potřebujete být absolutně jistí, že máte prvočíslo, můžete
použít funkci <a class="link" href="ch11s07.html#gel-function-MillerRabinTestSure"><code class="function">Mil
lerRabinTestSure</code></a>, ale může to trvat trochu déle.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/PrimeNumber" target="_top">Planetmath</a> (text je v angličtině),
<a class="ulink" href="http://mathworld.wolfram.com/PrimeNumber.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsPrimitiveMod"></a>IsPrimitiveMod</span></dt><dd><pre class="synopsis">IsPrimitiveMod
(g,q)</pre><p>Zkontrolovat, zda je <code class="varname">g</code> primitivní v F<sub>q</sub>, konečné grupě
řádu <code class="varname">q</code>, kde <code class="varname">q</code> je prvočíslo. Pokud <code
class="varname">q</code> není prvočíslo, jsou výsledky nesmyslné.</p></dd><dt><span class="term"><a
name="gel-function-IsPrimitiveModWithPrimeFactors"></a>IsPrimitiveModWithPrime
Factors</span></dt><dd><pre class="synopsis">IsPrimitiveModWithPrimeFactors (g,q,f)</pre><p>Zkontrolovat,
zda je <code class="varname">g</code> primitivní v F<sub>q</sub>, konečné grupě řádu <code
class="varname">q</code>, kde <code class="varname">q</code> je prvočíslo a <code class="varname">f</code> je
vektor prvočíselných činitelů <code class="varname">q</code>-1. Pokud <code class="varname">q</code> není
prvočíslo, jsou výsledky nesmyslné.</p></dd><dt><span class="term"><a
name="gel-function-IsPseudoprime"></a>IsPseudoprime</span></dt><dd><pre class="synopsis">IsPseudoprime
(n,b)</pre><p>Zda je <code class="varname">n</code> pseudoprvočíslo o základu <code class="varname">b</code>,
ale ne prvočíslo, tj. jestli <strong class="userinput"><code>b^(n-1) == 1 mod n</code></strong>. Volá se
funkce <a class="link" href="ch11s07.html#gel-function-PseudoprimeTest"><code
class="function">PseudoprimeTest</code></a>.</p></dd><dt><span class="term"><a name="g
el-function-IsStrongPseudoprime"></a>IsStrongPseudoprime</span></dt><dd><pre
class="synopsis">IsStrongPseudoprime (n,b)</pre><p>Zjistit, zda je <code class="varname">n</code> silné
pseudoprvočíslo o základu <code class="varname">b</code>, ale ne prvočíslo.</p></dd><dt><span class="term"><a
name="gel-function-Jacobi"></a>Jacobi</span></dt><dd><pre class="synopsis">Jacobi (a,b)</pre><p>Alternativní
názvy: <code class="function">JacobiSymbol</code></p><p>Spočítat Jacobiho symbol (a/b) (b by mělo být
liché).</p></dd><dt><span class="term"><a
name="gel-function-JacobiKronecker"></a>JacobiKronecker</span></dt><dd><pre class="synopsis">JacobiKronecker
(a,b)</pre><p>Alternativní názvy: <code class="function">JacobiKroneckerSymbol</code></p><p>Spočítat Jacobiho
symbol (a/b) s Kroneckerovým rozšířením (a/2)=(2/a), když <code class="varname">a</code> je liché, nebo
(a/2)=0, když <code class="varname">a</code> je sudé.</p></dd><dt><span class="term"><a name="ge
l-function-LeastAbsoluteResidue"></a>LeastAbsoluteResidue</span></dt><dd><pre
class="synopsis">LeastAbsoluteResidue (a,n)</pre><p>Vrátit zbytek <code class="varname">a</code> mod <code
class="varname">n</code> s nejmenší absolutní hodnotou (v intervalu -n/2 až n/2).</p></dd><dt><span
class="term"><a name="gel-function-Legendre"></a>Legendre</span></dt><dd><pre class="synopsis">Legendre
(a,p)</pre><p>Alternativní názvy: <code class="function">LegendreSymbol</code></p><p>Spočítat Legendrův
symbol (a/p).</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/LegendreSymbol" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/LegendreSymbol.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Legendre%C5%AFv_symbol"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function-LucasLehmer"></a>Luc
asLehmer</span></dt><dd><pre class="synopsis">LucasLehmer (p)</pre><p>Zjistit pomocí Lucasova-Lehmerova
testu, zda je 2<sup>p</sup>-1 Mersennovo prvočíslo. Viz také <a class="link"
href="ch11s07.html#gel-function-MersennePrimeExponents">MersennePrimeExponents</a> a <a class="link"
href="ch11s07.html#gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test"
target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/LucasLhemer" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/Lucas-LehmerTest.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-LucasNumber"></a>LucasNumber</span></dt><dd><pre class="synopsis">LucasNumber
(n)</pre><p>Vrátit <code class="varname">n</code>-té Lucasovo číslo.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Lucas_number" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/LucasNumbers" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/LucasNumber.html" target="_top">Mathworld</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MaximalPrimePowerFactors"></a>MaximalPrimePowerFactors</span></dt><dd><pre
class="synopsis">MaximalPrimePowerFactors (n)</pre><p>Vrátit všechny maximální mocniny prvočísel v rozkladu
čísla.</p></dd><dt><span class="term"><a
name="gel-function-MersennePrimeExponents"></a>MersennePrimeExponents</span></dt><dd><pre
class="synopsis">MersennePrimeExponents</pre><p>Vektor se známými exponenty Mersennových prvočísel, což je
seznam kladných celých čísel <code class="varname">p</code> takových, že 2<sup>p</sup>-1 je prvočíslo. Viz
také <a class="link" href="ch11s07.html#gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</a> a
<a class="link" href="ch11s07.html#gel-function-LucasLehmer">LucasLehmer</a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Mersenne_prime" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/MersenneNumbers" target="_top">Planetmath</a>,
- <a class="ulink" href="http://mathworld.wolfram.com/MersennePrime.html"
target="_top">Mathworld</a> or
- <a class="ulink" href="http://www.mersenne.org/" target="_top">GIMPS</a>
- for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MillerRabinTest"></a>MillerRabinTest</span></dt><dd><pre class="synopsis">MillerRabinTest
(n,opak)</pre><p>Použít Millerův-Rabinův test prvočíselnosti na <code class="varname">n</code>, <code
class="varname">opak</code> udává kolikrát. Pravděpodobnost falešné kladné odpovědi je <strong
class="userinput"><code>(1/4)^opak</code></strong>. Pravděpodobně je obvykle lepší použít funkci <a
class="link" href="ch11s07.html#gel-function-IsPrime"><code class="function">IsPrime</code></a>, protože je
rychlejší a lepší u menších celých čísel.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MillerRabinPrimeTest" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MillerRabinTestSure"></a>MillerRabinTestSure</span></dt><dd><pre
class="synopsis">MillerRabinTestSure (n)</pre><p>Použít Millerův-Rabinův test prvočíselnosti na <code
class="varname">n</code> s tolika bázemi, že za předpokladu zobecněné Riemannovy hypotézy je výsledek
deterministický.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test"
target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/MillerRabinPrimeTest" target="_top">Planetmath</a>,
or
- <a class="ulink" href="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-ModInvert"></a>ModInvert</span></dt><dd><pre
class="synopsis">ModInvert (n,m)</pre><p>Vrátit převrácenou hodnotu n mod m.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="http://mathworld.wolfram.com/ModularInverse.html"
target="_top">Mathworld</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MoebiusMu"></a>MoebiusMu</span></dt><dd><pre class="synopsis">MoebiusMu (n)</pre><p>Vrátit
Möbiovu funkci μ vyhodnocenu na <code class="varname">n</code>. Což znamená, že vrátí 0 v případě, že <code
class="varname">n</code> není součin různých prvočísel, a <strong
class="userinput"><code>(-1)^k</code></strong> v případě, že je součin <code class="varname">k</code> různých
prvočísel.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/MoebiusFunction" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/MoebiusFunction.html" target="_top">Mathworld</a> (text je
v angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/M%C3%B6biova_funkce"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-NextPrime"></a>NextPrime</span></dt><dd><pre class="synopsis">NextPrime (n)</pre><p>Vrátit
nejmenší prvočíslo větší než <code class="varname">n</code>. Záporná prvočísla jsou považována za prvočísla,
takže předchozí prvočíslo můžete získat jako <strong
class="userinput"><code>-NextPrime(-n)</code></strong>.</p><p>Tato funkce používá funkci <code
class="function">mpz_nextprime</code> z knihovny GMP, která zase používá pravděpodobnostní Millerův-Rabinův
test (viz také <a class="link" href="ch11s07.html#gel-function-MillerRabinTest"><code
class="function">MillerRabinTest</code></a>). Pravděpodobnost falešné kladné odpovědi není nastavitelná, ale
je dostateč
ně malá pro praktické účely.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/PrimeNumber" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/PrimeNumber.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-PadicValuation"></a>PadicValuation</span></dt><dd><pre class="synopsis">PadicValuation
(n,p)</pre><p>Vrátit p-adické ohodnocení (počet koncových nul v základu <code
class="varname">p</code>).</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/P-adic_order" target="_top">Wikipedia</a> (text je v angličtině) a <a
class="ulink" href="http://planetmath.org/PAdicValuation" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="ter
m"><a name="gel-function-PowerMod"></a>PowerMod</span></dt><dd><pre class="synopsis">PowerMod
(a,b,m)</pre><p>Spočítat <strong class="userinput"><code>a^b mod m</code></strong>. <code
class="varname">b</code>-tá mocnina čísla <code class="varname">a</code> modulo <code
class="varname">m</code>. Tuto funkci není nutné používat, protože se automaticky použije v režimu modulární
aritmetiky. Z tohoto důvodu je <strong class="userinput"><code>a^b mod m</code></strong> stejně
rychlé.</p></dd><dt><span class="term"><a name="gel-function-Prime"></a>Prime</span></dt><dd><pre
class="synopsis">Prime (n)</pre><p>Alternativní názvy: <code class="function">prime</code></p><p>Vrátit <code
class="varname">n</code>-té prvočíslo (až do limitu).</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/PrimeNumber" target="_top">Planetmath</a> (text je v angličtině),
<a class="ulink" href="http://mathworld.wolfram.com/PrimeNumber.ht
ml" target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-PrimeFactors"></a>PrimeFactors</span></dt><dd><pre
class="synopsis">PrimeFactors (n)</pre><p>Vrátit v podobě vektoru všechny prvočinitele čísla.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/PrimeFactor.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://mathworld.wolfram.com/PrimeFactor.html" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-PseudoprimeTest"></a>PseudoprimeTest</span></dt><dd><pre class="synopsis">PseudoprimeTest
(n,b)</pre><p>Test pseudoprvočíselnosti, vrací <code class="constant">true</code> když a jen když <strong
class="userinput"><code>b^(n-1) == 1 mod n</code></strong>.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://planetmath.org/Pseudoprime"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/Pseudoprime.html" target="_top">Mathworld</a> (text je v angličtině) a <a
class="ulink" href="http://cs.wikipedia.org/wiki/Pseudoprvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-RemoveFactor"></a>RemoveFactor</span></dt><dd><pre class="synopsis">RemoveFactor
(n,m)</pre><p>Odstranit všechny instance činitele <code class="varname">m</code> z čísla <code
class="varname">n</code>. Prakticky to znamená, že je poděleno nejvyšší mocninou čísla <code
class="varname">m</code>, která je dělitelem <code class="varname">n</code>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/Divisibility" target="_top">Planetmath</a> (text
je v angličtině), <a class="ulink" href="http:/
/mathworld.wolfram.com/Factor.html" target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/D%C4%9Blitelnost" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a
name="gel-function-SilverPohligHellmanWithFactorization"></a>SilverPohligHellmanWithFactorization</span></dt><dd><pre
class="synopsis">SilverPohligHellmanWithFactorization (n,b,q,f)</pre><p>Najít diskrétní logaritmus <code
class="varname">n</code> o základu <code class="varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code
class="varname">q</code>, kde <code class="varname">q</code> je prvočíslo, pomocí
Silverova-Pohligova-Hellmanova algoritmu, dané <code class="varname">f</code> je rozkladem <code
class="varname">q</code>-1.</p></dd><dt><span class="term"><a
name="gel-function-SqrtModPrime"></a>SqrtModPrime</span></dt><dd><pre class="synopsis">SqrtModPrime
(n,p)</pre><p>Najít druhou odmocninu z <code class="varname">n</code> modulo <c
ode class="varname">p</code> (kde <code class="varname">p</code> je prvočíslo). Pokud není kvadratickým
zbytkem, je vráceno null.</p><p>Více informací najdete v encyklopedicíh <a class="ulink"
href="http://planetmath.org/QuadraticResidue" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://mathworld.wolfram.com/QuadraticResidue.html" target="_top">Mathworld</a> (text je
v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-StrongPseudoprimeTest"></a>StrongPseudoprimeTest</span></dt><dd><pre
class="synopsis">StrongPseudoprimeTest (n,b)</pre><p>Spustit silný test pseudoprvočíselnosti o základu <code
class="varname">b</code> na <code class="varname">n</code>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/StrongPseudoprime" target="_top">Planetmath</a> (text je v
angličtině), <a class="ulink" href="http://mathworld.wolfram.com/StrongPseudoprime.html" target="_top">Math
world</a> (text je v angličtině) a <a class="ulink" href="https://en.wikipedia.org/wiki/Strong_pseudoprime"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-gcd"></a>gcd</span></dt><dd><pre class="synopsis">gcd
(a,argumenty...)</pre><p>Alternativní názvy: <code class="function">GCD</code></p><p>Největší společný
dělitel celých čísel. V seznamu argumentů můžete uvést libovolný počet celých čísel, nebo je můžete zadat
jako vektor nebo matici celých čísel. Pokud zadáte více než jednu matici stejné velikosti, bude největší
společný dělitel určen prvek po prvku.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/GreatestCommonDivisor" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/GreatestCommonDivisor.html" target="_top">Mathworld</a>
(text je v angličtině) a <a class="ulink" href=
"https://cs.wikipedia.org/wiki/Nejv%C4%9Bt%C5%A1%C3%AD_spole%C4%8Dn%C3%BD_d%C4%9Blitel"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-lcm"></a>lcm</span></dt><dd><pre class="synopsis">lcm
(a,argumenty...)</pre><p>Alternativní názvy: <code class="function">LCM</code></p><p>Nejmenší společný
násobek celých čísel. V seznamu argumentů můžete uvést libovolný počet celých čísel, nebo je můžete zadat
jako vektor nebo matici celých čísel. Pokud zadáte více než jednu matici stejné velikosti, bude nejmenší
společný násobek určen prvek po prvku.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/LeastCommonMultiple" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/LeastCommonMultiple.html" target="_top">Mathworld</a> (text
je v angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Nejmen%C5%A1%C3%AD_spo
le%C4%8Dn%C3%BD_n%C3%A1sobek" target="_top">Wikipedia</a>.</p></dd></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a
accesskey="p" href="ch11s06.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s08.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Trigonometrie </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Práce s maticemi</td></tr></table></div></body></html>
+</pre></dd><dt><span class="term"><a
name="gel-function-FermatFactorization"></a>FermatFactorization</span></dt><dd><pre
class="synopsis">FermatFactorization (n,pokusy)</pre><p>Zkusit Fermatův rozklad <code
class="varname">n</code> na <strong class="userinput"><code>(t-s)*(t+s)</code></strong>. Pokud to je možné,
vrací <code class="varname">t</code> a <code class="varname">s</code> jako vektor, jinak vrací <code
class="constant">null</code>. Argument <code class="varname">pokusy</code> určuje počet pokusu, než se
výpočet vzdá.</p><p>Jedná se o docela dobrý rozklad za předpokladu, že je vaše číslo součinem dvou přibližně
stejně velkých čísel.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Fermat_factorization" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-FindPrimitiveElementMod"></a>FindPrimitiveElementMod</span></dt><dd><pre class="synop
sis">FindPrimitiveElementMod (q)</pre><p>Najít první primitivní prvek v F<sub>q</sub>, konečné grupě řádu
<code class="varname">q</code>. Je samozřejmé, že <code class="varname">q</code> musí být
prvočíslo.</p></dd><dt><span class="term"><a
name="gel-function-FindRandomPrimitiveElementMod"></a>FindRandomPrimitiveElementMod</span></dt><dd><pre
class="synopsis">FindRandomPrimitiveElementMod (q)</pre><p>Najít náhodný primitivní prvek v F<sub>q</sub>,
konečné grupě řádu <code class="varname">q</code>. Je samozřejmé, že <code class="varname">q</code> musí být
prvočíslo.</p></dd><dt><span class="term"><a
name="gel-function-IndexCalculus"></a>IndexCalculus</span></dt><dd><pre class="synopsis">IndexCalculus
(n,b,q,S)</pre><p>Spočítat diskrétní logaritmus <code class="varname">n</code> o základu <code
class="varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code class="varname">q</code> (<code
class="varname">q</code> prvočíslo) pomocí
faktorizační báze <code class="varname">S</code>. <code class="varname">S</code> by měl být sloupec
prvočísel, pokud možno s druhým sloupcem předpočítaným pomocí <a class="link"
href="ch11s07.html#gel-function-IndexCalculusPrecalculation"><code
class="function">IndexCalculusPrecalculation</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-IndexCalculusPrecalculation"></a>IndexCalculusPrecalculation</span></dt><dd><pre
class="synopsis">IndexCalculusPrecalculation (b,q,S)</pre><p>Provést přípravný krok výpočtu funkce <a
class="link" href="ch11s07.html#gel-function-IndexCalculus"><code class="function">IndexCalculus</code></a>
pro logaritmy o základu <code class="varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code
class="varname">q</code> (<code class="varname">q</code> prvočíslo), pro faktorizační bázi <code
class="varname">S</code> (kde <code class="varname">S</code> je sloupcový vektor prvočísel). Logaritmy budou
před
počítány a vráceny v druhém sloupci.</p></dd><dt><span class="term"><a
name="gel-function-IsEven"></a>IsEven</span></dt><dd><pre class="synopsis">IsEven (n)</pre><p>Otestovat, zda
je celé číslo sudé.</p></dd><dt><span class="term"><a
name="gel-function-IsMersennePrimeExponent"></a>IsMersennePrimeExponent</span></dt><dd><pre
class="synopsis">IsMersennePrimeExponent (p)</pre><p>Zjistit, jestli je kladné celé číslo <code
class="varname">p</code> Mersennovo prvočíslo. Tj. zda 2<sup>p</sup>-1 je prvočíslo. Provádí se to hledáním v
tabulce známých hodnot, která je relativně krátká. Viz také <a class="link"
href="ch11s07.html#gel-function-MersennePrimeExponents">MersennePrimeExponents</a> a <a class="link"
href="ch11s07.html#gel-function-LucasLehmer">LucasLehmer</a>.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="http://planetmath.org/MersenneNumbers" target="_top">Planetmath</a> (text je v
angličtině), <a class="ulink" href="h
ttp://mathworld.wolfram.com/MersennePrime.html" target="_top">Mathworld</a> (text je v angličtině), <a
class="ulink" href="http://www.mersenne.org/" target="_top">GIMPS</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Mersennovo_prvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsNthPower"></a>IsNthPower</span></dt><dd><pre class="synopsis">IsNthPower
(m,n)</pre><p>Zjistit, jestli je racionální číslo <code class="varname">m</code> perfektní <code
class="varname">n</code>-tou mocninou . Viz také <a class="link"
href="ch11s07.html#gel-function-IsPerfectPower">IsPerfectPower</a> a <a class="link"
href="ch11s07.html#gel-function-IsPerfectSquare">IsPerfectSquare</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsOdd"></a>IsOdd</span></dt><dd><pre class="synopsis">IsOdd (n)</pre><p>Otestovat, zda je
celé číslo liché.</p></dd><dt><span class="term"><a name="gel-function-IsPe
rfectPower"></a>IsPerfectPower</span></dt><dd><pre class="synopsis">IsPerfectPower (n)</pre><p>Zkontrolovat,
zda je celé číslo perfekntí mocninou a<sup>b</sup>.</p></dd><dt><span class="term"><a
name="gel-function-IsPerfectSquare"></a>IsPerfectSquare</span></dt><dd><pre class="synopsis">IsPerfectSquare
(n)</pre><p>Zkontrolovat, zda je celé číslo perfektní druhou mocninou celého čísla. Číslo musí být celé
číslo. Záporná celá čísla samozřejmě perfektními druhými mocninami celých čísel být
nemohou.</p></dd><dt><span class="term"><a name="gel-function-IsPrime"></a>IsPrime</span></dt><dd><pre
class="synopsis">IsPrime (n)</pre><p>Testuje prvočíselnost celých čísel, pro čísla menší než 2.5e10 je
odpověď deterministická (tedy pokud je Riemannova hypotéza platná). Pro větší čísla závisí falešné kladné
odpovědi na <a class="link" href="ch11s03.html#gel-function-IsPrimeMillerRabinReps"><code
class="function">IsPrimeMillerRabinRep
s</code></a>. Což znamená, že pravděpodobnost nesprávné kladné odpovědi je ¼ umocněná na <code
class="function">IsPrimeMillerRabinReps</code>. Výchozí hodnota 22 dává pravděpodobnost zhruba
5.7e-14.</p><p>Když je vráceno <code class="constant">false</code>, můžete si být jisti, že se jedná o
složené číslo. Jestliže si potřebujete být absolutně jistí, že máte prvočíslo, můžete použít funkci <a
class="link" href="ch11s07.html#gel-function-MillerRabinTestSure"><code
class="function">MillerRabinTestSure</code></a>, ale může to trvat trochu déle.</p><p>Více informací najdete
v encyklopediích <a class="ulink" href="http://planetmath.org/PrimeNumber" target="_top">Planetmath</a> (text
je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/PrimeNumber.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo" target="_top">Wikipedia</a>.</p></dd><
dt><span class="term"><a name="gel-function-IsPrimitiveMod"></a>IsPrimitiveMod</span></dt><dd><pre
class="synopsis">IsPrimitiveMod (g,q)</pre><p>Zkontrolovat, zda je <code class="varname">g</code> primitivní
v F<sub>q</sub>, konečné grupě řádu <code class="varname">q</code>, kde <code class="varname">q</code> je
prvočíslo. Pokud <code class="varname">q</code> není prvočíslo, jsou výsledky nesmyslné.</p></dd><dt><span
class="term"><a
name="gel-function-IsPrimitiveModWithPrimeFactors"></a>IsPrimitiveModWithPrimeFactors</span></dt><dd><pre
class="synopsis">IsPrimitiveModWithPrimeFactors (g,q,f)</pre><p>Zkontrolovat, zda je <code
class="varname">g</code> primitivní v F<sub>q</sub>, konečné grupě řádu <code class="varname">q</code>, kde
<code class="varname">q</code> je prvočíslo a <code class="varname">f</code> je vektor prvočíselných činitelů
<code class="varname">q</code>-1. Pokud <code class="varname">q</code> není prvočíslo, jsou výsledky nesmys
lné.</p></dd><dt><span class="term"><a
name="gel-function-IsPseudoprime"></a>IsPseudoprime</span></dt><dd><pre class="synopsis">IsPseudoprime
(n,b)</pre><p>Zda je <code class="varname">n</code> pseudoprvočíslo o základu <code class="varname">b</code>,
ale ne prvočíslo, tj. jestli <strong class="userinput"><code>b^(n-1) == 1 mod n</code></strong>. Volá se
funkce <a class="link" href="ch11s07.html#gel-function-PseudoprimeTest"><code
class="function">PseudoprimeTest</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-IsStrongPseudoprime"></a>IsStrongPseudoprime</span></dt><dd><pre
class="synopsis">IsStrongPseudoprime (n,b)</pre><p>Zjistit, zda je <code class="varname">n</code> silné
pseudoprvočíslo o základu <code class="varname">b</code>, ale ne prvočíslo.</p></dd><dt><span class="term"><a
name="gel-function-Jacobi"></a>Jacobi</span></dt><dd><pre class="synopsis">Jacobi (a,b)</pre><p>Alternativní
názvy: <code class="function">JacobiSymbol</code></p>
<p>Spočítat Jacobiho symbol (a/b) (b by mělo být liché).</p></dd><dt><span class="term"><a
name="gel-function-JacobiKronecker"></a>JacobiKronecker</span></dt><dd><pre class="synopsis">JacobiKronecker
(a,b)</pre><p>Alternativní názvy: <code class="function">JacobiKroneckerSymbol</code></p><p>Spočítat Jacobiho
symbol (a/b) s Kroneckerovým rozšířením (a/2)=(2/a), když <code class="varname">a</code> je liché, nebo
(a/2)=0, když <code class="varname">a</code> je sudé.</p></dd><dt><span class="term"><a
name="gel-function-LeastAbsoluteResidue"></a>LeastAbsoluteResidue</span></dt><dd><pre
class="synopsis">LeastAbsoluteResidue (a,n)</pre><p>Vrátit zbytek <code class="varname">a</code> mod <code
class="varname">n</code> s nejmenší absolutní hodnotou (v intervalu -n/2 až n/2).</p></dd><dt><span
class="term"><a name="gel-function-Legendre"></a>Legendre</span></dt><dd><pre class="synopsis">Legendre
(a,p)</pre><p>Alternativní názvy: <code class="function">Legendre
Symbol</code></p><p>Spočítat Legendrův symbol (a/p).</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/LegendreSymbol" target="_top">Planetmath</a> (text je v
angličtině), <a class="ulink" href="http://mathworld.wolfram.com/LegendreSymbol.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Legendre%C5%AFv_symbol" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-LucasLehmer"></a>LucasLehmer</span></dt><dd><pre
class="synopsis">LucasLehmer (p)</pre><p>Zjistit pomocí Lucasova-Lehmerova testu, zda je 2<sup>p</sup>-1
Mersennovo prvočíslo. Viz také <a class="link"
href="ch11s07.html#gel-function-MersennePrimeExponents">MersennePrimeExponents</a> a <a class="link"
href="ch11s07.html#gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</a>.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="https://en.wikipe
dia.org/wiki/Lucas%E2%80%93Lehmer_primality_test" target="_top">Wikipedia</a> (text je v angličtině), <a
class="ulink" href="http://planetmath.org/LucasLhemer" target="_top">Planetmath</a> (text je v angličtině) a
<a class="ulink" href="http://mathworld.wolfram.com/Lucas-LehmerTest.html" target="_top">Mathworld</a> (text
je v agličtině).</p></dd><dt><span class="term"><a
name="gel-function-LucasNumber"></a>LucasNumber</span></dt><dd><pre class="synopsis">LucasNumber
(n)</pre><p>Vrátit <code class="varname">n</code>-té Lucasovo číslo.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Lucas_number" target="_top">Wikipedia</a>
(text je v angličtině), <a class="ulink" href="http://planetmath.org/LucasNumbers"
target="_top">Planetmath</a> (text je v angličtině) a <a class="ulink"
href="http://mathworld.wolfram.com/LucasNumber.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"
<a name="gel-function-MaximalPrimePowerFactors"></a>MaximalPrimePowerFactors</span></dt><dd><pre
class="synopsis">MaximalPrimePowerFactors (n)</pre><p>Vrátit všechny maximální mocniny prvočísel v rozkladu
čísla.</p></dd><dt><span class="term"><a
name="gel-function-MersennePrimeExponents"></a>MersennePrimeExponents</span></dt><dd><pre
class="synopsis">MersennePrimeExponents</pre><p>Vektor se známými exponenty Mersennových prvočísel, což je
seznam kladných celých čísel <code class="varname">p</code> takových, že 2<sup>p</sup>-1 je prvočíslo. Viz
také <a class="link" href="ch11s07.html#gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</a> a
<a class="link" href="ch11s07.html#gel-function-LucasLehmer">LucasLehmer</a>.</p><p>Více informací najdete
v encyklopediích <a class="ulink" href="http://planetmath.org/MersenneNumbers" target="_top">Planetmath</a>
(text je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/MersennePri
me.html" target="_top">Mathworld</a> (text je v angličtině), <a class="ulink"
href="http://www.mersenne.org/" target="_top">GIMPS</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Mersennovo_prvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-MillerRabinTest"></a>MillerRabinTest</span></dt><dd><pre class="synopsis">MillerRabinTest
(n,opak)</pre><p>Použít Millerův-Rabinův test prvočíselnosti na <code class="varname">n</code>, <code
class="varname">opak</code> udává kolikrát. Pravděpodobnost falešné kladné odpovědi je <strong
class="userinput"><code>(1/4)^opak</code></strong>. Pravděpodobně je obvykle lepší použít funkci <a
class="link" href="ch11s07.html#gel-function-IsPrime"><code class="function">IsPrime</code></a>, protože je
rychlejší a lepší u menších celých čísel.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.or
g/MillerRabinPrimeTest" target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html" target="_top">Mathworld</a> (text
je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Miller%C5%AFv-Rabin%C5%AFv_test_prvo%C4%8D%C3%ADselnosti"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-MillerRabinTestSure"></a>MillerRabinTestSure</span></dt><dd><pre
class="synopsis">MillerRabinTestSure (n)</pre><p>Použít Millerův-Rabinův test prvočíselnosti na <code
class="varname">n</code> s tolika bázemi, že za předpokladu zobecněné Riemannovy hypotézy je výsledek
deterministický.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/MillerRabinPrimeTest" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html" target=
"_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Miller%C5%AFv-Rabin%C5%AFv_test_prvo%C4%8D%C3%ADselnosti"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-ModInvert"></a>ModInvert</span></dt><dd><pre class="synopsis">ModInvert
(n,m)</pre><p>Vrátit převrácenou hodnotu n mod m.</p><p>Více informací najdete v encyklopedii <a
class="ulink" href="http://mathworld.wolfram.com/ModularInverse.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MoebiusMu"></a>MoebiusMu</span></dt><dd><pre class="synopsis">MoebiusMu (n)</pre><p>Vrátit
Möbiovu funkci μ vyhodnocenu na <code class="varname">n</code>. Což znamená, že vrátí 0 v případě, že <code
class="varname">n</code> není součin různých prvočísel, a <strong
class="userinput"><code>(-1)^k</code></strong> v případě, že je součin <code class="varname">k</code> různý
ch prvočísel.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/MoebiusFunction" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/MoebiusFunction.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/M%C3%B6biova_funkce"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-NextPrime"></a>NextPrime</span></dt><dd><pre class="synopsis">NextPrime (n)</pre><p>Vrátit
nejmenší prvočíslo větší než <code class="varname">n</code>. Záporná prvočísla jsou považována za prvočísla,
takže předchozí prvočíslo můžete získat jako <strong
class="userinput"><code>-NextPrime(-n)</code></strong>.</p><p>Tato funkce používá funkci <code
class="function">mpz_nextprime</code> z knihovny GMP, která zase používá pravděpodobnostní Millerův-Rabinův
test (viz také <a class="link"
href="ch11s07.html#gel-function-MillerRabinTest"><code class="function">MillerRabinTest</code></a>).
Pravděpodobnost falešné kladné odpovědi není nastavitelná, ale je dostatečně malá pro praktické
účely.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/PrimeNumber" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/PrimeNumber.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-PadicValuation"></a>PadicValuation</span></dt><dd><pre class="synopsis">PadicValuation
(n,p)</pre><p>Vrátit p-adické ohodnocení (počet koncových nul v základu <code
class="varname">p</code>).</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/P-adic_order" target="_top">W
ikipedia</a> (text je v angličtině) a <a class="ulink" href="http://planetmath.org/PAdicValuation"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-PowerMod"></a>PowerMod</span></dt><dd><pre class="synopsis">PowerMod
(a,b,m)</pre><p>Spočítat <strong class="userinput"><code>a^b mod m</code></strong>. <code
class="varname">b</code>-tá mocnina čísla <code class="varname">a</code> modulo <code
class="varname">m</code>. Tuto funkci není nutné používat, protože se automaticky použije v režimu modulární
aritmetiky. Z tohoto důvodu je <strong class="userinput"><code>a^b mod m</code></strong> stejně
rychlé.</p></dd><dt><span class="term"><a name="gel-function-Prime"></a>Prime</span></dt><dd><pre
class="synopsis">Prime (n)</pre><p>Alternativní názvy: <code class="function">prime</code></p><p>Vrátit <code
class="varname">n</code>-té prvočíslo (až do limitu).</p><p>Více informací najdete v encyklopedi
ích <a class="ulink" href="http://planetmath.org/PrimeNumber" target="_top">Planetmath</a> (text je v
angličtině), <a class="ulink" href="http://mathworld.wolfram.com/PrimeNumber.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Prvo%C4%8D%C3%ADslo" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-PrimeFactors"></a>PrimeFactors</span></dt><dd><pre
class="synopsis">PrimeFactors (n)</pre><p>Vrátit v podobě vektoru všechny prvočinitele čísla.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/PrimeFactor.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://en.wikipedia.org/wiki/Prime_factor" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-PseudoprimeTest"></a>PseudoprimeTest</span></dt><dd><pre class="synopsis">PseudoprimeTest
(n
,b)</pre><p>Test pseudoprvočíselnosti, vrací <code class="constant">true</code> když a jen když <strong
class="userinput"><code>b^(n-1) == 1 mod n</code></strong>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/Pseudoprime" target="_top">Planetmath</a> (text je v angličtině),
<a class="ulink" href="http://mathworld.wolfram.com/Pseudoprime.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Pseudoprvo%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-RemoveFactor"></a>RemoveFactor</span></dt><dd><pre class="synopsis">RemoveFactor
(n,m)</pre><p>Odstranit všechny instance činitele <code class="varname">m</code> z čísla <code
class="varname">n</code>. Prakticky to znamená, že je poděleno nejvyšší mocninou čísla <code
class="varname">m</code>, která je dělitelem <code class="varname">n</code>.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://planetmath.org/Divisibility"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/Factor.html" target="_top">Mathworld</a> (text je v angličtině) a <a
class="ulink" href="http://cs.wikipedia.org/wiki/D%C4%9Blitelnost"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-SilverPohligHellmanWithFactorization"></a>SilverPohligHellmanWithFactorization</span></dt><dd><pre
class="synopsis">SilverPohligHellmanWithFactorization (n,b,q,f)</pre><p>Najít diskrétní logaritmus <code
class="varname">n</code> o základu <code class="varname">b</code> v F<sub>q</sub>, konečné grupě řádu <code
class="varname">q</code>, kde <code class="varname">q</code> je prvočíslo, pomocí
Silverova-Pohligova-Hellmanova algoritmu, dané <code class="varname">f</code> je rozkladem <code
class="varname">q</code>-1.</p></dd><dt><span class="term"><a
name="gel-function-SqrtModPrime"></a>SqrtModPrime</span></dt><dd><pre class="synopsis">SqrtModPrime
(n,p)</pre><p>Najít druhou odmocninu z <code class="varname">n</code> modulo <code class="varname">p</code>
(kde <code class="varname">p</code> je prvočíslo). Pokud není kvadratickým zbytkem, je vráceno
null.</p><p>Více informací najdete v encyklopedicíh <a class="ulink"
href="http://planetmath.org/QuadraticResidue" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://mathworld.wolfram.com/QuadraticResidue.html" target="_top">Mathworld</a> (text je
v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-StrongPseudoprimeTest"></a>StrongPseudoprimeTest</span></dt><dd><pre
class="synopsis">StrongPseudoprimeTest (n,b)</pre><p>Spustit silný test pseudoprvočíselnosti o základu <code
class="varname">b</code> na <code class="varname">n</code>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://pl
anetmath.org/StrongPseudoprime" target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/StrongPseudoprime.html" target="_top">Mathworld</a> (text je v angličtině)
a <a class="ulink" href="https://en.wikipedia.org/wiki/Strong_pseudoprime" target="_top">Wikipedia</a> (text
je v angličtině).</p></dd><dt><span class="term"><a name="gel-function-gcd"></a>gcd</span></dt><dd><pre
class="synopsis">gcd (a,argumenty...)</pre><p>Alternativní názvy: <code
class="function">GCD</code></p><p>Největší společný dělitel celých čísel. V seznamu argumentů můžete uvést
libovolný počet celých čísel, nebo je můžete zadat jako vektor nebo matici celých čísel. Pokud zadáte více
než jednu matici stejné velikosti, bude největší společný dělitel určen prvek po prvku.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/GreatestCommonDivisor"
target="_top">Planetmath</a> (t
ext je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/GreatestCommonDivisor.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Nejv%C4%9Bt%C5%A1%C3%AD_spole%C4%8Dn%C3%BD_d%C4%9Blitel"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-lcm"></a>lcm</span></dt><dd><pre class="synopsis">lcm
(a,argumenty...)</pre><p>Alternativní názvy: <code class="function">LCM</code></p><p>Nejmenší společný
násobek celých čísel. V seznamu argumentů můžete uvést libovolný počet celých čísel, nebo je můžete zadat
jako vektor nebo matici celých čísel. Pokud zadáte více než jednu matici stejné velikosti, bude nejmenší
společný násobek určen prvek po prvku.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/LeastCommonMultiple" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http
://mathworld.wolfram.com/LeastCommonMultiple.html" target="_top">Mathworld</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Nejmen%C5%A1%C3%AD_spole%C4%8Dn%C3%BD_n%C3%A1sobek"
target="_top">Wikipedia</a>.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%"
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s06.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s08.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Trigonometrie </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Práce s maticemi</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s08.html b/help/cs/html/ch11s08.html
index c4eccfa..bb7cdf5 100644
--- a/help/cs/html/ch11s08.html
+++ b/help/cs/html/ch11s08.html
@@ -1,24 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Práce s
maticemi</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s07.html" title="Teorie čísel"><link rel="next"
href="ch11s09.html" title="Lineární algebra"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Práce s maticemi</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s07.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s09.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><d
iv><h2 class="title" style="clear: both"><a name="genius-gel-function-list-matrix"></a>Práce s
maticemi</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-ApplyOverMatrix"></a>ApplyOverMatrix</span></dt><dd><pre class="synopsis">ApplyOverMatrix
(a,fce)</pre><p>Použít funkci na všechny prvky matice a vrátit matici výsledků.</p></dd><dt><span
class="term"><a name="gel-function-ApplyOverMatrix2"></a>ApplyOverMatrix2</span></dt><dd><pre
class="synopsis">ApplyOverMatrix2 (a,b,fce)</pre><p>Použít funkci na všechny prvky 2 matic (nebo 1 hodnoty a
1 matice) a vrátit matici výsledků.</p></dd><dt><span class="term"><a
name="gel-function-ColumnsOf"></a>ColumnsOf</span></dt><dd><pre class="synopsis">ColumnsOf (M)</pre><p>Vrátit
sloupce matice jako vodorovný vektor.</p></dd><dt><span class="term"><a
name="gel-function-ComplementSubmatrix"></a>ComplementSubmatrix</span></dt><dd><pre class="synopsis">Compleme
ntSubmatrix (m,r,c)</pre><p>Odstranit sloupec (či slupce) a řádek (či řádky) z matice.</p></dd><dt><span
class="term"><a name="gel-function-CompoundMatrix"></a>CompoundMatrix</span></dt><dd><pre
class="synopsis">CompoundMatrix (k,A)</pre><p>Spočítat <code class="varname">k</code>-tou složenou matici
matice A.</p></dd><dt><span class="term"><a
name="gel-function-CountZeroColumns"></a>CountZeroColumns</span></dt><dd><pre
class="synopsis">CountZeroColumns (M)</pre><p>
- Count the number of zero columns in a matrix. For example,
- once you column-reduce a matrix, you can use this to find
- the nullity. See <a class="link" href="ch11s09.html#gel-function-cref"><code
class="function">cref</code></a>
- and <a class="link" href="ch11s09.html#gel-function-Nullity"><code
class="function">Nullity</code></a>.
- </p></dd><dt><span class="term"><a
name="gel-function-DeleteColumn"></a>DeleteColumn</span></dt><dd><pre class="synopsis">DeleteColumn
(M,sloupec)</pre><p>Smazat sloupec matice.</p></dd><dt><span class="term"><a
name="gel-function-DeleteRow"></a>DeleteRow</span></dt><dd><pre class="synopsis">DeleteRow
(M,radek)</pre><p>Smazat řádek matice.</p></dd><dt><span class="term"><a
name="gel-function-DiagonalOf"></a>DiagonalOf</span></dt><dd><pre class="synopsis">DiagonalOf
(M)</pre><p>Získat diagonální prvky matice jako sloupcový vektor.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-DotProduct"></a>DotProduct</span></dt><dd><pre class="synopsis">DotProduct
(u,v)</pre><p>Získat skalární součin dvou vektorů. Vektory musí mít stejnou velikost. Nepřijímají se
konjugované vektory, protože jde o bilineární formu, i když pracuje i s komplexními čísly. Jedná se o
bilineární skalární součin, ne půldruhý lineární (seskvilineární). Pro ten slouží funkce <a class="link"
href="ch11s08.html#gel-function-HermitianProduct">HermitianProduct</a></p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/DotProduct" target="_top">Planetmath</a> (text je
v angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Skal%C3%A1rn%C3%AD_sou%C4%8Din"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-ExpandMatrix"></a>ExpandMatrix</span></dt><dd><pre class="synopsis">ExpandMatrix
(M)</pre><p>Rozšířit matic
i, stejně když zadáte matici bez uvozovky. Takto se rozbalí do bloku libovolná interní matice. Je to způsob,
jak sestrojit matice z jiných menších a normálně je to prováděno na vstupu automaticky, s výjimkou kdy je
matice zadána s uvozovkou.</p></dd><dt><span class="term"><a
name="gel-function-HermitianProduct"></a>HermitianProduct</span></dt><dd><pre
class="synopsis">HermitianProduct (u,v)</pre><p>Alternativní názvy: <code
class="function">InnerProduct</code></p><p>Získat hermitovský součin dvou vektorů. Vektory musí mít stejnou
velikost. Jedná se o polybilineární formu používající jednotkovou matici.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/HermitianInnerProduct.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://en.wikipedia.org/wiki/Sesquilinear_form" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name
="gel-function-I"></a>I</span></dt><dd><pre class="synopsis">I (n)</pre><p>Alternativní názvy: <code
class="function">eye</code></p><p>Vrátit jednotkovou matici zadané velikosti, tj. <code
class="varname">n</code> krát <code class="varname">n</code>. Pokud je <code class="varname">n</code> rovno
0, vrátí <code class="constant">null</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/IdentityMatrix" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Jednotkov%C3%A1_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IndexComplement"></a>IndexComplement</span></dt><dd><pre class="synopsis">IndexComplement
(vektor,mvelikost)</pre><p>Vrátit doplňkový index vektoru indexů. Vše je s jednou bází. Například pro vektor
<strong class="userinput"><code>[2,3]</code></strong> a velikost <strong class="userinput"><code>5</code></
strong> dostaneme <strong class="userinput"><code>[1,4,5]</code></strong>. Pokud je <code
class="varname">mvelikost</code> rovna 0, vrací vždy <code class="constant">null</code>.</p></dd><dt><span
class="term"><a name="gel-function-IsDiagonal"></a>IsDiagonal</span></dt><dd><pre class="synopsis">IsDiagonal
(M)</pre><p>Je matice diagonální?</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Diagonal_matrix" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://planetmath.org/DiagonalMatrix" target="_top">Planetmath</a> for
more information.
- </p></dd><dt><span class="term"><a
name="gel-function-IsIdentity"></a>IsIdentity</span></dt><dd><pre class="synopsis">IsIdentity
(x)</pre><p>Zkontrolovat, zda je matice jednotková. Pokud matice není čtvercová, tak automaticky vrátí <code
class="varname">false</code>. Funguje i pro čísla, v kterémžto případě je to stejné jako <strong
class="userinput"><code>x==1</code></strong>. Pokud je argument <code class="varname">x</code> roven <code
class="constant">null</code> (což můžeme považovat za matici 0 krát 0), nezpůsobí to chybu a vrátí <code
class="constant">false</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsLowerTriangular"></a>IsLowerTriangular</span></dt><dd><pre
class="synopsis">IsLowerTriangular (M)</pre><p>Jde o dolní trojúhelníkovou matici? To je taková, která má
všechny prvky nad diagonálou nulové.</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixInteger"></a>IsMatrixInteger</span></dt><dd><pre class="sy
nopsis">IsMatrixInteger (M)</pre><p>Zkontrolovat, zda je matice maticí celých (nekomplexních)
čísel.</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixNonnegative"></a>IsMatrixNonnegative</span></dt><dd><pre
class="synopsis">IsMatrixNonnegative (M)</pre><p>Zkontrolovat, zda je matice nezáporná, tj. zda je každý z
prvků nezáporný. Nepleťte si pozitivní matice s pozitivně definitními maticemi.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Positive_matrix" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-IsMatrixPositive"></a>IsMatrixPositive</span></dt><dd><pre
class="synopsis">IsMatrixPositive (M)</pre><p>Zkontrolovat, zda je matice pozitivní, tj. zda je každý z prvků
kladný (a tudíž reálný). Především není žádný prvek 0. Nepleťte si positivní matice s pozitivně definitními
maticemi.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Positive_matrix" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-IsMatrixRational"></a>IsMatrixRational</span></dt><dd><pre
class="synopsis">IsMatrixRational (M)</pre><p>Zkontrolovat, zda je matice maticí z racionálních
(nekomplexních) čísel.</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixReal"></a>IsMatrixReal</span></dt><dd><pre class="synopsis">IsMatrixReal
(M)</pre><p>Zkontrolovat, zda je matice složená z reálných (na komplexních) čísel.</p></dd><dt><span
class="term"><a name="gel-function-IsMatrixSquare"></a>IsMatrixSquare</span></dt><dd><pre
class="synopsis">IsMatrixSquare (M)</pre><p>Zkontrolovat, zda je matice čtvercová, tj. šířka je stejná jako
výška.</p></dd><dt><span class="term"><a
name="gel-function-IsUpperTriangular"></a>IsUpperTriangular</span></dt><dd><pre
class="synopsis">IsUpperTriangular (M)</pre><p>Jde o horní trojúhelníkovou matici? To je taková, která má
všechny prvky pod diagonálou nulové.</p></dd><dt><span class="te
rm"><a name="gel-function-IsValueOnly"></a>IsValueOnly</span></dt><dd><pre class="synopsis">IsValueOnly
(M)</pre><p>Zkontrolovat, zda se matice skládá pouze z čísel. Mnoho interních funkcí provádí tuto kontrolu.
Hodnoty mohou být libovolná čísla včetně komplexních.</p></dd><dt><span class="term"><a
name="gel-function-IsVector"></a>IsVector</span></dt><dd><pre class="synopsis">IsVector (v)</pre><p>Je
argument vodorovný nebo svislý vektor? Genius nerozlišuje mezi maticí a vektorem, vektor je prostě jen matice
1 krát <code class="varname">n</code> nebo <code class="varname">n</code> krát 1.</p></dd><dt><span
class="term"><a name="gel-function-IsZero"></a>IsZero</span></dt><dd><pre class="synopsis">IsZero
(x)</pre><p>Zkontrolovat, zda se matice skládá jen z nul. Funguje to i pro čísla, kdy je to ekvivalentní
výrazu <strong class="userinput"><code>x==0</code></strong>. Když je <code class="varname">x</code> rovno
<code class="constant">null</code> (m�
�žeme to považovat za matici 0 krát 0), nezpůsobí to žádnou chybu, ale vrátí se <code
class="constant">true</code>, protože podmínka je prázdná.</p></dd><dt><span class="term"><a
name="gel-function-LowerTriangular"></a>LowerTriangular</span></dt><dd><pre class="synopsis">LowerTriangular
(M)</pre><p>Vrátit kopii matice <code class="varname">M</code> se všemi prvky nad diagonálou nastavenými na
nulu.</p></dd><dt><span class="term"><a name="gel-function-MakeDiagonal"></a>MakeDiagonal</span></dt><dd><pre
class="synopsis">MakeDiagonal (v,argument...)</pre><p>Alternativní názvy: <code
class="function">diag</code></p><p>Vytvořit diagonální matici z vektoru. Případně můžete hodnoty, které se
mají umístit na diagonálu, zadat jako jednotlivé parametry. Takže <strong
class="userinput"><code>MakeDiagonal([1,2,3])</code></strong> je to stejné jako <strong
class="userinput"><code>MakeDiagonal(1,2,3)</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Diagonal_matrix" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://planetmath.org/DiagonalMatrix" target="_top">Planetmath</a> for
more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MakeVector"></a>MakeVector</span></dt><dd><pre class="synopsis">MakeVector
(A)</pre><p>Vytvořit sloupcový vektor z matice poskládáním sloupců na sebe. Pokud je předáno <code
class="constant">null</code>, vrátí <code class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-MatrixProduct"></a>MatrixProduct</span></dt><dd><pre class="synopsis">MatrixProduct
(A)</pre><p>Spočítat součin všech prvků matice nebo vektoru. To znamená, že se vynásobí všechny prvky a vrátí
se číslo, které je násobkem všech těchto prvků.</p></dd><dt><span class="term"><a
name="gel-function-MatrixSum"></a>MatrixSum</span></dt><dd><pre class="synopsis">MatrixSum
(A)</pre><p>Spočítat součet všech prvků matice nebo vektoru. To znamená, že se sečtou všechny prvky a vrátí
se číslo, které je součtem všech těchto prvků.</p></dd><dt><span class="term"><a name="gel-function-Matr
ixSumSquares"></a>MatrixSumSquares</span></dt><dd><pre class="synopsis">MatrixSumSquares
(A)</pre><p>Spočítat součet druhých mocnin všech prvků matice nebo vektoru.</p></dd><dt><span class="term"><a
name="gel-function-NonzeroColumns"></a>NonzeroColumns</span></dt><dd><pre class="synopsis">NonzeroColumns
(M)</pre><p>Vrátit řádkový vektor s indexy nenulových sloupců v matici <code
class="varname">M</code>.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NonzeroElements"></a>NonzeroElements</span></dt><dd><pre class="synopsis">NonzeroElements
(v)</pre><p>Vrátit řádkový vektor s indexy nenulových prvků ve vektoru <code
class="varname">v</code>.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-OuterProduct"></a>OuterProduct</span></dt><dd><pre class="synopsis">OuterProduct
(u,v)</pre><p>Získat vnější součin dvou vektorů. Takže, když dejme tomu jsou <code class="varname">u</code> a
<code class="varname">v</code> svislé vektory, pak vnější součin je <strong class="userinput"><code>v *
u.'</code></strong>.</p></dd><dt><span class="term"><a
name="gel-function-ReverseVector"></a>ReverseVector</span></dt><dd><pre class="synopsis">ReverseVector
(v)</pre><p>Převrátit pořadí prvků ve vektoru. Pokud je předáno <code class="constant">null</code>, tak vrací
<code class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-RowSum"></a>RowSum</span></dt><dd><pre class="synopsis">RowSum (m)</pre><p>Vypočítat
součet každého řádku v matici a vrátit svislý vektor s výsledkem.</p></dd><dt><span class="term"><a
name="gel-function-RowSumSquares"></a>RowSumSquares</span></dt><dd><pre class="synopsis">RowSumSquares
(m)</pre><p>Vypočítat součet druhých mocnin každého řádku v matici a vrátit svislý vektor s
výsledkem.</p></dd><dt><span class="term"><a name="gel-function-RowsOf"></a>RowsOf</span></dt><dd><pre
class="syn
opsis">RowsOf (M)</pre><p>Získat řádky matice jako svislý vektor. Každý z prvků vektoru je vodorovný vektor,
který odpovídá řádku matice <code class="varname">M</code>. Tato funkce je užitečná, když chcete ve smyčce
procházet řádky matice. Například takto: <strong class="userinput"><code>for r in RowsOf(M) do
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Práce s
maticemi</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s07.html" title="Teorie čísel"><link rel="next"
href="ch11s09.html" title="Lineární algebra"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Práce s maticemi</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s07.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s09.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><d
iv><h2 class="title" style="clear: both"><a name="genius-gel-function-list-matrix"></a>Práce s
maticemi</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-ApplyOverMatrix"></a>ApplyOverMatrix</span></dt><dd><pre class="synopsis">ApplyOverMatrix
(a,fce)</pre><p>Použít funkci na všechny prvky matice a vrátit matici výsledků.</p></dd><dt><span
class="term"><a name="gel-function-ApplyOverMatrix2"></a>ApplyOverMatrix2</span></dt><dd><pre
class="synopsis">ApplyOverMatrix2 (a,b,fce)</pre><p>Použít funkci na všechny prvky 2 matic (nebo 1 hodnoty a
1 matice) a vrátit matici výsledků.</p></dd><dt><span class="term"><a
name="gel-function-ColumnsOf"></a>ColumnsOf</span></dt><dd><pre class="synopsis">ColumnsOf (M)</pre><p>Vrátit
sloupce matice jako vodorovný vektor.</p></dd><dt><span class="term"><a
name="gel-function-ComplementSubmatrix"></a>ComplementSubmatrix</span></dt><dd><pre class="synopsis">Compleme
ntSubmatrix (m,r,c)</pre><p>Odstranit sloupec (či slupce) a řádek (či řádky) z matice.</p></dd><dt><span
class="term"><a name="gel-function-CompoundMatrix"></a>CompoundMatrix</span></dt><dd><pre
class="synopsis">CompoundMatrix (k,A)</pre><p>Spočítat <code class="varname">k</code>-tou složenou matici
matice A.</p></dd><dt><span class="term"><a
name="gel-function-CountZeroColumns"></a>CountZeroColumns</span></dt><dd><pre
class="synopsis">CountZeroColumns (M)</pre><p>Spočítat počet nulových sloupců v matici. Například, jakmile
zredukujete sloupce matice, můžete to využít k nalezení nulovosti. Viz <a class="link"
href="ch11s09.html#gel-function-cref"><code class="function">cref</code></a> a <a class="link"
href="ch11s09.html#gel-function-Nullity"><code class="function">Nullity</code></a>.</p></dd><dt><span
class="term"><a name="gel-function-DeleteColumn"></a>DeleteColumn</span></dt><dd><pre
class="synopsis">DeleteColumn (M,sloupec)</pre><p>Smazat sloupec mat
ice.</p></dd><dt><span class="term"><a name="gel-function-DeleteRow"></a>DeleteRow</span></dt><dd><pre
class="synopsis">DeleteRow (M,radek)</pre><p>Smazat řádek matice.</p></dd><dt><span class="term"><a
name="gel-function-DiagonalOf"></a>DiagonalOf</span></dt><dd><pre class="synopsis">DiagonalOf
(M)</pre><p>Získat diagonální prvky matice jako sloupcový vektor.</p><p>Více informací najdete v encyklopedii
<a class="ulink" href="https://cs.wikipedia.org/wiki/Diagon%C3%A1ln%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-DotProduct"></a>DotProduct</span></dt><dd><pre class="synopsis">DotProduct
(u,v)</pre><p>Získat skalární součin dvou vektorů. Vektory musí mít stejnou velikost. Nepřijímají se
konjugované vektory, protože jde o bilineární formu, i když pracuje i s komplexními čísly. Jedná se o
bilineární skalární součin, ne půldruhý lineární (seskvilineární). Pro ten slouží funkce <a class="l
ink" href="ch11s08.html#gel-function-HermitianProduct">HermitianProduct</a></p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/DotProduct" target="_top">Planetmath</a> (text je
v angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Skal%C3%A1rn%C3%AD_sou%C4%8Din"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-ExpandMatrix"></a>ExpandMatrix</span></dt><dd><pre class="synopsis">ExpandMatrix
(M)</pre><p>Rozšířit matici, stejně když zadáte matici bez uvozovky. Takto se rozbalí do bloku libovolná
interní matice. Je to způsob, jak sestrojit matice z jiných menších a normálně je to prováděno na vstupu
automaticky, s výjimkou kdy je matice zadána s uvozovkou.</p></dd><dt><span class="term"><a
name="gel-function-HermitianProduct"></a>HermitianProduct</span></dt><dd><pre
class="synopsis">HermitianProduct (u,v)</pre><p>Alternativní názvy: <code class="function">InnerProduc
t</code></p><p>Získat hermitovský součin dvou vektorů. Vektory musí mít stejnou velikost. Jedná se o
polybilineární formu používající jednotkovou matici.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://mathworld.wolfram.com/HermitianInnerProduct.html" target="_top">Mathworld</a>
(text je v angličtině) a <a class="ulink" href="https://en.wikipedia.org/wiki/Sesquilinear_form"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-I"></a>I</span></dt><dd><pre class="synopsis">I (n)</pre><p>Alternativní názvy: <code
class="function">eye</code></p><p>Vrátit jednotkovou matici zadané velikosti, tj. <code
class="varname">n</code> krát <code class="varname">n</code>. Pokud je <code class="varname">n</code> rovno
0, vrátí <code class="constant">null</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/IdentityMatrix" target="_top">P
lanetmath</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Jednotkov%C3%A1_matice" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-IndexComplement"></a>IndexComplement</span></dt><dd><pre
class="synopsis">IndexComplement (vektor,mvelikost)</pre><p>Vrátit doplňkový index vektoru indexů. Vše je s
jednou bází. Například pro vektor <strong class="userinput"><code>[2,3]</code></strong> a velikost <strong
class="userinput"><code>5</code></strong> dostaneme <strong class="userinput"><code>[1,4,5]</code></strong>.
Pokud je <code class="varname">mvelikost</code> rovna 0, vrací vždy <code
class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsDiagonal"></a>IsDiagonal</span></dt><dd><pre class="synopsis">IsDiagonal (M)</pre><p>Je
matice diagonální?</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/DiagonalMatrix" target="_top">Plane
tmath</a> (text je v angličtině) nebo <a class="ulink"
href="https://cs.wikipedia.org/wiki/Diagon%C3%A1ln%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsIdentity"></a>IsIdentity</span></dt><dd><pre class="synopsis">IsIdentity
(x)</pre><p>Zkontrolovat, zda je matice jednotková. Pokud matice není čtvercová, tak automaticky vrátí <code
class="varname">false</code>. Funguje i pro čísla, v kterémžto případě je to stejné jako <strong
class="userinput"><code>x==1</code></strong>. Pokud je argument <code class="varname">x</code> roven <code
class="constant">null</code> (což můžeme považovat za matici 0 krát 0), nezpůsobí to chybu a vrátí <code
class="constant">false</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsLowerTriangular"></a>IsLowerTriangular</span></dt><dd><pre
class="synopsis">IsLowerTriangular (M)</pre><p>Jde o dolní trojúhelníkovou matici? To je taková, která má
všechny prv
ky nad diagonálou nulové.</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixInteger"></a>IsMatrixInteger</span></dt><dd><pre class="synopsis">IsMatrixInteger
(M)</pre><p>Zkontrolovat, zda je matice maticí celých (nekomplexních) čísel.</p></dd><dt><span
class="term"><a name="gel-function-IsMatrixNonnegative"></a>IsMatrixNonnegative</span></dt><dd><pre
class="synopsis">IsMatrixNonnegative (M)</pre><p>Zkontrolovat, zda je matice nezáporná, tj. zda je každý z
prvků nezáporný. Nepleťte si pozitivní matice s pozitivně definitními maticemi.</p><p>Více informací najdete
v encyklopedii <a class="ulink" href="https://en.wikipedia.org/wiki/Positive_matrix"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixPositive"></a>IsMatrixPositive</span></dt><dd><pre
class="synopsis">IsMatrixPositive (M)</pre><p>Zkontrolovat, zda je matice pozitivní, tj. zda je každý z prvků
kladný (a tudíž reál
ný). Především není žádný prvek 0. Nepleťte si positivní matice s pozitivně definitními maticemi.</p><p>Více
informací najdete v encyklopedii <a class="ulink" href="https://en.wikipedia.org/wiki/Positive_matrix"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixRational"></a>IsMatrixRational</span></dt><dd><pre
class="synopsis">IsMatrixRational (M)</pre><p>Zkontrolovat, zda je matice maticí z racionálních
(nekomplexních) čísel.</p></dd><dt><span class="term"><a
name="gel-function-IsMatrixReal"></a>IsMatrixReal</span></dt><dd><pre class="synopsis">IsMatrixReal
(M)</pre><p>Zkontrolovat, zda je matice složená z reálných (na komplexních) čísel.</p></dd><dt><span
class="term"><a name="gel-function-IsMatrixSquare"></a>IsMatrixSquare</span></dt><dd><pre
class="synopsis">IsMatrixSquare (M)</pre><p>Zkontrolovat, zda je matice čtvercová, tj. šířka je stejná jako
výška.</p></dd><dt><span
class="term"><a name="gel-function-IsUpperTriangular"></a>IsUpperTriangular</span></dt><dd><pre
class="synopsis">IsUpperTriangular (M)</pre><p>Jde o horní trojúhelníkovou matici? To je taková, která má
všechny prvky pod diagonálou nulové.</p></dd><dt><span class="term"><a
name="gel-function-IsValueOnly"></a>IsValueOnly</span></dt><dd><pre class="synopsis">IsValueOnly
(M)</pre><p>Zkontrolovat, zda se matice skládá pouze z čísel. Mnoho interních funkcí provádí tuto kontrolu.
Hodnoty mohou být libovolná čísla včetně komplexních.</p></dd><dt><span class="term"><a
name="gel-function-IsVector"></a>IsVector</span></dt><dd><pre class="synopsis">IsVector (v)</pre><p>Je
argument vodorovný nebo svislý vektor? Genius nerozlišuje mezi maticí a vektorem, vektor je prostě jen matice
1 krát <code class="varname">n</code> nebo <code class="varname">n</code> krát 1.</p></dd><dt><span
class="term"><a name="gel-function-IsZero"></a>IsZero</span></dt><dd><pre clas
s="synopsis">IsZero (x)</pre><p>Zkontrolovat, zda se matice skládá jen z nul. Funguje to i pro čísla, kdy je
to ekvivalentní výrazu <strong class="userinput"><code>x==0</code></strong>. Když je <code
class="varname">x</code> rovno <code class="constant">null</code> (můžeme to považovat za matici 0 krát 0),
nezpůsobí to žádnou chybu, ale vrátí se <code class="constant">true</code>, protože podmínka je
prázdná.</p></dd><dt><span class="term"><a
name="gel-function-LowerTriangular"></a>LowerTriangular</span></dt><dd><pre class="synopsis">LowerTriangular
(M)</pre><p>Vrátit kopii matice <code class="varname">M</code> se všemi prvky nad diagonálou nastavenými na
nulu.</p></dd><dt><span class="term"><a name="gel-function-MakeDiagonal"></a>MakeDiagonal</span></dt><dd><pre
class="synopsis">MakeDiagonal (v,argument...)</pre><p>Alternativní názvy: <code
class="function">diag</code></p><p>Vytvořit diagonální matici z vektoru. Případně můžete hodnoty, kt
eré se mají umístit na diagonálu, zadat jako jednotlivé parametry. Takže <strong
class="userinput"><code>MakeDiagonal([1,2,3])</code></strong> je to stejné jako <strong
class="userinput"><code>MakeDiagonal(1,2,3)</code></strong>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/DiagonalMatrix" target="_top">Planetmath</a> (text je v angličtině)
nebo <a class="ulink" href="https://cs.wikipedia.org/wiki/Diagon%C3%A1ln%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-MakeVector"></a>MakeVector</span></dt><dd><pre class="synopsis">MakeVector
(A)</pre><p>Vytvořit sloupcový vektor z matice poskládáním sloupců na sebe. Pokud je předáno <code
class="constant">null</code>, vrátí <code class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-MatrixProduct"></a>MatrixProduct</span></dt><dd><pre class="synopsis">MatrixProduct
(A)</pre><p>Spočítat sou
čin všech prvků matice nebo vektoru. To znamená, že se vynásobí všechny prvky a vrátí se číslo, které je
násobkem všech těchto prvků.</p></dd><dt><span class="term"><a
name="gel-function-MatrixSum"></a>MatrixSum</span></dt><dd><pre class="synopsis">MatrixSum
(A)</pre><p>Spočítat součet všech prvků matice nebo vektoru. To znamená, že se sečtou všechny prvky a vrátí
se číslo, které je součtem všech těchto prvků.</p></dd><dt><span class="term"><a
name="gel-function-MatrixSumSquares"></a>MatrixSumSquares</span></dt><dd><pre
class="synopsis">MatrixSumSquares (A)</pre><p>Spočítat součet druhých mocnin všech prvků matice nebo
vektoru.</p></dd><dt><span class="term"><a
name="gel-function-NonzeroColumns"></a>NonzeroColumns</span></dt><dd><pre class="synopsis">NonzeroColumns
(M)</pre><p>Vrátit řádkový vektor s indexy nenulových sloupců v matici <code
class="varname">M</code>.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"
<a name="gel-function-NonzeroElements"></a>NonzeroElements</span></dt><dd><pre
class="synopsis">NonzeroElements (v)</pre><p>Vrátit řádkový vektor s indexy nenulových prvků ve vektoru
<code class="varname">v</code>.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-OuterProduct"></a>OuterProduct</span></dt><dd><pre class="synopsis">OuterProduct
(u,v)</pre><p>Získat vnější součin dvou vektorů. Takže, když dejme tomu jsou <code class="varname">u</code>
a <code class="varname">v</code> svislé vektory, pak vnější součin je <strong class="userinput"><code>v *
u.'</code></strong>.</p></dd><dt><span class="term"><a
name="gel-function-ReverseVector"></a>ReverseVector</span></dt><dd><pre class="synopsis">ReverseVector
(v)</pre><p>Převrátit pořadí prvků ve vektoru. Pokud je předáno <code class="constant">null</code>, tak
vrací <code class="constant">null</code>.</p></dd><dt><span class="term"><a name="gel-function-RowSum">
</a>RowSum</span></dt><dd><pre class="synopsis">RowSum (m)</pre><p>Vypočítat součet každého řádku v matici a
vrátit svislý vektor s výsledkem.</p></dd><dt><span class="term"><a
name="gel-function-RowSumSquares"></a>RowSumSquares</span></dt><dd><pre class="synopsis">RowSumSquares
(m)</pre><p>Vypočítat součet druhých mocnin každého řádku v matici a vrátit svislý vektor s
výsledkem.</p></dd><dt><span class="term"><a name="gel-function-RowsOf"></a>RowsOf</span></dt><dd><pre
class="synopsis">RowsOf (M)</pre><p>Získat řádky matice jako svislý vektor. Každý z prvků vektoru je
vodorovný vektor, který odpovídá řádku matice <code class="varname">M</code>. Tato funkce je užitečná, když
chcete ve smyčce procházet řádky matice. Například takto: <strong class="userinput"><code>for r in RowsOf(M)
do
neco(r)</code></strong>.</p></dd><dt><span class="term"><a
name="gel-function-SetMatrixSize"></a>SetMatrixSize</span></dt><dd><pre class="synopsis">SetMatrixSize
(M,radku,sloupcu)</pre><p>Vytvořit novou matici zadané velikosti z jiné staré. To znamená, že nová matice
bude vrácena jako kopie té staré. Prvky, které přebývají, jsou odříznuty a volné místo je vyplněno nulami.
Pokud je argument <code class="varname">radku</code> nebo <code class="varname">sloupcu</code> roven nule, je
vráceno <code class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-ShuffleVector"></a>ShuffleVector</span></dt><dd><pre class="synopsis">ShuffleVector
(v)</pre><p>Zamíchat pořadí prvků ve vektoru. Pokud je předáno <code class="constant">null</code>, tak vrací
<code class="constant">null</code>.</p><p>Verze 1.0.13 a novější.</p></dd><dt><span class="term"><a
name="gel-function-SortVector"></a>SortVector</span></dt><dd><pre class="synopsis">S
ortVector (v)</pre><p>Seřadit prvky vektoru ve vzestupném pořadí.</p></dd><dt><span class="term"><a
name="gel-function-StripZeroColumns"></a>StripZeroColumns</span></dt><dd><pre
class="synopsis">StripZeroColumns (M)</pre><p>Odstranit všechny čistě nulové sloupce matice <code
class="varname">M</code>.</p></dd><dt><span class="term"><a
name="gel-function-StripZeroRows"></a>StripZeroRows</span></dt><dd><pre class="synopsis">StripZeroRows
(M)</pre><p>Odstranit všechny čistě nulové řádky matice <code class="varname">M</code>.</p></dd><dt><span
class="term"><a name="gel-function-Submatrix"></a>Submatrix</span></dt><dd><pre class="synopsis">Submatrix
(m,r,s)</pre><p>Vrátit sloupec (či sloupce) a řádek (či řádky) z matice. Je to stejné jako <strong
class="userinput"><code>m@(r,s)</code></strong>. Argumenty <code class="varname">r</code> a <code
class="varname">s</code> by měly být vektory se seznamy řádků a sloupců (nebo samostatná čísla, pokud požadu
jete jen jeden řádek nebo sloupec).</p></dd><dt><span class="term"><a
name="gel-function-SwapRows"></a>SwapRows</span></dt><dd><pre class="synopsis">SwapRows
(m,radek1,radek2)</pre><p>Prohodit dva řádky v matici.</p></dd><dt><span class="term"><a
name="gel-function-UpperTriangular"></a>UpperTriangular</span></dt><dd><pre class="synopsis">UpperTriangular
(M)</pre><p>Vrátit kopii matice <code class="varname">M</code> se všemi prvky pod diagonálou nastavenými na
nulu.</p></dd><dt><span class="term"><a name="gel-function-columns"></a>columns</span></dt><dd><pre
class="synopsis">columns (M)</pre><p>Vrátit počet sloupců matice.</p></dd><dt><span class="term"><a
name="gel-function-elements"></a>elements</span></dt><dd><pre class="synopsis">elements (M)</pre><p>Vrátit
celkový počet prvků matice. Tj. počet sloupců krát počet řádků.</p></dd><dt><span class="term"><a
name="gel-function-ones"></a>ones</span></dt><dd><pre class="synopsis">ones (radku,sloupcu...)</pr
e><p>Vytvořit matici ze samých jedniček (nebo řádkový vektor, pokud je zadán jen jeden argument). Když je
<code class="varname">radku</code> nebo <code class="varname">sloupcu</code> rovno nule, vrátí <code
class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-rows"></a>rows</span></dt><dd><pre class="synopsis">rows (M)</pre><p>Vrátit počet řádků
matice.</p></dd><dt><span class="term"><a name="gel-function-zeros"></a>zeros</span></dt><dd><pre
class="synopsis">zeros (radku,sloupcu...)</pre><p>Vytvořit matici celou z nul (nebo řádkový vektor, pokud je
zadán jen jeden argument). Pokud je argument <code class="varname">radku</code> nebo <code
class="varname">sloupcu</code> roven nule, je vráceno <code
class="constant">null</code>.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%"
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s07.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right">
<a accesskey="n" href="ch11s09.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Teorie
čísel </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Lineární algebra</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s09.html b/help/cs/html/ch11s09.html
index 024ac32..c670c68 100644
--- a/help/cs/html/ch11s09.html
+++ b/help/cs/html/ch11s09.html
@@ -1,61 +1,3 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Lineární
algebra</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s08.html" title="Práce s maticemi"><link rel="next"
href="ch11s10.html" title="Kombinatorika"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Lineární algebra</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s08.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s10.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><d
iv><h2 class="title" style="clear: both"><a name="genius-gel-function-list-linear-algebra"></a>Lineární
algebra</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AuxiliaryUnitMatrix"></a>AuxiliaryUnitMatrix</span></dt><dd><pre
class="synopsis">AuxiliaryUnitMatrix (n)</pre><p>Získat pomocnou jednotkovou matici velikosti <code
class="varname">n</code>. Jde o čtvercovou matici ze samých nul vyjma diagonály, na které jsou jedničky. Je
to Jordanův blok s jedním vlastním číslem nula.</p><p>Více informací o Jordanově kanonické formě najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/JordanCanonicalFormTheorem"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/JordanBlock.html" target="_top">Mathworld</a> (text je v angličtině) nebo
<a class="ulink" href="http://cs.wikipedia.org/wiki/Jordanova_norm%C3%A1ln%C3%AD_forma" t
arget="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-BilinearForm"></a>BilinearForm</span></dt><dd><pre class="synopsis">BilinearForm
(v,A,w)</pre><p>Spočítat (v,w) vzhledem k bilineární formě dané maticí A.</p></dd><dt><span class="term"><a
name="gel-function-BilinearFormFunction"></a>BilinearFormFunction</span></dt><dd><pre
class="synopsis">BilinearFormFunction (A)</pre><p>Vrátit funkci takovou, že vyhodnocuje dva vektory vzhledem
k bilineární formě dané maticí A.</p></dd><dt><span class="term"><a
name="gel-function-CharacteristicPolynomial"></a>CharacteristicPolynomial</span></dt><dd><pre
class="synopsis">CharacteristicPolynomial (M)</pre><p>Alternativní názvy: <code
class="function">CharPoly</code></p><p>Získat charakteristický polynom v podobě vektoru. Konkrétně vrací
koeficienty polynomu počínaje konstantním členem. Jedná se o polynom definovaný pomocí <strong
class="userinput"><code>det(M-xI)</code></strong>. Ko
řeny tohoto polynomu jsou vlastní čísla matice <code class="varname">M</code>. Viz <a class="link"
href="ch11s09.html#gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</a>.</p><p>Více
informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Characteristic_polynomial" target="_top">Wikipedia</a> (text je v
anličtině) a <a class="ulink" href="http://planetmath.org/CharacteristicEquation"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-CharacteristicPolynomialFunction"></a>CharacteristicPolynomialFunction</span></dt><dd><pre
class="synopsis">CharacteristicPolynomialFunction (M)</pre><p>Získat charakteristický polynom v podobě
funkce. Jedná se o polynom definovaný pomocí <strong class="userinput"><code>det(M-xI)</code></strong>.
Kořeny tohoto polynomu jsou vlastní čísla matice <code class="varname">M</code>. Viz <a class="link"
href="ch11s09
.html#gel-function-CharacteristicPolynomial">CharacteristicPolynomial</a>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Characteristic_polynomial"
target="_top">Wikipedia</a> (text je v anličtině) a <a class="ulink"
href="http://planetmath.org/CharacteristicEquation" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-ColumnSpace"></a>ColumnSpace</span></dt><dd><pre class="synopsis">ColumnSpace
(M)</pre><p>Získat bázi matice pro prostor sloupců matice. Prakticky se vrátí matice, jejíž sloupce jsou
bázemi pro prostor sloupců matice <code class="varname">M</code>. To je prostor rozložený podle sloupců
matice <code class="varname">M</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Row_and_column_spaces" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="
gel-function-CommutationMatrix"></a>CommutationMatrix</span></dt><dd><pre class="synopsis">CommutationMatrix
(m, n)</pre><p>Vrátit komutační matici <strong class="userinput"><code>K(m,n)</code></strong>, což je
jedinečná matice velikosti <strong class="userinput"><code>m*n</code></strong> krát <strong
class="userinput"><code>m*n</code></strong>, která splňuje <strong class="userinput"><code>K(m,n) *
MakeVector(A) = MakeVector(A.')</code></strong> pro všechny matice <code class="varname">A</code> velikosti
<code class="varname">m</code> krát <code class="varname">n</code>.</p></dd><dt><span class="term"><a
name="gel-function-CompanionMatrix"></a>CompanionMatrix</span></dt><dd><pre class="synopsis">CompanionMatrix
(p)</pre><p>Doplňková matice polynomu (jako vektor).</p></dd><dt><span class="term"><a
name="gel-function-ConjugateTranspose"></a>ConjugateTranspose</span></dt><dd><pre
class="synopsis">ConjugateTranspose (M)</pre><p>Konjugovaná transpozice matice (adju
ngovaná). Je to stejné jako operátor <strong class="userinput"><code>'</code></strong>.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Conjugate_transpose"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink"
href="http://planetmath.org/ConjugateTranspose" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Convolution"></a>Convolution</span></dt><dd><pre class="synopsis">Convolution
(a,b)</pre><p>Alternativní názvy: <code class="function">convol</code></p><p>Spočítat konvoluci dvou
vodorovných vektorů.</p></dd><dt><span class="term"><a
name="gel-function-ConvolutionVector"></a>ConvolutionVector</span></dt><dd><pre
class="synopsis">ConvolutionVector (a,b)</pre><p>Spočítat konvoluci dvou vodorovných vektorů. Výsledek vrátí
jako vektor a ne sečtené dohromady.</p></dd><dt><span class="term"><a name="gel-function-CrossProduct"></a>Cr
ossProduct</span></dt><dd><pre class="synopsis">CrossProduct (v,w)</pre><p>Vektorový součin dvou vektorů v
R<sup>3</sup> jako sloupcový vektor.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Vektorov%C3%BD_sou%C4%8Din"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-DeterminantalDivisorsInteger"></a>DeterminantalDivisorsInteger</span></dt><dd><pre
class="synopsis">DeterminantalDivisorsInteger (M)</pre><p>Získat determinantové dělitele celočíselné
matice.</p></dd><dt><span class="term"><a name="gel-function-DirectSum"></a>DirectSum</span></dt><dd><pre
class="synopsis">DirectSum (M,N...)</pre><p>Přímý součet matic.</p><p>Více informací najdete v encyklopedii
<a class="ulink"
href="https://cs.wikipedia.org/wiki/S%C4%8D%C3%ADt%C3%A1n%C3%AD_matic#Direktn.C3.AD_sou.C4.8Det"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function-DirectSumMatrixVector"></a
DirectSumMatrixVector</span></dt><dd><pre class="synopsis">DirectSumMatrixVector (v)</pre><p>Přímý součet
vektoru matic.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/S%C4%8D%C3%ADt%C3%A1n%C3%AD_matic#Direktn.C3.AD_sou.C4.8Det"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Eigenvalues"></a>Eigenvalues</span></dt><dd><pre class="synopsis">Eigenvalues
(M)</pre><p>Alternativní názvy: <code class="function">eig</code></p><p>Získat vlastní čísla čtvercové
matice. V současnosti pracuje pouze pro matice do velikosti 4 krát 4 nebo pro trojúhelníkové matice (pro
které jsou vlastní čísla na diagonále).</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Eigenvalue" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/Eigenvalue" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/Eigenvalue.html" target="_top">Mathworld</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-Eigenvectors"></a>Eigenvectors</span></dt><dd><pre class="synopsis">Eigenvectors
(M)</pre><pre class="synopsis">Eigenvectors (M,&vlastni_cisla)</pre><pre class="synopsis">Eigenvectors
(M, &vlastni_cisla, &nasobnosti)</pre><p>Získat vlastní vektory čtvercové matice. Volitelně získat
také vlastní čísla a jejich algebraické násobnosti. V současnosti pracuje pouze s maticemi do velikosti 2
krát 2.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Eigenvector" target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/Eigenvector" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/Eigenvector.html" target="_top">Mathworld</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-GramSchmidt"></a>GramSchmidt</span></dt><dd><pre class="synopsis">GramSchmidt
(v,B...)</pre><p>Použít Gramův-Schmidtův proces (na sloupce) vzhledem k unitárnímu prostoru danému <code
class="varname">B</code>. Pokud <code class="varname">B</code> není zadáno, je použit standardní hermitovský
součin. <code class="varname">B</code> může být buď polybilineární funkce dvou argumentů nebo to může být
matice v polybilineární formě. Vektory budou vytvořeny ortogonální vzhledem k <code
class="varname">B</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/GramSchmidtOrthogonalization" target="_top">Planetmath</a> (text je v angličtině)
a <a class="ulink" href="https://cs.wikipedia.org/wiki/Gramova-Schmidtova_ortogonalizace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-HankelMatrix"></a>HankelMatrix</span><
/dt><dd><pre class="synopsis">HankelMatrix (c,r)</pre><p>Henkelova matice, což je matice se stejnými
vedlejšími diagonálami. <code class="varname">c</code> je první řádek a <code class="varname">r</code> je
poslední sloupec. Předpokládá se, že oba argumenty budou vektory a poslední prvek <code
class="varname">c</code> bude stejný jako první prvek <code class="varname">r</code>.</p><p>Více informací
najdete v encyklopedii <a class="ulink" href="https://en.wikipedia.org/wiki/Hankel_matrix"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-HilbertMatrix"></a>HilbertMatrix</span></dt><dd><pre class="synopsis">HilbertMatrix
(n)</pre><p>Hilbertova matice řádu <code class="varname">n</code>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Hilbert_matrix"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink" href="http://planetmath.org/
HilbertMatrix" target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Image"></a>Image</span></dt><dd><pre class="synopsis">Image (T)</pre><p>Získat obraz
(sloupcový prostor) lineární transformace.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Row_and_column_spaces" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-InfNorm"></a>InfNorm</span></dt><dd><pre
class="synopsis">InfNorm (v)</pre><p>Získat k vektoru normu typu nekonečno, někdy také nazývanou maximální
norma.</p></dd><dt><span class="term"><a
name="gel-function-InvariantFactorsInteger"></a>InvariantFactorsInteger</span></dt><dd><pre
class="synopsis">InvariantFactorsInteger (M)</pre><p>Získat invariantní činitele čtvercové celočíselné
matice.</p></dd><dt><span class="term"><a name="gel-function-InverseHilbertMatrix"></a>InverseHilbertMatri
x</span></dt><dd><pre class="synopsis">InverseHilbertMatrix (n)</pre><p>Inverzní Hilbertova matice řádu
<code class="varname">n</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Hilbert_matrix" target="_top">Wikipedia</a> (text je v angličtině) a <a
class="ulink" href="http://planetmath.org/HilbertMatrix" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsHermitian"></a>IsHermitian</span></dt><dd><pre class="synopsis">IsHermitian
(M)</pre><p>Je matice hermitovská? Tj. zda je rovna své konjugované transpozici.</p><p>Více informací najdete
v encyklopediích <a class="ulink" href="http://planetmath.org/HermitianMatrix" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink" href="https://en.wikipedia.org/wiki/Hermitian_matrix"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a name="gel-function-Is
InSubspace"></a>IsInSubspace</span></dt><dd><pre class="synopsis">IsInSubspace (v,W)</pre><p>Zjistit, zda je
vektor v podprostoru.</p></dd><dt><span class="term"><a
name="gel-function-IsInvertible"></a>IsInvertible</span></dt><dd><pre class="synopsis">IsInvertible
(n)</pre><p>Je matice (nebo číslo) invertovatelná (matice celých čísel je invertovatelná, když je
invertovatelná nad celými čísly)?</p></dd><dt><span class="term"><a
name="gel-function-IsInvertibleField"></a>IsInvertibleField</span></dt><dd><pre
class="synopsis">IsInvertibleField (n)</pre><p>Je matice (nebo číslo) invertovatelná nad
tělesem.</p></dd><dt><span class="term"><a name="gel-function-IsNormal"></a>IsNormal</span></dt><dd><pre
class="synopsis">IsNormal (M)</pre><p>Je <code class="varname">M</code> normální matice. To jest, zda <strong
class="userinput"><code>M*M' == M'*M</code></strong>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/NormalMa
trix" target="_top">Planetmath</a> (text je v angličtině) nebo <a class="ulink"
href="http://mathworld.wolfram.com/NormalMatrix.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsPositiveDefinite"></a>IsPositiveDefinite</span></dt><dd><pre
class="synopsis">IsPositiveDefinite (M)</pre><p>Je matice <code class="varname">M</code> hermitovská
pozitivně definitní matice? To znamená, zda je <strong
class="userinput"><code>HermitianProduct(M*v,v)</code></strong> vždy striktně pozitivní pro libovolný vektor
<code class="varname">v</code>. <code class="varname">M</code> musí být čtvercová a hermitovská, aby byla
pozitivně definitní. Kontrola, zda tomu tak je, spočívá v tom, zda každá hlavní podmatice má nezáporný
determinant. (Viz <a class="link"
href="ch11s08.html#gel-function-HermitianProduct">HermitianProduct</a>)</p><p>Poznamenejme, že někteří autoři
(např. Mathworld) nevyžadují, aby
matice <code class="varname">M</code> byla hermitovská a tak podmínka není skutečnu částí unitárního
prostoru, ale neberte to za dogma. Pokud chcete takovou kontrolu provést, jednoduše zkontrolujte hermitovskou
část matice <code class="varname">M</code> takto: <strong
class="userinput"><code>IsPositiveDefinite(M+M')</code></strong>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/PositiveDefinite" target="_top">Planetmath</a>
(text je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Pozitivn%C4%9B_definitn%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsPositiveSemidefinite"></a>IsPositiveSemidefinite</span></dt><dd><pre
class="synopsis">IsPositiveSemidefinite (M)</pre><p>Je matice <code class="varname">M</code>
hermitovská pozitivně semidefinitní matice? To znamená, zda je <strong
class="userinput"><code>HermitianProduct(M*v,v)</code></strong> vždy nezáporná pro libovolný vektor <code
class="varname">v</code>. <code class="varname">M</code> musí být čtvercová a hermitovská, aby byla pozitivně
semidefinitní. Kontrola, zda tomu tak je, spočívá v tom, zda každá hlavní podmatice má nezáporný determinant.
(Viz <a class="link"
href="ch11s08.html#gel-function-HermitianProduct">HermitianProduct</a>)</p><p>Poznamenejme, že někteří autoři
(např. Mathworld) nevyžadují, aby matice <code class="varname">M</code> byla hermitovská a tak podmínka není
skutečnu částí unitárního prostoru, ale neberte to za dogma. Pokud chcete takovou kontrolu provést, jednoduše
zkontrolujte hermitovskou část matice <code class="varname">M</code> takto: <strong
class="userinput"><code>IsPositiveSemidefinite(M+M')</code></strong>.</p><p>Více informací najdete v
encykloped
iích <a class="ulink" href="http://planetmath.org/PositiveSemidefinite" target="_top">Planetmath</a> (text
je v angličtině) nebo <a class="ulink" href="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html"
target="_top">Mathworld</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsSkewHermitian"></a>IsSkewHermitian</span></dt><dd><pre class="synopsis">IsSkewHermitian
(M)</pre><p>Je matice antihermitovská? To znamená, zda je konjugovaná transpozice rovna negativní
matici.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/SkewHermitianMatrix" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsUnitary"></a>IsUnitary</span></dt><dd><pre class="synopsis">IsUnitary (M)</pre><p>Je
matice unitární? To je, zda <strong class="userinput"><code>M'*M</code></strong> a <strong
class="userinput"><code>M*M'</code></strong> dají stejnou jednot
kovou matici.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/UnitaryTransformation" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/UnitaryMatrix.html" target="_top">Mathworld</a> (text je v
angličtině) nebo <a class="ulink" href="http://cs.wikipedia.org/wiki/Unit%C3%A1rn%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-JordanBlock"></a>JordanBlock</span></dt><dd><pre class="synopsis">JordanBlock
(n,lambda)</pre><p>Alternativní názvy: <code class="function">J</code></p><p>Získat Jordanův blok
odpovídající vlastnímu číslu <code class="varname">lambda</code> s násobností <code
class="varname">n</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/JordanCanonicalFormTheorem" target="_top">Planetmath</a> (text je v angličtině),
<a class="ulink" href="http://mathwor
ld.wolfram.com/JordanBlock.html" target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Jordanova_norm%C3%A1ln%C3%AD_forma"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Kernel"></a>Kernel</span></dt><dd><pre class="synopsis">Kernel (T)</pre><p>Získat jádro
(nulový prostor) lineární transformace.</p><p>(Viz <a class="link"
href="ch11s09.html#gel-function-NullSpace">NullSpace</a>)</p></dd><dt><span class="term"><a
name="gel-function-KroneckerProduct"></a>KroneckerProduct</span></dt><dd><pre
class="synopsis">KroneckerProduct (M, N)</pre><p>Alternativní názvy: <code
class="function">TensorProduct</code></p><p>Spočítat Kroneckerův součin (tenzorový součin ve standardní bázi)
dvou matic.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Kronecker_product"
target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/KroneckerProduct" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/KroneckerProduct.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-LUDecomposition"></a>LUDecomposition</span></dt><dd><pre class="synopsis">LUDecomposition
(A, L, U)</pre><p>Získat LU rozklad matice <code class="varname">A</code> tak, že se najde dolní a horní
trojúhelníková matice, jejichž součinem je <code class="varname">A</code>. Výsledek se uloží v <code
class="varname">L</code> a <code class="varname">U</code>, což by měly být odkazy na proměnné. V případě
úspěchu vrací <code class="constant">true</code>. Například předpokládejme, že A je čtvercová matice, pak po
spuštění: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LUDecomposition(A,&L,&U)</code></strong>
-</pre><p> budete mít dolní matici uloženou v proměnné s názvem <code class="varname">L</code> a horní matici
v proměnné s názvem <code class="varname">U</code>.</p><p>Jedná se o LU rozklad matice známý také jako
Croutův a/nebo Choleského rozklad. (ISBN 0-201-11577-8 pp.99-103) Horní trojúhelníková matice zahrnuje
diagonálu hodnot 1. Nejedná se o Doolittlovu metodu, která zahrnuje diagonálu jedniček do dolní
matice.</p><p>Ne všechny matice mají LU rozklad, například <strong
class="userinput"><code>[0,1;1,0]</code></strong> jej nemá a tato funkce v takovém případě vrátí <code
class="constant">false</code> a nastaví <code class="varname">L</code> a <code class="varname">U</code> na
<code class="constant">null</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/LU_decomposition"
target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/LUDecomposition" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/LUDecomposition.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Minor"></a>Minor</span></dt><dd><pre
class="synopsis">Minor (M,i,j)</pre><p>Získat subdeterminant (též minor) <code class="varname">i</code>-<code
class="varname">j</code> matice.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/Minor" target="_top">Planetmath</a>.</p></dd><dt><span class="term"><a
name="gel-function-NonPivotColumns"></a>NonPivotColumns</span></dt><dd><pre class="synopsis">NonPivotColumns
(M)</pre><p>Vrátit sloupce matice, které nemají pivot.</p></dd><dt><span class="term"><a
name="gel-function-Norm"></a>Norm</span></dt><dd><pre class="synopsis">Norm (v,p...)</pre><p>Alternativní
názvy: <code class="function">norm</code></p><p>Získat normu typu p (nebo typu 2, pokud není zadáno p)
vektoru.</p></dd><dt><span class="term"><a name="gel-function-NullSpace"></a>NullSpace</span></dt><dd><pre
class="synopsis">NullSpace (T)</pre><p>Získat nulový prostor ma
tice. Tj. jádro lineární transformace, která matici představuje. Výsledek se vrací v podobě matice, jejíž
sloupcový prostor je nulovým prostorem z <code class="varname">T</code>.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="http://planetmath.org/Nullspace" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-Nullity"></a>Nullity</span></dt><dd><pre
class="synopsis">Nullity (M)</pre><p>Alternativní názvy: <code class="function">nullity</code></p><p>Získat
nulovost matice. Tzn. vrátit rozměry nulového prostoru; rozměry jádra matice <code
class="varname">M</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/Nullity" target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span
class="term"><a name="gel-function-OrthogonalComplement"></a>OrthogonalComplement</span></dt><dd><pre
class="synopsis">OrthogonalComplement (M)</pre>
<p>Získat ortogonální doplněk sloupcového prostoru.</p></dd><dt><span class="term"><a
name="gel-function-PivotColumns"></a>PivotColumns</span></dt><dd><pre class="synopsis">PivotColumns
(M)</pre><p>Vrátit sloupce matice s pivoty, tzn. sloupce, které mají 1 v řádkově redukované podobě. Rovněž
vrací řádek, ve kterém se vyskytly.</p></dd><dt><span class="term"><a
name="gel-function-Projection"></a>Projection</span></dt><dd><pre class="synopsis">Projection
(v,W,B...)</pre><p>Projekce vektoru <code class="varname">v</code> do podprostoru <code
class="varname">W</code> vzhledem k unitárnímu prostoru danému <code class="varname">B</code>. Pokud <code
class="varname">B</code> není zadáno, je použit standardní hermitovský součin. <code class="varname">B</code>
může být buď polybilineární funkce dvou argumentů nebo to může být matice v polybilineární
formě.</p></dd><dt><span class="term"><a name="gel-function-QRDecomposition"></a>QRDecompositio
n</span></dt><dd><pre class="synopsis">QRDecomposition (A, Q)</pre><p>Získat QR rozklad čtvercové matice
<code class="varname">A</code>, vrací horní trojúhelníkovou matici <code class="varname">R</code> a nastavuje
<code class="varname">Q</code> na ortogonální (unitární) matici. <code class="varname">Q</code> by měl být
odkaz na proměnnou nebo <code class="constant">null</code>, pokud nic vrátit nechcete. Například pro </p><pre
class="screen"><code class="prompt">genius></code> <strong class="userinput"><code>R =
QRDecomposition(A,&Q)</code></strong>
-</pre><p> budete mít horní trojúhelníkovou matici uloženou v proměnné s názvem <code
class="varname">R</code> a ortogonální (unitární) matici v <code class="varname">Q</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/QR_decomposition"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/QRDecomposition" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/QRDecomposition.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-RayleighQuotient"></a>RayleighQuotient</span></dt><dd><pre
class="synopsis">RayleighQuotient (A,x)</pre><p>Vrátit Rayleighův podíl (nazývaný také Rayleighův-Ritzův
koeficient nebo podíl) matice a vektoru.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/RayleighQuotient" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-RayleighQuotientIteration"></a>RayleighQuotientIteration</span></dt><dd><pre
class="synopsis">RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</pre><p>Najít vlastní čísla matice
<code class="varname">A</code> pomocí iterační metody Rayleighova podílu. <code class="varname">x</code> je
odhadovaný vlastní vektor a mohl by být náhodný. Měl by mít nenulovou imaginární část, pokud existuje nějaká
možnost, že budou nalezena komplexní vlastní čísla. Kód bude nanejvýše
v <code class="varname">maxiter</code> iteracích a vracet <code class="constant">null</code>, pokud není
možné získat výsledek v rámci chyby <code class="varname">epsilon</code>. <code class="varname">vecref</code>
by měl být buď <code class="constant">null</code> nebo odkaz na proměnnou, do které by se měl uložit vlastní
vektor.</p><p>Více informací o Rayleighově podíle najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/RayleighQuotient" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-Rank"></a>Rank</span></dt><dd><pre
class="synopsis">Rank (M)</pre><p>Alternativní názvy: <code class="function">rank</code></p><p>Získat hodnost
matice.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/SylvestersLaw" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-RosserMatrix"></a>RosserMatrix<
/span></dt><dd><pre class="synopsis">RosserMatrix ()</pre><p>Vrátit Rosserovu matici, která je klasickým
symetrickým problémem testu vlastního čísla.</p></dd><dt><span class="term"><a
name="gel-function-Rotation2D"></a>Rotation2D</span></dt><dd><pre class="synopsis">Rotation2D
(úhel)</pre><p>Alternativní názvy: <code class="function">RotationMatrix</code></p><p>Vrátit matici
odpovídající otočení okolo počátku v R<sup>2</sup>.</p></dd><dt><span class="term"><a
name="gel-function-Rotation3DX"></a>Rotation3DX</span></dt><dd><pre class="synopsis">Rotation3DX
(úhel)</pre><p>Vrátit matici odpovídající otočení okolo počátku v R<sup>3</sup> kolem osy
x.</p></dd><dt><span class="term"><a name="gel-function-Rotation3DY"></a>Rotation3DY</span></dt><dd><pre
class="synopsis">Rotation3DY (úhel)</pre><p>Vrátit matici odpovídající otočení okolo počátku v R<sup>3</sup>
kolem osy y.</p></dd><dt><span class="term"><a name="gel-function-Rotation3DZ"></a>Rota
tion3DZ</span></dt><dd><pre class="synopsis">Rotation3DZ (úhel)</pre><p>Vrátit matici odpovídající otočení
okolo počátku v R<sup>3</sup> kolem osy z.</p></dd><dt><span class="term"><a
name="gel-function-RowSpace"></a>RowSpace</span></dt><dd><pre class="synopsis">RowSpace (M)</pre><p>Získat
bázi matice pro prostor řádků matice.</p></dd><dt><span class="term"><a
name="gel-function-SesquilinearForm"></a>SesquilinearForm</span></dt><dd><pre
class="synopsis">SesquilinearForm (v,A,w)</pre><p>Vyhodnotit (v,w) vzhledem k polybilineární formě dané
maticí <code class="varname">A</code>.</p></dd><dt><span class="term"><a
name="gel-function-SesquilinearFormFunction"></a>SesquilinearFormFunction</span></dt><dd><pre
class="synopsis">SesquilinearFormFunction (A)</pre><p>Vrátit funkci vyhodnocující dva vektory vzhledem k
polybilineární formě dané maticí <code class="varname">A</code>.</p></dd><dt><span class="term"><a
name="gel-function-SmithNormalFormField"></a>S
mithNormalFormField</span></dt><dd><pre class="synopsis">SmithNormalFormField (A)</pre><p>Vrátit Smithův
kanonický tvar (normální forma) matice nad poli (bude končit s jedničkami na diagonále).</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Smith_normal_form"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-SmithNormalFormInteger"></a>SmithNormalFormInteger</span></dt><dd><pre
class="synopsis">SmithNormalFormInteger (M)</pre><p>Vrátit Smithův kanonický tvar (normální formu) pro
čtvercové celočíselné matice nad celými čísly.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Smith_normal_form"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-SolveLinearSystem"></a>SolveLinearSystem</span></dt><dd><pre
class="synopsis">SolveLinearSystem (M,V,argumenty...)</pre><p>Vyřešit lineární systém Mx=V, vrátit řešení V,
pokud existuje jedinečné řešení, jinak vrátit <code class="constant">null</code>. Je možné použít dva
dodatečné parametry předávané odkazem, ve kterých získáte redukované M a V.</p></dd><dt><span class="term"><a
name="gel-function-ToeplitzMatrix"></a>ToeplitzMatrix</span></dt><dd><pre class="synopsis">ToeplitzMatrix (s,
r...)</pre><p>Vrátit Teplitzovu matici sestavenou podle zadaného prvního sloupce <code
class="varname">c</code> a (volitelně) prvního řádku <code class="varname">r</code>. Pokud je zadán pouze
sloupec <code class="varname">c</code>, je pro první řádek použita konjugovaná a nekonjugovaná verze, aby se
získala hermitovská matice (samozřejmě za předpokladu, že je první prvek reálný)
.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Toeplitz_matrix" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://planetmath.org/ToeplitzMatrix" target="_top">Planetmath</a> for
more information.
- </p></dd><dt><span class="term"><a name="gel-function-Trace"></a>Trace</span></dt><dd><pre
class="synopsis">Trace (M)</pre><p>Alternativní názvy: <code class="function">trace</code></p><p>Spočítat
stopu matice. Jedná se o součet prvků na hlavní diagonále čtvercové matice.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Trace_(linear_algebra)"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/Trace" target="_top">Planetmath</a> for more
information.
- </p></dd><dt><span class="term"><a name="gel-function-Transpose"></a>Transpose</span></dt><dd><pre
class="synopsis">Transpose (M)</pre><p>Transponovat matici. Funkčně je to stejné, jako operátor <strong
class="userinput"><code>.'</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Transpose" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/Transpose" target="_top">Planetmath</a> for more
information.
- </p></dd><dt><span class="term"><a
name="gel-function-VandermondeMatrix"></a>VandermondeMatrix</span></dt><dd><pre
class="synopsis">VandermondeMatrix (v)</pre><p>Alternativní názvy: <code
class="function">vander</code></p><p>Vrátit Vandermondovu matici.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Vandermonde_matrix"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-VectorAngle"></a>VectorAngle</span></dt><dd><pre class="synopsis">VectorAngle
(v,w,B...)</pre><p>Úhel dvou vektorů vzhledem k unitárnímu prostoru daného <code class="varname">B</code>.
Pokud <code class="varname">B</code> není zadáno, je použit standardní hermitovský součin. <code
class="varname">B</code> může být buď polybilineární funkce dvou argumentů nebo to může být matice v
polybilineární formě.</p></dd><dt><span class="term"><a
name="gel-function-VectorSpaceDirectSum"></a>VectorSpaceDirectSum</span></dt><dd><pre
class="synopsis">VectorSpaceDirectSum (M,N)</pre><p>Přímý součet vektorových prostorů M a
N.</p></dd><dt><span class="term"><a
name="gel-function-VectorSubspaceIntersection"></a>VectorSubspaceIntersection</span></dt><dd><pre
class="synopsis">VectorSubspaceIntersection (M,N)</pre><p>Průnik podprostorů daných pomocí M a
N</p></dd><dt><span class="term"><a name="gel-
function-VectorSubspaceSum"></a>VectorSubspaceSum</span></dt><dd><pre class="synopsis">VectorSubspaceSum
(M,N)</pre><p>Součet vektorových prostorů M a N, tj. {w | w=m+n, m in M, n in N}.</p></dd><dt><span
class="term"><a name="gel-function-adj"></a>adj</span></dt><dd><pre class="synopsis">adj
(m)</pre><p>Alternativní názvy: <code class="function">Adjugate</code></p><p>Získat adjungovanou (reciproku)
matici.</p></dd><dt><span class="term"><a name="gel-function-cref"></a>cref</span></dt><dd><pre
class="synopsis">cref (M)</pre><p>Alternativní názvy: <code class="function">CREF</code> <code
class="function">ColumnReducedEchelonForm</code></p><p>Spočítat sloupcově odstupňovaný tvar
matice.</p></dd><dt><span class="term"><a name="gel-function-det"></a>det</span></dt><dd><pre
class="synopsis">det (M)</pre><p>Alternativní názvy: <code class="function">Determinant</code></p><p>Získat
determinant matice.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Determinant" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/Determinant2" target="_top">Planetmath</a> for more
information.
- </p></dd><dt><span class="term"><a name="gel-function-ref"></a>ref</span></dt><dd><pre
class="synopsis">ref (M)</pre><p>Alternativní názvy: <code class="function">REF</code> <code
class="function">RowEchelonForm</code></p><p>Získat řádkově odstupňovaný tvar matice. To jest, použít
Gaussovu eliminaci, ale bez zpětného dosazování do <code class="varname">M</code>. Nenulové řádky jsou
poděleny, aby všechny pivoty byly 1.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Row_echelon_form"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/RowEchelonForm" target="_top">Planetmath</a> for
more information.
- </p></dd><dt><span class="term"><a name="gel-function-rref"></a>rref</span></dt><dd><pre
class="synopsis">rref (M)</pre><p>Alternativní názvy: <code class="function">RREF</code> <code
class="function">ReducedRowEchelonForm</code></p><p>Získat redukovaný řádkově odstupňovaný tvar matice. To
jest, použít Gaussovu eliminaci se zpětným dosazováním do <code class="varname">M</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Reduced_row_echelon_form"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/ReducedRowEchelonForm" target="_top">Planetmath</a>
for more information.
- </p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s08.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s10.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Práce s
maticemi </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Kombinatorika</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Lineární
algebra</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s08.html" title="Práce s maticemi"><link rel="next"
href="ch11s10.html" title="Kombinatorika"></head><body bgcolor="white" text="black" link="#0000FF"
vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Lineární algebra</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s08.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s10.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><d
iv><h2 class="title" style="clear: both"><a name="genius-gel-function-list-linear-algebra"></a>Lineární
algebra</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AuxiliaryUnitMatrix"></a>AuxiliaryUnitMatrix</span></dt><dd><pre
class="synopsis">AuxiliaryUnitMatrix (n)</pre><p>Získat pomocnou jednotkovou matici velikosti <code
class="varname">n</code>. Jde o čtvercovou matici ze samých nul vyjma diagonály, na které jsou jedničky. Je
to Jordanův blok s jedním vlastním číslem nula.</p><p>Více informací o Jordanově kanonické formě najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/JordanCanonicalFormTheorem"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/JordanBlock.html" target="_top">Mathworld</a> (text je v angličtině) nebo
<a class="ulink" href="http://cs.wikipedia.org/wiki/Jordanova_norm%C3%A1ln%C3%AD_forma" t
arget="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-BilinearForm"></a>BilinearForm</span></dt><dd><pre class="synopsis">BilinearForm
(v,A,w)</pre><p>Spočítat (v,w) vzhledem k bilineární formě dané maticí A.</p></dd><dt><span class="term"><a
name="gel-function-BilinearFormFunction"></a>BilinearFormFunction</span></dt><dd><pre
class="synopsis">BilinearFormFunction (A)</pre><p>Vrátit funkci takovou, že vyhodnocuje dva vektory vzhledem
k bilineární formě dané maticí A.</p></dd><dt><span class="term"><a
name="gel-function-CharacteristicPolynomial"></a>CharacteristicPolynomial</span></dt><dd><pre
class="synopsis">CharacteristicPolynomial (M)</pre><p>Alternativní názvy: <code
class="function">CharPoly</code></p><p>Získat charakteristický polynom v podobě vektoru. Konkrétně vrací
koeficienty polynomu počínaje konstantním členem. Jedná se o polynom definovaný pomocí <strong
class="userinput"><code>det(M-xI)</code></strong>. Ko
řeny tohoto polynomu jsou vlastní čísla matice <code class="varname">M</code>. Viz <a class="link"
href="ch11s09.html#gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</a>.</p><p>Více
informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Characteristic_polynomial" target="_top">Wikipedia</a> (text je v
anličtině) a <a class="ulink" href="http://planetmath.org/CharacteristicEquation"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-CharacteristicPolynomialFunction"></a>CharacteristicPolynomialFunction</span></dt><dd><pre
class="synopsis">CharacteristicPolynomialFunction (M)</pre><p>Získat charakteristický polynom v podobě
funkce. Jedná se o polynom definovaný pomocí <strong class="userinput"><code>det(M-xI)</code></strong>.
Kořeny tohoto polynomu jsou vlastní čísla matice <code class="varname">M</code>. Viz <a class="link"
href="ch11s09
.html#gel-function-CharacteristicPolynomial">CharacteristicPolynomial</a>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Characteristic_polynomial"
target="_top">Wikipedia</a> (text je v anličtině) a <a class="ulink"
href="http://planetmath.org/CharacteristicEquation" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-ColumnSpace"></a>ColumnSpace</span></dt><dd><pre class="synopsis">ColumnSpace
(M)</pre><p>Získat bázi matice pro prostor sloupců matice. Prakticky se vrátí matice, jejíž sloupce jsou
bázemi pro prostor sloupců matice <code class="varname">M</code>. To je prostor rozložený podle sloupců
matice <code class="varname">M</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Row_and_column_spaces" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="
gel-function-CommutationMatrix"></a>CommutationMatrix</span></dt><dd><pre class="synopsis">CommutationMatrix
(m, n)</pre><p>Vrátit komutační matici <strong class="userinput"><code>K(m,n)</code></strong>, což je
jedinečná matice velikosti <strong class="userinput"><code>m*n</code></strong> krát <strong
class="userinput"><code>m*n</code></strong>, která splňuje <strong class="userinput"><code>K(m,n) *
MakeVector(A) = MakeVector(A.')</code></strong> pro všechny matice <code class="varname">A</code> velikosti
<code class="varname">m</code> krát <code class="varname">n</code>.</p></dd><dt><span class="term"><a
name="gel-function-CompanionMatrix"></a>CompanionMatrix</span></dt><dd><pre class="synopsis">CompanionMatrix
(p)</pre><p>Doplňková matice polynomu (jako vektor).</p></dd><dt><span class="term"><a
name="gel-function-ConjugateTranspose"></a>ConjugateTranspose</span></dt><dd><pre
class="synopsis">ConjugateTranspose (M)</pre><p>Konjugovaná transpozice matice (adju
ngovaná). Je to stejné jako operátor <strong class="userinput"><code>'</code></strong>.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Conjugate_transpose"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink"
href="http://planetmath.org/ConjugateTranspose" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Convolution"></a>Convolution</span></dt><dd><pre class="synopsis">Convolution
(a,b)</pre><p>Alternativní názvy: <code class="function">convol</code></p><p>Spočítat konvoluci dvou
vodorovných vektorů.</p></dd><dt><span class="term"><a
name="gel-function-ConvolutionVector"></a>ConvolutionVector</span></dt><dd><pre
class="synopsis">ConvolutionVector (a,b)</pre><p>Spočítat konvoluci dvou vodorovných vektorů. Výsledek vrátí
jako vektor a ne sečtené dohromady.</p></dd><dt><span class="term"><a name="gel-function-CrossProduct"></a>Cr
ossProduct</span></dt><dd><pre class="synopsis">CrossProduct (v,w)</pre><p>Vektorový součin dvou vektorů v
R<sup>3</sup> jako sloupcový vektor.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Vektorov%C3%BD_sou%C4%8Din"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-DeterminantalDivisorsInteger"></a>DeterminantalDivisorsInteger</span></dt><dd><pre
class="synopsis">DeterminantalDivisorsInteger (M)</pre><p>Získat determinantové dělitele celočíselné
matice.</p></dd><dt><span class="term"><a name="gel-function-DirectSum"></a>DirectSum</span></dt><dd><pre
class="synopsis">DirectSum (M,N...)</pre><p>Přímý součet matic.</p><p>Více informací najdete v encyklopedii
<a class="ulink"
href="https://cs.wikipedia.org/wiki/S%C4%8D%C3%ADt%C3%A1n%C3%AD_matic#Direktn.C3.AD_sou.C4.8Det"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a name="gel-function-DirectSumMatrixVector"></a
DirectSumMatrixVector</span></dt><dd><pre class="synopsis">DirectSumMatrixVector (v)</pre><p>Přímý součet
vektoru matic.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/S%C4%8D%C3%ADt%C3%A1n%C3%AD_matic#Direktn.C3.AD_sou.C4.8Det"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Eigenvalues"></a>Eigenvalues</span></dt><dd><pre class="synopsis">Eigenvalues
(M)</pre><p>Alternativní názvy: <code class="function">eig</code></p><p>Získat vlastní čísla čtvercové
matice. V současnosti pracuje pouze pro matice do velikosti 4 krát 4 nebo pro trojúhelníkové matice (pro
které jsou vlastní čísla na diagonále).</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/Eigenvalue" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/Eigenvalue.html" target="_top">Mathworld</a> (text je v
angličt
ině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Vlastn%C3%AD_%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Eigenvectors"></a>Eigenvectors</span></dt><dd><pre class="synopsis">Eigenvectors
(M)</pre><pre class="synopsis">Eigenvectors (M,&vlastni_cisla)</pre><pre class="synopsis">Eigenvectors
(M, &vlastni_cisla, &nasobnosti)</pre><p>Získat vlastní vektory čtvercové matice. Volitelně získat
také vlastní čísla a jejich algebraické násobnosti. V současnosti pracuje pouze s maticemi do velikosti 2
krát 2.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/Eigenvector" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/Eigenvector.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Vlastn%C3%AD_%C4%8D%C3%ADslo"
target="_top">Wikipedia
</a>.</p></dd><dt><span class="term"><a name="gel-function-GramSchmidt"></a>GramSchmidt</span></dt><dd><pre
class="synopsis">GramSchmidt (v,B...)</pre><p>Použít Gramův-Schmidtův proces (na sloupce) vzhledem k
unitárnímu prostoru danému <code class="varname">B</code>. Pokud <code class="varname">B</code> není zadáno,
je použit standardní hermitovský součin. <code class="varname">B</code> může být buď polybilineární funkce
dvou argumentů nebo to může být matice v polybilineární formě. Vektory budou vytvořeny ortogonální vzhledem k
<code class="varname">B</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/GramSchmidtOrthogonalization" target="_top">Planetmath</a> (text je v angličtině)
a <a class="ulink" href="https://cs.wikipedia.org/wiki/Gramova-Schmidtova_ortogonalizace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-HankelMatrix"></a>HankelMatrix</span></dt><
dd><pre class="synopsis">HankelMatrix (c,r)</pre><p>Henkelova matice, což je matice se stejnými vedlejšími
diagonálami. <code class="varname">c</code> je první řádek a <code class="varname">r</code> je poslední
sloupec. Předpokládá se, že oba argumenty budou vektory a poslední prvek <code class="varname">c</code> bude
stejný jako první prvek <code class="varname">r</code>.</p><p>Více informací najdete v encyklopedii <a
class="ulink" href="https://en.wikipedia.org/wiki/Hankel_matrix" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-HilbertMatrix"></a>HilbertMatrix</span></dt><dd><pre class="synopsis">HilbertMatrix
(n)</pre><p>Hilbertova matice řádu <code class="varname">n</code>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Hilbert_matrix"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink" href="http://planetmath.org/Hilbe
rtMatrix" target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Image"></a>Image</span></dt><dd><pre class="synopsis">Image (T)</pre><p>Získat obraz
(sloupcový prostor) lineární transformace.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Row_and_column_spaces" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-InfNorm"></a>InfNorm</span></dt><dd><pre
class="synopsis">InfNorm (v)</pre><p>Získat k vektoru normu typu nekonečno, někdy také nazývanou maximální
norma.</p></dd><dt><span class="term"><a
name="gel-function-InvariantFactorsInteger"></a>InvariantFactorsInteger</span></dt><dd><pre
class="synopsis">InvariantFactorsInteger (M)</pre><p>Získat invariantní činitele čtvercové celočíselné
matice.</p></dd><dt><span class="term"><a
name="gel-function-InverseHilbertMatrix"></a>InverseHilbertMatrix</sp
an></dt><dd><pre class="synopsis">InverseHilbertMatrix (n)</pre><p>Inverzní Hilbertova matice řádu <code
class="varname">n</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Hilbert_matrix" target="_top">Wikipedia</a> (text je v angličtině) a <a
class="ulink" href="http://planetmath.org/HilbertMatrix" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsHermitian"></a>IsHermitian</span></dt><dd><pre class="synopsis">IsHermitian
(M)</pre><p>Je matice hermitovská? Tj. zda je rovna své konjugované transpozici.</p><p>Více informací najdete
v encyklopediích <a class="ulink" href="http://planetmath.org/HermitianMatrix" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink" href="https://en.wikipedia.org/wiki/Hermitian_matrix"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsInSub
space"></a>IsInSubspace</span></dt><dd><pre class="synopsis">IsInSubspace (v,W)</pre><p>Zjistit, zda je
vektor v podprostoru.</p></dd><dt><span class="term"><a
name="gel-function-IsInvertible"></a>IsInvertible</span></dt><dd><pre class="synopsis">IsInvertible
(n)</pre><p>Je matice (nebo číslo) invertovatelná (matice celých čísel je invertovatelná, když je
invertovatelná nad celými čísly)?</p></dd><dt><span class="term"><a
name="gel-function-IsInvertibleField"></a>IsInvertibleField</span></dt><dd><pre
class="synopsis">IsInvertibleField (n)</pre><p>Je matice (nebo číslo) invertovatelná nad
tělesem.</p></dd><dt><span class="term"><a name="gel-function-IsNormal"></a>IsNormal</span></dt><dd><pre
class="synopsis">IsNormal (M)</pre><p>Je <code class="varname">M</code> normální matice. To jest, zda <strong
class="userinput"><code>M*M' == M'*M</code></strong>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/NormalMatrix"
target="_top">Planetmath</a> (text je v angličtině) nebo <a class="ulink"
href="http://mathworld.wolfram.com/NormalMatrix.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsPositiveDefinite"></a>IsPositiveDefinite</span></dt><dd><pre
class="synopsis">IsPositiveDefinite (M)</pre><p>Je matice <code class="varname">M</code> hermitovská
pozitivně definitní matice? To znamená, zda je <strong
class="userinput"><code>HermitianProduct(M*v,v)</code></strong> vždy striktně pozitivní pro libovolný vektor
<code class="varname">v</code>. <code class="varname">M</code> musí být čtvercová a hermitovská, aby byla
pozitivně definitní. Kontrola, zda tomu tak je, spočívá v tom, zda každá hlavní podmatice má nezáporný
determinant. (Viz <a class="link"
href="ch11s08.html#gel-function-HermitianProduct">HermitianProduct</a>)</p><p>Poznamenejme, že někteří autoři
(např. Mathworld) nevyžadují, aby mati
ce <code class="varname">M</code> byla hermitovská a tak podmínka není skutečnu částí unitárního prostoru,
ale neberte to za dogma. Pokud chcete takovou kontrolu provést, jednoduše zkontrolujte hermitovskou část
matice <code class="varname">M</code> takto: <strong
class="userinput"><code>IsPositiveDefinite(M+M')</code></strong>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/PositiveDefinite" target="_top">Planetmath</a>
(text je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Pozitivn%C4%9B_definitn%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-IsPositiveSemidefinite"></a>IsPositiveSemidefinite</span></dt><dd><pre
class="synopsis">IsPositiveSemidefinite (M)</pre><p>Je matice <code class="varname">M</code> hermi
tovská pozitivně semidefinitní matice? To znamená, zda je <strong
class="userinput"><code>HermitianProduct(M*v,v)</code></strong> vždy nezáporná pro libovolný vektor <code
class="varname">v</code>. <code class="varname">M</code> musí být čtvercová a hermitovská, aby byla pozitivně
semidefinitní. Kontrola, zda tomu tak je, spočívá v tom, zda každá hlavní podmatice má nezáporný determinant.
(Viz <a class="link"
href="ch11s08.html#gel-function-HermitianProduct">HermitianProduct</a>)</p><p>Poznamenejme, že někteří autoři
(např. Mathworld) nevyžadují, aby matice <code class="varname">M</code> byla hermitovská a tak podmínka není
skutečnu částí unitárního prostoru, ale neberte to za dogma. Pokud chcete takovou kontrolu provést, jednoduše
zkontrolujte hermitovskou část matice <code class="varname">M</code> takto: <strong
class="userinput"><code>IsPositiveSemidefinite(M+M')</code></strong>.</p><p>Více informací najdete v
encyklopediích
<a class="ulink" href="http://planetmath.org/PositiveSemidefinite" target="_top">Planetmath</a> (text je v
angličtině) nebo <a class="ulink" href="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html"
target="_top">Mathworld</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsSkewHermitian"></a>IsSkewHermitian</span></dt><dd><pre class="synopsis">IsSkewHermitian
(M)</pre><p>Je matice antihermitovská? To znamená, zda je konjugovaná transpozice rovna negativní
matici.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/SkewHermitianMatrix" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-IsUnitary"></a>IsUnitary</span></dt><dd><pre class="synopsis">IsUnitary (M)</pre><p>Je
matice unitární? To je, zda <strong class="userinput"><code>M'*M</code></strong> a <strong
class="userinput"><code>M*M'</code></strong> dají stejnou jednotkovou
matici.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/UnitaryTransformation" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/UnitaryMatrix.html" target="_top">Mathworld</a> (text je v
angličtině) nebo <a class="ulink" href="http://cs.wikipedia.org/wiki/Unit%C3%A1rn%C3%AD_matice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-JordanBlock"></a>JordanBlock</span></dt><dd><pre class="synopsis">JordanBlock
(n,lambda)</pre><p>Alternativní názvy: <code class="function">J</code></p><p>Získat Jordanův blok
odpovídající vlastnímu číslu <code class="varname">lambda</code> s násobností <code
class="varname">n</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/JordanCanonicalFormTheorem" target="_top">Planetmath</a> (text je v angličtině),
<a class="ulink" href="http://mathworld.wo
lfram.com/JordanBlock.html" target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Jordanova_norm%C3%A1ln%C3%AD_forma"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Kernel"></a>Kernel</span></dt><dd><pre class="synopsis">Kernel (T)</pre><p>Získat jádro
(nulový prostor) lineární transformace.</p><p>(Viz <a class="link"
href="ch11s09.html#gel-function-NullSpace">NullSpace</a>)</p></dd><dt><span class="term"><a
name="gel-function-KroneckerProduct"></a>KroneckerProduct</span></dt><dd><pre
class="synopsis">KroneckerProduct (M, N)</pre><p>Alternativní názvy: <code
class="function">TensorProduct</code></p><p>Spočítat Kroneckerův součin (tenzorový součin ve standardní bázi)
dvou matic.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Kronecker_product" target="_top">Wikipedia</a> (text je v angličtině), <a
class="ulink" href="h
ttp://planetmath.org/KroneckerProduct" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://mathworld.wolfram.com/KroneckerProduct.html" target="_top">Mathworld</a> (text je
v angličtině).</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-LUDecomposition"></a>LUDecomposition</span></dt><dd><pre class="synopsis">LUDecomposition
(A, L, U)</pre><p>Získat LU rozklad matice <code class="varname">A</code> tak, že se najde dolní a horní
trojúhelníková matice, jejichž součinem je <code class="varname">A</code>. Výsledek se uloží v <code
class="varname">L</code> a <code class="varname">U</code>, což by měly být odkazy na proměnné. V případě
úspěchu vrací <code class="constant">true</code>. Například předpokládejme, že A je čtvercová matice, pak po
spuštění: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LUDecomposition(A,&L,&U
)</code></strong>
+</pre><p> budete mít dolní matici uloženou v proměnné s názvem <code class="varname">L</code> a horní matici
v proměnné s názvem <code class="varname">U</code>.</p><p>Jedná se o LU rozklad matice známý také jako
Croutův a/nebo Choleského rozklad. (ISBN 0-201-11577-8 pp.99-103) Horní trojúhelníková matice zahrnuje
diagonálu hodnot 1. Nejedná se o Doolittlovu metodu, která zahrnuje diagonálu jedniček do dolní
matice.</p><p>Ne všechny matice mají LU rozklad, například <strong
class="userinput"><code>[0,1;1,0]</code></strong> jej nemá a tato funkce v takovém případě vrátí <code
class="constant">false</code> a nastaví <code class="varname">L</code> a <code class="varname">U</code> na
<code class="constant">null</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/LUDecomposition" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/LUDecompo
sition.html" target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/LU_rozklad" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-Minor"></a>Minor</span></dt><dd><pre class="synopsis">Minor
(M,i,j)</pre><p>Získat subdeterminant (též minor) <code class="varname">i</code>-<code
class="varname">j</code> matice.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/Minor" target="_top">Planetmath</a>.</p></dd><dt><span class="term"><a
name="gel-function-NonPivotColumns"></a>NonPivotColumns</span></dt><dd><pre class="synopsis">NonPivotColumns
(M)</pre><p>Vrátit sloupce matice, které nemají pivot.</p></dd><dt><span class="term"><a
name="gel-function-Norm"></a>Norm</span></dt><dd><pre class="synopsis">Norm (v,p...)</pre><p>Alternativní
názvy: <code class="function">norm</code></p><p>Získat normu typu p (nebo typu 2, pokud není zadáno p)
vektoru.</p></
dd><dt><span class="term"><a name="gel-function-NullSpace"></a>NullSpace</span></dt><dd><pre
class="synopsis">NullSpace (T)</pre><p>Získat nulový prostor matice. Tj. jádro lineární transformace, která
matici představuje. Výsledek se vrací v podobě matice, jejíž sloupcový prostor je nulovým prostorem z <code
class="varname">T</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/Nullspace" target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span
class="term"><a name="gel-function-Nullity"></a>Nullity</span></dt><dd><pre class="synopsis">Nullity
(M)</pre><p>Alternativní názvy: <code class="function">nullity</code></p><p>Získat nulovost matice. Tzn.
vrátit rozměry nulového prostoru; rozměry jádra matice <code class="varname">M</code>.</p><p>Více informací
najdete v encyklopedii <a class="ulink" href="http://planetmath.org/Nullity" target="_top">Planetmath</a>
(text je v angličtině).</p></dd><
dt><span class="term"><a
name="gel-function-OrthogonalComplement"></a>OrthogonalComplement</span></dt><dd><pre
class="synopsis">OrthogonalComplement (M)</pre><p>Získat ortogonální doplněk sloupcového
prostoru.</p></dd><dt><span class="term"><a
name="gel-function-PivotColumns"></a>PivotColumns</span></dt><dd><pre class="synopsis">PivotColumns
(M)</pre><p>Vrátit sloupce matice s pivoty, tzn. sloupce, které mají 1 v řádkově redukované podobě. Rovněž
vrací řádek, ve kterém se vyskytly.</p></dd><dt><span class="term"><a
name="gel-function-Projection"></a>Projection</span></dt><dd><pre class="synopsis">Projection
(v,W,B...)</pre><p>Projekce vektoru <code class="varname">v</code> do podprostoru <code
class="varname">W</code> vzhledem k unitárnímu prostoru danému <code class="varname">B</code>. Pokud <code
class="varname">B</code> není zadáno, je použit standardní hermitovský součin. <code class="varname">B</code>
může být buď polybilineární funkce
dvou argumentů nebo to může být matice v polybilineární formě.</p></dd><dt><span class="term"><a
name="gel-function-QRDecomposition"></a>QRDecomposition</span></dt><dd><pre class="synopsis">QRDecomposition
(A, Q)</pre><p>Získat QR rozklad čtvercové matice <code class="varname">A</code>, vrací horní trojúhelníkovou
matici <code class="varname">R</code> a nastavuje <code class="varname">Q</code> na ortogonální (unitární)
matici. <code class="varname">Q</code> by měl být odkaz na proměnnou nebo <code class="constant">null</code>,
pokud nic vrátit nechcete. Například pro </p><pre class="screen"><code class="prompt">genius></code>
<strong class="userinput"><code>R = QRDecomposition(A,&Q)</code></strong>
+</pre><p> budete mít horní trojúhelníkovou matici uloženou v proměnné s názvem <code
class="varname">R</code> a ortogonální (unitární) matici v <code class="varname">Q</code>.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://planetmath.org/QRDecomposition"
target="_top">Planetmath</a> (text je v angličtině), <a class="ulink"
href="http://mathworld.wolfram.com/QRDecomposition.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="https://cs.wikipedia.org/wiki/QR_rozklad"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-RayleighQuotient"></a>RayleighQuotient</span></dt><dd><pre
class="synopsis">RayleighQuotient (A,x)</pre><p>Vrátit Rayleighův podíl (nazývaný také Rayleighův-Ritzův
koeficient nebo podíl) matice a vektoru.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/RayleighQuotient" target="_top">Planetmath</a> (text j
e v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-RayleighQuotientIteration"></a>RayleighQuotientIteration</span></dt><dd><pre
class="synopsis">RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</pre><p>Najít vlastní čísla matice
<code class="varname">A</code> pomocí iterační metody Rayleighova podílu. <code class="varname">x</code> je
odhadovaný vlastní vektor a mohl by být náhodný. Měl by mít nenulovou imaginární část, pokud existuje nějaká
možnost, že budou nalezena komplexní vlastní čísla. Kód bude nanejvýše v <code class="varname">maxiter</code>
iteracích a vracet <code class="constant">null</code>, pokud není možné získat výsledek v rámci chyby <code
class="varname">epsilon</code>. <code class="varname">vecref</code> by měl být buď <code
class="constant">null</code> nebo odkaz na proměnnou, do které by se měl uložit vlastní vektor.</p><p>Více
informací o Rayleighově podíle najdete v encyklopedii
<a class="ulink" href="http://planetmath.org/RayleighQuotient" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-Rank"></a>Rank</span></dt><dd><pre
class="synopsis">Rank (M)</pre><p>Alternativní názvy: <code class="function">rank</code></p><p>Získat hodnost
matice.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/SylvestersLaw" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-RosserMatrix"></a>RosserMatrix</span></dt><dd><pre class="synopsis">RosserMatrix
()</pre><p>Vrátit Rosserovu matici, která je klasickým symetrickým problémem testu vlastního
čísla.</p></dd><dt><span class="term"><a name="gel-function-Rotation2D"></a>Rotation2D</span></dt><dd><pre
class="synopsis">Rotation2D (úhel)</pre><p>Alternativní názvy: <code
class="function">RotationMatrix</code></p><p>Vrátit matici odpovídající otočení
okolo počátku v R<sup>2</sup>.</p></dd><dt><span class="term"><a
name="gel-function-Rotation3DX"></a>Rotation3DX</span></dt><dd><pre class="synopsis">Rotation3DX
(úhel)</pre><p>Vrátit matici odpovídající otočení okolo počátku v R<sup>3</sup> kolem osy
x.</p></dd><dt><span class="term"><a name="gel-function-Rotation3DY"></a>Rotation3DY</span></dt><dd><pre
class="synopsis">Rotation3DY (úhel)</pre><p>Vrátit matici odpovídající otočení okolo počátku v R<sup>3</sup>
kolem osy y.</p></dd><dt><span class="term"><a
name="gel-function-Rotation3DZ"></a>Rotation3DZ</span></dt><dd><pre class="synopsis">Rotation3DZ
(úhel)</pre><p>Vrátit matici odpovídající otočení okolo počátku v R<sup>3</sup> kolem osy
z.</p></dd><dt><span class="term"><a name="gel-function-RowSpace"></a>RowSpace</span></dt><dd><pre
class="synopsis">RowSpace (M)</pre><p>Získat bázi matice pro prostor řádků matice.</p></dd><dt><span
class="term"><a name="gel-function-SesquilinearForm"></
a>SesquilinearForm</span></dt><dd><pre class="synopsis">SesquilinearForm (v,A,w)</pre><p>Vyhodnotit (v,w)
vzhledem k polybilineární formě dané maticí <code class="varname">A</code>.</p></dd><dt><span class="term"><a
name="gel-function-SesquilinearFormFunction"></a>SesquilinearFormFunction</span></dt><dd><pre
class="synopsis">SesquilinearFormFunction (A)</pre><p>Vrátit funkci vyhodnocující dva vektory vzhledem k
polybilineární formě dané maticí <code class="varname">A</code>.</p></dd><dt><span class="term"><a
name="gel-function-SmithNormalFormField"></a>SmithNormalFormField</span></dt><dd><pre
class="synopsis">SmithNormalFormField (A)</pre><p>Vrátit Smithův kanonický tvar (normální forma) matice nad
poli (bude končit s jedničkami na diagonále).</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Smith_normal_form" target="_top">Wikipedia</a> (článek je v
angličtině).</p></dd><dt><span class="term"><a name
="gel-function-SmithNormalFormInteger"></a>SmithNormalFormInteger</span></dt><dd><pre
class="synopsis">SmithNormalFormInteger (M)</pre><p>Vrátit Smithův kanonický tvar (normální formu) pro
čtvercové celočíselné matice nad celými čísly.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Smith_normal_form" target="_top">Wikipedia</a> (článek je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-SolveLinearSystem"></a>SolveLinearSystem</span></dt><dd><pre
class="synopsis">SolveLinearSystem (M,V,argumenty...)</pre><p>Vyřešit lineární systém Mx=V, vrátit řešení V,
pokud existuje jedinečné řešení, jinak vrátit <code class="constant">null</code>. Je možné použít dva
dodatečné parametry předávané odkazem, ve kterých získáte redukované M a V.</p></dd><dt><span class="term"><a
name="gel-function-ToeplitzMatrix"></a>ToeplitzMatrix</span></dt><dd><pre class="synopsis">ToeplitzMa
trix (s, r...)</pre><p>Vrátit Teplitzovu matici sestavenou podle zadaného prvního sloupce <code
class="varname">c</code> a (volitelně) prvního řádku <code class="varname">r</code>. Pokud je zadán pouze
sloupec <code class="varname">c</code>, je pro první řádek použita konjugovaná a nekonjugovaná verze, aby se
získala hermitovská matice (samozřejmě za předpokladu, že je první prvek reálný).</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/Toeplitz_matrix"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink"
href="http://planetmath.org/ToeplitzMatrix" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-Trace"></a>Trace</span></dt><dd><pre
class="synopsis">Trace (M)</pre><p>Alternativní názvy: <code class="function">trace</code></p><p>Spočítat
stopu matice. Jedná se o součet prvků na hlavní diagonále čtvercové matice.<
/p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://cs.wikipedia.org/wiki/Stopa_%28algebra%29" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/Trace" target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span
class="term"><a name="gel-function-Transpose"></a>Transpose</span></dt><dd><pre class="synopsis">Transpose
(M)</pre><p>Transponovat matici. Funkčně je to stejné, jako operátor <strong
class="userinput"><code>.'</code></strong>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://cs.wikipedia.org/wiki/Transpozice_matice" target="_top">Wikipedia</a> a <a class="ulink"
href="http://planetmath.org/Transpose" target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span
class="term"><a name="gel-function-VandermondeMatrix"></a>VandermondeMatrix</span></dt><dd><pre
class="synopsis">VandermondeMatrix (v)</pre><p>Alternativní názvy: <code class="function">vander</co
de></p><p>Vrátit Vandermondovu matici.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Vandermondova_matice" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-VectorAngle"></a>VectorAngle</span></dt><dd><pre
class="synopsis">VectorAngle (v,w,B...)</pre><p>Úhel dvou vektorů vzhledem k unitárnímu prostoru daného <code
class="varname">B</code>. Pokud <code class="varname">B</code> není zadáno, je použit standardní hermitovský
součin. <code class="varname">B</code> může být buď polybilineární funkce dvou argumentů nebo to může být
matice v polybilineární formě.</p></dd><dt><span class="term"><a
name="gel-function-VectorSpaceDirectSum"></a>VectorSpaceDirectSum</span></dt><dd><pre
class="synopsis">VectorSpaceDirectSum (M,N)</pre><p>Přímý součet vektorových prostorů M a
N.</p></dd><dt><span class="term"><a name="gel-function-VectorSubspaceIntersection"></a>VectorSubspac
eIntersection</span></dt><dd><pre class="synopsis">VectorSubspaceIntersection (M,N)</pre><p>Průnik
podprostorů daných pomocí M a N</p></dd><dt><span class="term"><a
name="gel-function-VectorSubspaceSum"></a>VectorSubspaceSum</span></dt><dd><pre
class="synopsis">VectorSubspaceSum (M,N)</pre><p>Součet vektorových prostorů M a N, tj. {w | w=m+n, m in M, n
in N}.</p></dd><dt><span class="term"><a name="gel-function-adj"></a>adj</span></dt><dd><pre
class="synopsis">adj (m)</pre><p>Alternativní názvy: <code class="function">Adjugate</code></p><p>Získat
adjungovanou (reciproku) matici.</p></dd><dt><span class="term"><a
name="gel-function-cref"></a>cref</span></dt><dd><pre class="synopsis">cref (M)</pre><p>Alternativní názvy:
<code class="function">CREF</code> <code class="function">ColumnReducedEchelonForm</code></p><p>Spočítat
sloupcově odstupňovaný tvar matice.</p></dd><dt><span class="term"><a
name="gel-function-det"></a>det</span></dt><dd><pre class="synopsis">
det (M)</pre><p>Alternativní názvy: <code class="function">Determinant</code></p><p>Získat determinant
matice.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/Determinant2" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Determinant" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-ref"></a>ref</span></dt><dd><pre class="synopsis">ref
(M)</pre><p>Alternativní názvy: <code class="function">REF</code> <code
class="function">RowEchelonForm</code></p><p>Získat řádkově odstupňovaný tvar matice. To jest, použít
Gaussovu eliminaci, ale bez zpětného dosazování do <code class="varname">M</code>. Nenulové řádky jsou
poděleny, aby všechny pivoty byly 1.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Row_echelon_form" target="_top">Wikipedia</a> (text je v angličtině) a <
a class="ulink" href="http://planetmath.org/RowEchelonForm" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-rref"></a>rref</span></dt><dd><pre
class="synopsis">rref (M)</pre><p>Alternativní názvy: <code class="function">RREF</code> <code
class="function">ReducedRowEchelonForm</code></p><p>Získat redukovaný řádkově odstupňovaný tvar matice. To
jest, použít Gaussovu eliminaci se zpětným dosazováním do <code class="varname">M</code>.</p><p>Více
informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Reduced_row_echelon_form" target="_top">Wikipedia</a> (text je v
angličtině) a <a class="ulink" href="http://planetmath.org/ReducedRowEchelonForm"
target="_top">Planetmath</a> (text je v angličtině).</p></dd></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a
accesskey="p" href="ch11s08.html">Př
edcházející</a> </td><td width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td
width="40%" align="right"> <a accesskey="n" href="ch11s10.html">Další</a></td></tr><tr><td width="40%"
align="left" valign="top">Práce s maticemi </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top">
Kombinatorika</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s10.html b/help/cs/html/ch11s10.html
index d8bde09..727e943 100644
--- a/help/cs/html/ch11s10.html
+++ b/help/cs/html/ch11s10.html
@@ -1,56 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Kombinatorika</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s09.html" title="Lineární
algebra"><link rel="next" href="ch11s11.html" title="Diferenciální/integrální počet"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table
width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kombinatorika</th></tr><tr><td
width="20%" align="left"><a accesskey="p" href="ch11s09.html">Předcházející</a> </td><th width="60%"
align="center">Kapitola 11. Seznam funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s11.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="title
page"><div><div><h2 class="title" style="clear: both"><a
name="genius-gel-function-list-combinatorics"></a>Kombinatorika</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-Catalan"></a>Catalan</span></dt><dd><pre class="synopsis">Catalan (n)</pre><p>Získat <code
class="varname">n</code>-té Catalanovo číslo.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/CatalanNumbers" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://cs.wikipedia.org/wiki/Catalanova_%C4%8D%C3%ADsla"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Combinations"></a>Combinations</span></dt><dd><pre class="synopsis">Combinations
(k,n)</pre><p>Získat jako vektor vektorů všechny kombinace k-té třídy z prvků 1 až n. (Viz také <a
class="link" href="ch11s10.html#gel-function-NextCombination">NextCombination</a>)</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Combination" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a
name="gel-function-DoubleFactorial"></a>DoubleFactorial</span></dt><dd><pre class="synopsis">DoubleFactorial
(n)</pre><p>Dvojitý faktoriál: <strong class="userinput"><code>n(n-2)(n-4)…</code></strong></p><p>Více
informací najdete v encyklopedii <a class="ulink" href="http://planetmath.org/DoubleFactorial"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Factorial"></a>Factorial</span></dt><dd><pre class="synopsis">Factorial
(n)</pre><p>Faktoriál: <strong class="userinput"><code>n(n-1)(n-2)…</code></strong></p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/Factorial" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Faktori%C3%A1l"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-FallingFactorial"></a>FallingFactorial</span></dt><dd><pre c
lass="synopsis">FallingFactorial (n,k)</pre><p>Klesající faktoriál: <strong class="userinput"><code>(n)_k =
n(n-1)…(n-(k-1))</code></strong></p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/FallingFactorial" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Fibonacci"></a>Fibonacci</span></dt><dd><pre class="synopsis">Fibonacci
(x)</pre><p>Alternativní názvy: <code class="function">fib</code></p><p>Vypočítat <code
class="varname">n</code>-té Fibonacciho číslo. Tj. číslo definované rekurzivně jako <strong
class="userinput"><code>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</code></strong> a <strong
class="userinput"><code>Fibonacci(1) = Fibonacci(2) = 1</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fibonacci_number"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/FibonacciSequence" target="_top">Planetmath</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/FibonacciNumber.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-FrobeniusNumber"></a>FrobeniusNumber</span></dt><dd><pre class="synopsis">FrobeniusNumber
(v,arg...)</pre><p>
- Calculate the Frobenius number. That is calculate largest
- number that cannot be given as a non-negative integer linear
- combination of a given vector of non-negative integers.
- The vector can be given as separate numbers or a single vector.
- All the numbers given should have GCD of 1.
- </p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Coin_problem" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/FrobeniusNumber.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-GaloisMatrix"></a>GaloisMatrix</span></dt><dd><pre class="synopsis">GaloisMatrix
(kombinacni_pravidlo)</pre><p>Galoisova matice daná lineárním kombinačním pravidlem
(a_1*x_1+…+a_n*x_n=x_(n+1)).</p></dd><dt><span class="term"><a
name="gel-function-GreedyAlgorithm"></a>GreedyAlgorithm</span></dt><dd><pre class="synopsis">GreedyAlgorithm
(n,v)</pre><p>Najít takový vektor <code class="varname">c</code> nezáporných celých čísel, že skalární součin
s <code class="varname">v</code> je roven <code class="varname">n</code>. Když to není možné, vrátí <code
class="constant">null</code>. Vektor <code class="varname">v</code> by měl být předán seřazený ve vzestupném
pořadí a měl by se skládat z nezáporných celých čísel.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Greedy_algorithm"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/GreedyAlgorithm.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-HarmonicNumber"></a>HarmonicNumber</span></dt><dd><pre class="synopsis">HarmonicNumber
(n,r)</pre><p>Alternativní názvy: <code class="function">HarmonicH</code></p><p>Harmonic Number, the <code
class="varname">n</code>th harmonic number of order <code class="varname">r</code>.
- That is, it is the sum of <strong class="userinput"><code>1/k^r</code></strong> for <code
class="varname">k</code>
- from 1 to n. Equivalent to <strong class="userinput"><code>sum k = 1 to n do
1/k^r</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Harmonic_number" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-Hofstadter"></a>Hofstadter</span></dt><dd><pre class="synopsis">Hofstadter
(n)</pre><p>Hofstadterova funkce q(n) definovaná jako q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2))</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Hofstadter_sequence"
target="_top">Wikipedia</a> for more information.
- The sequence is <a class="ulink" href="https://oeis.org/A005185" target="_top">A005185 in
OEIS</a>.
- </p></dd><dt><span class="term"><a
name="gel-function-LinearRecursiveSequence"></a>LinearRecursiveSequence</span></dt><dd><pre
class="synopsis">LinearRecursiveSequence (pocatecni_hodnoty,kombinacni_pravidlo,n)</pre><p>Spočítat lineární
rekurzivní posloupnost pomocí Galoisova krokování.</p></dd><dt><span class="term"><a
name="gel-function-Multinomial"></a>Multinomial</span></dt><dd><pre class="synopsis">Multinomial
(v,arg...)</pre><p>Spočítat multinomické koeficienty. Přebírá vektor <code class="varname">k</code>
nezáporných celých čísel a spočítá multinomický koeficient. To odpovídá koeficientu v homogenním polynomu v
<code class="varname">k</code> proměnných s odpovídajícími mocninami.</p><p>Vzorec pro <strong
class="userinput"><code>Multinomial(a,b,c)</code></strong> se dá napsat jako: </p><pre
class="programlisting">(a+b+c)! / (a!b!c!)
-</pre><p> Jinými slovy, pokud máme jen dva prvky, pak <strong
class="userinput"><code>Multinomial(a,b)</code></strong> je to stejné, jako <strong
class="userinput"><code>Binomial(a+b,a)</code></strong> nebo <strong
class="userinput"><code>Binomial(a+b,b)</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Multinomial_theorem"
target="_top">Wikipedia</a>,
- <a class="ulink" href="http://planetmath.org/MultinomialTheorem" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/MultinomialCoefficient.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-NextCombination"></a>NextCombination</span></dt><dd><pre class="synopsis">NextCombination
(v,n)</pre><p>Získat kombinaci, která by následovala po kombinaci <code class="varname">v</code> v pořadí
kombinací, první kombinací by měla být <strong class="userinput"><code>[1:k]</code></strong>. To je užitečné,
pokud máte hodně kombinací, které chcete projít a nechcete plýtvat pamětí na uložení všech.</p><p>S funkcí
Combinations byste normálně napsali smyčku jako: </p><pre class="screen"><strong class="userinput"><code>for
n in Combinations (4,6) do (
+<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Kombinatorika</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s09.html" title="Lineární
algebra"><link rel="next" href="ch11s11.html" title="Diferenciální/integrální počet"></head><body
bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table
width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kombinatorika</th></tr><tr><td
width="20%" align="left"><a accesskey="p" href="ch11s09.html">Předcházející</a> </td><th width="60%"
align="center">Kapitola 11. Seznam funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s11.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="title
page"><div><div><h2 class="title" style="clear: both"><a
name="genius-gel-function-list-combinatorics"></a>Kombinatorika</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-Catalan"></a>Catalan</span></dt><dd><pre class="synopsis">Catalan (n)</pre><p>Získat <code
class="varname">n</code>-té Catalanovo číslo.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/CatalanNumbers" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://cs.wikipedia.org/wiki/Catalanova_%C4%8D%C3%ADsla"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Combinations"></a>Combinations</span></dt><dd><pre class="synopsis">Combinations
(k,n)</pre><p>Získat jako vektor vektorů všechny kombinace k-té třídy z prvků 1 až n. (Viz také <a
class="link" href="ch11s10.html#gel-function-NextCombination">NextCombination</a>)</p><p>Ví
ce informací najdete v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Kombinace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-DoubleFactorial"></a>DoubleFactorial</span></dt><dd><pre class="synopsis">DoubleFactorial
(n)</pre><p>Dvojitý faktoriál: <strong class="userinput"><code>n(n-2)(n-4)…</code></strong></p><p>Více
informací najdete v encyklopedii <a class="ulink" href="http://planetmath.org/DoubleFactorial"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Factorial"></a>Factorial</span></dt><dd><pre class="synopsis">Factorial
(n)</pre><p>Faktoriál: <strong class="userinput"><code>n(n-1)(n-2)…</code></strong></p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/Factorial" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Faktori%C3%A1l" target="_top">Wi
kipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-FallingFactorial"></a>FallingFactorial</span></dt><dd><pre
class="synopsis">FallingFactorial (n,k)</pre><p>Klesající faktoriál: <strong class="userinput"><code>(n)_k =
n(n-1)…(n-(k-1))</code></strong></p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/FallingFactorial" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Fibonacci"></a>Fibonacci</span></dt><dd><pre class="synopsis">Fibonacci
(x)</pre><p>Alternativní názvy: <code class="function">fib</code></p><p>Vypočítat <code
class="varname">n</code>-té Fibonacciho číslo. Tj. číslo definované rekurzivně jako <strong
class="userinput"><code>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</code></strong> a <strong
class="userinput"><code>Fibonacci(1) = Fibonacci(2) = 1</code></strong>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" h
ref="http://planetmath.org/FibonacciSequence" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/FibonacciNumber.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-FrobeniusNumber"></a>FrobeniusNumber</span></dt><dd><pre class="synopsis">FrobeniusNumber
(v,arg...)</pre><p>Spočítat Frobeniusovo číslo. Tzn. spočítat největší číslo, které nemůže být dáno jako
lineární kombinace celých nezáporných čísel zadaných jako vektor nezáporných celých čísel. Vektor může být
zadán jako samostatná čísla nebo jeden vektor. Všechna zadaná čísla by měla mít největšího společného
dělitele 1.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/Coin_problem" target="_top">Wikip
edia</a> (text je v angličtině) a <a class="ulink" href="http://mathworld.wolfram.com/FrobeniusNumber.html"
target="_top">Mathworld</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-GaloisMatrix"></a>GaloisMatrix</span></dt><dd><pre class="synopsis">GaloisMatrix
(kombinacni_pravidlo)</pre><p>Galoisova matice daná lineárním kombinačním pravidlem
(a_1*x_1+…+a_n*x_n=x_(n+1)).</p></dd><dt><span class="term"><a
name="gel-function-GreedyAlgorithm"></a>GreedyAlgorithm</span></dt><dd><pre class="synopsis">GreedyAlgorithm
(n,v)</pre><p>Najít takový vektor <code class="varname">c</code> nezáporných celých čísel, že skalární součin
s <code class="varname">v</code> je roven <code class="varname">n</code>. Když to není možné, vrátí <code
class="constant">null</code>. Vektor <code class="varname">v</code> by měl být předán seřazený ve vzestupném
pořadí a měl by se skládat z nezáporných celých čísel.</p><p>Více inf
ormací najdete v encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/GreedyAlgorithm.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Hladov%C3%BD_algoritmus" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-HarmonicNumber"></a>HarmonicNumber</span></dt><dd><pre
class="synopsis">HarmonicNumber (n,r)</pre><p>Alternativní názvy: <code
class="function">HarmonicH</code></p><p>Harmonické číslo, <code class="varname">n</code>-té harmonické číslo
řádu <code class="varname">r</code>. Jedná se o součet <strong class="userinput"><code>1/k^r</code></strong>
pro <code class="varname">k</code> od 1 do n. Je to to stejné jako <strong class="userinput"><code>sum k = 1
to n do 1/k^r</code></strong>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Harmonic_number" target="_top">Wikipedia</a> (text je v angličtině
).</p></dd><dt><span class="term"><a name="gel-function-Hofstadter"></a>Hofstadter</span></dt><dd><pre
class="synopsis">Hofstadter (n)</pre><p>Hofstadterova funkce q(n) definovaná jako q(1)=1, q(2)=1,
q(n)=q(n-q(n-1))+q(n-q(n-2))</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Hofstadter_sequence" target="_top">Wikipedia</a> (text je v angličtině).
Posloupnost je <a class="ulink" href="https://oeis.org/A005185" target="_top">A005185 podle encyklopedie
OEIS</a>.</p></dd><dt><span class="term"><a
name="gel-function-LinearRecursiveSequence"></a>LinearRecursiveSequence</span></dt><dd><pre
class="synopsis">LinearRecursiveSequence (pocatecni_hodnoty,kombinacni_pravidlo,n)</pre><p>Spočítat lineární
rekurzivní posloupnost pomocí Galoisova krokování.</p></dd><dt><span class="term"><a
name="gel-function-Multinomial"></a>Multinomial</span></dt><dd><pre class="synopsis">Multinomial
(v,arg...)</pre><p>Spočítat multinomické
koeficienty. Přebírá vektor <code class="varname">k</code> nezáporných celých čísel a spočítá multinomický
koeficient. To odpovídá koeficientu v homogenním polynomu v <code class="varname">k</code> proměnných s
odpovídajícími mocninami.</p><p>Vzorec pro <strong class="userinput"><code>Multinomial(a,b,c)</code></strong>
se dá napsat jako: </p><pre class="programlisting">(a+b+c)! / (a!b!c!)
+</pre><p> Jinými slovy, pokud máme jen dva prvky, pak <strong
class="userinput"><code>Multinomial(a,b)</code></strong> je to stejné, jako <strong
class="userinput"><code>Binomial(a+b,a)</code></strong> nebo <strong
class="userinput"><code>Binomial(a+b,b)</code></strong>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/MultinomialTheorem" target="_top">Planetmath</a> (text je v
angličtině), <a class="ulink" href="http://mathworld.wolfram.com/MultinomialCoefficient.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Multinomick%C3%A1_v%C4%9Bta"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-NextCombination"></a>NextCombination</span></dt><dd><pre class="synopsis">NextCombination
(v,n)</pre><p>Získat kombinaci, která by následovala po kombinaci <code class="varname">v</code> v pořadí
kombinací, první kombinací by měla být
<strong class="userinput"><code>[1:k]</code></strong>. To je užitečné, pokud máte hodně kombinací, které
chcete projít a nechcete plýtvat pamětí na uložení všech.</p><p>S funkcí Combinations byste normálně napsali
smyčku jako: </p><pre class="screen"><strong class="userinput"><code>for n in Combinations (4,6) do (
NejakaFunkce (n)
);</code></strong>
</pre><p> Ale s funkcí NextCombination byste napsali něco takového: </p><pre class="screen"><strong
class="userinput"><code>n:=[1:4];
do (
NejakaFunkce (n)
) while not IsNull(n:=NextCombination(n,6));</code></strong>
-</pre><p> Viz <a class="link" href="ch11s10.html#gel-function-Combinations">Combinations</a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Combination" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a name="gel-function-Pascal"></a>Pascal</span></dt><dd><pre
class="synopsis">Pascal (i)</pre><p>Získat Pascalův trojúhelník v podobě matice. Vrátí dolní trojúhelníkovou
matici <code class="varname">i</code>+1 krát <code class="varname">i</code>+1, která je Pascalovým
trojúhelníkem po <code class="varname">i</code> iteracích.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/PascalsTriangle" target="_top">Planetmath</a> (text je v
angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wiki/Pascal%C5%AFv_troj%C3%BAheln%C3%ADk"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Permutations"></a>Permutations</span></dt><dd><pre class="synopsis">Permutations
(k,n)</pre><p>Získat jako vektor vektorů všechny variace <code class="varname">k</code>-té třídy z prvků 1 až
<code class="varname">n</code> prvků, případně permutace pro <code cl
ass="varname">k</code>=<code class="varname">n</code>.</p><p>
- See
- <a class="ulink" href="http://mathworld.wolfram.com/Permutation.html" target="_top">Mathworld</a>
or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Permutation" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a
name="gel-function-RisingFactorial"></a>RisingFactorial</span></dt><dd><pre class="synopsis">RisingFactorial
(n,k)</pre><p>Alternativní názvy: <code class="function">Pochhammer</code></p><p>(Pochhammerův) stoupacící
faktoriál: (n)_k = n(n+1)…(n+(k-1))</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/RisingFactorial" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-StirlingNumberFirst"></a>StirlingNumberFirst</span></dt><dd><pre
class="synopsis">StirlingNumberFirst (n,m)</pre><p>Alternativní názvy: <code
class="function">StirlingS1</code></p><p>Stirlingovo číslo prvního druhu.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/StirlingNumbersOfTheFirstKind"
target="_top">Planetmath</a> (text je v angličtině) nebo <a class="ulink"
href="http://mathworld.wolfram.com/StirlingNumberofth
eFirstKind.html" target="_top">Mathworld</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-StirlingNumberSecond"></a>StirlingNumberSecond</span></dt><dd><pre
class="synopsis">StirlingNumberSecond (n,m)</pre><p>Alternativní názvy: <code
class="function">StirlingS2</code></p><p>Stirlingovo číslo druhého druhu.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/StirlingNumbersSecondKind"
target="_top">Planetmath</a> (text je v angličtině) nebo <a class="ulink"
href="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Subfactorial"></a>Subfactorial</span></dt><dd><pre class="synopsis">Subfactorial
(n)</pre><p>Subfaktoriál: n! krát suma_{k=0}^n (-1)^k/k!</p></dd><dt><span class="term"><a
name="gel-function-Triangular"></a>Triangular</span></dt><dd><pre class="synopsis">Triangula
r (n)</pre><p>Spočítat <code class="varname">n</code>-té trojúhelníkové číslo.</p><p>Více informací najdete
v encyklopediích <a class="ulink" href="http://planetmath.org/TriangularNumbers" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Troj%C3%BAheln%C3%ADkov%C3%A9_%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-nCr"></a>nCr</span></dt><dd><pre class="synopsis">nCr (n,r)</pre><p>Alternativní názvy:
<code class="function">Binomial</code></p><p>Spočítat kombinace, tj. kombinační číslo. <code
class="varname">n</code> může být libovolné reálné číslo.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://planetmath.org/Choose" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://cs.wikipedia.org/wiki/Kombina%C4%8Dn%C3%AD_%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span cl
ass="term"><a name="gel-function-nPr"></a>nPr</span></dt><dd><pre class="synopsis">nPr
(n,k)</pre><p>Spočítat počet variací <code class="varname">k</code>-té třídy z prvků 1 až <code
class="varname">n</code>, respektive počet permutací při <code class="varname">k</code> rovno <code
class="varname">n</code>.</p><p>
- See
- <a class="ulink" href="http://mathworld.wolfram.com/Permutation.html" target="_top">Mathworld</a>
or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Permutation" target="_top">Wikipedia</a> for
more information.
- </p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s09.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s11.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Lineární
algebra </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Diferenciální/integrální počet </td></tr></table></div></body></html>
+</pre><p> Viz <a class="link" href="ch11s10.html#gel-function-Combinations">Combinations</a>.</p><p>Více
informací najdete v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Kombinace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Pascal"></a>Pascal</span></dt><dd><pre class="synopsis">Pascal (i)</pre><p>Získat Pascalův
trojúhelník v podobě matice. Vrátí dolní trojúhelníkovou matici <code class="varname">i</code>+1 krát <code
class="varname">i</code>+1, která je Pascalovým trojúhelníkem po <code class="varname">i</code>
iteracích.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/PascalsTriangle" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="http://cs.wikipedia.org/wiki/Pascal%C5%AFv_troj%C3%BAheln%C3%ADk"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Permutations"></a>Permutations</span></dt><
dd><pre class="synopsis">Permutations (k,n)</pre><p>Získat jako vektor vektorů všechny variace <code
class="varname">k</code>-té třídy z prvků 1 až <code class="varname">n</code> prvků, případně permutace pro
<code class="varname">k</code>=<code class="varname">n</code>.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="http://mathworld.wolfram.com/Permutation.html" target="_top">Mathworld</a> (text je v
angličtině) nebo <a class="ulink" href="https://cs.wikipedia.org/wiki/Permutace" target="_top">Wikipedia</a>
(permutace) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Variace_%28kombinatorika%29"
target="_top">Wikipedia</a> (variace).</p></dd><dt><span class="term"><a
name="gel-function-RisingFactorial"></a>RisingFactorial</span></dt><dd><pre class="synopsis">RisingFactorial
(n,k)</pre><p>Alternativní názvy: <code class="function">Pochhammer</code></p><p>(Pochhammerův) stoupacící
faktoriál: (n)_k = n(n+1)…(n+(k-1))</p><p>V
íce informací najdete v encyklopedii <a class="ulink" href="http://planetmath.org/RisingFactorial"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-StirlingNumberFirst"></a>StirlingNumberFirst</span></dt><dd><pre
class="synopsis">StirlingNumberFirst (n,m)</pre><p>Alternativní názvy: <code
class="function">StirlingS1</code></p><p>Stirlingovo číslo prvního druhu.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/StirlingNumbersOfTheFirstKind"
target="_top">Planetmath</a> (text je v angličtině) nebo <a class="ulink"
href="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html" target="_top">Mathworld</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-StirlingNumberSecond"></a>StirlingNumberSecond</span></dt><dd><pre
class="synopsis">StirlingNumberSecond (n,m)</pre><p>Alternativní názvy: <code
class="function">StirlingS2</code>
</p><p>Stirlingovo číslo druhého druhu.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/StirlingNumbersSecondKind" target="_top">Planetmath</a> (text je v angličtině)
nebo <a class="ulink" href="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html"
target="_top">Mathworld</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Subfactorial"></a>Subfactorial</span></dt><dd><pre class="synopsis">Subfactorial
(n)</pre><p>Subfaktoriál: n! krát suma_{k=0}^n (-1)^k/k!</p></dd><dt><span class="term"><a
name="gel-function-Triangular"></a>Triangular</span></dt><dd><pre class="synopsis">Triangular
(n)</pre><p>Spočítat <code class="varname">n</code>-té trojúhelníkové číslo.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/TriangularNumbers" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink" href="http://cs.wikipedia.org/wi
ki/Troj%C3%BAheln%C3%ADkov%C3%A9_%C4%8D%C3%ADslo" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-nCr"></a>nCr</span></dt><dd><pre class="synopsis">nCr
(n,r)</pre><p>Alternativní názvy: <code class="function">Binomial</code></p><p>Spočítat kombinace, tj.
kombinační číslo. <code class="varname">n</code> může být libovolné reálné číslo.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://planetmath.org/Choose" target="_top">Planetmath</a>
(text je v angličtině) a <a class="ulink"
href="http://cs.wikipedia.org/wiki/Kombina%C4%8Dn%C3%AD_%C4%8D%C3%ADslo"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-nPr"></a>nPr</span></dt><dd><pre class="synopsis">nPr (n,k)</pre><p>Spočítat počet variací
<code class="varname">k</code>-té třídy z prvků 1 až <code class="varname">n</code>, respektive počet
permutací při <code class="varname">k</code> rovno <code class="var
name">n</code>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/Permutation.html" target="_top">Mathworld</a> (text je v angličtině) nebo
<a class="ulink" href="https://cs.wikipedia.org/wiki/Permutace" target="_top">Wikipedia</a> (permutace) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Variace_%28kombinatorika%29" target="_top">Wikipedia</a>
(variace).</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s09.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s11.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Lineární
algebra </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Difer
enciální/integrální počet </td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s11.html b/help/cs/html/ch11s11.html
index 9b3cb07..f32a3ee 100644
--- a/help/cs/html/ch11s11.html
+++ b/help/cs/html/ch11s11.html
@@ -1,29 +1 @@
-<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Diferenciální/integrální počet</title><meta name="generator" content="DocBook XSL
Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s10.html"
title="Kombinatorika"><link rel="next" href="ch11s12.html" title="Funkce"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Diferenciální/integrální počet
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch11s10.html">Předcházející</a> </td><th
width="60%" align="center">Kapitola 11. Seznam funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s12.html">Další</a></td></tr></table><hr></div><div class="sect1"><div c
lass="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="genius-gel-function-list-calculus"></a>Diferenciální/integrální počet </h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-CompositeSimpsonsRule"></a>CompositeSimpsonsRule</span></dt><dd><pre
class="synopsis">CompositeSimpsonsRule (f,a,b,n)</pre><p>Integrovat f složeným Simpsonovým pravidlem na
intervalu [a,b] s n podintervaly s chybou podle max(f'''')*h^4*(b-a)/180. Upozorňujeme, že n by mělo být
sudé.</p><p>Více informací najdete v encyklopedii <a class="ulink" href="http://planetmath.org/SimpsonsRule"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-CompositeSimpsonsRuleTolerance"></a>CompositeSimpsonsRuleTolerance</span></dt><dd><pre
class="synopsis">CompositeSimpsonsRuleTolerance (f,a,b,omezeni_ctvrte_derivace,tolerance)</pre><p>Integrovat
f složeným Simpson
ovým pravidlem na intervalu [a,b] s počtem kroků počítaným podle omezení čtvrté derivace a podle požadované
tolerance.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/SimpsonsRule" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Derivative"></a>Derivative</span></dt><dd><pre class="synopsis">Derivative
(f,x0)</pre><p>Zkusit spočítat derivaci, nejprve symbolicky a pak numericky.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Derivace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-EvenPeriodicExtension"></a>EvenPeriodicExtension</span></dt><dd><pre
class="synopsis">EvenPeriodicExtension (f,L)</pre><p>Vrátit funkci, která je sudým periodickým rozšířením
<code class="function">f</code> s poloviční periodou <code class="varname">L</code>. Tj. funkce definovaná na
inter
valu <strong class="userinput"><code>[0,L]</code></strong> rozšířená, aby byla sudá na <strong
class="userinput"><code>[-L,L]</code></strong> a pak rozšířená, aby byla periodická s periodou <strong
class="userinput"><code>2*L</code></strong>.</p><p>Viz také <a class="link"
href="ch11s11.html#gel-function-OddPeriodicExtension">OddPeriodicExtension</a> a <a class="link"
href="ch11s11.html#gel-function-PeriodicExtension">PeriodicExtension</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a
name="gel-function-FourierSeriesFunction"></a>FourierSeriesFunction</span></dt><dd><pre
class="synopsis">FourierSeriesFunction (a,b,L)</pre><p>Vrátit funkci, která je Fourierovu řadou s koeficienty
danými vektory <code class="varname">a</code> (sinové) a <code class="varname">b</code> (kosinové). Vezměte
na vědomí, že <strong class="userinput"><code>a@(1)</code></strong> je konstantní koeficient! To znamená, že
<strong class="userinput"><code>a@(n)</
code></strong> odkazuje na člen <strong class="userinput"><code>cos(x*(n-1)*pi/L)</code></strong>, zatímco
<strong class="userinput"><code>b@(n)</code></strong> odkazuje na člen <strong
class="userinput"><code>sin(x*n*pi/L)</code></strong>. Buďto <code class="varname">a</code> nebo <code
class="varname">b</code> může být <code class="constant">null</code>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierSeries.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-InfiniteProduct"></a>InfiniteProduct</span></dt><dd><pre class="synopsis">InfiniteProduct
(fce,start,prirustek)</pre><p>Zkusit spočítat nekonečný součin funkce s jedním parametrem.</p></dd><dt><span
class="term"><a name="gel-function-InfiniteProduct2"></a>InfiniteProduct2</span></dt><dd><pre
class="synopsis">InfiniteProduct2 (fce,arg,start,prirustek)</pre><p>Zkusit spočítat nekonečný součin funkce
se dvěma parametry s fce (arg,n).</p></dd><dt><span class="term"><a
name="gel-function-InfiniteSum"></a>InfiniteSum</span></dt><dd><pre class="synopsis">InfiniteSum
(fce,start,prirustek)</pre><p>Zkusit spočítat nekonečný součet funkce s jedním parametrem.</p></dd><dt><span
class="term"><a name="gel-function-InfiniteSum2"></a>InfiniteSum2</span></dt><dd><pre
class="synopsis">InfiniteSum2 (fce,arg,start,prirustek)</pre><p>Zkusit spočítat nekonečný součet funkce se
dvěma parametry s fce (arg,n).</p
</dd><dt><span class="term"><a name="gel-function-IsContinuous"></a>IsContinuous</span></dt><dd><pre
class="synopsis">IsContinuous (f,x0)</pre><p>Zkusit zjistit pomocí výpočtu limity v x0, jestli je funkce
reálné proměnné v tomto bodě spojitá.</p></dd><dt><span class="term"><a
name="gel-function-IsDifferentiable"></a>IsDifferentiable</span></dt><dd><pre
class="synopsis">IsDifferentiable (f,x0)</pre><p>Otestovat na diferencovatelnost aproximací limit zleva a
zprava a porovnáním.</p></dd><dt><span class="term"><a
name="gel-function-LeftLimit"></a>LeftLimit</span></dt><dd><pre class="synopsis">LeftLimit
(f,x0)</pre><p>Spočítat limitu zleva funkce reálné proměnné v x0.</p></dd><dt><span class="term"><a
name="gel-function-Limit"></a>Limit</span></dt><dd><pre class="synopsis">Limit (f,x0)</pre><p>Spočítat
limitu funkce reálné proměnné v x0. Zkusí vypočítat limitu zleva i zprava.</p></dd><dt><span
class="term"><a name="gel-function-MidpointRule"></a>Midp
ointRule</span></dt><dd><pre class="synopsis">MidpointRule (f,a,b,n)</pre><p>Integrovat trojúhelníkovou
metodou (pravidlem prostředního bodu).</p></dd><dt><span class="term"><a
name="gel-function-NumericalDerivative"></a>NumericalDerivative</span></dt><dd><pre
class="synopsis">NumericalDerivative (f,x0)</pre><p>Alternativní názvy: <code
class="function">NDerivative</code></p><p>Zkusit vypočítat numerickou derivaci.</p><p>Více informací najdete
v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Derivace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSeriesCoefficients"></a>NumericalFourierSeriesCoefficients</span></dt><dd><pre
class="synopsis">NumericalFourierSeriesCoefficients (f,L,N)</pre><p>Vrátit vektor vektorů <strong
class="userinput"><code>[a,b]</code></strong>, kde <code class="varname">a</code> jsou kosinové koeficienty a
<code class="varname">b</code> sinové koeficienty Fourierovy řa
dy funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code> (tj.
definovanou na <strong class="userinput"><code>[-L,L]</code></strong> a periodicky rozšířenou) s numericky
spočítanými koeficienty do <code class="varname">N</code>-té harmonické. Koeficienty jsou spočítány
numerickou integrací pomocí <a class="link" href="ch11s11.html#gel-function-NumericalIntegral"><code
class="function">NumericalIntegral</code></a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierSeries.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSeriesFunction"></a>NumericalFourierSeriesFunction</span></dt><dd><pre
class="synopsis">NumericalFourierSeriesFunction (f,L,N)</pre><p>Vrátit funkci, která je Fourierovou řadou
funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code> (tj. definovanou
na <strong class="userinput"><code>[-L,L]</code></strong> a periodicky rozšířenou) s numericky spočítanými
koeficienty do <code class="varname">N</code>-té harmonické. Jde o čistě trigonometrickou řadu složenou ze
sinů a kosinů. Koeficienty jsou spočítány numerickou integrací pomocí <a class="link"
href="ch11s11.html#gel-function-NumericalIntegral"><code class="function">NumericalIntegral</code></a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierSeries.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierCosineSeriesCoefficients"></a>NumericalFourierCosineSeriesCoefficients</span></dt><dd><pre
class="synopsis">NumericalFourierCosineSeriesCoefficients (f,L,N)</pre><p>Vrátit vektor koeficientů kosinové
Fourierovy řady funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme sudé periodické rozšíření a spočteme Fourierovu
řadu, která má pouze kosinové členy. Řada je spočítána do <code class="varname">N</code>-té harmonické.
Koeficienty jsou spočítány numerickou integrací pomocí <a class="link"
href="ch11s11.html#gel-function-NumericalIntegral"><code class="function">NumericalIntegral</code></a>.
Poznamenejme, že <strong class="userinput"><code>a@(1)</code></strong> je k
onstantní koeficient! To znamená, že <strong class="userinput"><code>a@(n)</code></strong> odkazuje na člen
<strong class="userinput"><code>cos(x*(n-1)*pi/L)</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierCosineSeries.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierCosineSeriesFunction"></a>NumericalFourierCosineSeriesFunction</span></dt><dd><pre
class="synopsis">NumericalFourierCosineSeriesFunction (f,L,N)</pre><p>Vrátit funkci, která je kosinovou
Fourierovu řadou funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme sudé periodické rozšíření a spočteme Fourierovu
řadu, která má pouze kosinové členy. Řada je spočítána do <code class="varname">N</code>-té harmonické.
Koeficienty jsou spočítány numerickou integrací pomocí <a class="link"
href="ch11s11.html#gel-function-NumericalIntegral"><code class="function">NumericalIntegral</code></a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierCosineSeries.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSineSeriesCoefficients"></a>NumericalFourierSineSeriesCoefficients</span></dt><dd><pre
class="synopsis">NumericalFourierSineSeriesCoefficients (f,L,N)</pre><p>Vrátit vektor koeficientů sinové
Fourierovy řady funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme liché periodické rozšíření a spočteme Fourierovu
řadu, která má pouze sinové členy. Řada je spočítána do <code class="varname">N</code>-té harmonické.
Koeficienty jsou spočítány numerickou integrací pomocí <a class="link"
href="ch11s11.html#gel-function-NumericalIntegral"><code class="function">NumericalIntegral</code></a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierSineSeries.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSineSeriesFunction"></a>NumericalFourierSineSeriesFunction</span></dt><dd><pre
class="synopsis">NumericalFourierSineSeriesFunction (f,L,N)</pre><p>Vrátit funkci, která je sinovou
Fourierovu řadou funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme liché periodické rozšíření a spočteme Fourierovu
řadu, která má pouze sinové členy. Řada je spočítána do <code class="varname">N</code>-té harmonické.
Koeficienty jsou spočítány numerickou integrací pomocí <a class="link"
href="ch11s11.html#gel-function-NumericalIntegral"><code class="function">NumericalIntegral</code></a>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Fourier_series" target="_top">Wikipedia</a>
or
- <a class="ulink" href="http://mathworld.wolfram.com/FourierSineSeries.html"
target="_top">Mathworld</a> for more information.
- </p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalIntegral"></a>NumericalIntegral</span></dt><dd><pre
class="synopsis">NumericalIntegral (f,a,b)</pre><p>Integrovat pravidlem nastaveným v
NumericalIntegralFunction jako funkcí f od a do b pomocí kroků NumericalIntegralSteps.</p></dd><dt><span
class="term"><a name="gel-function-NumericalLeftDerivative"></a>NumericalLeftDerivative</span></dt><dd><pre
class="synopsis">NumericalLeftDerivative (f,x0)</pre><p>Zkusit vypočítat numerickou levou
derivaci.</p></dd><dt><span class="term"><a
name="gel-function-NumericalLimitAtInfinity"></a>NumericalLimitAtInfinity</span></dt><dd><pre
class="synopsis">NumericalLimitAtInfinity (_f,step_fun,tolerance,serie_pro_uspech,N)</pre><p>Pokusit se
spočítat limitu f(step_fun(i)) pro i od 1 do N.</p></dd><dt><span class="term"><a
name="gel-function-NumericalRightDerivative"></a>NumericalRightDerivative</span></dt><dd><pre
class="synopsis">N
umericalRightDerivative (f,x0)</pre><p>Zkusit vypočítat numerickou pravou derivaci.</p></dd><dt><span
class="term"><a name="gel-function-OddPeriodicExtension"></a>OddPeriodicExtension</span></dt><dd><pre
class="synopsis">OddPeriodicExtension (f,L)</pre><p>Vrátit funkci, která je lichým periodickým rozšířením
<code class="function">f</code> s poloviční periodou <code class="varname">L</code>. Tj. funkce definovaná na
intervalu <strong class="userinput"><code>[0,L]</code></strong> rozšířená, aby byla lichá na <strong
class="userinput"><code>[-L,L]</code></strong> a pak rozšířená, aby byla periodická s periodou <strong
class="userinput"><code>2*L</code></strong>.</p><p>Viz také <a class="link"
href="ch11s11.html#gel-function-EvenPeriodicExtension">EvenPeriodicExtension</a> a <a class="link"
href="ch11s11.html#gel-function-PeriodicExtension">PeriodicExtension</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a name="gel-function-OneSide
dFivePointFormula"></a>OneSidedFivePointFormula</span></dt><dd><pre
class="synopsis">OneSidedFivePointFormula (f,x0,h)</pre><p>Spočítat jednostrannou derivaci pomocí
pětibodového vzorce.</p></dd><dt><span class="term"><a
name="gel-function-OneSidedThreePointFormula"></a>OneSidedThreePointFormula</span></dt><dd><pre
class="synopsis">OneSidedThreePointFormula (f,x0,h)</pre><p>Spočítat jednostrannou derivaci pomocí
tříbodového vzorce.</p></dd><dt><span class="term"><a
name="gel-function-PeriodicExtension"></a>PeriodicExtension</span></dt><dd><pre
class="synopsis">PeriodicExtension (f,a,b)</pre><p>Vrátit funkci, která je periodickým rozšířením <code
class="function">f</code> definované na intervalu <strong class="userinput"><code>[a,b]</code></strong> a s
periodou <strong class="userinput"><code>b-a</code></strong>.</p><p>Viz také <a class="link"
href="ch11s11.html#gel-function-OddPeriodicExtension">OddPeriodicExtension</a> a <a class="link"
href="ch11s11.htm
l#gel-function-EvenPeriodicExtension">EvenPeriodicExtension</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a name="gel-function-RightLimit"></a>RightLimit</span></dt><dd><pre
class="synopsis">RightLimit (f,x0)</pre><p>Spočítat limitu zprava funkce reálné proměnné v
x0.</p></dd><dt><span class="term"><a
name="gel-function-TwoSidedFivePointFormula"></a>TwoSidedFivePointFormula</span></dt><dd><pre
class="synopsis">TwoSidedFivePointFormula (f,x0,h)</pre><p>Spočítat oboustrannou derivaci pomocí pětibodového
vzorce.</p></dd><dt><span class="term"><a
name="gel-function-TwoSidedThreePointFormula"></a>TwoSidedThreePointFormula</span></dt><dd><pre
class="synopsis">TwoSidedThreePointFormula (f,x0,h)</pre><p>Spočítat oboustrannou derivaci pomocí tříbodového
vzorce.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s10.html">Předcházejíc�
�</a> </td><td width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%"
align="right"> <a accesskey="n" href="ch11s12.html">Další</a></td></tr><tr><td width="40%" align="left"
valign="top">Kombinatorika </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top">
Funkce</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Diferenciální/integrální počet</title><meta name="generator" content="DocBook XSL
Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s10.html"
title="Kombinatorika"><link rel="next" href="ch11s12.html" title="Funkce"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Diferenciální/integrální počet
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch11s10.html">Předcházející</a> </td><th
width="60%" align="center">Kapitola 11. Seznam funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s12.html">Další</a></td></tr></table><hr></div><div class="sect1"><div c
lass="titlepage"><div><div><h2 class="title" style="clear: both"><a
name="genius-gel-function-list-calculus"></a>Diferenciální/integrální počet </h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-CompositeSimpsonsRule"></a>CompositeSimpsonsRule</span></dt><dd><pre
class="synopsis">CompositeSimpsonsRule (f,a,b,n)</pre><p>Integrovat f složeným Simpsonovým pravidlem na
intervalu [a,b] s n podintervaly s chybou podle max(f'''')*h^4*(b-a)/180. Upozorňujeme, že n by mělo být
sudé.</p><p>Více informací najdete v encyklopedii <a class="ulink" href="http://planetmath.org/SimpsonsRule"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-CompositeSimpsonsRuleTolerance"></a>CompositeSimpsonsRuleTolerance</span></dt><dd><pre
class="synopsis">CompositeSimpsonsRuleTolerance (f,a,b,omezeni_ctvrte_derivace,tolerance)</pre><p>Integrovat
f složeným Simpson
ovým pravidlem na intervalu [a,b] s počtem kroků počítaným podle omezení čtvrté derivace a podle požadované
tolerance.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/SimpsonsRule" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-Derivative"></a>Derivative</span></dt><dd><pre class="synopsis">Derivative
(f,x0)</pre><p>Zkusit spočítat derivaci, nejprve symbolicky a pak numericky.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Derivace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-EvenPeriodicExtension"></a>EvenPeriodicExtension</span></dt><dd><pre
class="synopsis">EvenPeriodicExtension (f,L)</pre><p>Vrátit funkci, která je sudým periodickým rozšířením
<code class="function">f</code> s poloviční periodou <code class="varname">L</code>. Tj. funkce definovaná na
inter
valu <strong class="userinput"><code>[0,L]</code></strong> rozšířená, aby byla sudá na <strong
class="userinput"><code>[-L,L]</code></strong> a pak rozšířená, aby byla periodická s periodou <strong
class="userinput"><code>2*L</code></strong>.</p><p>Viz také <a class="link"
href="ch11s11.html#gel-function-OddPeriodicExtension">OddPeriodicExtension</a> a <a class="link"
href="ch11s11.html#gel-function-PeriodicExtension">PeriodicExtension</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a
name="gel-function-FourierSeriesFunction"></a>FourierSeriesFunction</span></dt><dd><pre
class="synopsis">FourierSeriesFunction (a,b,L)</pre><p>Vrátit funkci, která je Fourierovu řadou s koeficienty
danými vektory <code class="varname">a</code> (sinové) a <code class="varname">b</code> (kosinové). Vezměte
na vědomí, že <strong class="userinput"><code>a@(1)</code></strong> je konstantní koeficient! To znamená, že
<strong class="userinput"><code>a@(n)</
code></strong> odkazuje na člen <strong class="userinput"><code>cos(x*(n-1)*pi/L)</code></strong>, zatímco
<strong class="userinput"><code>b@(n)</code></strong> odkazuje na člen <strong
class="userinput"><code>sin(x*n*pi/L)</code></strong>. Buďto <code class="varname">a</code> nebo <code
class="varname">b</code> může být <code class="constant">null</code>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/FourierSeries.html"
target="_top">Mathworld</a> (text je v angličtině) nebo <a class="ulink"
href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-InfiniteProduct"></a>InfiniteProduct</span></dt><dd><pre
class="synopsis">InfiniteProduct (fce,start,prirustek)</pre><p>Zkusit spočítat nekonečný součin funkce s
jedním parametrem.</p></dd><dt><span class="term"><a
name="gel-function-InfiniteProduct2"></a>InfiniteProduct2</span></
dt><dd><pre class="synopsis">InfiniteProduct2 (fce,arg,start,prirustek)</pre><p>Zkusit spočítat nekonečný
součin funkce se dvěma parametry s fce (arg,n).</p></dd><dt><span class="term"><a
name="gel-function-InfiniteSum"></a>InfiniteSum</span></dt><dd><pre class="synopsis">InfiniteSum
(fce,start,prirustek)</pre><p>Zkusit spočítat nekonečný součet funkce s jedním parametrem.</p></dd><dt><span
class="term"><a name="gel-function-InfiniteSum2"></a>InfiniteSum2</span></dt><dd><pre
class="synopsis">InfiniteSum2 (fce,arg,start,prirustek)</pre><p>Zkusit spočítat nekonečný součet funkce se
dvěma parametry s fce (arg,n).</p></dd><dt><span class="term"><a
name="gel-function-IsContinuous"></a>IsContinuous</span></dt><dd><pre class="synopsis">IsContinuous
(f,x0)</pre><p>Zkusit zjistit pomocí výpočtu limity v x0, jestli je funkce reálné proměnné v tomto bodě
spojitá.</p></dd><dt><span class="term"><a name="gel-function-IsDifferentiable"></a>IsDifferentiable</span
</dt><dd><pre class="synopsis">IsDifferentiable (f,x0)</pre><p>Otestovat na diferencovatelnost aproximací
limit zleva a zprava a porovnáním.</p></dd><dt><span class="term"><a
name="gel-function-LeftLimit"></a>LeftLimit</span></dt><dd><pre class="synopsis">LeftLimit
(f,x0)</pre><p>Spočítat limitu zleva funkce reálné proměnné v x0.</p></dd><dt><span class="term"><a
name="gel-function-Limit"></a>Limit</span></dt><dd><pre class="synopsis">Limit (f,x0)</pre><p>Spočítat
limitu funkce reálné proměnné v x0. Zkusí vypočítat limitu zleva i zprava.</p></dd><dt><span
class="term"><a name="gel-function-MidpointRule"></a>MidpointRule</span></dt><dd><pre
class="synopsis">MidpointRule (f,a,b,n)</pre><p>Integrovat trojúhelníkovou metodou (pravidlem prostředního
bodu).</p></dd><dt><span class="term"><a
name="gel-function-NumericalDerivative"></a>NumericalDerivative</span></dt><dd><pre
class="synopsis">NumericalDerivative (f,x0)</pre><p>Alternativní názvy: <code class=
"function">NDerivative</code></p><p>Zkusit vypočítat numerickou derivaci.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Derivace"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSeriesCoefficients"></a>NumericalFourierSeriesCoefficients</span></dt><dd><pre
class="synopsis">NumericalFourierSeriesCoefficients (f,L,N)</pre><p>Vrátit vektor vektorů <strong
class="userinput"><code>[a,b]</code></strong>, kde <code class="varname">a</code> jsou kosinové koeficienty a
<code class="varname">b</code> sinové koeficienty Fourierovy řady funkce <code class="function">f</code> s
poloviční periodou <code class="varname">L</code> (tj. definovanou na <strong
class="userinput"><code>[-L,L]</code></strong> a periodicky rozšířenou) s numericky spočítanými koeficienty
do <code class="varname">N</code>-té harmonické. Koeficienty jsou spočítány numerickou integrací pomocí <
a class="link" href="ch11s11.html#gel-function-NumericalIntegral"><code
class="function">NumericalIntegral</code></a>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/FourierSeries.html" target="_top">Mathworld</a> (text je v angličtině)
nebo <a class="ulink" href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSeriesFunction"></a>NumericalFourierSeriesFunction</span></dt><dd><pre
class="synopsis">NumericalFourierSeriesFunction (f,L,N)</pre><p>Vrátit funkci, která je Fourierovou řadou
funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code> (tj. definovanou
na <strong class="userinput"><code>[-L,L]</code></strong> a periodicky rozšířenou) s numericky spočítanými
koeficienty do <code class="varname">N</code>-té harmonické. Jde o čistě trigon
ometrickou řadu složenou ze sinů a kosinů. Koeficienty jsou spočítány numerickou integrací pomocí <a
class="link" href="ch11s11.html#gel-function-NumericalIntegral"><code
class="function">NumericalIntegral</code></a>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/FourierSeries.html" target="_top">Mathworld</a> (text je v angličtině)
nebo <a class="ulink" href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierCosineSeriesCoefficients"></a>NumericalFourierCosineSeriesCoefficients</span></dt><dd><pre
class="synopsis">NumericalFourierCosineSeriesCoefficients (f,L,N)</pre><p>Vrátit vektor koeficientů kosinové
Fourierovy řady funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definov
anou na <strong class="userinput"><code>[0,L]</code></strong>, provedeme sudé periodické rozšíření a
spočteme Fourierovu řadu, která má pouze kosinové členy. Řada je spočítána do <code
class="varname">N</code>-té harmonické. Koeficienty jsou spočítány numerickou integrací pomocí <a
class="link" href="ch11s11.html#gel-function-NumericalIntegral"><code
class="function">NumericalIntegral</code></a>. Poznamenejme, že <strong
class="userinput"><code>a@(1)</code></strong> je konstantní koeficient! To znamená, že <strong
class="userinput"><code>a@(n)</code></strong> odkazuje na člen <strong
class="userinput"><code>cos(x*(n-1)*pi/L)</code></strong>.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="http://mathworld.wolfram.com/FourierCosineSeries.html" target="_top">Mathworld</a> (text
je v angličtině) nebo <a class="ulink" href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.7 a no
vější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierCosineSeriesFunction"></a>NumericalFourierCosineSeriesFunction</span></dt><dd><pre
class="synopsis">NumericalFourierCosineSeriesFunction (f,L,N)</pre><p>Vrátit funkci, která je kosinovou
Fourierovu řadou funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme sudé periodické rozšíření a spočteme Fourierovu
řadu, která má pouze kosinové členy. Řada je spočítána do <code class="varname">N</code>-té harmonické.
Koeficienty jsou spočítány numerickou integrací pomocí <a class="link"
href="ch11s11.html#gel-function-NumericalIntegral"><code
class="function">NumericalIntegral</code></a>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/FourierCosineSeries.ht
ml" target="_top">Mathworld</a> (text je v angličtině) nebo <a class="ulink"
href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada" target="_top">Wikipedia</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSineSeriesCoefficients"></a>NumericalFourierSineSeriesCoefficients</span></dt><dd><pre
class="synopsis">NumericalFourierSineSeriesCoefficients (f,L,N)</pre><p>Vrátit vektor koeficientů sinové
Fourierovy řady funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme liché periodické rozšíření a spočteme Fourierovu
řadu, která má pouze sinové členy. Řada je spočítána do <code class="varname">N</code>-té harmonické.
Koeficienty jsou spočítány numerickou integrací pomocí <a class="link" href="ch11s11.html#gel-function-Nu
mericalIntegral"><code class="function">NumericalIntegral</code></a>.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/FourierSineSeries.html"
target="_top">Mathworld</a> (text je v angličtině) nebo <a class="ulink"
href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada" target="_top">Wikipedia</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalFourierSineSeriesFunction"></a>NumericalFourierSineSeriesFunction</span></dt><dd><pre
class="synopsis">NumericalFourierSineSeriesFunction (f,L,N)</pre><p>Vrátit funkci, která je sinovou
Fourierovu řadou funkce <code class="function">f</code> s poloviční periodou <code class="varname">L</code>.
To jest, vezmeme funkci <code class="function">f</code> definovanou na <strong
class="userinput"><code>[0,L]</code></strong>, provedeme liché periodické rozšíření a spočteme Fourierovu
řadu, která má pouze sinové členy. Řada
je spočítána do <code class="varname">N</code>-té harmonické. Koeficienty jsou spočítány numerickou
integrací pomocí <a class="link" href="ch11s11.html#gel-function-NumericalIntegral"><code
class="function">NumericalIntegral</code></a>.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/FourierSineSeries.html" target="_top">Mathworld</a> (text je v angličtině)
nebo <a class="ulink" href="https://cs.wikipedia.org/wiki/Fourierova_%C5%99ada"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.7 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NumericalIntegral"></a>NumericalIntegral</span></dt><dd><pre
class="synopsis">NumericalIntegral (f,a,b)</pre><p>Integrovat pravidlem nastaveným v
NumericalIntegralFunction jako funkcí f od a do b pomocí kroků NumericalIntegralSteps.</p></dd><dt><span
class="term"><a name="gel-function-NumericalLeftDerivative"></a>NumericalLeftDerivative</span></dt><dd><pre
class="
synopsis">NumericalLeftDerivative (f,x0)</pre><p>Zkusit vypočítat numerickou levou
derivaci.</p></dd><dt><span class="term"><a
name="gel-function-NumericalLimitAtInfinity"></a>NumericalLimitAtInfinity</span></dt><dd><pre
class="synopsis">NumericalLimitAtInfinity (_f,step_fun,tolerance,serie_pro_uspech,N)</pre><p>Pokusit se
spočítat limitu f(step_fun(i)) pro i od 1 do N.</p></dd><dt><span class="term"><a
name="gel-function-NumericalRightDerivative"></a>NumericalRightDerivative</span></dt><dd><pre
class="synopsis">NumericalRightDerivative (f,x0)</pre><p>Zkusit vypočítat numerickou pravou
derivaci.</p></dd><dt><span class="term"><a
name="gel-function-OddPeriodicExtension"></a>OddPeriodicExtension</span></dt><dd><pre
class="synopsis">OddPeriodicExtension (f,L)</pre><p>Vrátit funkci, která je lichým periodickým rozšířením
<code class="function">f</code> s poloviční periodou <code class="varname">L</code>. Tj. funkce definovaná na
intervalu <strong class="userinpu
t"><code>[0,L]</code></strong> rozšířená, aby byla lichá na <strong
class="userinput"><code>[-L,L]</code></strong> a pak rozšířená, aby byla periodická s periodou <strong
class="userinput"><code>2*L</code></strong>.</p><p>Viz také <a class="link"
href="ch11s11.html#gel-function-EvenPeriodicExtension">EvenPeriodicExtension</a> a <a class="link"
href="ch11s11.html#gel-function-PeriodicExtension">PeriodicExtension</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a
name="gel-function-OneSidedFivePointFormula"></a>OneSidedFivePointFormula</span></dt><dd><pre
class="synopsis">OneSidedFivePointFormula (f,x0,h)</pre><p>Spočítat jednostrannou derivaci pomocí
pětibodového vzorce.</p></dd><dt><span class="term"><a
name="gel-function-OneSidedThreePointFormula"></a>OneSidedThreePointFormula</span></dt><dd><pre
class="synopsis">OneSidedThreePointFormula (f,x0,h)</pre><p>Spočítat jednostrannou derivaci pomocí
tříbodového vzorce.</p></dd><dt><span c
lass="term"><a name="gel-function-PeriodicExtension"></a>PeriodicExtension</span></dt><dd><pre
class="synopsis">PeriodicExtension (f,a,b)</pre><p>Vrátit funkci, která je periodickým rozšířením <code
class="function">f</code> definované na intervalu <strong class="userinput"><code>[a,b]</code></strong> a s
periodou <strong class="userinput"><code>b-a</code></strong>.</p><p>Viz také <a class="link"
href="ch11s11.html#gel-function-OddPeriodicExtension">OddPeriodicExtension</a> a <a class="link"
href="ch11s11.html#gel-function-EvenPeriodicExtension">EvenPeriodicExtension</a>.</p><p>Verze 1.0.7 a
novější.</p></dd><dt><span class="term"><a name="gel-function-RightLimit"></a>RightLimit</span></dt><dd><pre
class="synopsis">RightLimit (f,x0)</pre><p>Spočítat limitu zprava funkce reálné proměnné v
x0.</p></dd><dt><span class="term"><a
name="gel-function-TwoSidedFivePointFormula"></a>TwoSidedFivePointFormula</span></dt><dd><pre
class="synopsis">TwoSidedFivePointFormul
a (f,x0,h)</pre><p>Spočítat oboustrannou derivaci pomocí pětibodového vzorce.</p></dd><dt><span
class="term"><a
name="gel-function-TwoSidedThreePointFormula"></a>TwoSidedThreePointFormula</span></dt><dd><pre
class="synopsis">TwoSidedThreePointFormula (f,x0,h)</pre><p>Spočítat oboustrannou derivaci pomocí tříbodového
vzorce.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s10.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s12.html">Další</a></td></tr><tr><td width="40%" align="left"
valign="top">Kombinatorika </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top">
Funkce</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s12.html b/help/cs/html/ch11s12.html
index cba1456..7965b54 100644
--- a/help/cs/html/ch11s12.html
+++ b/help/cs/html/ch11s12.html
@@ -1,59 +1 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Funkce</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s11.html" title="Diferenciální/integrální počet"><link rel="next" href="ch11s13.html" title="Řešení
rovnic"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div
class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Funkce</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s11.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s13.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div>
<h2 class="title" style="clear: both"><a
name="genius-gel-function-list-functions"></a>Funkce</h2></div></div></div><div class="variablelist"><dl
class="variablelist"><dt><span class="term"><a name="gel-function-Argument"></a>Argument</span></dt><dd><pre
class="synopsis">Argument (z)</pre><p>Alternativní názvy: <code class="function">Arg</code><code
class="function">arg</code></p><p>Argument (orientovaný úhel) komplexního čísla.</p></dd><dt><span
class="term"><a name="gel-function-BesselJ0"></a>BesselJ0</span></dt><dd><pre class="synopsis">BesselJ0
(x)</pre><p>Besselova funkce prvního druhu řádu 0. Je implementována pouze pro reálná čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bessel_functions"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselJ1"></a>BesselJ1</span></dt><dd><pre class="synopsis">BesselJ1 (x)</pre><p>Besselova
funkce prvního druhu řádu 1. Je implementována pouze pro reálná čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bessel_functions"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselJn"></a>BesselJn</span></dt><dd><pre class="synopsis">BesselJn
(n,x)</pre><p>Besselova funkce prvního druhu řádu <code class="varname">n</code>. Je implementována pouze pro
reálná čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bessel_functions"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselY0"></a>BesselY0</span></dt><dd><pre class="synopsis">BesselY0 (x)</pre><p>Besselova
funkce druhého druhu řádu 0. Je implementována pouze pro reálná čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bessel_functions"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselY1"></a>BesselY1</span></dt><dd><pre class="synopsis">BesselY1 (x)</pre><p>Besselova
funkce druhého druhu řádu 1. Je implementována pouze pro reálná čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bessel_functions"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselYn"></a>BesselYn</span></dt><dd><pre class="synopsis">BesselYn
(n,x)</pre><p>Besselova funkce druhého druhu řádu <code class="varname">n</code>. Je implementována pouze pro
reálná čísla.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Bessel_functions"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-DirichletKernel"></a>DirichletKernel</span></dt><dd><pre class="synopsis">DirichletKernel
(n,t)</pre><p>Dirichletovo jádro řádu <code class="varname">n</code>.</p></dd><dt><span class="term"><a
name="gel-function-DiscreteDelta"></a>DiscreteDelta</span></dt><dd><pre class="synopsis">DiscreteDelta
(v)</pre><p>Vrátit 1, když a jen když jsou všechny prvky nulové.</p></dd><dt><span class="term"><a
name="gel-function-ErrorFunction"></a>ErrorFunction</span></dt><dd><pre class="synopsis">ErrorFunction
(x)</pre><p>Alternativní názvy: <code class="function">erf</code></p><p>Chybová funkce, 2/sqrt(pi) * int_0^x
e^(-t^2) dt.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/ErrorFunction" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Chybov%C3%A1_funkce" target="_top">Wikipedia</a>.
</p></dd><dt><span class="term"><a name="gel-function-FejerKernel"></a>FejerKernel</span></dt><dd><pre
class="synopsis">FejerKernel (n,t)</pre><p>Fejerovo jádro řádu <code class="varname">n</code> vyhodnocené v
<code class="varname">t</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/FejerKernel" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-GammaFunction"></a>GammaFunction</span></dt><dd><pre class="synopsis">GammaFunction
(x)</pre><p>Alternativní názvy: <code class="function">Gamma</code></p><p>Funkce Gama. V současnosti je
implementována pouze pro reálná čísla.</p><p>
- See
- <a class="ulink" href="http://planetmath.org/GammaFunction" target="_top">Planetmath</a> or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Gamma_function" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-KroneckerDelta"></a>KroneckerDelta</span></dt><dd><pre class="synopsis">KroneckerDelta
(v)</pre><p>Vrátit 1, když a jen když se všechny prvky rovnají.</p></dd><dt><span class="term"><a
name="gel-function-LambertW"></a>LambertW</span></dt><dd><pre class="synopsis">LambertW (x)</pre><p>Hlavní
větev Lambertovy funkce W vypočítaná pro čistě reálná čísla větší nebo rovna <strong
class="userinput"><code>-1/e</code></strong>. Funkce <code class="function">LambertW</code> je inverzní k
výrazu <strong class="userinput"><code>x*e^x</code></strong>. Dokonce i pro reálná <code
class="varname">x</code> tento výraz není jedna k jedné a proto má dvě větve pro <strong
class="userinput"><code>[-1/e,0)</code></strong>. Viz <a class="link"
href="ch11s12.html#gel-function-LambertWm1"><code class="function">LambertWm1</code></a> ohledně další reálné
větve.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Lambert_W_function"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-LambertWm1"></a>LambertWm1</span></dt><dd><pre class="synopsis">LambertWm1
(x)</pre><p>Vedlejší (mínus první) větev Lambertovy funkce W vypočítaná pro čistě reálná čísla větší nebo
rovna <strong class="userinput"><code>-1/e</code></strong>. Funkce <code class="function">LambertWm1</code>
je druhou větví k inverzi výrazu <strong class="userinput"><code>x*e^x</code></strong>. Viz <a class="link"
href="ch11s12.html#gel-function-LambertW"><code class="function">LambertW</code></a> ohledně hlavní
větve.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Lambert_W_function"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MinimizeFunction"></a>MinimizeFunction</span></dt><dd><pre
class="synopsis">MinimizeFunction (fce,x,prirust)</pre><p>Najít první hodnotu, kdy f(x)=0.</p></dd><dt><span
class="term"><a name="gel-function-MoebiusDiskMapping"></a>MoebiusDiskMapping</span></dt><dd><pre
class="synopsis">MoebiusDiskMapping (a,z)</pre><p>Möbiova transformace (lineární lomené zobrazení) kruhu na
sebe sama ku 0.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MoebiusMapping"></a>MoebiusMapping</span></dt><dd><pre class="synopsis">MoebiusMapping
(z,z2,z3,z4)</pre><p>Möbiova transformace (lineární lomené zobrazení) pomocí dvojpoměrů z2,z3,z4 ku 1,0 a
nekonečnu.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MoebiusMappingInftyToInfty"></a>MoebiusMappingInftyToInfty</span></dt><dd><pre
class="synopsis">MoebiusMappingInftyToInfty (z,z2,z3)</pre><p>Möbiova transformace (lineární lomené
zobrazení) pomocí dvojpoměrů nekonečna ku nekonečnu a z2,z3 ku 1 a 0.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MoebiusMappingInftyToOne"></a>MoebiusMappingInftyToOne</span></dt><dd><pre
class="synopsis">MoebiusMappingInftyToOne (z,z3,z4)</pre><p>Möbiova transformace (lineární lomené zobrazení)
pomocí dvojpoměrů nekonečna ku 1 a z3,z4 ku 0 a nekonečnu.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-MoebiusMappingInftyToZero"></a>MoebiusMappingInftyToZero</span></dt><dd><pre
class="synopsis">MoebiusMappingInftyToZero (z,z2,z4)</pre><p>Möbiova transformace (lineární lomené zobrazení)
pomocí dvojpoměrů nekonečna ku 0 a z2,z4 ku 1 a nekonečnu.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-PoissonKernel"></a>PoissonKernel</span></dt><dd><pre class="synopsis">PoissonKernel
(r,sigma)</pre><p>Poissonovo jádro na D(0,1) (nenormalizované na 1, tj. integrál je 2pi).</p></dd><dt><span
class="term"><a name="gel-function-PoissonKernelRadius"></a>PoissonKernelRadius</span></dt><dd><pre
class="synopsis">PoissonKernelRadius (r,sigma)</pre><p>Poissonovo jádro na D(0,R) (nenormalizované na
1).</p></dd><dt><span class="term"><a name="gel-function-RiemannZeta"></a>RiemannZeta</span></dt><dd><pre
class="synopsis">RiemannZeta (x)</pre><p>Alternativní názvy: <code
class="function">zeta</code></p><p>Riemannova funkce zeta. V současnosti je implementována jen pro reálná
čísla.</p><p>
- See
- <a class="ulink" href="http://planetmath.org/RiemannZetaFunction" target="_top">Planetmath</a> or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Riemann_zeta_function"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-UnitStep"></a>UnitStep</span></dt><dd><pre
class="synopsis">UnitStep (x)</pre><p>Funkce jednotkového skoku je rovna 0 pro x<0 a jedné v ostatních
případech. Jedná se o integrál Diracovy funkce delta. Bývá také nazývána Heavisideova funkce.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Unit_step" target="_top">Wikipedia</a> for
more information.
- </p></dd><dt><span class="term"><a name="gel-function-cis"></a>cis</span></dt><dd><pre
class="synopsis">cis (x)</pre><p>Funkce <code class="function">cis</code>, což je to stejné jako <strong
class="userinput"><code>cos(x)+1i*sin(x)</code></strong></p></dd><dt><span class="term"><a
name="gel-function-deg2rad"></a>deg2rad</span></dt><dd><pre class="synopsis">deg2rad (x)</pre><p>Převést
stupně na radiány.</p></dd><dt><span class="term"><a
name="gel-function-rad2deg"></a>rad2deg</span></dt><dd><pre class="synopsis">rad2deg (x)</pre><p>Převést
radiány na stupně.</p></dd><dt><span class="term"><a name="gel-function-sinc"></a>sinc</span></dt><dd><pre
class="synopsis">sinc (x)</pre><p>Vypočítat nenormalizovanou funkci sinc, což je <strong
class="userinput"><code>sin(x)/x</code></strong>. Jestli chcete normalizovanou funkci, volejte <strong
class="userinput"><code>sinc(pi*x)</code></strong>.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Sinc" target="_top">Wikipedia</a> for more
information.
- </p><p>Verze 1.0.16 a novější.</p></dd></dl></div></div><div class="navfooter"><hr><table
width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s11.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s13.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Diferenciální/integrální
počet </td><td width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%"
align="right" valign="top"> Řešení rovnic</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Funkce</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s11.html" title="Diferenciální/integrální počet"><link rel="next" href="ch11s13.html" title="Řešení
rovnic"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div
class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Funkce</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s11.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s13.html">Další</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div>
<h2 class="title" style="clear: both"><a
name="genius-gel-function-list-functions"></a>Funkce</h2></div></div></div><div class="variablelist"><dl
class="variablelist"><dt><span class="term"><a name="gel-function-Argument"></a>Argument</span></dt><dd><pre
class="synopsis">Argument (z)</pre><p>Alternativní názvy: <code class="function">Arg</code><code
class="function">arg</code></p><p>Argument (orientovaný úhel) komplexního čísla.</p></dd><dt><span
class="term"><a name="gel-function-BesselJ0"></a>BesselJ0</span></dt><dd><pre class="synopsis">BesselJ0
(x)</pre><p>Besselova funkce prvního druhu řádu 0. Je implementována pouze pro reálná čísla.</p><p>Více
informací najdete v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Besselova_funkce"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselJ1"></a>BesselJ1</span></dt><dd><pre class="synopsis">BesselJ1 (x)</pre><p>Besselova
fun
kce prvního druhu řádu 1. Je implementována pouze pro reálná čísla.</p><p>Více informací najdete v
encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Besselova_funkce"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-BesselJn"></a>BesselJn</span></dt><dd><pre class="synopsis">BesselJn
(n,x)</pre><p>Besselova funkce prvního druhu řádu <code class="varname">n</code>. Je implementována pouze pro
reálná čísla.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Besselova_funkce" target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a
novější.</p></dd><dt><span class="term"><a name="gel-function-BesselY0"></a>BesselY0</span></dt><dd><pre
class="synopsis">BesselY0 (x)</pre><p>Besselova funkce druhého druhu řádu 0. Je implementována pouze pro
reálná čísla.</p><p>Více informací najdete v encyklopedii <a class="ulink" href="https://c
s.wikipedia.org/wiki/Besselova_funkce" target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a
novější.</p></dd><dt><span class="term"><a name="gel-function-BesselY1"></a>BesselY1</span></dt><dd><pre
class="synopsis">BesselY1 (x)</pre><p>Besselova funkce druhého druhu řádu 1. Je implementována pouze pro
reálná čísla.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Besselova_funkce" target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a
novější.</p></dd><dt><span class="term"><a name="gel-function-BesselYn"></a>BesselYn</span></dt><dd><pre
class="synopsis">BesselYn (n,x)</pre><p>Besselova funkce druhého druhu řádu <code class="varname">n</code>.
Je implementována pouze pro reálná čísla.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Besselova_funkce" target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a
novější.</p></dd><dt><span class="term"><a name="gel-function-
DirichletKernel"></a>DirichletKernel</span></dt><dd><pre class="synopsis">DirichletKernel
(n,t)</pre><p>Dirichletovo jádro řádu <code class="varname">n</code>.</p></dd><dt><span class="term"><a
name="gel-function-DiscreteDelta"></a>DiscreteDelta</span></dt><dd><pre class="synopsis">DiscreteDelta
(v)</pre><p>Vrátit 1, když a jen když jsou všechny prvky nulové.</p></dd><dt><span class="term"><a
name="gel-function-ErrorFunction"></a>ErrorFunction</span></dt><dd><pre class="synopsis">ErrorFunction
(x)</pre><p>Alternativní názvy: <code class="function">erf</code></p><p>Chybová funkce, 2/sqrt(pi) * int_0^x
e^(-t^2) dt.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/ErrorFunction" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Chybov%C3%A1_funkce"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-FejerKernel"></a>FejerKernel</span><
/dt><dd><pre class="synopsis">FejerKernel (n,t)</pre><p>Fejerovo jádro řádu <code class="varname">n</code>
vyhodnocené v <code class="varname">t</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/FejerKernel" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-GammaFunction"></a>GammaFunction</span></dt><dd><pre class="synopsis">GammaFunction
(x)</pre><p>Alternativní názvy: <code class="function">Gamma</code></p><p>Funkce Gama. V současnosti je
implementována pouze pro reálná čísla.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/GammaFunction" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Gama_funkce" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-KroneckerDelta"></a>KroneckerDelta</span></dt><dd><pre class="synopsis">
KroneckerDelta (v)</pre><p>Vrátit 1, když a jen když se všechny prvky rovnají.</p></dd><dt><span
class="term"><a name="gel-function-LambertW"></a>LambertW</span></dt><dd><pre class="synopsis">LambertW
(x)</pre><p>Hlavní větev Lambertovy funkce W vypočítaná pro čistě reálná čísla větší nebo rovna <strong
class="userinput"><code>-1/e</code></strong>. Funkce <code class="function">LambertW</code> je inverzní k
výrazu <strong class="userinput"><code>x*e^x</code></strong>. Dokonce i pro reálná <code
class="varname">x</code> tento výraz není jedna k jedné a proto má dvě větve pro <strong
class="userinput"><code>[-1/e,0)</code></strong>. Viz <a class="link"
href="ch11s12.html#gel-function-LambertWm1"><code class="function">LambertWm1</code></a> ohledně další reálné
větve.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Lambert_W_function" target="_top">Wikipedia</a> (text je v
angličtině).</p><p
Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-LambertWm1"></a>LambertWm1</span></dt><dd><pre class="synopsis">LambertWm1
(x)</pre><p>Vedlejší (mínus první) větev Lambertovy funkce W vypočítaná pro čistě reálná čísla větší nebo
rovna <strong class="userinput"><code>-1/e</code></strong>. Funkce <code class="function">LambertWm1</code>
je druhou větví k inverzi výrazu <strong class="userinput"><code>x*e^x</code></strong>. Viz <a class="link"
href="ch11s12.html#gel-function-LambertW"><code class="function">LambertW</code></a> ohledně hlavní
větve.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Lambert_W_function" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MinimizeFunction"></a>MinimizeFunction</span></dt><dd><pre
class="synopsis">MinimizeFunction (fce,x,prirust)</pre><p>Najít první hodnotu, kdy f(x)=0.</p>
</dd><dt><span class="term"><a
name="gel-function-MoebiusDiskMapping"></a>MoebiusDiskMapping</span></dt><dd><pre
class="synopsis">MoebiusDiskMapping (a,z)</pre><p>Möbiova transformace (lineární lomené zobrazení) kruhu na
sebe sama ku 0.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation" target="_top">Wikipedia</a> (text je v
angličtině) a <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
(text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MoebiusMapping"></a>MoebiusMapping</span></dt><dd><pre class="synopsis">MoebiusMapping
(z,z2,z3,z4)</pre><p>Möbiova transformace (lineární lomené zobrazení) pomocí dvojpoměrů z2,z3,z4 ku 1,0 a
nekonečnu.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation" target="_top">Wikipedia</a> (text je v angli
čtině) a <a class="ulink" href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a>
(text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MoebiusMappingInftyToInfty"></a>MoebiusMappingInftyToInfty</span></dt><dd><pre
class="synopsis">MoebiusMappingInftyToInfty (z,z2,z3)</pre><p>Möbiova transformace (lineární lomené
zobrazení) pomocí dvojpoměrů nekonečna ku nekonečnu a z2,z3 ku 1 a 0.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation"
target="_top">Wikipedia</a> (text je v angličtině) a <a class="ulink"
href="http://planetmath.org/MobiusTransformation" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MoebiusMappingInftyToOne"></a>MoebiusMappingInftyToOne</span></dt><dd><pre
class="synopsis">MoebiusMappingInftyToOne (z,z3,z4)</pre><p>Möbiova transformace (lineární lomené zobraze
ní) pomocí dvojpoměrů nekonečna ku 1 a z3,z4 ku 0 a nekonečnu.</p><p>Více informací najdete v encyklopediích
<a class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation" target="_top">Wikipedia</a>
(text je v angličtině) a <a class="ulink" href="http://planetmath.org/MobiusTransformation"
target="_top">Planetmath</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-MoebiusMappingInftyToZero"></a>MoebiusMappingInftyToZero</span></dt><dd><pre
class="synopsis">MoebiusMappingInftyToZero (z,z2,z4)</pre><p>Möbiova transformace (lineární lomené zobrazení)
pomocí dvojpoměrů nekonečna ku 0 a z2,z4 ku 1 a nekonečnu.</p><p>Více informací najdete v encyklopediích <a
class="ulink" href="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation" target="_top">Wikipedia</a>
(text je v angličtině) a <a class="ulink" href="http://planetmath.org/MobiusTransformation"
target="_top">Planetmath</a> (text je v angličtině
).</p></dd><dt><span class="term"><a name="gel-function-PoissonKernel"></a>PoissonKernel</span></dt><dd><pre
class="synopsis">PoissonKernel (r,sigma)</pre><p>Poissonovo jádro na D(0,1) (nenormalizované na 1, tj.
integrál je 2pi).</p></dd><dt><span class="term"><a
name="gel-function-PoissonKernelRadius"></a>PoissonKernelRadius</span></dt><dd><pre
class="synopsis">PoissonKernelRadius (r,sigma)</pre><p>Poissonovo jádro na D(0,R) (nenormalizované na
1).</p></dd><dt><span class="term"><a name="gel-function-RiemannZeta"></a>RiemannZeta</span></dt><dd><pre
class="synopsis">RiemannZeta (x)</pre><p>Alternativní názvy: <code
class="function">zeta</code></p><p>Riemannova funkce zeta. V současnosti je implementována jen pro reálná
čísla.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/RiemannZetaFunction" target="_top">Planetmath</a> (text je v angličtině) a <a
class="ulink" href="https://cs.wikipedia.org/wiki/Riemannova_funkc
e_zeta" target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-UnitStep"></a>UnitStep</span></dt><dd><pre class="synopsis">UnitStep (x)</pre><p>Funkce
jednotkového skoku je rovna 0 pro x<0 a jedné v ostatních případech. Jedná se o integrál Diracovy funkce
delta. Bývá také nazývána Heavisideova funkce.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Heavisideova_funkce" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-cis"></a>cis</span></dt><dd><pre class="synopsis">cis (x)</pre><p>Funkce
<code class="function">cis</code>, což je to stejné jako <strong
class="userinput"><code>cos(x)+1i*sin(x)</code></strong></p></dd><dt><span class="term"><a
name="gel-function-deg2rad"></a>deg2rad</span></dt><dd><pre class="synopsis">deg2rad (x)</pre><p>Převést
stupně na radiány.</p></dd><dt><span class="term"><a name="gel-function-rad2deg"></a>rad2deg</span></d
t><dd><pre class="synopsis">rad2deg (x)</pre><p>Převést radiány na stupně.</p></dd><dt><span class="term"><a
name="gel-function-sinc"></a>sinc</span></dt><dd><pre class="synopsis">sinc (x)</pre><p>Vypočítat
nenormalizovanou funkci sinc, což je <strong class="userinput"><code>sin(x)/x</code></strong>. Jestli chcete
normalizovanou funkci, volejte <strong class="userinput"><code>sinc(pi*x)</code></strong>.</p><p>Více
informací najdete v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/Sinc"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.16 a novější.</p></dd></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a
accesskey="p" href="ch11s11.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s13.html">Další</a></td></tr><tr><td width="40%" align="left" valign=
"top">Diferenciální/integrální počet </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top"> Řešení
rovnic</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s13.html b/help/cs/html/ch11s13.html
index ed518b1..dbd54d3 100644
--- a/help/cs/html/ch11s13.html
+++ b/help/cs/html/ch11s13.html
@@ -1,27 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Řešení
rovnic</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s12.html" title="Funkce"><link rel="next" href="ch11s14.html"
title="Statistika"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Řešení rovnic</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s12.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s14.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="titl
e" style="clear: both"><a name="genius-gel-function-list-equation-solving"></a>Řešení
rovnic</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-CubicFormula"></a>CubicFormula</span></dt><dd><pre class="synopsis">CubicFormula
(p)</pre><p>Vypočítat kořeny kubického (3. stupně) polynomu pomocí kubické rovnice. Polynom by měl být zadán
jako vektor koeficientů. Tj. <strong class="userinput"><code>4*x^3 + 2*x + 1</code></strong> odpovídá vektoru
<strong class="userinput"><code>[1,2,0,4]</code></strong>. Vrací sloupcový vektor tří řešení. První řešení je
vždy reálné, protože kubická rovnice má vždy jedno reálné řešení.</p><p>
- See
- <a class="ulink" href="http://planetmath.org/CubicFormula" target="_top">Planetmath</a>,
- <a class="ulink" href="http://mathworld.wolfram.com/CubicFormula.html"
target="_top">Mathworld</a>, or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Cubic_equation" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-EulersMethod"></a>EulersMethod</span></dt><dd><pre class="synopsis">EulersMethod
(f,x0,y0,x1,n)</pre><p>Použít klasickou Eulerovu metodu k numerickému řešení y'=f(x,y) pro počáteční <code
class="varname">x0</code>, <code class="varname">y0</code> měnící se do <code class="varname">x1</code> s
přírůstky <code class="varname">n</code> a vrátit <code class="varname">y</code> v <code
class="varname">x1</code>. Pokud nechcete výslovně použít Eulerovu metodu, měli byste vážně popřemýšlet o
použití <a class="link" href="ch11s13.html#gel-function-RungeKutta">RungeKutta</a> k řešení obyčejných
diferenciálních rovnic.</p><p>Systémy je možné vyřešit jednoduše tak, že <code class="varname">y</code> musí
být všude (sloupcový) vektor. To znamená, že <code class="varname">y0</code> může být vektor v případech, kdy
by <code class="varname">f</code> mělo přebírat <code class="va
rname">x</code> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné velikosti.</p><p>
- See
- <a class="ulink" href="http://mathworld.wolfram.com/EulerForwardMethod.html"
target="_top">Mathworld</a> or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Eulers_method" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-EulersMethodFull"></a>EulersMethodFull</span></dt><dd><pre
class="synopsis">EulersMethodFull (f,x0,y0,x1,n)</pre><p>
- Use classical Euler's method to numerically solve y'=f(x,y) for
- initial <code class="varname">x0</code>, <code class="varname">y0</code> going to
- <code class="varname">x1</code> with <code class="varname">n</code> increments,
- returns an <strong class="userinput"><code>n+1</code></strong> by 2 matrix with the
- <code class="varname">x</code> and <code class="varname">y</code> values.
- Unless you explicitly want to use Euler's method, you should really
- think about using
- <a class="link" href="ch11s13.html#gel-function-RungeKuttaFull">RungeKuttaFull</a>
- for solving ODE.
- Suitable
- for plugging into
- <a class="link" href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a> or
- <a class="link" href="ch11s20.html#gel-function-LinePlotDrawPoints">LinePlotDrawPoints</a>.
- </p><p>Příklad: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotClear();</code></strong>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Řešení
rovnic</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home"
href="index.html" title="Příručka k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11.
Seznam funkcí GEL"><link rel="prev" href="ch11s12.html" title="Funkce"><link rel="next" href="ch11s14.html"
title="Statistika"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084"
alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Řešení rovnic</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s12.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s14.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="titl
e" style="clear: both"><a name="genius-gel-function-list-equation-solving"></a>Řešení
rovnic</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-CubicFormula"></a>CubicFormula</span></dt><dd><pre class="synopsis">CubicFormula
(p)</pre><p>Vypočítat kořeny kubického (3. stupně) polynomu pomocí kubické rovnice. Polynom by měl být zadán
jako vektor koeficientů. Tj. <strong class="userinput"><code>4*x^3 + 2*x + 1</code></strong> odpovídá vektoru
<strong class="userinput"><code>[1,2,0,4]</code></strong>. Vrací sloupcový vektor tří řešení. První řešení je
vždy reálné, protože kubická rovnice má vždy jedno reálné řešení.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://planetmath.org/CubicFormula" target="_top">Planetmath</a> (text
je v angličtině), <a class="ulink" href="http://mathworld.wolfram.com/CubicFormula.html"
target="_top">Mathworld</a> (
text je v angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Kubick%C3%A1_rovnice"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-EulersMethod"></a>EulersMethod</span></dt><dd><pre class="synopsis">EulersMethod
(f,x0,y0,x1,n)</pre><p>Použít klasickou Eulerovu metodu k numerickému řešení y'=f(x,y) pro počáteční <code
class="varname">x0</code>, <code class="varname">y0</code> měnící se do <code class="varname">x1</code> s
přírůstky <code class="varname">n</code> a vrátit <code class="varname">y</code> v <code
class="varname">x1</code>. Pokud nechcete výslovně použít Eulerovu metodu, měli byste vážně popřemýšlet o
použití <a class="link" href="ch11s13.html#gel-function-RungeKutta">RungeKutta</a> k řešení obyčejných
diferenciálních rovnic.</p><p>Systémy je možné vyřešit jednoduše tak, že <code class="varname">y</code> musí
být všude (sloupcový) vektor. To znamená, že <code clas
s="varname">y0</code> může být vektor v případech, kdy by <code class="varname">f</code> mělo přebírat <code
class="varname">x</code> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné
velikosti.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/EulerForwardMethod.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Eulerova_metoda"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-EulersMethodFull"></a>EulersMethodFull</span></dt><dd><pre
class="synopsis">EulersMethodFull (f,x0,y0,x1,n)</pre><p>Použít klasickou Eulerovu metodu k numerickému
řešení y'=f(x,y) pro počáteční <code class="varname">x0</code>, <code class="varname">y0</code> měnící se do
<code class="varname">x1</code> s přírůstky <code class="varname">n</code> a vrátit matici <strong
class="userinput"><code>n+1</code><
/strong> krát 2 s hodnotami <code class="varname">x</code> a <code class="varname">y</code>. Pokud nechcete
výslovně použít Eulerovu metodu, měli byste vážně popřemýšlet o použití <a class="link"
href="ch11s13.html#gel-function-RungeKuttaFull">RungeKuttaFull</a> k řešení obyčejných diferenciálních
rovnic. Vhodné pro zapojení do <a class="link"
href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a> nebo <a class="link"
href="ch11s20.html#gel-function-LinePlotDrawPoints">LinePlotDrawPoints</a>.</p><p>Příklad: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotClear();</code></strong>
<code class="prompt">genius></code> <strong class="userinput"><code>line =
EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponenciální
vývoj");</code></strong>
</pre><p>Systémy je možné vyřešit jednoduše tak, že <code class="varname">y</code> musí být všude
(sloupcový) vektor. To znamená, že <code class="varname">y0</code> může být vektor v případech, kdy by <code
class="varname">f</code> mělo přebírat <code class="varname">x</code> a vektor stejné velikosti pro druhý
argument a mělo by vracet vektor stejné velikosti.</p><p>Výstup pro systém je nicméně matice n krát 2 s
druhou položkou v podobě vektoru. Když si přejete vykreslit čáru, ujistěte se, že používáte řádkové vektory a
pak převeďte matici na vektor pomocí <a class="link"
href="ch11s08.html#gel-function-ExpandMatrix">ExpandMatrix</a> a vyberte si pravý sloupec. Například:
</p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotClear();</code></strong>
@@ -32,44 +9,9 @@
<code class="prompt">genius></code> <strong class="userinput"><code>LinePlotWindow =
[0,10,-2,2];</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(firstline,"color","blue","legend","První");</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Druhý");</code></strong>
-</pre><p>
- See
- <a class="ulink" href="http://mathworld.wolfram.com/EulerForwardMethod.html"
target="_top">Mathworld</a> or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Eulers_method" target="_top">Wikipedia</a>
for more information.
- </p><p>Verze 1.0.10 a novější.</p></dd><dt><span class="term"><a
name="gel-function-FindRootBisection"></a>FindRootBisection</span></dt><dd><pre
class="synopsis">FindRootBisection (f,a,b,TOL,N)</pre><p>Najít kořen funkce pomocí metody bisekce. <code
class="varname">a</code> a <code class="varname">b</code> je počáteční odhad intervalu, <strong
class="userinput"><code>f(a)</code></strong> a <strong class="userinput"><code>f(b)</code></strong> by měly
mít opačná znaménka. <code class="varname">TOL</code> je požadovaná tolerance a <code
class="varname">N</code> je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací
vektor <strong class="userinput"><code>[uspech,hodnota,iteratce]</code></strong>, kde <code
class="varname">uspech</code> je pravdivostní hodnota signalizující úspěch, <code
class="varname">hodnota</code> je poslední spočtená hodnota a <code class="varname">iterace</code> je počet
dokončených iterac
í.</p></dd><dt><span class="term"><a
name="gel-function-FindRootFalsePosition"></a>FindRootFalsePosition</span></dt><dd><pre
class="synopsis">FindRootFalsePosition (f,a,b,TOL,N)</pre><p>Najít kořen funkce pomocí metody tětiv. <code
class="varname">a</code> a <code class="varname">b</code> je počáteční odhad intervalu, <strong
class="userinput"><code>f(a)</code></strong> a <strong class="userinput"><code>f(b)</code></strong> by měly
mít opačná znaménka. <code class="varname">TOL</code> je požadovaná tolerance a <code
class="varname">N</code> je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací
vektor <strong class="userinput"><code>[uspech,hodnota,iteratce]</code></strong>, kde <code
class="varname">uspech</code> je pravdivostní hodnota signalizující úspěch, <code
class="varname">hodnota</code> je poslední spočtená hodnota a <code class="varname">iterace</code> je počet
dokončených iterací.</p></dd><dt><span
class="term"><a name="gel-function-FindRootMullersMethod"></a>FindRootMullersMethod</span></dt><dd><pre
class="synopsis">FindRootMullersMethod (f,x0,x1,x2,TOL,N)</pre><p>Najít kořen funkce pomocí Mullerovy metody.
<code class="varname">TOL</code> je požadovaná tolerance a <code class="varname">N</code> je omezení počtu
iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor <strong
class="userinput"><code>[uspech,hodnota,iteratce]</code></strong>, kde <code class="varname">uspech</code> je
pravdivostní hodnota signalizující úspěch, <code class="varname">hodnota</code> je poslední spočtená hodnota
a <code class="varname">iterace</code> je počet dokončených iterací.</p></dd><dt><span class="term"><a
name="gel-function-FindRootSecant"></a>FindRootSecant</span></dt><dd><pre class="synopsis">FindRootSecant
(f,a,b,TOL,N)</pre><p>Najít kořen funkce pomocí metody sečen. <code class="varname">a</code> a <code
class="varname">b</code> je
počáteční odhad intervalu, <strong class="userinput"><code>f(a)</code></strong> a <strong
class="userinput"><code>f(b)</code></strong> by měly mít opačná znaménka. <code class="varname">TOL</code> je
požadovaná tolerance a <code class="varname">N</code> je omezení počtu iterací, které mají proběhnout, 0
značí bez omezení. Funkce vrací vektor <strong
class="userinput"><code>[uspech,hodnota,iteratce]</code></strong>, kde <code class="varname">uspech</code> je
pravdivostní hodnota signalizující úspěch, <code class="varname">hodnota</code> je poslední spočtená hodnota
a <code class="varname">iterace</code> je počet dokončených iterací.</p></dd><dt><span class="term"><a
name="gel-function-HalleysMethod"></a>HalleysMethod</span></dt><dd><pre class="synopsis">HalleysMethod
(f,df,ddf,odhad,epsilon,maxn)</pre><p>Najde nuly pomocí Halleyovy metody. <code class="varname">f</code> je
funkce, <code class="varname">df</code> je její derivace a <code cla
ss="varname">ddf</code> její druhá derivace. <code class="varname">odhad</code> je počáteční odhad. Funkce
vrací výsledek po dvou úspěšných hodnotách, které každá spadají do <code class="varname">epsilon</code> nebo
po <code class="varname">maxn</code> pokusech, v kterémžto případě vrací <code class="constant">null</code>,
což značí selhání.</p><p>Viz také <a class="link" href="ch11s13.html#gel-function-NewtonsMethod"><code
class="function">NewtonsMethod</code></a> a <a class="link"
href="ch11s19.html#gel-function-SymbolicDerivative"><code
class="function">SymbolicDerivative</code></a>.</p><p>Příklad vyhledání druhé odmocniny z 10: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</code></strong>
-</pre><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Halley%27s_method"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NewtonsMethod"></a>NewtonsMethod</span></dt><dd><pre class="synopsis">NewtonsMethod
(f,df,odhad,epsilon,maxn)</pre><p>Najde nuly pomocí metody tečen (Newtonovy metody). <code
class="varname">f</code> je funkce a <code class="varname">df</code> je její derivace. <code
class="varname">odhad</code> je počáteční odhad. Funkce vrací výsledek po dvou úspěšných hodnotách, které
každá spadají do <code class="varname">epsilon</code> nebo po <code class="varname">maxn</code> pokusech, v
kterémžto případě vrací <code class="constant">null</code>, což značí selhání.</p><p>Viz také <a class="link"
href="ch11s15.html#gel-function-NewtonsMethodPoly"><code class="function">NewtonsMethodPoly</code></a> a <a
class="link" href="ch11s19.html#gel-function-SymbolicDerivative"><code
class="function">SymbolicDerivative</code></a>.</p><p>Příklad vyhledání druhé odmocniny z 10:
</p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</code></strong>
-</pre><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Newtons_method" target="_top">Wikipedia</a>
for more information.
- </p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-PolynomialRoots"></a>PolynomialRoots</span></dt><dd><pre class="synopsis">PolynomialRoots
(p)</pre><p>Vypočítat kořeny polynomu (1. až 4. stupně) pomocí jedné z rovnic pro takovéto polynomy. Polynom
by měl být zadán jako vektor koeficientů. Tj. <strong class="userinput"><code>4*x^3 + 2*x + 1</code></strong>
odpovídá vektoru <strong class="userinput"><code>[1,2,0,4]</code></strong>. Vrací sloupcový vektor
řešení.</p><p>Funkce volá <a class="link"
href="ch11s13.html#gel-function-QuadraticFormula">QuadraticFormula</a>, <a class="link"
href="ch11s13.html#gel-function-CubicFormula">CubicFormula</a> a <a class="link"
href="ch11s13.html#gel-function-QuarticFormula">QuarticFormula</a>.</p></dd><dt><span class="term"><a
name="gel-function-QuadraticFormula"></a>QuadraticFormula</span></dt><dd><pre
class="synopsis">QuadraticFormula (p)</pre><p>Vypočítat kořeny kvadratického
(2. stupně) polynomu pomocí kvadratické rovnice. Polynom by měl být zadán jako vektor koeficientů. Tj.
<strong class="userinput"><code>3*x^2 + 2*x + 1</code></strong> odpovídá vektoru <strong
class="userinput"><code>[1,2,3]</code></strong>. Vrací sloupcový vektor dvou řešení.</p><p>
- See
- <a class="ulink" href="http://planetmath.org/QuadraticFormula" target="_top">Planetmath</a>, or
- <a class="ulink" href="http://mathworld.wolfram.com/QuadraticFormula.html"
target="_top">Mathworld</a>, or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Quadratic_formula"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-QuarticFormula"></a>QuarticFormula</span></dt><dd><pre class="synopsis">QuarticFormula
(p)</pre><p>Vypočítat kořeny kvartického (4. stupně) polynomu pomocí kvartické rovnice. Polynom by měl být
zadán jako vektor koeficientů. Tj. <strong class="userinput"><code>5*x^4 + 2*x + 1</code></strong> odpovídá
vektoru <strong class="userinput"><code>[1,2,0,0,5]</code></strong>. Vrací sloupcový vektor čtyř
řešení.</p><p>
- See
- <a class="ulink" href="http://planetmath.org/QuarticFormula" target="_top">Planetmath</a>,
- <a class="ulink" href="http://mathworld.wolfram.com/QuarticEquation.html"
target="_top">Mathworld</a>, or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Quartic_equation"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-RungeKutta"></a>RungeKutta</span></dt><dd><pre class="synopsis">RungeKutta
(f,x0,y0,x1,n)</pre><p>Použít klasickou neadaptivní Rungeho-Kuttovu metodu čtvrtého řádu k numerickému řešení
y'=f(x,y) pro počáteční <code class="varname">x0</code>, <code class="varname">y0</code> měnící se do <code
class="varname">x1</code> s přírůstky <code class="varname">n</code>, vrací <code class="varname">y</code> v
<code class="varname">x1</code>.</p><p>Systémy je možné vyřešit jednoduše tak, že <code
class="varname">y</code> musí být všude (sloupcový) vektor. To znamená, že <code class="varname">y0</code>
může být vektor v případech, kdy by <code class="varname">f</code> mělo přebírat <code
class="varname">x</code> a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné
velikosti.</p><p>
- See
- <a class="ulink" href="http://mathworld.wolfram.com/Runge-KuttaMethod.html"
target="_top">Mathworld</a> or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Runge-Kutta_methods"
target="_top">Wikipedia</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-RungeKuttaFull"></a>RungeKuttaFull</span></dt><dd><pre class="synopsis">RungeKuttaFull
(f,x0,y0,x1,n)</pre><p>
- Use classical non-adaptive fourth order Runge-Kutta method to
- numerically solve
- y'=f(x,y) for initial <code class="varname">x0</code>, <code class="varname">y0</code>
- going to <code class="varname">x1</code> with <code class="varname">n</code>
- increments,
- returns an <strong class="userinput"><code>n+1</code></strong> by 2 matrix with the
- <code class="varname">x</code> and <code class="varname">y</code> values. Suitable
- for plugging into
- <a class="link" href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a> or
- <a class="link" href="ch11s20.html#gel-function-LinePlotDrawPoints">LinePlotDrawPoints</a>.
- </p><p>Příklad: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotClear();</code></strong>
+</pre><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/EulerForwardMethod.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Eulerova_metoda"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.10 a novější.</p></dd><dt><span class="term"><a
name="gel-function-FindRootBisection"></a>FindRootBisection</span></dt><dd><pre
class="synopsis">FindRootBisection (f,a,b,TOL,N)</pre><p>Najít kořen funkce pomocí metody bisekce. <code
class="varname">a</code> a <code class="varname">b</code> je počáteční odhad intervalu, <strong
class="userinput"><code>f(a)</code></strong> a <strong class="userinput"><code>f(b)</code></strong> by měly
mít opačná znaménka. <code class="varname">TOL</code> je požadovaná tolerance a <code
class="varname">N</code> je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací
vektor <strong class="userinput"
<code>[uspech,hodnota,iteratce]</code></strong>, kde <code class="varname">uspech</code> je pravdivostní
hodnota signalizující úspěch, <code class="varname">hodnota</code> je poslední spočtená hodnota a <code
class="varname">iterace</code> je počet dokončených iterací.</p></dd><dt><span class="term"><a
name="gel-function-FindRootFalsePosition"></a>FindRootFalsePosition</span></dt><dd><pre
class="synopsis">FindRootFalsePosition (f,a,b,TOL,N)</pre><p>Najít kořen funkce pomocí metody tětiv. <code
class="varname">a</code> a <code class="varname">b</code> je počáteční odhad intervalu, <strong
class="userinput"><code>f(a)</code></strong> a <strong class="userinput"><code>f(b)</code></strong> by měly
mít opačná znaménka. <code class="varname">TOL</code> je požadovaná tolerance a <code
class="varname">N</code> je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací
vektor <strong class="userinput"><code>[uspech,hodnota
,iteratce]</code></strong>, kde <code class="varname">uspech</code> je pravdivostní hodnota signalizující
úspěch, <code class="varname">hodnota</code> je poslední spočtená hodnota a <code
class="varname">iterace</code> je počet dokončených iterací.</p></dd><dt><span class="term"><a
name="gel-function-FindRootMullersMethod"></a>FindRootMullersMethod</span></dt><dd><pre
class="synopsis">FindRootMullersMethod (f,x0,x1,x2,TOL,N)</pre><p>Najít kořen funkce pomocí Mullerovy metody.
<code class="varname">TOL</code> je požadovaná tolerance a <code class="varname">N</code> je omezení počtu
iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor <strong
class="userinput"><code>[uspech,hodnota,iteratce]</code></strong>, kde <code class="varname">uspech</code> je
pravdivostní hodnota signalizující úspěch, <code class="varname">hodnota</code> je poslední spočtená hodnota
a <code class="varname">iterace</code> je počet dokončených ite
rací.</p></dd><dt><span class="term"><a
name="gel-function-FindRootSecant"></a>FindRootSecant</span></dt><dd><pre class="synopsis">FindRootSecant
(f,a,b,TOL,N)</pre><p>Najít kořen funkce pomocí metody sečen. <code class="varname">a</code> a <code
class="varname">b</code> je počáteční odhad intervalu, <strong class="userinput"><code>f(a)</code></strong> a
<strong class="userinput"><code>f(b)</code></strong> by měly mít opačná znaménka. <code
class="varname">TOL</code> je požadovaná tolerance a <code class="varname">N</code> je omezení počtu iterací,
které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor <strong
class="userinput"><code>[uspech,hodnota,iteratce]</code></strong>, kde <code class="varname">uspech</code> je
pravdivostní hodnota signalizující úspěch, <code class="varname">hodnota</code> je poslední spočtená hodnota
a <code class="varname">iterace</code> je počet dokončených iterací.</p></dd><dt><span class="term"><a na
me="gel-function-HalleysMethod"></a>HalleysMethod</span></dt><dd><pre class="synopsis">HalleysMethod
(f,df,ddf,odhad,epsilon,maxn)</pre><p>Najde nuly pomocí Halleyovy metody. <code class="varname">f</code> je
funkce, <code class="varname">df</code> je její derivace a <code class="varname">ddf</code> její druhá
derivace. <code class="varname">odhad</code> je počáteční odhad. Funkce vrací výsledek po dvou úspěšných
hodnotách, které každá spadají do <code class="varname">epsilon</code> nebo po <code
class="varname">maxn</code> pokusech, v kterémžto případě vrací <code class="constant">null</code>, což značí
selhání.</p><p>Viz také <a class="link" href="ch11s13.html#gel-function-NewtonsMethod"><code
class="function">NewtonsMethod</code></a> a <a class="link"
href="ch11s19.html#gel-function-SymbolicDerivative"><code
class="function">SymbolicDerivative</code></a>.</p><p>Příklad vyhledání druhé odmocniny z 10: </p><pre
class="screen"><code class=
"prompt">genius></code> <strong
class="userinput"><code>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</code></strong>
+</pre><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://en.wikipedia.org/wiki/Halley%27s_method" target="_top">Wikipedia</a> (text je v
angličtině).</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-NewtonsMethod"></a>NewtonsMethod</span></dt><dd><pre class="synopsis">NewtonsMethod
(f,df,odhad,epsilon,maxn)</pre><p>Najde nuly pomocí metody tečen (Newtonovy metody). <code
class="varname">f</code> je funkce a <code class="varname">df</code> je její derivace. <code
class="varname">odhad</code> je počáteční odhad. Funkce vrací výsledek po dvou úspěšných hodnotách, které
každá spadají do <code class="varname">epsilon</code> nebo po <code class="varname">maxn</code> pokusech, v
kterémžto případě vrací <code class="constant">null</code>, což značí selhání.</p><p>Viz také <a class="link"
href="ch11s15.html#gel-function-NewtonsMethodPoly"><code class="function">NewtonsMethodPoly</code></a> a <
a class="link" href="ch11s19.html#gel-function-SymbolicDerivative"><code
class="function">SymbolicDerivative</code></a>.</p><p>Příklad vyhledání druhé odmocniny z 10: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</code></strong>
+</pre><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Metoda_te%C4%8Den" target="_top">Wikipedia</a>.</p><p>Verze 1.0.18 a
novější.</p></dd><dt><span class="term"><a
name="gel-function-PolynomialRoots"></a>PolynomialRoots</span></dt><dd><pre class="synopsis">PolynomialRoots
(p)</pre><p>Vypočítat kořeny polynomu (1. až 4. stupně) pomocí jedné z rovnic pro takovéto polynomy. Polynom
by měl být zadán jako vektor koeficientů. Tj. <strong class="userinput"><code>4*x^3 + 2*x + 1</code></strong>
odpovídá vektoru <strong class="userinput"><code>[1,2,0,4]</code></strong>. Vrací sloupcový vektor
řešení.</p><p>Funkce volá <a class="link"
href="ch11s13.html#gel-function-QuadraticFormula">QuadraticFormula</a>, <a class="link"
href="ch11s13.html#gel-function-CubicFormula">CubicFormula</a> a <a class="link"
href="ch11s13.html#gel-function-QuarticFormula">QuarticFormula</a>.</p></dd><dt><span class="term"><a
name="gel-fu
nction-QuadraticFormula"></a>QuadraticFormula</span></dt><dd><pre class="synopsis">QuadraticFormula
(p)</pre><p>Vypočítat kořeny kvadratického (2. stupně) polynomu pomocí kvadratické rovnice. Polynom by měl
být zadán jako vektor koeficientů. Tj. <strong class="userinput"><code>3*x^2 + 2*x + 1</code></strong>
odpovídá vektoru <strong class="userinput"><code>[1,2,3]</code></strong>. Vrací sloupcový vektor dvou
řešení.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/QuadraticFormula" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/QuadraticFormula.html" target="_top">Mathworld</a> (text je
v angličtině) a <a class="ulink" href="https://en.wikipedia.org/wiki/Quadratic_formula"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-QuarticFormula"></a>QuarticFormula</span></dt><dd><pre class="synopsis">Qua
rticFormula (p)</pre><p>Vypočítat kořeny kvartického (4. stupně) polynomu pomocí kvartické rovnice. Polynom
by měl být zadán jako vektor koeficientů. Tj. <strong class="userinput"><code>5*x^4 + 2*x + 1</code></strong>
odpovídá vektoru <strong class="userinput"><code>[1,2,0,0,5]</code></strong>. Vrací sloupcový vektor čtyř
řešení.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://planetmath.org/QuarticFormula" target="_top">Planetmath</a> (text je v angličtině), <a
class="ulink" href="http://mathworld.wolfram.com/QuarticEquation.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://en.wikipedia.org/wiki/Quartic_equation"
target="_top">Wikipedia</a> (text je v angličtině).</p></dd><dt><span class="term"><a
name="gel-function-RungeKutta"></a>RungeKutta</span></dt><dd><pre class="synopsis">RungeKutta
(f,x0,y0,x1,n)</pre><p>Použít klasickou neadaptivní Rungeho-Kuttovu metodu čtvrtého �
�ádu k numerickému řešení y'=f(x,y) pro počáteční <code class="varname">x0</code>, <code
class="varname">y0</code> měnící se do <code class="varname">x1</code> s přírůstky <code
class="varname">n</code>, vrací <code class="varname">y</code> v <code
class="varname">x1</code>.</p><p>Systémy je možné vyřešit jednoduše tak, že <code class="varname">y</code>
musí být všude (sloupcový) vektor. To znamená, že <code class="varname">y0</code> může být vektor v
případech, kdy by <code class="varname">f</code> mělo přebírat <code class="varname">x</code> a vektor stejné
velikosti pro druhý argument a mělo by vracet vektor stejné velikosti.</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/Runge-KuttaMethod.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Numerick%C3%A9_%C5%99e%C5%A1en%C3%AD_oby%C4%8Dejn%C3%BDch_diferenci%C3%A1ln%C3
%ADch_rovnic#Metody_Runge-Kutta" target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-RungeKuttaFull"></a>RungeKuttaFull</span></dt><dd><pre class="synopsis">RungeKuttaFull
(f,x0,y0,x1,n)</pre><p>Použít klasickou neadaptivní metodu Runge-Kutta čtvrtého řádu k numerickému řešení
y'=f(x,y) pro počáteční <code class="varname">x0</code>, <code class="varname">y0</code> měnící se do <code
class="varname">x1</code> s přírůstky <code class="varname">n</code> a vrátit matici <strong
class="userinput"><code>n+1</code></strong> krát 2 s hodnotami <code class="varname">x</code> a <code
class="varname">y</code>. Vhodné pro zapojení do <a class="link"
href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a> nebo <a class="link"
href="ch11s20.html#gel-function-LinePlotDrawPoints">LinePlotDrawPoints</a>.</p><p>Příklad: </p><pre
class="screen"><code class="prompt">genius></code> <strong class="userinput"><code>LinePlot
Clear();</code></strong>
<code class="prompt">genius></code> <strong class="userinput"><code>line =
RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponenciální
vývoj");</code></strong>
</pre><p>Systémy je možné vyřešit jednoduše tak, že <code class="varname">y</code> musí být všude
(sloupcový) vektor. To znamená, že <code class="varname">y0</code> může být vektor v případech, kdy by <code
class="varname">f</code> mělo přebírat <code class="varname">x</code> a vektor stejné velikosti pro druhý
argument a mělo by vracet vektor stejné velikosti.</p><p>Výstup pro systém je nicméně matice n krát 2 s
druhou položkou v podobě vektoru. Když si přejete vykreslit čáru, ujistěte se, že používáte řádkové vektory a
pak převeďte matici na vektor pomocí <a class="link"
href="ch11s08.html#gel-function-ExpandMatrix">ExpandMatrix</a> a vyberte si pravý sloupec. Například:
</p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotClear();</code></strong>
@@ -80,8 +22,4 @@
<code class="prompt">genius></code> <strong class="userinput"><code>LinePlotWindow =
[0,10,-2,2];</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(firstline,"color","blue","legend","První");</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Druhý");</code></strong>
-</pre><p>
- See
- <a class="ulink" href="http://mathworld.wolfram.com/Runge-KuttaMethod.html"
target="_top">Mathworld</a> or
- <a class="ulink" href="https://en.wikipedia.org/wiki/Runge-Kutta_methods"
target="_top">Wikipedia</a> for more information.
- </p><p>Verze 1.0.10 a novější.</p></dd></dl></div></div><div class="navfooter"><hr><table
width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s12.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s14.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Funkce </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Statistika</td></tr></table></div></body></html>
+</pre><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/Runge-KuttaMethod.html" target="_top">Mathworld</a> (text je v angličtině)
a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Numerick%C3%A9_%C5%99e%C5%A1en%C3%AD_oby%C4%8Dejn%C3%BDch_diferenci%C3%A1ln%C3%ADch_rovnic#Metody_Runge-Kutta"
target="_top">Wikipedia</a>.</p><p>Verze 1.0.10 a novější.</p></dd></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a
accesskey="p" href="ch11s12.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s14.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Funkce </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Statistika</td></tr></table>
</div></body></html>
diff --git a/help/cs/html/ch11s14.html b/help/cs/html/ch11s14.html
index a6f3379..850e4b9 100644
--- a/help/cs/html/ch11s14.html
+++ b/help/cs/html/ch11s14.html
@@ -1,26 +1 @@
-<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Statistika</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s13.html" title="Řešení
rovnic"><link rel="next" href="ch11s15.html" title="Polynomy"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Statistika</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s13.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s15.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="title" s
tyle="clear: both"><a name="genius-gel-function-list-statistics"></a>Statistika</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-Average"></a>Average</span></dt><dd><pre class="synopsis">Average (m)</pre><p>Alternativní
názvy: <code class="function">average</code><code class="function">Mean</code><code
class="function">mean</code></p><p>Calculate average (the arithmetic mean) of an entire matrix.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Mean" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/ArithmeticMean.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-GaussDistribution"></a>GaussDistribution</span></dt><dd><pre
class="synopsis">GaussDistribution (x,sigma)</pre><p>Integrál Gaussovy funkce od 0 do <code
class="varname">x</code> (oblast pod normální křivkou).</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Normal_distribution"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/NormalDistribution.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-GaussFunction"></a>GaussFunction</span></dt><dd><pre class="synopsis">GaussFunction
(x,sigma)</pre><p>Normalizovaného Gaussova funkce rozdělení (normální křivka).</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Normal_distribution"
target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/NormalDistribution.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-Median"></a>Median</span></dt><dd><pre
class="synopsis">Median (m)</pre><p>Alternativní názvy: <code class="function">median</code></p><p>Vypočítat
medián z celé matice.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Median" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/StatisticalMedian.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-PopulationStandardDeviation"></a>PopulationStandardDeviation</span></dt><dd><pre
class="synopsis">PopulationStandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">stdevp</code></p><p>Spočítat standardní odchylku souboru celé matice.</p></dd><dt><span
class="term"><a name="gel-function-RowAverage"></a>RowAverage</span></dt><dd><pre class="synopsis">RowAverage
(m)</pre><p>Alternativní názvy: <code class="function">RowMean</code></p><p>Calculate average of each row in
a matrix. That is, compute the
- arithmetic mean.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Mean" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/ArithmeticMean.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a name="gel-function-RowMedian"></a>RowMedian</span></dt><dd><pre
class="synopsis">RowMedian (m)</pre><p>Vypočítat medián každého řádku v matici a vrátit sloupcový vektor
mediánů.</p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Median" target="_top">Wikipedia</a> or
- <a class="ulink" href="http://mathworld.wolfram.com/StatisticalMedian.html"
target="_top">Mathworld</a> for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-RowPopulationStandardDeviation"></a>RowPopulationStandardDeviation</span></dt><dd><pre
class="synopsis">RowPopulationStandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">rowstdevp</code></p><p>Spočítat standardní odchylku souboru řádků matice a vrátit svislý
vektor.</p></dd><dt><span class="term"><a
name="gel-function-RowStandardDeviation"></a>RowStandardDeviation</span></dt><dd><pre
class="synopsis">RowStandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">rowstdev</code></p><p>Spočítat standardní odchylku řádků matice a vrátit svislý
vektor.</p></dd><dt><span class="term"><a
name="gel-function-StandardDeviation"></a>StandardDeviation</span></dt><dd><pre
class="synopsis">StandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">stdev</code></p><p>Spočítat standardní odchylku celé matice.</p></dd></dl></div></div><div
class="navfooter"><hr><
table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s13.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s15.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Řešení rovnic </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Polynomy</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Statistika</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><link rel="home" href="index.html" title="Příručka k aplikaci Genius"><link rel="up"
href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev" href="ch11s13.html" title="Řešení
rovnic"><link rel="next" href="ch11s15.html" title="Polynomy"></head><body bgcolor="white" text="black"
link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation
header"><tr><th colspan="3" align="center">Statistika</th></tr><tr><td width="20%" align="left"><a
accesskey="p" href="ch11s13.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam
funkcí GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s15.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="title" s
tyle="clear: both"><a name="genius-gel-function-list-statistics"></a>Statistika</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-Average"></a>Average</span></dt><dd><pre class="synopsis">Average (m)</pre><p>Alternativní
názvy: <code class="function">average</code><code class="function">Mean</code><code
class="function">mean</code></p><p>Vypočítat průměr (aritmetickou střední hodnotu) z celé matice.</p><p>Více
informací najdete v encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/ArithmeticMean.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://en.wikipedia.org/wiki/Mean" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-GaussDistribution"></a>GaussDistribution</span></dt><dd><pre
class="synopsis">GaussDistribution (x,sigma)</pre><p>Integrál Gaussovy funkce od 0 do <code class="varna
me">x</code> (oblast pod normální křivkou).</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/NormalDistribution.html" target="_top">Mathworld</a> (text je v
angličtině) a <a class="ulink" href="https://cs.wikipedia.org/wiki/Norm%C3%A1ln%C3%AD_rozd%C4%9Blen%C3%AD"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-GaussFunction"></a>GaussFunction</span></dt><dd><pre class="synopsis">GaussFunction
(x,sigma)</pre><p>Normalizovaného Gaussova funkce rozdělení (normální křivka).</p><p>Více informací najdete v
encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/NormalDistribution.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Norm%C3%A1ln%C3%AD_rozd%C4%9Blen%C3%AD"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-Median"></a>Median</span></dt><dd><pre class="synopsis">Media
n (m)</pre><p>Alternativní názvy: <code class="function">median</code></p><p>Vypočítat medián z celé
matice.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/StatisticalMedian.html" target="_top">Mathworld</a> (text je v angličtině)
a <a class="ulink" href="https://cs.wikipedia.org/wiki/Medi%C3%A1n"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-PopulationStandardDeviation"></a>PopulationStandardDeviation</span></dt><dd><pre
class="synopsis">PopulationStandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">stdevp</code></p><p>Spočítat standardní odchylku souboru celé matice.</p></dd><dt><span
class="term"><a name="gel-function-RowAverage"></a>RowAverage</span></dt><dd><pre class="synopsis">RowAverage
(m)</pre><p>Alternativní názvy: <code class="function">RowMean</code></p><p>Vypočítat průměr každého řádku v
matici. Tj. vypočitat aritmetickou střed
ní hodnotu.</p><p>Více informací najdete v encyklopediích <a class="ulink"
href="http://mathworld.wolfram.com/ArithmeticMean.html" target="_top">Mathworld</a> (text je v angličtině) a
<a class="ulink" href="https://en.wikipedia.org/wiki/Mean" target="_top">Wikipedia</a> (text je v
angličtině).</p></dd><dt><span class="term"><a
name="gel-function-RowMedian"></a>RowMedian</span></dt><dd><pre class="synopsis">RowMedian
(m)</pre><p>Vypočítat medián každého řádku v matici a vrátit sloupcový vektor mediánů.</p><p>Více informací
najdete v encyklopediích <a class="ulink" href="http://mathworld.wolfram.com/StatisticalMedian.html"
target="_top">Mathworld</a> (text je v angličtině) a <a class="ulink"
href="https://cs.wikipedia.org/wiki/Medi%C3%A1n" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a
name="gel-function-RowPopulationStandardDeviation"></a>RowPopulationStandardDeviation</span></dt><dd><pre
class="synopsis">RowPopulationStandardDeviation
(m)</pre><p>Alternativní názvy: <code class="function">rowstdevp</code></p><p>Spočítat standardní odchylku
souboru řádků matice a vrátit svislý vektor.</p></dd><dt><span class="term"><a
name="gel-function-RowStandardDeviation"></a>RowStandardDeviation</span></dt><dd><pre
class="synopsis">RowStandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">rowstdev</code></p><p>Spočítat standardní odchylku řádků matice a vrátit svislý
vektor.</p></dd><dt><span class="term"><a
name="gel-function-StandardDeviation"></a>StandardDeviation</span></dt><dd><pre
class="synopsis">StandardDeviation (m)</pre><p>Alternativní názvy: <code
class="function">stdev</code></p><p>Spočítat standardní odchylku celé matice.</p></dd></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a
accesskey="p" href="ch11s13.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s15.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Řešení rovnic </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Polynomy</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s15.html b/help/cs/html/ch11s15.html
index 4f2364a..2753641 100644
--- a/help/cs/html/ch11s15.html
+++ b/help/cs/html/ch11s15.html
@@ -1,5 +1,2 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Polynomy</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s14.html" title="Statistika"><link rel="next" href="ch11s16.html" title="Teorie
množin"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div
class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Polynomy</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s14.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s16.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class="title" style
="clear: both"><a name="genius-gel-function-list-polynomials"></a>Polynomy</h2></div></div></div><div
class="variablelist"><dl class="variablelist"><dt><span class="term"><a
name="gel-function-AddPoly"></a>AddPoly</span></dt><dd><pre class="synopsis">AddPoly (p1,p2)</pre><p>Sečíst
dva polynomy (vektory).</p></dd><dt><span class="term"><a
name="gel-function-DividePoly"></a>DividePoly</span></dt><dd><pre class="synopsis">DividePoly
(p,q,&r)</pre><p>Podělit dva polynomy (jako vektory) pomocí dlouhého dělení. Vrátit rozdíl dvou polynomů.
Volitelný argument <code class="varname">r</code> se použije k vrácení zbytku. Zbytek bude mít nižší řád, než
polynom <code class="varname">q</code>.</p><p>Více informací najdete v encyklopedii <a class="ulink"
href="http://planetmath.org/PolynomialLongDivision" target="_top">Planetmath</a> (text je v
angličtině).</p></dd><dt><span class="term"><a name="gel-function-IsPoly"></a>IsPoly</span></dt><dd><pre
class="synop
sis">IsPoly (p)</pre><p>Zkontrolovat, zda je vektor použitelný jako polynom.</p></dd><dt><span
class="term"><a name="gel-function-MultiplyPoly"></a>MultiplyPoly</span></dt><dd><pre
class="synopsis">MultiplyPoly (p1,p2)</pre><p>Vynásobit dva polynomy (jako vektory).</p></dd><dt><span
class="term"><a name="gel-function-NewtonsMethodPoly"></a>NewtonsMethodPoly</span></dt><dd><pre
class="synopsis">NewtonsMethodPoly (poly,odhad,epsilon,maxn)</pre><p>Najde kořeny polynomu pomocí metody
tečen (Newtonovy metody). <code class="varname">poly</code> je polynom v podobě vektoru a <code
class="varname">odhad</code> je počáteční odhad. Funkce vrací výsledek po dvou úspěšných hodnotách, které
každá spadají do <code class="varname">epsilon</code> nebo po <code class="varname">maxn</code> pokusech, v
kterémžto případě vrací <code class="constant">null</code>, což značí selhání.</p><p>Viz také <a class="link"
href="ch11s13.html#gel-function-NewtonsMethod"><co
de class="function">NewtonsMethod</code></a>.</p><p>Příklad vyhledání druhé odmocniny z 10: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</code></strong>
-</pre><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/Newtons_method" target="_top">Wikipedia</a>
for more information.
- </p></dd><dt><span class="term"><a
name="gel-function-Poly2ndDerivative"></a>Poly2ndDerivative</span></dt><dd><pre
class="synopsis">Poly2ndDerivative (p)</pre><p>Vypočítat druhou derivaci polynomu (jako
vektoru).</p></dd><dt><span class="term"><a
name="gel-function-PolyDerivative"></a>PolyDerivative</span></dt><dd><pre class="synopsis">PolyDerivative
(p)</pre><p>Derivovat polynom (jako vektor).</p></dd><dt><span class="term"><a
name="gel-function-PolyToFunction"></a>PolyToFunction</span></dt><dd><pre class="synopsis">PolyToFunction
(p)</pre><p>Vytvořit funkci z polynomu (jako vektoru).</p></dd><dt><span class="term"><a
name="gel-function-PolyToString"></a>PolyToString</span></dt><dd><pre class="synopsis">PolyToString
(p,prom...)</pre><p>Vytvořit řetězec z polynomu (jako vektoru).</p></dd><dt><span class="term"><a
name="gel-function-SubtractPoly"></a>SubtractPoly</span></dt><dd><pre class="synopsis">SubtractPoly
(p1,p2)</pre><p>Odečíst dva polynomy (jako vektory).<
/p></dd><dt><span class="term"><a name="gel-function-TrimPoly"></a>TrimPoly</span></dt><dd><pre
class="synopsis">TrimPoly (p)</pre><p>Odstranit nuly z polynomu (jako vektoru).</p></dd></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a
accesskey="p" href="ch11s14.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s16.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Statistika </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Teorie množin</td></tr></table></div></body></html>
+</pre><p>Více informací najdete v encyklopedii <a class="ulink"
href="https://cs.wikipedia.org/wiki/Metoda_te%C4%8Den" target="_top">Wikipedia</a>.</p></dd><dt><span
class="term"><a name="gel-function-Poly2ndDerivative"></a>Poly2ndDerivative</span></dt><dd><pre
class="synopsis">Poly2ndDerivative (p)</pre><p>Vypočítat druhou derivaci polynomu (jako
vektoru).</p></dd><dt><span class="term"><a
name="gel-function-PolyDerivative"></a>PolyDerivative</span></dt><dd><pre class="synopsis">PolyDerivative
(p)</pre><p>Derivovat polynom (jako vektor).</p></dd><dt><span class="term"><a
name="gel-function-PolyToFunction"></a>PolyToFunction</span></dt><dd><pre class="synopsis">PolyToFunction
(p)</pre><p>Vytvořit funkci z polynomu (jako vektoru).</p></dd><dt><span class="term"><a
name="gel-function-PolyToString"></a>PolyToString</span></dt><dd><pre class="synopsis">PolyToString
(p,prom...)</pre><p>Vytvořit řetězec z polynomu (jako vektoru).</p></dd><dt><span class="term"><a name="gel
-function-SubtractPoly"></a>SubtractPoly</span></dt><dd><pre class="synopsis">SubtractPoly
(p1,p2)</pre><p>Odečíst dva polynomy (jako vektory).</p></dd><dt><span class="term"><a
name="gel-function-TrimPoly"></a>TrimPoly</span></dt><dd><pre class="synopsis">TrimPoly (p)</pre><p>Odstranit
nuly z polynomu (jako vektoru).</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%"
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p"
href="ch11s14.html">Předcházející</a> </td><td width="20%" align="center"><a accesskey="u"
href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a accesskey="n"
href="ch11s16.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top">Statistika </td><td
width="20%" align="center"><a accesskey="h" href="index.html">Domů</a></td><td width="40%" align="right"
valign="top"> Teorie množin</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s18.html b/help/cs/html/ch11s18.html
index 870c50b..f89605a 100644
--- a/help/cs/html/ch11s18.html
+++ b/help/cs/html/ch11s18.html
@@ -1,45 +1,13 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Různé</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s17.html" title="Komutativní algebra"><link rel="next" href="ch11s19.html" title="Symbolické
operace"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div
class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Různé</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s17.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s19.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class=
"title" style="clear: both"><a
name="genius-gel-function-list-miscellaneous"></a>Různé</h2></div></div></div><div class="variablelist"><dl
class="variablelist"><dt><span class="term"><a
name="gel-function-ASCIIToString"></a>ASCIIToString</span></dt><dd><pre class="synopsis">ASCIIToString
(vektor)</pre><p>Convert a vector of ASCII values to a string.
- See also
- <a class="link" href="ch11s18.html#gel-function-StringToASCII"><code
class="function">StringToASCII</code></a>.
- </p><p>
- Example:
- </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>ASCIIToString([97,98,99])</code></strong>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Různé</title><meta
name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Příručka
k aplikaci Genius"><link rel="up" href="ch11.html" title="Kapitola 11. Seznam funkcí GEL"><link rel="prev"
href="ch11s17.html" title="Komutativní algebra"><link rel="next" href="ch11s19.html" title="Symbolické
operace"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div
class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Různé</th></tr><tr><td width="20%" align="left"><a accesskey="p"
href="ch11s17.html">Předcházející</a> </td><th width="60%" align="center">Kapitola 11. Seznam funkcí
GEL</th><td width="20%" align="right"> <a accesskey="n"
href="ch11s19.html">Další</a></td></tr></table><hr></div><div class="sect1"><div
class="titlepage"><div><div><h2 class=
"title" style="clear: both"><a
name="genius-gel-function-list-miscellaneous"></a>Různé</h2></div></div></div><div class="variablelist"><dl
class="variablelist"><dt><span class="term"><a
name="gel-function-ASCIIToString"></a>ASCIIToString</span></dt><dd><pre class="synopsis">ASCIIToString
(vektor)</pre><p>Převést vektor hodnot ASCII na řetězec. Viz také <a class="link"
href="ch11s18.html#gel-function-StringToASCII"><code
class="function">StringToASCII</code></a>.</p><p>Příklad: </p><pre class="screen"><code
class="prompt">genius></code> <strong class="userinput"><code>ASCIIToString([97,98,99])</code></strong>
= "abc"
-</pre><p>
- </p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/ASCII" target="_top">Wikipedia</a> for more
information.
- </p></dd><dt><span class="term"><a
name="gel-function-AlphabetToString"></a>AlphabetToString</span></dt><dd><pre
class="synopsis">AlphabetToString (vektor,abeceda)</pre><p>Convert a vector of 0-based alphabet values
(positions in the alphabet string) to a string. A <code class="constant">null</code> vector results in an
empty string.
- See also
- <a class="link" href="ch11s18.html#gel-function-StringToAlphabet"><code
class="function">StringToAlphabet</code></a>.
- </p><p>
- Examples:
- </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>AlphabetToString([1,2,3,0,0],"abcd")</code></strong>
+</pre><p>Více informací najdete v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/ASCII"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-AlphabetToString"></a>AlphabetToString</span></dt><dd><pre
class="synopsis">AlphabetToString (vektor,abeceda)</pre><p>Převést vektor na hodnoty indexů písmen indexované
od 0 (nacházejících se v textovém řetězci) na řetězec. Vektor <code class="constant">null</code> vede na
prázdný řetězec. Viz také <a class="link" href="ch11s18.html#gel-function-StringToAlphabet"><code
class="function">StringToAlphabet</code></a>.</p><p>Příklady: </p><pre class="screen"><code
class="prompt">genius></code> <strong
class="userinput"><code>AlphabetToString([1,2,3,0,0],"abcd")</code></strong>
= "bcdaa"
<code class="prompt">genius></code> <strong
class="userinput"><code>AlphabetToString(null,"abcd")</code></strong>
= ""
-</pre><p>
- </p></dd><dt><span class="term"><a
name="gel-function-StringToASCII"></a>StringToASCII</span></dt><dd><pre class="synopsis">StringToASCII
(retezec)</pre><p>Convert a string to a (row) vector of ASCII values.
- See also
- <a class="link" href="ch11s18.html#gel-function-ASCIIToString"><code
class="function">ASCIIToString</code></a>.
- </p><p>
- Example:
- </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>StringToASCII("abc")</code></strong>
+</pre></dd><dt><span class="term"><a name="gel-function-StringToASCII"></a>StringToASCII</span></dt><dd><pre
class="synopsis">StringToASCII (retezec)</pre><p>Převést řetězec na (řádkový) vektor hodnot ASCII. Viz také
<a class="link" href="ch11s18.html#gel-function-ASCIIToString"><code
class="function">ASCIIToString</code></a>.</p><p>Příklad: </p><pre class="screen"><code
class="prompt">genius></code> <strong class="userinput"><code>StringToASCII("abc")</code></strong>
= [97, 98, 99]
-</pre><p>
- </p><p>
- See
- <a class="ulink" href="https://en.wikipedia.org/wiki/ASCII" target="_top">Wikipedia</a> for more
information.
- </p></dd><dt><span class="term"><a
name="gel-function-StringToAlphabet"></a>StringToAlphabet</span></dt><dd><pre
class="synopsis">StringToAlphabet (retezec,abeceda)</pre><p>Convert a string to a (row) vector of 0-based
alphabet values
- (positions in the alphabet string), -1's for unknown letters.
- An empty string results in a <code class="constant">null</code>.
- See also
- <a class="link" href="ch11s18.html#gel-function-AlphabetToString"><code
class="function">AlphabetToString</code></a>.
- </p><p>
- Examples:
- </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>StringToAlphabet("cca","abcd")</code></strong>
+</pre><p>Více informací najdete v encyklopedii <a class="ulink" href="https://cs.wikipedia.org/wiki/ASCII"
target="_top">Wikipedia</a>.</p></dd><dt><span class="term"><a
name="gel-function-StringToAlphabet"></a>StringToAlphabet</span></dt><dd><pre
class="synopsis">StringToAlphabet (retezec,abeceda)</pre><p>Převést řetězec na (řádkový) vektor na hodnoty
indexů písmen indexované od 0 (nacházejících se v textovém řetězci), případně -1 pro neznámá písmena. Prázdný
řetězec vede na <code class="constant">null</code>. Viz také <a class="link"
href="ch11s18.html#gel-function-AlphabetToString"><code
class="function">AlphabetToString</code></a>.</p><p>Příklady: </p><pre class="screen"><code
class="prompt">genius></code> <strong
class="userinput"><code>StringToAlphabet("cca","abcd")</code></strong>
= [2, 2, 0]
<code class="prompt">genius></code> <strong
class="userinput"><code>StringToAlphabet("ccag","abcd")</code></strong>
= [2, 2, 0, -1]
-</pre><p>
- </p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s17.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s19.html">Další</a></td></tr><tr><td width="40%" align="left"
valign="top">Komutativní algebra </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top"> Symbolické
operace</td></tr></table></div></body></html>
+</pre></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation
footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s17.html">Předcházející</a> </td><td
width="20%" align="center"><a accesskey="u" href="ch11.html">Nahoru</a></td><td width="40%" align="right"> <a
accesskey="n" href="ch11s19.html">Další</a></td></tr><tr><td width="40%" align="left"
valign="top">Komutativní algebra </td><td width="20%" align="center"><a accesskey="h"
href="index.html">Domů</a></td><td width="40%" align="right" valign="top"> Symbolické
operace</td></tr></table></div></body></html>
diff --git a/help/cs/html/ch11s20.html b/help/cs/html/ch11s20.html
index dc380ce..807ed7e 100644
--- a/help/cs/html/ch11s20.html
+++ b/help/cs/html/ch11s20.html
@@ -2,24 +2,18 @@
<code class="prompt">genius></code> <strong
class="userinput"><code>ExportPlot("/složka/soubor","eps")</code></strong>
</pre><p>Verze 1.0.16 a novější.</p></dd><dt><span class="term"><a
name="gel-function-LinePlot"></a>LinePlot</span></dt><dd><pre class="synopsis">LinePlot
(fce1,fce2,fce3,...)</pre><pre class="synopsis">LinePlot (fce1,fce2,fce3,x1,x2)</pre><pre
class="synopsis">LinePlot (fce1,fce2,fce3,x1,x2,y1,y2)</pre><pre class="synopsis">LinePlot
(fce1,fce2,fce3,[x1,x2])</pre><pre class="synopsis">LinePlot (fce1,fce2,fce3,[x1,x2,y1,y2])</pre><p>Vykreslí
funkci (nebo několik funkcí) v podobě čárového grafu. Prvních (až 10) argumentů jsou funkce, volitelně můžete
zadat meze vykreslovaného okna jako souřadnice <code class="varname">x1</code>, <code
class="varname">x2</code>, <code class="varname">y1</code>, <code class="varname">y2</code>. Pokud žádné meze
nejsou zadány, použijí se aktuálně nastavené meze (viz <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Pokud
nejsou zadány jen meze v ose y, fu
nkce se propočítají a vezme se jejich minimum a maximu.</p><p>Parametr <a class="link"
href="ch11s03.html#gel-function-LinePlotDrawLegends"><code class="function">LinePlotDrawLegends</code></a>
ovládá vykreslování legendy.</p><p>Příklady: </p><pre class="screen"><code class="prompt">genius></code>
<strong class="userinput"><code>LinePlot(sin,cos)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlot(`(x)=x^2,-1,1,0,1)</code></strong>
-</pre></dd><dt><span class="term"><a name="gel-function-LinePlotClear"></a>LinePlotClear</span></dt><dd><pre
class="synopsis">LinePlotClear ()</pre><p>Zobrazí okno pro vykreslování čar a vymaže funkce a ostatní čáry,
které jsou v něm vykresleny.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotCParametric"></a>LinePlotCParametric</span></dt><dd><pre
class="synopsis">LinePlotCParametric (fce,...)</pre><pre class="synopsis">LinePlotCParametric
(fce,t1,t2,tprirust)</pre><pre class="synopsis">LinePlotCParametric
(fce,t1,t2,tprirust,x1,x2,y1,y2)</pre><p>Vykreslit parametrickou funkci komplexní hodnoty v podobě čárového
grafu. Jako první se předává funkce, která vrací <code class="computeroutput">x+iy</code>, následovaná
volitelnými omezeními <strong class="userinput"><code>t1,t2,tprirust</code></strong> pro <code
class="varname">t</code> a pak mezemi v podobě <strong
class="userinput"><code>x1,x2,y1,y2</code></strong>.</p><p>Pokud žádné me
ze nejsou zadány, použijí se aktuálně nastavené meze (viz <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Místo mezí
x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.</p><p>Parametr <a
class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> ovládá vykreslování legendy.</p></dd><dt><span
class="term"><a name="gel-function-LinePlotDrawLine"></a>LinePlotDrawLine</span></dt><dd><pre
class="synopsis">LinePlotDrawLine (x1,y1,x2,y2,...)</pre><pre class="synopsis">LinePlotDrawLine
(v,...)</pre><p>Vykreslit čáru z <code class="varname">x1</code>,<code class="varname">y1</code> do <code
class="varname">x2</code>,<code class="varname">y2</code>. <code class="varname">x1</code>,<code
class="varname">y1</code>, <code class="varname">x2</code>,<code class="varname">y2</code> může být pro delší
lom
ené čáry nahrazeno maticí <code class="varname">n</code> krát 2. Připadně vektor <code
class="varname">v</code> může být sloupcový vektor komplexních čísel, což je matice <code
class="varname">n</code> krát 1 a jednotlivá komplexní čísla jsou pak považována za body v
rovině.</p><p>Mohou být přidány dodatečné parametry, které určují barvu, tloušťku a šipky čáry a vykreslení
okna nebo legendy. Stačí přidat argument v podobě řetězce <strong
class="userinput"><code>"color"</code></strong>, <strong class="userinput"><code>"thickness"</code></strong>,
<strong class="userinput"><code>"window"</code></strong>, <strong
class="userinput"><code>"arrow"</code></strong> nebo <strong class="userinput"><code>"legend"</code></strong>
a za ním určit barvu, tloušťku, okno jako 4prvkový vektor, typ šipky nebo legendu. (Šipka a okno jsou
podporovány od verze 1.0.6.)</p><p>Pokud je čára považovaná za vyplněný mnohoúhelník, vyplněný dan
ou barvou, můžete zadat argument <strong class="userinput"><code>"filled"</code></strong>. K dispozici od
verze 1.0.22.</p><p>Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou
rozpozná GTK, jako <strong class="userinput"><code>"red"</code></strong>, <strong
class="userinput"><code>"blue"</code></strong>, <strong class="userinput"><code>"yellow"</code></strong>,
apod. Nebo druhou možností je zadat barvu ve formátu RGB jako <strong
class="userinput"><code>"#rgb"</code></strong>, <strong class="userinput"><code>"#rrggbb"</code></strong>
nebo <strong class="userinput"><code>"#rrrrggggbbbb"</code></strong>, kde r, g a b jsou číslice šestnáctkové
soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je také určení
barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1, např.
<strong class="userinput"><code>[1.0,0.5,0.1]</cod
e></strong>.</p><p>Okno by mělo být zadáno buď obvyklým způsobem jako <strong
class="userinput"><code>[x1,x2,y1,y2]</code></strong> nebo alternativně může být použit řetězec <strong
class="userinput"><code>"fit"</code></strong>, v kterémž to případě bude rozsah x určen přesně a rozsah y
bude nastaven s pětiprocentním přesahem křivky.</p><p>Specifikace šipky by měla být <strong
class="userinput"><code>"origin"</code></strong> (počátek), <strong
class="userinput"><code>"end"</code></strong> (konec), <strong class="userinput"><code>"both"</code></strong>
(obojí) nebo <strong class="userinput"><code>"none"</code></strong> (nic).</p><p>A nakonec legenda, která by
měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda
tiskne.</p><p>
- Examples:
- </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</code></strong>
+</pre></dd><dt><span class="term"><a name="gel-function-LinePlotClear"></a>LinePlotClear</span></dt><dd><pre
class="synopsis">LinePlotClear ()</pre><p>Zobrazí okno pro vykreslování čar a vymaže funkce a ostatní čáry,
které jsou v něm vykresleny.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotCParametric"></a>LinePlotCParametric</span></dt><dd><pre
class="synopsis">LinePlotCParametric (fce,...)</pre><pre class="synopsis">LinePlotCParametric
(fce,t1,t2,tprirust)</pre><pre class="synopsis">LinePlotCParametric
(fce,t1,t2,tprirust,x1,x2,y1,y2)</pre><p>Vykreslit parametrickou funkci komplexní hodnoty v podobě čárového
grafu. Jako první se předává funkce, která vrací <code class="computeroutput">x+iy</code>, následovaná
volitelnými omezeními <strong class="userinput"><code>t1,t2,tprirust</code></strong> pro <code
class="varname">t</code> a pak mezemi v podobě <strong
class="userinput"><code>x1,x2,y1,y2</code></strong>.</p><p>Pokud žádné me
ze nejsou zadány, použijí se aktuálně nastavené meze (viz <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Místo mezí
x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.</p><p>Parametr <a
class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> ovládá vykreslování legendy.</p></dd><dt><span
class="term"><a name="gel-function-LinePlotDrawLine"></a>LinePlotDrawLine</span></dt><dd><pre
class="synopsis">LinePlotDrawLine (x1,y1,x2,y2,...)</pre><pre class="synopsis">LinePlotDrawLine
(v,...)</pre><p>Vykreslit čáru z <code class="varname">x1</code>,<code class="varname">y1</code> do <code
class="varname">x2</code>,<code class="varname">y2</code>. <code class="varname">x1</code>,<code
class="varname">y1</code>, <code class="varname">x2</code>,<code class="varname">y2</code> může být pro delší
lom
ené čáry nahrazeno maticí <code class="varname">n</code> krát 2. Připadně vektor <code
class="varname">v</code> může být sloupcový vektor komplexních čísel, což je matice <code
class="varname">n</code> krát 1 a jednotlivá komplexní čísla jsou pak považována za body v
rovině.</p><p>Mohou být přidány dodatečné parametry, které určují barvu, tloušťku a šipky čáry a vykreslení
okna nebo legendy. Stačí přidat argument v podobě řetězce <strong
class="userinput"><code>"color"</code></strong>, <strong class="userinput"><code>"thickness"</code></strong>,
<strong class="userinput"><code>"window"</code></strong>, <strong
class="userinput"><code>"arrow"</code></strong> nebo <strong class="userinput"><code>"legend"</code></strong>
a za ním určit barvu, tloušťku, okno jako 4prvkový vektor, typ šipky nebo legendu. (Šipka a okno jsou
podporovány od verze 1.0.6.)</p><p>Pokud je čára považovaná za vyplněný mnohoúhelník, vyplněný dan
ou barvou, můžete zadat argument <strong class="userinput"><code>"filled"</code></strong>. K dispozici od
verze 1.0.22.</p><p>Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou
rozpozná GTK, jako <strong class="userinput"><code>"red"</code></strong>, <strong
class="userinput"><code>"blue"</code></strong>, <strong class="userinput"><code>"yellow"</code></strong>,
apod. Nebo druhou možností je zadat barvu ve formátu RGB jako <strong
class="userinput"><code>"#rgb"</code></strong>, <strong class="userinput"><code>"#rrggbb"</code></strong>
nebo <strong class="userinput"><code>"#rrrrggggbbbb"</code></strong>, kde r, g a b jsou číslice šestnáctkové
soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je také určení
barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1, např.
<strong class="userinput"><code>[1.0,0.5,0.1]</cod
e></strong>.</p><p>Okno by mělo být zadáno buď obvyklým způsobem jako <strong
class="userinput"><code>[x1,x2,y1,y2]</code></strong> nebo alternativně může být použit řetězec <strong
class="userinput"><code>"fit"</code></strong>, v kterémž to případě bude rozsah x určen přesně a rozsah y
bude nastaven s pětiprocentním přesahem křivky.</p><p>Specifikace šipky by měla být <strong
class="userinput"><code>"origin"</code></strong> (počátek), <strong
class="userinput"><code>"end"</code></strong> (konec), <strong class="userinput"><code>"both"</code></strong>
(obojí) nebo <strong class="userinput"><code>"none"</code></strong> (nic).</p><p>A nakonec legenda, která by
měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda
tiskne.</p><p>Příklady: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(0,0,1,1,"color","blue","thickne
ss",3)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine([0,0;1,-1;-1,-1])</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine([0,0;1,1],"arrow","end")</code></strong>
-<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</code></strong>
+<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Řešení")</code></strong>
<code class="prompt">genius></code> <strong class="userinput"><code>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</code></strong>
-</pre><p>
- </p><p>Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli je předán sloupcový nebo
řádkový vektor, při zadávání bodů v podobě vektoru komplexních čísel je kvůli možným nejednoznačnostem nutné
vždy zadat sloupcový vektor.</p><p>Zadávání <code class="varname">v</code> jako sloupcového vektoru
komplexních čísel je implementováno od verze 1.0.22.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotDrawPoints"></a>LinePlotDrawPoints</span></dt><dd><pre
class="synopsis">LinePlotDrawPoints (x,y,...)</pre><pre class="synopsis">LinePlotDrawPoints
(v,...)</pre><p>Vykreslit bod v <code class="varname">x</code>, <code class="varname">y</code>. Vstupem může
být matice <code class="varname">n</code> krát 2 pro <code class="varname">n</code> různých bodů. Tato funkce
má v podstatě stejné vstupní údaje jako <a class="link"
href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a>. Případně vekt
or <code class="varname">v</code> může být sloupcový vektor komplexních čísel, což je matice <code
class="varname">n</code> krát 1 a jednotlivá komplexní čísla jsou považována za body v rovině.</p><p>Mohou
být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí
přidat argument v podobě řetězce <strong class="userinput"><code>"color"</code></strong>, <strong
class="userinput"><code>"thickness"</code></strong>, <strong class="userinput"><code>"window"</code></strong>
nebo <strong class="userinput"><code>"legend"</code></strong> a za ním určit barvu, tloušťku, okno jako
4prvkový vektor nebo legendu.</p><p>Barva by měla být buď řetězec symbolizující běžným anglickým slovem
barvu, kterou rozpozná GTK, jako <strong class="userinput"><code>"red"</code></strong>, <strong
class="userinput"><code>"blue"</code></strong>, <strong class="userinput"><code>"yellow"</code></strong>,
apod. N
ebo druhou možností je zadat barvu ve formátu RGB jako <strong
class="userinput"><code>"#rgb"</code></strong>, <strong class="userinput"><code>"#rrggbb"</code></strong>
nebo <strong class="userinput"><code>"#rrrrggggbbbb"</code></strong>, kde r, g a b jsou číslice šestnáctkové
soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy vektorem
reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.</p><p>Okno by mělo být
zadáno buď obvyklým způsobem jako <strong class="userinput"><code>[x1,x2,y1,y2]</code></strong> nebo
alternativně může být použit řetězec <strong class="userinput"><code>"fit"</code></strong>, v kterémž to
případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.</p><p>A nakonec
legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě,
že
se legenda tiskne.</p><p>
- Examples:
- </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</code></strong>
+</pre><p>Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli je předán sloupcový nebo řádkový
vektor, při zadávání bodů v podobě vektoru komplexních čísel je kvůli možným nejednoznačnostem nutné vždy
zadat sloupcový vektor.</p><p>Zadávání <code class="varname">v</code> jako sloupcového vektoru komplexních
čísel je implementováno od verze 1.0.22.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotDrawPoints"></a>LinePlotDrawPoints</span></dt><dd><pre
class="synopsis">LinePlotDrawPoints (x,y,...)</pre><pre class="synopsis">LinePlotDrawPoints
(v,...)</pre><p>Vykreslit bod v <code class="varname">x</code>, <code class="varname">y</code>. Vstupem může
být matice <code class="varname">n</code> krát 2 pro <code class="varname">n</code> různých bodů. Tato funkce
má v podstatě stejné vstupní údaje jako <a class="link"
href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a>. Případně vektor <code
class="varname">v</code> může být sloupcový vektor komplexních čísel, což je matice <code
class="varname">n</code> krát 1 a jednotlivá komplexní čísla jsou považována za body v rovině.</p><p>Mohou
být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí
přidat argument v podobě řetězce <strong class="userinput"><code>"color"</code></strong>, <strong
class="userinput"><code>"thickness"</code></strong>, <strong class="userinput"><code>"window"</code></strong>
nebo <strong class="userinput"><code>"legend"</code></strong> a za ním určit barvu, tloušťku, okno jako
4prvkový vektor nebo legendu.</p><p>Barva by měla být buď řetězec symbolizující běžným anglickým slovem
barvu, kterou rozpozná GTK, jako <strong class="userinput"><code>"red"</code></strong>, <strong
class="userinput"><code>"blue"</code></strong>, <strong class="userinput"><code>"yellow"</code></strong>,
apod. Nebo druh
ou možností je zadat barvu ve formátu RGB jako <strong class="userinput"><code>"#rgb"</code></strong>,
<strong class="userinput"><code>"#rrggbb"</code></strong> nebo <strong
class="userinput"><code>"#rrrrggggbbbb"</code></strong>, kde r, g a b jsou číslice šestnáctkové soustavy
červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy vektorem reálných čísel,
která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.</p><p>Okno by mělo být zadáno buď
obvyklým způsobem jako <strong class="userinput"><code>[x1,x2,y1,y2]</code></strong> nebo alternativně může
být použit řetězec <strong class="userinput"><code>"fit"</code></strong>, v kterémž to případě bude rozsah x
určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.</p><p>A nakonec legenda, která by
měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se lege
nda tiskne.</p><p>Examples: </p><pre class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints([0,0;1,-1;-1,-1])</code></strong>
-<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</code></strong>
+<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Řešení")</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</code></strong>
-<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The
7th roots of unity")</code></strong>
-</pre><p>
- </p><p>Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli jim předáte sloupcový
nebo řádkový vektor, může u předávání bodu v podobě vektoru komplexních čísel docházet k nejednoznačnostem.
Proto musíte vždy předat sloupcový vektor. Všimněte si v posledním příkladu transpozice vektoru <strong
class="userinput"><code>0:6</code></strong>, aby se z něj stal sloupcový vektor.</p><p>Dostupné od verze
1.0.18. Zadávání <code class="varname">v</code> v podobě sloupcového vektoru komplexních čísel je
implementováno od verze 1.0.22.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotMouseLocation"></a>LinePlotMouseLocation</span></dt><dd><pre
class="synopsis">LinePlotMouseLocation ()</pre><p>Vrátit řádkový vektor v kreslení odpovídající aktuální
pozici myši. Pokud kreslení není viditelné, vypíše se chyba a vrátí <code class="constant">null</code>. V
takovém případě byste měli spustit <
a class="link" href="ch11s20.html#gel-function-LinePlot"><code class="function">LinePlot</code></a> nebo <a
class="link" href="ch11s20.html#gel-function-LinePlotClear"><code class="function">LinePlotClear</code></a>,
abyste přepnuli okno s grafem do režimu kreslení. Viz také <a class="link"
href="ch11s20.html#gel-function-LinePlotWaitForClick"><code
class="function">LinePlotWaitForClick</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotParametric"></a>LinePlotParametric</span></dt><dd><pre
class="synopsis">LinePlotParametric (xfce,yfce,...)</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust)</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust,x1,x2,y1,y2)</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust,[x1,x2,y1,y2])</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust, "fit")</pre><p>Vykreslit parametrickou funkci v podobě čárového grafu. Jako první
se zadáva
jí funkce pro <code class="varname">x</code> a <code class="varname">y</code>, následované volitelnými
omezeními <strong class="userinput"><code>t1,t2,tprirust</code></strong> pro <code class="varname">t</code> a
pak mezemi v podobě <strong class="userinput"><code>x1,x2,y1,y2</code></strong>.</p><p>Pokud žádné meze
nejsou zadány, použijí se aktuálně nastavené meze (viz <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Místo mezí
x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.</p><p>Parametr <a
class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> ovládá vykreslování legendy.</p></dd><dt><span
class="term"><a name="gel-function-LinePlotWaitForClick"></a>LinePlotWaitForClick</span></dt><dd><pre
class="synopsis">LinePlotWaitForClick ()</pre><p>Pokud je v režimu kreslení, čeká na
kliknutí v kreslícím okně a následně vrátí pozici kliknutí v podobě řádkového vektoru. Pokud je okno
zavřené, vrátí se funkce okamžitě s hodnotou <code class="constant">null</code>. Pokud okno není v režimu
kreslení, přepne jej do něj a, pokud není zobrazené, zobrazí jej. Viz také <a class="link"
href="ch11s20.html#gel-function-LinePlotMouseLocation"><code
class="function">LinePlotMouseLocation</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasFreeze"></a>PlotCanvasFreeze</span></dt><dd><pre
class="synopsis">PlotCanvasFreeze ()</pre><p>Dočasně zmrazí vykreslování grafu na plátno. To se hodí, když
kreslíte spoustu prvků a chcete to pozdržet, aby se fyzicky vykreslilo až všechno naráz a předešlo se tím
blikání. Až máte veškeré kreslení hotovo, měli byste zavolat funkci <a class="link"
href="ch11s20.html#gel-function-PlotCanvasThaw"><code class="function">PlotCanvasThaw</code></a>.</p><p>Na
konci jak
éhokoliv provádění je plátno automaticky rozmrazeno, takže by se nemělo stát, že zůstane zmrazené.
Kupříkladu ve chvíli, kdy se zobrazí nový příkazový řádek, dojde k automatickému rozmrazení. Také si
všimněte, že volání zmrazení a rozmrazení mohou být zanořená.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span
class="term"><a name="gel-function-PlotCanvasThaw"></a>PlotCanvasThaw</span></dt><dd><pre
class="synopsis">PlotCanvasThaw ()</pre><p>Rozmrazí plátno pro vykreslování grafu zmrazené pomocí <a
class="link" href="ch11s20.html#gel-function-PlotCanvasFreeze"><code
class="function">PlotCanvasFreeze</code></a> a ihned jej překreslí. Platno je také rozmrazeno vždy po
skončení provádění libovolného programu.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-PlotWindowPresent"></a>PlotWindowPresent</span></dt><dd><pre
class="synopsis">PlotWindowPresent ()</pre><p>Zobrazí a přenese do popřed
í vykreslovací okno, případně jej vytvoří, pokud je třeba. Normálně je okno vytvořeno, když je zavolána
některá z kreslících funkcí, ale nemusí být vždy přeneseno do popředí, když je schováno za jinými okny. Proto
je dobré volat tento kript, když bylo vykreslovací okno vytvořeno již dříve a nyní je schováno za konzolí
nebo jinými okny.</p><p>Verze 1.0.19 a novější.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldClearSolutions"></a>SlopefieldClearSolutions</span></dt><dd><pre
class="synopsis">SlopefieldClearSolutions ()</pre><p>Vymazat řešení vykreslená funkcí <a class="link"
href="ch11s20.html#gel-function-SlopefieldDrawSolution"><code
class="function">SlopefieldDrawSolution</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldDrawSolution"></a>SlopefieldDrawSolution</span></dt><dd><pre
class="synopsis">SlopefieldDrawSolution (x, y, dx)</pre><p>Když je aktivní vykreslování směrového pol
e, vykreslí řešení se zadanou počáteční podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem
<code class="varname">dx</code>. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána
funkce <a class="link" href="ch11s20.html#gel-function-SlopefieldClearSolutions"><code
class="function">SlopefieldClearSolutions</code></a>. Pro vykreslení řešení můžete použít i grafické rozhraní
a počáteční podmínky zadat pomocí myši.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldPlot"></a>SlopefieldPlot</span></dt><dd><pre class="synopsis">SlopefieldPlot
(fce)</pre><pre class="synopsis">SlopefieldPlot (fce,x1,x2,y1,y2)</pre><p>Vykreslit směrové pole. Funkce
<code class="varname">fce</code> by měla přebírat dvě reálná čísla <code class="varname">x</code> a <code
class="varname">y</code> nebo jedno komplexní číslo. Volitelně můžete zadat meze vykreslovacího okna jako
souřadnice <code class
="varname">x1</code>, <code class="varname">x2</code>, <code class="varname">y1</code>, <code
class="varname">y2</code>. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavení mezí (viz <a
class="link" href="ch11s03.html#gel-function-LinePlotWindow"><code
class="function">LinePlotWindow</code></a>).</p><p>Parametr <a class="link"
href="ch11s03.html#gel-function-LinePlotDrawLegends"><code class="function">LinePlotDrawLegends</code></a>
ovládá vykreslování legendy.</p><p>Příklady: </p><pre class="screen"><code class="prompt">genius></code>
<strong class="userinput"><code>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</code></strong>
+<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","Sedmá
odmocnina z jednotky")</code></strong>
+</pre><p>Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli jim předáte sloupcový nebo
řádkový vektor, může u předávání bodu v podobě vektoru komplexních čísel docházet k nejednoznačnostem. Proto
musíte vždy předat sloupcový vektor. Všimněte si v posledním příkladu transpozice vektoru <strong
class="userinput"><code>0:6</code></strong>, aby se z něj stal sloupcový vektor.</p><p>Dostupné od verze
1.0.18. Zadávání <code class="varname">v</code> v podobě sloupcového vektoru komplexních čísel je
implementováno od verze 1.0.22.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotMouseLocation"></a>LinePlotMouseLocation</span></dt><dd><pre
class="synopsis">LinePlotMouseLocation ()</pre><p>Vrátit řádkový vektor v kreslení odpovídající aktuální
pozici myši. Pokud kreslení není viditelné, vypíše se chyba a vrátí <code class="constant">null</code>. V
takovém případě byste měli spustit <a class=
"link" href="ch11s20.html#gel-function-LinePlot"><code class="function">LinePlot</code></a> nebo <a
class="link" href="ch11s20.html#gel-function-LinePlotClear"><code class="function">LinePlotClear</code></a>,
abyste přepnuli okno s grafem do režimu kreslení. Viz také <a class="link"
href="ch11s20.html#gel-function-LinePlotWaitForClick"><code
class="function">LinePlotWaitForClick</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotParametric"></a>LinePlotParametric</span></dt><dd><pre
class="synopsis">LinePlotParametric (xfce,yfce,...)</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust)</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust,x1,x2,y1,y2)</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust,[x1,x2,y1,y2])</pre><pre class="synopsis">LinePlotParametric
(xfce,yfce,t1,t2,tprirust, "fit")</pre><p>Vykreslit parametrickou funkci v podobě čárového grafu. Jako první
se zadávají funk
ce pro <code class="varname">x</code> a <code class="varname">y</code>, následované volitelnými omezeními
<strong class="userinput"><code>t1,t2,tprirust</code></strong> pro <code class="varname">t</code> a pak
mezemi v podobě <strong class="userinput"><code>x1,x2,y1,y2</code></strong>.</p><p>Pokud žádné meze nejsou
zadány, použijí se aktuálně nastavené meze (viz <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Místo mezí
x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.</p><p>Parametr <a
class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> ovládá vykreslování legendy.</p></dd><dt><span
class="term"><a name="gel-function-LinePlotWaitForClick"></a>LinePlotWaitForClick</span></dt><dd><pre
class="synopsis">LinePlotWaitForClick ()</pre><p>Pokud je v režimu kreslení, čeká na kliknut
í v kreslícím okně a následně vrátí pozici kliknutí v podobě řádkového vektoru. Pokud je okno zavřené, vrátí
se funkce okamžitě s hodnotou <code class="constant">null</code>. Pokud okno není v režimu kreslení, přepne
jej do něj a, pokud není zobrazené, zobrazí jej. Viz také <a class="link"
href="ch11s20.html#gel-function-LinePlotMouseLocation"><code
class="function">LinePlotMouseLocation</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasFreeze"></a>PlotCanvasFreeze</span></dt><dd><pre
class="synopsis">PlotCanvasFreeze ()</pre><p>Dočasně zmrazí vykreslování grafu na plátno. To se hodí, když
kreslíte spoustu prvků a chcete to pozdržet, aby se fyzicky vykreslilo až všechno naráz a předešlo se tím
blikání. Až máte veškeré kreslení hotovo, měli byste zavolat funkci <a class="link"
href="ch11s20.html#gel-function-PlotCanvasThaw"><code class="function">PlotCanvasThaw</code></a>.</p><p>Na
konci jakéhokoli
v provádění je plátno automaticky rozmrazeno, takže by se nemělo stát, že zůstane zmrazené. Kupříkladu ve
chvíli, kdy se zobrazí nový příkazový řádek, dojde k automatickému rozmrazení. Také si všimněte, že volání
zmrazení a rozmrazení mohou být zanořená.</p><p>Verze 1.0.18 a novější.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasThaw"></a>PlotCanvasThaw</span></dt><dd><pre class="synopsis">PlotCanvasThaw
()</pre><p>Rozmrazí plátno pro vykreslování grafu zmrazené pomocí <a class="link"
href="ch11s20.html#gel-function-PlotCanvasFreeze"><code class="function">PlotCanvasFreeze</code></a> a ihned
jej překreslí. Platno je také rozmrazeno vždy po skončení provádění libovolného programu.</p><p>Verze 1.0.18
a novější.</p></dd><dt><span class="term"><a
name="gel-function-PlotWindowPresent"></a>PlotWindowPresent</span></dt><dd><pre
class="synopsis">PlotWindowPresent ()</pre><p>Zobrazí a přenese do popředí vykre
slovací okno, případně jej vytvoří, pokud je třeba. Normálně je okno vytvořeno, když je zavolána některá z
kreslících funkcí, ale nemusí být vždy přeneseno do popředí, když je schováno za jinými okny. Proto je dobré
volat tento kript, když bylo vykreslovací okno vytvořeno již dříve a nyní je schováno za konzolí nebo jinými
okny.</p><p>Verze 1.0.19 a novější.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldClearSolutions"></a>SlopefieldClearSolutions</span></dt><dd><pre
class="synopsis">SlopefieldClearSolutions ()</pre><p>Vymazat řešení vykreslená funkcí <a class="link"
href="ch11s20.html#gel-function-SlopefieldDrawSolution"><code
class="function">SlopefieldDrawSolution</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldDrawSolution"></a>SlopefieldDrawSolution</span></dt><dd><pre
class="synopsis">SlopefieldDrawSolution (x, y, dx)</pre><p>Když je aktivní vykreslování směrového pole, vykre
slí řešení se zadanou počáteční podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem <code
class="varname">dx</code>. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána funkce
<a class="link" href="ch11s20.html#gel-function-SlopefieldClearSolutions"><code
class="function">SlopefieldClearSolutions</code></a>. Pro vykreslení řešení můžete použít i grafické rozhraní
a počáteční podmínky zadat pomocí myši.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldPlot"></a>SlopefieldPlot</span></dt><dd><pre class="synopsis">SlopefieldPlot
(fce)</pre><pre class="synopsis">SlopefieldPlot (fce,x1,x2,y1,y2)</pre><p>Vykreslit směrové pole. Funkce
<code class="varname">fce</code> by měla přebírat dvě reálná čísla <code class="varname">x</code> a <code
class="varname">y</code> nebo jedno komplexní číslo. Volitelně můžete zadat meze vykreslovacího okna jako
souřadnice <code class="varnam
e">x1</code>, <code class="varname">x2</code>, <code class="varname">y1</code>, <code
class="varname">y2</code>. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavení mezí (viz <a
class="link" href="ch11s03.html#gel-function-LinePlotWindow"><code
class="function">LinePlotWindow</code></a>).</p><p>Parametr <a class="link"
href="ch11s03.html#gel-function-LinePlotDrawLegends"><code class="function">LinePlotDrawLegends</code></a>
ovládá vykreslování legendy.</p><p>Příklady: </p><pre class="screen"><code class="prompt">genius></code>
<strong class="userinput"><code>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</code></strong>
</pre></dd><dt><span class="term"><a name="gel-function-SurfacePlot"></a>SurfacePlot</span></dt><dd><pre
class="synopsis">SurfacePlot (fce)</pre><pre class="synopsis">SurfacePlot (fce,x1,x2,y1,y2,z1,z2)</pre><pre
class="synopsis">SurfacePlot (fce,x1,x2,y1,y2)</pre><pre class="synopsis">SurfacePlot
(fce,[x1,x2,y1,y2,z1,z2])</pre><pre class="synopsis">SurfacePlot (fce,[x1,x2,y1,y2])</pre><p>Vykreslit funkci
plochy, která přebírá buď dva argumenty nebo komplexní číslo. Jako první se předává funkce, pak následují
meze <code class="varname">x1</code>, <code class="varname">x2</code>, <code class="varname">y1</code>, <code
class="varname">y2</code>, <code class="varname">z1</code>, <code class="varname">z2</code>. Pokud žádné meze
nejsou zadány, použijí se aktuálně nastavené meze (viz <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">SurfacePlotWindow</code></a>). V
současnosti umí Genius vykreslovat jen funkci jedné p
lochy.</p><p>Když nejsou meze zadány, použije se pro ně minimum a maximum funkce.</p><p>Příklady: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</code></strong>
diff --git a/help/cs/html/index.html b/help/cs/html/index.html
index 83c844e..f3b4f05 100644
--- a/help/cs/html/index.html
+++ b/help/cs/html/index.html
@@ -1,3 +1,3 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Příručka k aplikaci
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Příručka k matematickému nástroji Genius."><link rel="home" href="index.html" title="Příručka k
aplikaci Genius"><link rel="next" href="ch01.html" title="Kapitola 1. Úvod"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Příručka k aplikaci Genius</th></tr><tr><td
width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a
accesskey="n" href="ch01.html">Další</a></td></tr></table><hr></div><div lang="cs" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Příručka k aplikaci
Genius</h1></div><div><div class="authorgroup">
<div class="author"><h3 class="author"><span class="firstname">Jiří</span> <span
class="surname">Lebl</span></h3><div class="affiliation"><span class="orgname">Státní oklahamská
univerzita<br></span><div class="address"><p> <code class="email"><<a class="email" href="mailto:jirka 5z
com">jirka 5z com</a>></code> </p></div></div></div><div class="author"><h3 class="author"><span
class="firstname">Kai</span> <span class="surname">Willadsen</span></h3><div class="affiliation"><span
class="orgname">Univerzita Queensland, Austrálie<br></span><div class="address"><p> <code
class="email"><<a class="email" href="mailto:kaiw itee uq edu au">kaiw itee uq edu au</a>></code>
</p></div></div></div></div></div><div><p class="releaseinfo">Tato příručka popisuje aplikaci Genius ve verzi
1.0.22.</p></div><div><p class="copyright">Copyright © 1997 – 2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><div c
lass="legalnotice"><a name="legalnotice"></a><p>Je povoleno kopírovat, šířit a/nebo upravovat tento dokument
za podmínek GNU Free Documentation License (GFDL) ve verzi 1.1 nebo v jakékoli další verzi vydané nadací Free
Software Foundation; bez neměnných oddílů, bez textů předních desek a bez textů zadních desek. Kopii licence
GFDL naleznete pod <a class="ulink" href="ghelp:fdl" target="_top">tímto odkazem</a> nebo v souboru
COPYING-DOCS dodávaném s touto příručkou.</p><p>Tato příručka je součástí sbírky příruček GNOME šířených za
podmínek licence GFDL. Pokud chcete tento dokument šířit odděleně od sbírky, musíte přiložit kopii licence
dle popisu v oddílu 6 dané licence.</p><p>Mnoho názvů použitých firmami k zviditelnění produktů nebo služeb
jsou ochranné známky. Na místech, kde jsou tyto názvy v dokumentaci použity a členové Dokumentačního projektu
GNOME jsou si vědomi skutečnosti, že se jedná o ochranno
u známku, je takovýto název psán velkými písmeny celý nebo s velkým písmenem na začátku.</p><p>DOKUMENT A
JEHO UPRAVENÉ VERZE JSOU ŠÍŘENY V SOULADU SE ZNĚNÍM LICENCE GNU FREE DOCUMENTATION LICENSE S NÁSLEDUJÍCÍM
USTANOVENÍM: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>DOKUMENT
JE POSKYTOVÁN V PODOBĚ „JAK JE“, BEZ ZÁRUKY JAKÉHOKOLIV DRUHU, NEPOSKYTUJÍ SE ANI ODVOZENÉ ZÁRUKY, ZÁRUKY, ŽE
DOKUMENT, NEBO JEHO UPRAVENÁ VERZE, JE BEZCHYBNÝ, NEBO ZÁRUKY PRODEJNOSTI, VHODNOSTI PRO URČITÝ ÚČEL, NEBO
NEPORUŠENOSTI. RIZIKO NEKVALITY, NEPŘESNOSTI A ŠPATNÉHO PROVEDENÍ DOKUMENTU, NEBO JEHO UPRAVENÉ VERZE, NESETE
VY. POKUD JE TENTO DOKUMENT NEBO JEHO UPRAVENÁ VERZE VADNÁ V JAKÉMKOLIV SMYSLU, VY (NIKOLIV PŮVODCE, AUTOR
NEBO JAKÝKOLIV PŘISPĚVATEL) PŘEBÍRÁTE ODPOVĚDNOST ZA JAKÉKOLIV NÁKLADY NA NUTNÉ ÚPRAVY, OPRAVY ČI SLUŽBY.
TOTO PROHLÁŠENÍ O ZÁRUCE PŘEDSTAVUJE ZÁKLADNÍ SOUČÁST T�
�TO LICENCE. BEZ TOHOTO PROHLÁŠENÍ NENÍ PODLE TÉTO DOHODY POVOLENO UŽÍVÁNÍ ANI ÚPRAVY TOHOTO DOKUMENTU;
DÁLE</p></li><li class="listitem"><p>ZA ŽÁDNÝCH OKOLNOSTÍ A ŽÁDNÝCH PRÁVNÍCH PŘEDPOKLADŮ, AŤ SE JEDNÁ O
PŘEČIN (VČETNĚ NEDBALOSTNÍCH), SMLOUVU NEBO JINÉ, NENÍ AUTOR, PŮVODNÍ PISATEL, KTERÝKOLIV PŘISPĚVATEL NEBO
KTERÝKOLIV DISTRIBUTOR TOHOTO DOKUMENTU NEBO UPRAVENÉ VERZE DOKUMENTU NEBO KTERÝKOLIV DODAVATEL NĚKTERÉ Z
TĚCHTO STRAN ODPOVĚDNÝ NĚJAKÉ OSOBĚ ZA PŘÍMÉ, NEPŘÍMÉ, SPECIÁLNÍ, NAHODILÉ NEBO NÁSLEDNÉ ŠKODY JAKÉHOKOLIV
CHARAKTERU, VČETNĚ, ALE NEJEN, ZA POŠKOZENÍ ZE ZTRÁTY DOBRÉHO JMÉNA, PŘERUŠENÍ PRÁCE, PORUCHY NEBO NESPRÁVNÉ
FUNKCE POČÍTAČE NEBO JINÉHO A VŠECH DALŠÍCH ŠKOD NEBO ZTRÁT VYVSTÁVAJÍCÍCH Z NEBO VZTAHUJÍCÍCH SE K POUŽÍVÁNÍ
TOHOTO DOKUMENTU NEBO UPRAVENÝCH VERZÍ DOKUMENTU, I KDYŽ BY TAKOVÁTO STRANA BYLA INFORMOVANÁ O MOŽNOSTI
TAKOVÉHOTO POŠKOZENÍ.</p></li></ol></d
iv></div></div><div><div class="legalnotice"><a name="idm46019829823952"></a><p
class="legalnotice-title"><b>Ohlasy</b></p><p>Pokud chcete oznámit chybu nebo navrhnout vylepšení vztahující
se k aplikaci <span class="application">matematický nástroj Genius</span> nebo této příručce, navštivte
prosím <a class="ulink" href="http://www.jirka.org/genius.html" target="_top">webovou stránku aplikace
Genius</a> nebo napište autorovi na e-mail <code class="email"><<a class="email" href="mailto:jirka 5z
com">jirka 5z com</a>></code>.</p></div></div><div><div class="revhistory"><table
style="border-style:solid; width:100%;" summary="Přehled revizí"><tr><th align="left" valign="top"
colspan="2"><b>Přehled revizí</b></th></tr><tr><td align="left">Revize 0.2</td><td align="left">Září
2016</td></tr><tr><td align="left" colspan="2">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Příručka k aplikaci
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Příručka k matematickému nástroji Genius."><link rel="home" href="index.html" title="Příručka k
aplikaci Genius"><link rel="next" href="ch01.html" title="Kapitola 1. Úvod"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Příručka k aplikaci Genius</th></tr><tr><td
width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a
accesskey="n" href="ch01.html">Další</a></td></tr></table><hr></div><div lang="cs" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Příručka k aplikaci
Genius</h1></div><div><div class="authorgroup">
<div class="author"><h3 class="author"><span class="firstname">Jiří</span> <span
class="surname">Lebl</span></h3><div class="affiliation"><span class="orgname">Státní oklahamská
univerzita<br></span><div class="address"><p> <code class="email"><<a class="email" href="mailto:jirka 5z
com">jirka 5z com</a>></code> </p></div></div></div><div class="author"><h3 class="author"><span
class="firstname">Kai</span> <span class="surname">Willadsen</span></h3><div class="affiliation"><span
class="orgname">Univerzita Queensland, Austrálie<br></span><div class="address"><p> <code
class="email"><<a class="email" href="mailto:kaiw itee uq edu au">kaiw itee uq edu au</a>></code>
</p></div></div></div></div></div><div><p class="releaseinfo">Tato příručka popisuje aplikaci Genius ve verzi
1.0.22.</p></div><div><p class="copyright">Copyright © 1997 – 2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><div c
lass="legalnotice"><a name="legalnotice"></a><p>Je povoleno kopírovat, šířit a/nebo upravovat tento dokument
za podmínek GNU Free Documentation License (GFDL) ve verzi 1.1 nebo v jakékoli další verzi vydané nadací Free
Software Foundation; bez neměnných oddílů, bez textů předních desek a bez textů zadních desek. Kopii licence
GFDL naleznete pod <a class="ulink" href="ghelp:fdl" target="_top">tímto odkazem</a> nebo v souboru
COPYING-DOCS dodávaném s touto příručkou.</p><p>Tato příručka je součástí sbírky příruček GNOME šířených za
podmínek licence GFDL. Pokud chcete tento dokument šířit odděleně od sbírky, musíte přiložit kopii licence
dle popisu v oddílu 6 dané licence.</p><p>Mnoho názvů použitých firmami k zviditelnění produktů nebo služeb
jsou ochranné známky. Na místech, kde jsou tyto názvy v dokumentaci použity a členové Dokumentačního projektu
GNOME jsou si vědomi skutečnosti, že se jedná o ochranno
u známku, je takovýto název psán velkými písmeny celý nebo s velkým písmenem na začátku.</p><p>DOKUMENT A
JEHO UPRAVENÉ VERZE JSOU ŠÍŘENY V SOULADU SE ZNĚNÍM LICENCE GNU FREE DOCUMENTATION LICENSE S NÁSLEDUJÍCÍM
USTANOVENÍM: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>DOKUMENT
JE POSKYTOVÁN V PODOBĚ „JAK JE“, BEZ ZÁRUKY JAKÉHOKOLIV DRUHU, NEPOSKYTUJÍ SE ANI ODVOZENÉ ZÁRUKY, ZÁRUKY, ŽE
DOKUMENT, NEBO JEHO UPRAVENÁ VERZE, JE BEZCHYBNÝ, NEBO ZÁRUKY PRODEJNOSTI, VHODNOSTI PRO URČITÝ ÚČEL, NEBO
NEPORUŠENOSTI. RIZIKO NEKVALITY, NEPŘESNOSTI A ŠPATNÉHO PROVEDENÍ DOKUMENTU, NEBO JEHO UPRAVENÉ VERZE, NESETE
VY. POKUD JE TENTO DOKUMENT NEBO JEHO UPRAVENÁ VERZE VADNÁ V JAKÉMKOLIV SMYSLU, VY (NIKOLIV PŮVODCE, AUTOR
NEBO JAKÝKOLIV PŘISPĚVATEL) PŘEBÍRÁTE ODPOVĚDNOST ZA JAKÉKOLIV NÁKLADY NA NUTNÉ ÚPRAVY, OPRAVY ČI SLUŽBY.
TOTO PROHLÁŠENÍ O ZÁRUCE PŘEDSTAVUJE ZÁKLADNÍ SOUČÁST T�
�TO LICENCE. BEZ TOHOTO PROHLÁŠENÍ NENÍ PODLE TÉTO DOHODY POVOLENO UŽÍVÁNÍ ANI ÚPRAVY TOHOTO DOKUMENTU;
DÁLE</p></li><li class="listitem"><p>ZA ŽÁDNÝCH OKOLNOSTÍ A ŽÁDNÝCH PRÁVNÍCH PŘEDPOKLADŮ, AŤ SE JEDNÁ O
PŘEČIN (VČETNĚ NEDBALOSTNÍCH), SMLOUVU NEBO JINÉ, NENÍ AUTOR, PŮVODNÍ PISATEL, KTERÝKOLIV PŘISPĚVATEL NEBO
KTERÝKOLIV DISTRIBUTOR TOHOTO DOKUMENTU NEBO UPRAVENÉ VERZE DOKUMENTU NEBO KTERÝKOLIV DODAVATEL NĚKTERÉ Z
TĚCHTO STRAN ODPOVĚDNÝ NĚJAKÉ OSOBĚ ZA PŘÍMÉ, NEPŘÍMÉ, SPECIÁLNÍ, NAHODILÉ NEBO NÁSLEDNÉ ŠKODY JAKÉHOKOLIV
CHARAKTERU, VČETNĚ, ALE NEJEN, ZA POŠKOZENÍ ZE ZTRÁTY DOBRÉHO JMÉNA, PŘERUŠENÍ PRÁCE, PORUCHY NEBO NESPRÁVNÉ
FUNKCE POČÍTAČE NEBO JINÉHO A VŠECH DALŠÍCH ŠKOD NEBO ZTRÁT VYVSTÁVAJÍCÍCH Z NEBO VZTAHUJÍCÍCH SE K POUŽÍVÁNÍ
TOHOTO DOKUMENTU NEBO UPRAVENÝCH VERZÍ DOKUMENTU, I KDYŽ BY TAKOVÁTO STRANA BYLA INFORMOVANÁ O MOŽNOSTI
TAKOVÉHOTO POŠKOZENÍ.</p></li></ol></d
iv></div></div><div><div class="legalnotice"><a name="idm48"></a><p
class="legalnotice-title"><b>Ohlasy</b></p><p>Pokud chcete oznámit chybu nebo navrhnout vylepšení vztahující
se k aplikaci <span class="application">matematický nástroj Genius</span> nebo této příručce, navštivte
prosím <a class="ulink" href="http://www.jirka.org/genius.html" target="_top">webovou stránku aplikace
Genius</a> nebo napište autorovi na e-mail <code class="email"><<a class="email" href="mailto:jirka 5z
com">jirka 5z com</a>></code>.</p></div></div><div><div class="revhistory"><table
style="border-style:solid; width:100%;" summary="Přehled revizí"><tr><th align="left" valign="top"
colspan="2"><b>Přehled revizí</b></th></tr><tr><td align="left">Revize 0.2</td><td align="left">Září
2016</td></tr><tr><td align="left" colspan="2">
<p class="author">Jiri (George) Lebl <code class="email"><<a class="email"
href="mailto:jirka 5z com">jirka 5z com</a>></code></p>
</td></tr></table></div></div><div><div class="abstract"><p
class="title"><b>Abstrakt</b></p><p>Příručka k matematickému nástroji
Genius.</p></div></div></div><hr></div><div class="toc"><p><b>Obsah</b></p><dl class="toc"><dt><span
class="chapter"><a href="ch01.html">1. Úvod</a></span></dt><dt><span class="chapter"><a href="ch02.html">2.
Začínáme</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#genius-to-start">Jak spustit <span
class="application">matematický nástroj Genius</span></a></span></dt><dt><span class="sect1"><a
href="ch02s02.html">Když spustíte aplikaci Genius</a></span></dt></dl></dd><dt><span class="chapter"><a
href="ch03.html">3. Základy používání</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch03.html#genius-usage-workarea">Používání pracovní oblasti</a></span></dt><dt><span class="sect1"><a
href="ch03s02.html">Jak vytvořit nový program</a></span></dt><dt><span class="sect1"><a
href="ch03s03.html">Jak otev�
�ít a spustit program</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4.
Vykreslování</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#genius-line-plots">Čárové
grafy</a></span></dt><dt><span class="sect1"><a href="ch04s02.html">Parametrické
grafy</a></span></dt><dt><span class="sect1"><a href="ch04s03.html">Grafy směrových
polí</a></span></dt><dt><span class="sect1"><a href="ch04s04.html">Grafy vektorových
polí</a></span></dt><dt><span class="sect1"><a href="ch04s05.html">Plošné
grafy</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Základy jazyka
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch05.html#genius-gel-values">Hodnoty</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-numbers">Čísla</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-booleans">Pravdivostní hodnoty</a></span></dt><dt><span class="sect2"><a
href="
ch05.html#genius-gel-values-strings">Řetězce</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-null">Null</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s02.html">Používání proměnných</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s02.html#genius-gel-variables-setting">Nastavování proměnných</a></span></dt><dt><span
class="sect2"><a href="ch05s02.html#genius-gel-variables-built-in">Vestavěné
proměnné</a></span></dt><dt><span class="sect2"><a href="ch05s02.html#genius-gel-previous-result">Proměnná s
posledním výsledkem</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch05s03.html">Používání
funkcí</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-defining">Definování funkcí</a></span></dt><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-variable-argument-lists">Proměnný seznam
argumentů</a></span></dt><dt><span class="sect2"><
a href="ch05s03.html#genius-gel-functions-passing-functions">Předávání funkcí
funkcím</a></span></dt><dt><span class="sect2"><a href="ch05s03.html#genius-gel-functions-operations">Operace
s funkcemi</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s04.html">Oddělovač</a></span></dt><dt><span class="sect1"><a
href="ch05s05.html">Komentáře</a></span></dt><dt><span class="sect1"><a href="ch05s06.html">Modulární
aritmetika</a></span></dt><dt><span class="sect1"><a href="ch05s07.html">Seznam operátorů
GEL</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Programování s jazykem
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch06.html#genius-gel-conditionals">Podmínky</a></span></dt><dt><span class="sect1"><a
href="ch06s02.html">Smyčky</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-while">Smyčky while</a></span></dt><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loo
ps-for">Smyčky for</a></span></dt><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-foreach">Smyčky foreach</a></span></dt><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-break-continue">Break a continue</a></span></dt></dl></dd><dt><span
class="sect1"><a href="ch06s03.html">Součty a součiny</a></span></dt><dt><span class="sect1"><a
href="ch06s04.html">Porovnávací operátory</a></span></dt><dt><span class="sect1"><a
href="ch06s05.html">Globální proměnné a působnost proměnných</a></span></dt><dt><span class="sect1"><a
href="ch06s06.html">Proměnné parametrů</a></span></dt><dt><span class="sect1"><a href="ch06s07.html">Návrat
hodnot</a></span></dt><dt><span class="sect1"><a href="ch06s08.html">Reference</a></span></dt><dt><span
class="sect1"><a href="ch06s09.html">L-hodnoty</a></span></dt></dl></dd><dt><span class="chapter"><a
href="ch07.html">7. Pokročilé programování v jazyce GEL</a></span></dt><dd><dl><dt><span class="sect1"><
a href="ch07.html#genius-gel-error-handling">Obsluha chyb</a></span></dt><dt><span class="sect1"><a
href="ch07s02.html">Syntaxe v nejvyšší úrovni</a></span></dt><dt><span class="sect1"><a
href="ch07s03.html">Vracení funkcí</a></span></dt><dt><span class="sect1"><a href="ch07s04.html">Skutečně
lokální proměnné</a></span></dt><dt><span class="sect1"><a href="ch07s05.html">Spouštěcí procedura
GEL</a></span></dt><dt><span class="sect1"><a href="ch07s06.html">Načítání
programů</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Matice v jazyce
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#genius-gel-matrix-support">Zadávání
matic</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">Operátor konjugované transpozice a
transpozice</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">Lineární
algebra</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch09.html">9. Polynomy v jazyce GEL
</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch09.html#genius-gel-polynomials-using">Používání
polynomů</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch10.html">10. Teorie množin v jazyce
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch10.html#genius-gel-sets-using">Používání
množin</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch11.html">11. Seznam funkcí
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch11.html#genius-gel-function-list-commands">Příkazy</a></span></dt><dt><span class="sect1"><a
href="ch11s02.html">Základy</a></span></dt><dt><span class="sect1"><a
href="ch11s03.html">Parametry</a></span></dt><dt><span class="sect1"><a
href="ch11s04.html">Konstanty</a></span></dt><dt><span class="sect1"><a href="ch11s05.html">Práce s
čísly</a></span></dt><dt><span class="sect1"><a href="ch11s06.html">Trigonometrie</a></span></dt><dt><span
class="sect1"><a href="ch11s07.html">Teorie čísel</a
</span></dt><dt><span class="sect1"><a href="ch11s08.html">Práce s maticemi</a></span></dt><dt><span
class="sect1"><a href="ch11s09.html">Lineární algebra</a></span></dt><dt><span class="sect1"><a
href="ch11s10.html">Kombinatorika</a></span></dt><dt><span class="sect1"><a
href="ch11s11.html">Diferenciální/integrální počet </a></span></dt><dt><span class="sect1"><a
href="ch11s12.html">Funkce</a></span></dt><dt><span class="sect1"><a href="ch11s13.html">Řešení
rovnic</a></span></dt><dt><span class="sect1"><a href="ch11s14.html">Statistika</a></span></dt><dt><span
class="sect1"><a href="ch11s15.html">Polynomy</a></span></dt><dt><span class="sect1"><a
href="ch11s16.html">Teorie množin</a></span></dt><dt><span class="sect1"><a href="ch11s17.html">Komutativní
algebra</a></span></dt><dt><span class="sect1"><a href="ch11s18.html">Různé</a></span></dt><dt><span
class="sect1"><a href="ch11s19.html">Symbolické operace</a></span></dt><dt><span class="sect1"><a href="ch1
1s20.html">Vykreslování</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch12.html">12. Příklad
programů v jazyce GEL</a></span></dt><dt><span class="chapter"><a href="ch13.html">13.
Nastavení</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch13.html#genius-prefs-output">Výstup</a></span></dt><dt><span class="sect1"><a
href="ch13s02.html">Přesnost</a></span></dt><dt><span class="sect1"><a
href="ch13s03.html">Terminál</a></span></dt><dt><span class="sect1"><a
href="ch13s04.html">Paměť</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch14.html">14. O <span
class="application">Matematickém nástroji Genius</span></a></span></dt></dl></div><div
class="list-of-figures"><p><b>Seznam obrázků</b></p><dl><dt>2.1. <a href="ch02s02.html#mainwindow-fig">Okno
<span class="application">Matematického nástroje Genius</span></a></dt><dt>4.1. <a
href="ch04.html#lineplot-fig">Okno Vytváření grafu</a></dt><dt>4.2. <a href="ch04.html#lineplot2-fig
">Okno s grafem</a></dt><dt>4.3. <a href="ch04s02.html#paramplot-fig">Karta parametrických
grafů</a></dt><dt>4.4. <a href="ch04s02.html#paramplot2-fig">Parametrické grafy</a></dt><dt>4.5. <a
href="ch04s05.html#surfaceplot-fig">Plošný graf</a></dt></dl></div></div><div class="navfooter"><hr><table
width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%"
align="center"> </td><td width="40%" align="right"> <a accesskey="n"
href="ch01.html">Další</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%"
align="center"> </td><td width="40%" align="right" valign="top"> Kapitola 1.
Úvod</td></tr></table></div></body></html>
diff --git a/help/de/genius.xml b/help/de/genius.xml
new file mode 100644
index 0000000..f11e9a5
--- /dev/null
+++ b/help/de/genius.xml
@@ -0,0 +1,9762 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="de">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Handbuch für das Genius Mathematikwerkzeug.</para></abstract>
+ <title>Genius-Handbuch</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2009, 2011</year><holder>Mario Blättermann (mariobl freenet
de)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free Documentation License (GFDL),
Version 1.1 oder jeder späteren, von der Free Software Foundation veröffentlichten Version ohne
unveränderbare Abschnitte sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt
und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem <ulink type="help"
url="ghelp:fdl">Link</ulink> oder in der mit diesem Handbuch gelieferten Datei COPYING-DOCS.</para>
+ <para>Dieses Handbuch ist Teil einer Sammlung von GNOME-Handbüchern, die unter der GFDL
veröffentlicht werden. Wenn Sie dieses Handbuch getrennt von der Sammlung weiterverbreiten möchten, können
Sie das tun, indem Sie eine Kopie der Lizenz zum Handbuch hinzufügen, wie es in Abschnitt 6 der Lizenz
beschrieben ist.</para>
+
+ <para>Viele der Namen, die von Unternehmen verwendet werden, um ihre Produkte und Dienstleistungen
von anderen zu unterscheiden, sind eingetragene Warenzeichen. An den Stellen, an denen diese Namen in einer
GNOME-Dokumentation erscheinen, werden die Namen in Großbuchstaben oder mit einem großen Anfangsbuchstaben
geschrieben, wenn das GNOME-Dokumentationsprojekt auf diese Warenzeichen hingewiesen wird.</para>
+
+ <para>DAS DOKUMENT UND VERÄNDERTE FASSUNGEN DES DOKUMENTS WERDEN UNTER DEN BEDINGUNGEN DER GNU FREE
DOCUMENTATION LICENSE ZUR VERFÜGUNG GESTELLT MIT DEM WEITERGEHENDEN VERSTÄNDNIS, DASS: <orderedlist>
+ <listitem>
+ <para>DIESES DOKUMENT WIRD »WIE VORLIEGEND« GELIEFERT, OHNE GARANTIEN IRGENDEINER ART,
SOWOHL AUSDRÜCKLICH GENANNTE ALS AUCH ANGEDEUTETE. DIES BEZIEHT SICH AUCH OHNE EINSCHRÄNKUNG AUF GARANTIEN,
DASS DIESES DOKUMENT ODER VERÄNDERTE FASSUNGEN DIESES DOKUMENTS FREI VON HANDELSDEFEKTEN, FÜR EINEN
BESTIMMTEN ZWECK GEEIGNET IST ODER DASS ES KEINE RECHTE DRITTER VERLETZT. DAS VOLLE RISIKO WAS QUALITÄT,
GENAUIGKEIT UND LEISTUNG DES DOKUMENTS ODER VERÄNDERTE FASSUNGEN DES DOKUMENTS LIEGT BEI IHNEN. SOLLTE EIN
DOKUMENT ODER EINE VERÄNDERTE FASSUNG DAVON FEHLER IRGENDEINER ART BEINHALTEN, TRAGEN SIE (NICHT DER
URSPRUNGSAUTOR, DER AUTOR ODER EIN MITWIRKENDER) DIE KOSTEN FÜR NOTWENDIGE DIENSTLEISTUNGEN, REPARATUREN ODER
FEHLERKORREKTUREN. DIESER HAFTUNGSAUSSCHLUSS IST EIN ESSENZIELLER TEIL DIESER LIZENZ. DIE VERWENDUNG EINES
DOKUMENTS ODER EINER VERÄNDERTEN VERSION DES DOKUMENTS IST NICHT GESTATTET AUßER UNTER BEACHTUNG DIESES
HAFTUNGSAUSSCHLUSSES UND</para>
+ </listitem>
+ <listitem>
+ <para>UNTER KEINEN UMSTÄNDEN UND AUF BASIS KEINER RECHTSGRUNDLAGE, EGAL OB DURCH
UNERLAUBTEN HANDLUNGEN (EINSCHLIEßLICH FAHRLÄSSIGKEIT), VERTRAG ODER ANDERWEITIG KANN DER AUTOR,
URSPRUNGSAUTOR, EIN MITWIRKENDER ODER EIN VERTRIEBSPARTNER DIESES DOKUMENTS ODER EINER VERÄNDERTEN FASSUNG
DES DOKUMENTS ODER EIN ZULIEFERER EINER DIESER PARTEIEN, HAFTBAR GEMACHT WERDEN FÜR DIREKTE, INDIREKTE,
SPEZIELLE, VERSEHENTLICHE ODER FOLGESCHÄDEN JEGLICHER ART, EINSCHLIEßLICH UND OHNE EINSCHRÄNKUNGEN SCHÄDEN
DURCH VERLUST VON KULANZ, ARBEITSAUSFALL, COMPUTERVERSAGEN ODER COMPUTERFEHLFUNKTIONEN ODER ALLE ANDEREN
SCHÄDEN ODER VERLUSTE, DIE SICH AUS ODER IN VERBINDUNG MIT DER VERWENDUNG DES DOKUMENTS UND VERÄNDERTER
FASSUNGEN DES DOKUMENTS ERGEBEN, AUCH WENN DIE OBEN GENANNTEN PARTEIEN ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN
INFORMIERT WAREN.</para>
+ </listitem>
+ </orderedlist></para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Oklahoma State University</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>University of Queensland, Australien</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>September 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>This manual describes version 1.0.22 of Genius.
+ </releaseinfo>
+ <legalnotice>
+ <title>Rückmeldungen</title>
+ <para>Um einen Fehler zu melden oder einen Vorschlag zur Anwendung <application>Genius
Mathematikwerkzeug</application> oder zu diesem Handbuch zu machen, folge Sie den Anweisungen auf der <ulink
url="http://www.jirka.org/genius.html" type="http">Genius-Webseite</ulink> oder schreiben Sie eine E-Mail an
<email>jirka 5z com</email>.</para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Einführung</title>
+ <para>Die Anwendung <application>Genius Mathematikwerkzeug</application> ist ein allgemeines
Rechenprogramm, ein Hilfsmittel zur mathematischen Ausbildung und sogar dienlich für Forschungszwecke. Die in
<application>Genius Mathematikwerkzeug</application> verwendete Sprache ist »mathematisch« im Sinne von »man
bekommt, was man meint«. Natürlich ist das ein nicht vollständig erreichbares Ziel. <application>Genius
Mathematikwerkzeug</application> arbeitet mit rationalen Zahlen, langen Ganzzahlen und Gleitkommazahlen
unterschiedlicher Genauigkeit unter Verwendung der GMP-Bibliothek. Es arbeitet mit komplexen Zahlen in
kartesischer Form. Darüber hinaus stehen umfangreiche Vektor- und Matrixoperationen, sowie grundlegende
Lineare Algebra zur Verfügung. Die Programmiersprache erlaubt benutzerdefinierte Funktionen, Variablen und
Veränderungen von Parametern.</para>
+
+ <para>Es gibt zwei Versionen von <application>Genius Mathematikwerkzeug</application>. Die eine Version
ist die graphische GNOME-Version, welche eine Schnittstelle im Stil einer integrierten Entwicklungsumgebung
bietet und die Möglichkeit, Funktionen mit einer oder zwei Variablen darzustellen. Die Befehlszeilenversion
benötigt kein GNOME, allerdings beinhaltet sie keine Funktionalitäten, welche eine graphische Schnittstelle
erfordern.</para>
+
+ <para>Dieses Handbuch beschreibt hauptsächlich die graphische Version des Rechners, wobei die Sprache
natürlich für beide dieselbe ist. In der Befehlszeilenversion fehlen die graphischen Möglichkeiten und andere
Funktionalitäten, die eine graphische Schnittstelle benötigen.</para>
+
+ <para>Generell werden neue Funktionsmerkmale der Sprache (Funktion, Operator usw.) in Versionen ab 1.0.5
hier erwähnt. Für Versionen vor 1.0.5 finden Sie entsprechende Informationen in der Datei NEWS.</para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Erste Schritte</title>
+
+ <sect1 id="genius-to-start">
+ <title><application>Genius Mathematikwerkzeug starten</application></title>
+ <para>Sie können <application>Genius Mathematikwerkzeug</application> auf folgende Arten
starten:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Menü <guimenu>Anwendungen</guimenu></term>
+ <listitem>
+ <para>Abhängig von Ihrem Betriebssystem und dessen Version kann sich der Menüeintrag für
<application>Genius Mathematikwerkzeug</application> an verschiedenen Stellen befinden. Es kann sich unter
<guisubmenu>Bildung</guisubmenu>, <guisubmenu>Zubehör</guisubmenu>, <guisubmenu>Büro</guisubmenu>,
<guisubmenu>Wissenschaft</guisubmenu> oder einem ähnlichen Untermenü befinden, abhängig von den Einstellungen
Ihres Systems. Der Menüeintrag, nach dem Sie suchen sollten, lautet <guimenuitem>Genius
Mathematikwerkzeug</guimenuitem>. Sobald Sie diesen Menüeintrag gefunden haben, klicken Sie darauf, um
<application>Genius Mathematikwerkzeug</application> zu starten.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Ausführen</guilabel>-Dialog</term>
+ <listitem>
+ <para>Es kann auch vorkommen, dass der Menüeintrag bei Ihrem System nicht vorhanden ist. In
diesem Fall können Sie das Dialogfeld zum Ausführen von Programmen öffnen und den Befehl
<command>gnome-genius</command> eingeben.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Befehlszeile</term>
+ <listitem>
+ <para>Um die GNOME-Version des <application>Genius Mathematikwerkzeug</application> von der
Befehlszeile aus zu starten, geben Sie <command>gnome-genius</command> ein.</para>
+ <para>Zum Starten der Befehlszeilen-Version führen Sie folgenden Befehl aus:
<command>genius</command>. Diese Version enthält keine graphische Umgebung und einige Funktionen wie zum
Beispiel die Darstellung stehen nicht zur Verfügung.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>Beim Start von <application>Genius</application></title>
+ <para>Wenn Sie die GNOME-Ausgabe von <application>Genius Mathematikwerkzeug</application> starten,
wird das in <xref linkend="mainwindow-fig"/> dargestellte Fenster geöffnet.</para>
+
+ <figure id="mainwindow-fig">
+ <title><application>Genius Mathematikwerkzeug</application>-Fenster</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Zeigt das Hauptfenster von <application>Genius Mathematikwerkzeug</application>.
Enthält Titelleiste, Menüleiste, Werkzeugleiste und Arbeitsplatz. Die Menüleiste enthält die Menüs
<guilabel>Datei</guilabel>, <guilabel>Bearbeiten</guilabel>, <guilabel>Taschenrechner</guilabel>,
<guilabel>Beispiele</guilabel>, <guilabel>Programme</guilabel>, <guilabel>Einstellungen</guilabel> und
<guilabel>Hilfe</guilabel> menus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Das Fenster von <application>Genius Mathematikwerkzeug</application> enthält die folgenden
Elemente:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Menüleiste.</term>
+ <listitem>
+ <para>Die Menüleiste beinhaltet alle Befehle, die Sie benötigen, um mit dem <application>Genius
Mathematikwerkzeug</application> zu arbeiten. Das <guilabel>Datei</guilabel>-Menü enthält Einträge zum Öffnen
und Speichern von Dateien sowie zum Erstellen neuer Programme. Der Befehl <guilabel>Laden und ausführen
…</guilabel> öffnet kein neues Fenster für das Programm, sondern führt das Programm direkt aus. Dies
entspricht dem Befehl <command>load</command>.</para>
+ <para>
+ The <guilabel>Calculator</guilabel> menu controls the
+calculator engine. It allows you to run the currently selected program or to
+interrupt the current calculation. You can also look at the full expression of
+the last answer (useful if the last answer was too large to fit onto the
+console), or you can view a listing of the values of all user defined
+variables. You can also monitor user variables, which is especially useful
+while a long calculation is running, or to debug a certain program.
+ Finally the <guilabel>Calculator</guilabel> allows plotting functions using a user
friendly dialog box.
+ </para>
+ <para>
+ The <guilabel>Examples</guilabel> menu is a list of example
+ programs or demos. If you open the menu, it will load the
+ example into a new program, which you can run, edit, modify,
+ and save. These programs should be well documented
+ and generally demonstrate either some feature of <application>Genius Mathematics
Tool</application>
+ or some mathematical concept.
+ </para>
+ <para>
+ The <guilabel>Programs</guilabel> menu lists
+ the currently open programs and allows you to switch
+ between them.
+ </para>
+ <para>Die anderen Menüs beinhalten ähnliche Funktionen wie in anderen Anwendungen.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Werkzeugleiste.</term>
+ <listitem>
+ <para>Die Werkzeugleiste enthält eine Auswahl der Befehle, die Sie über die Menüleiste
erreichen.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Arbeitsplatz</term>
+ <listitem>
+ <para>Der Arbeitsplatz stellt die vorrangige Methode zur Interaktion mit der Anwendung
dar.</para>
+ <para>Der Arbeitsplatz beinhaltet zu Beginn nur den Reiter <guilabel>Konsole</guilabel>, welcher
hauptsächlich für Interaktionen mit dem Rechner verwendet wird. Hier können Sie Ausdrücke eingeben und die
Ergebnisse werden sofort nach Betätigung der Eingabetaste angezeigt.</para>
+ <para>
+ Alternatively you can write longer programs and those can
+ appear in separate tabs. The programs are a set of commands or
+ functions that can be run all at once rather than entering them
+ at the command line. The programs can be saved in files for later
+ retrieval.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Grundlagen der Benutzung</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Benutzung des Arbeitsplatzes</title>
+
+ <para>Normalerweise interagieren Sie mit dem Rechenprogramm im Reiter <guilabel>Konsole</guilabel> des
Arbeitsplatzes. Falls Sie die textbasierte Version verwenden, wird Ihnen nur diese Konsole zur Verfügung
stehen. Wenn Sie das <application>Genius Mathematikwerkzeug</application> als reines Rechenprogramm verwenden
wollen, geben Sie einfach Ihren Ausdruck hier ein, und das Ergebnis wird berechnet.</para>
+
+ <para>
+ To evaluate an expression, type it into the <guilabel>Console</guilabel> work area and press
enter.
+ Expressions are written in a
+language called GEL. The most simple GEL expressions just looks like
+mathematics. For example
+<screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen>
+(Last is the harmonic sum from 1 to 70)
+</para>
+<para>So erhalten Sie eine Liste mit Funktionen und Befehlen: <screen><prompt>genius>
</prompt><userinput>help</userinput>
+</screen> Wenn Sie zusätzliche Hilfe zu einer bestimmten Funktion wünschen, geben Sie Folgendes ein:
<screen><prompt>genius> </prompt><userinput>help FunktionsName</userinput>
+</screen> Dieses Handbuch zeigen Sie folgendermaßen an: <screen><prompt>genius>
</prompt><userinput>manual</userinput>
+</screen></para>
+<para>
+Suppose you have previously saved some GEL commands as a program to a file and
+you now want to execute them.
+To load this program from the file <filename>path/to/program.gel</filename>,
+type
+<screen><prompt>genius> </prompt><userinput>load path/to/program.gel</userinput>
+</screen>
+<application>Genius Mathematics Tool</application> keeps track of the current directory.
+To list files in the current directory type <command>ls</command>, to change directory
+do <userinput>cd directory</userinput> as in the UNIX command shell.
+</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>Erstellen eines neuen Programms</title>
+ <para>
+ If you wish to enter several more complicated commands, or perhaps write a complicated
+ function using the <link linkend="genius-gel">GEL</link> language, you can create a new
+ program.
+ </para>
+ <para>
+To start writing a new program, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>New
+Program</guimenuitem></menuchoice>. A new tab will appear in the work area. You
+can write a <link linkend="genius-gel">GEL</link> program in this work area.
+Once you have written your program you can run it by
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice> (or
+the <guilabel>Run</guilabel> toolbar button).
+This will execute your program and will display any output on the <guilabel>Console</guilabel> tab.
+Executing a program is equivalent of taking the text of the program and
+typing it into the console. The only difference is that this input is done
+independent of the console and just the output goes onto the console.
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice>
+will always run the currently selected program even if you are on the <guilabel>Console</guilabel>
+tab. The currently selected program has its tab in bold type. To select a
+program, just click on its tab.
+ </para>
+ <para>
+To save the program you've just written, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Save
As...</guimenuitem></menuchoice>.
+Similarly as in other programs you can choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice> to save a program that
already has
+a filename attached to it. If you have many opened programs you have edited and wish to save you can also
choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save All Unsaved</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ Programs that have unsaved changes will have a "[+]" next to their filename. This way you can
see if the file
+ on disk and the currently opened tab differ in content. Programs which have not yet had a
filename associated
+ with them are always considered unsaved and no "[+]" is printed.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Öffnen und Ausführen eines Programms</title>
+ <para>Um eine Datei zu öffnen, wählen Sie
<menuchoice><guimenu>Datei</guimenu><guimenuitem>Öffnen</guimenuitem></menuchoice>. Ein neuer Reiter
erscheint im Arbeitsplatz, der diese Datei enthält. Hier können Sie die Datei bearbeiten.</para>
+ <para>Wählen Sie <menuchoice><guimenu>Datei</guimenu><guimenuitem>Laden und ausführen
…</guimenuitem></menuchoice>, um ein Programm aus einer Datei zu starten. Auf diese Weise wird das Programm
ausgeführt, ohne dabei einen eigenen Reiter zu öffnen. Dies entspricht dem
<command>load</command>-Befehl.</para>
+ <para>
+ If you have made edits to a file you wish to throw away and want to reload to the version
that's on disk,
+ you can choose the
+ <menuchoice><guimenu>File</guimenu><guimenuitem>Reload from Disk</guimenuitem></menuchoice>
menuitem. This is useful for experimenting
+ with a program and making temporary edits, to run a program, but that you do not intend to keep.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Darstellung</title>
+
+ <para>Die Darstellung von Funktionen steht nur in der graphischen GNOME-Version zur Verfügung. Alle
Darstellungen mittels graphischer Schnittstelle können über das Fenster <guilabel>Darstellung
erstellen</guilabel> erreicht werden. In dieses Fenster gelangen Sie entweder durch Klick auf den Knopf
<guilabel>Darstellen</guilabel> in der Werkzeugleiste oder durch Auswahl von <guilabel>Darstellen
…</guilabel> im Menü <guilabel>Rechner</guilabel>. Sie können die Darstellungsmöglichkeiten auch unter
Verwendung der GEL-<link linkend="genius-gel-function-list-plotting">Darstellungsfunktionen</link> einsetzen.
Sehen Sie auch unter <xref linkend="genius-gel"/> nach, um herauszufinden, wie Sie Ausdrücke eingeben können,
die von Genius verstanden werden.</para>
+
+ <sect1 id="genius-line-plots">
+ <title>Kurvendarstellungen</title>
+ <para>Um Funktionen einer Variablen mit reellen Zahlen darzustellen, öffnen Sie das Fenster
<guilabel>Darstellung erstellen</guilabel>. Sie können auch die Funktion <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> auf der Befehlszeile verwenden (siehe
Dokumentation dazu).</para>
+ <para>Sobald Sie auf den <guilabel>Darstellen</guilabel>-Knopf im Hauptfenster klicken, öffnet sich
ein Fenster mit einigen Reitern darin. Sie befinden sich nun im Reiter <guilabel>Funktionsgraphen
darstellen</guilabel> und darin im Reiter <guilabel>Funktionen / Ausdrücke</guilabel>. Siehe auch <xref
linkend="lineplot-fig"/>.</para>
+
+ <figure id="lineplot-fig">
+ <title>Fenster »Darstellung erstellen«</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Anzeige des Kurven-Darstellungsfensters.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ Type expressions with <userinput>x</userinput> as
+ the independent variable into the textboxes. Alternatively you can give names of functions such as
+ <userinput>cos</userinput> rather then having to type <userinput>cos(x)</userinput>.
+ You can graph up to ten functions. If you make a mistake and Genius cannot
+ parse the input it will signify this with a warning icon on the right of the text
+ input box where the error occurred, as well as giving you an error dialog.
+ You can change the ranges of the dependent and independent variables in the bottom
+ part of the dialog.
+ The <varname>y</varname> (dependent) range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox.
+ The names of the variables can also be changed.
+ Pressing the <guilabel>Plot</guilabel> button produces the graph shown in <xref
linkend="lineplot2-fig"/>.
+ </para>
+ <para>
+ The variables can be renamed by clicking the <guilabel>Change variable names...</guilabel>
button, which is useful if you wish to print or save the figure and don't want to use the standard
+ names. Finally you can also avoid printing the legend and the axis labels completely,
+ which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="lineplot2-fig">
+ <title>Fenster »Darstellen«</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Erstellter Graph.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Von hier aus können Sie die Darstellung ausdrucken, PostScript-, EPS- oder PNG-Versionen davon
erstellen und die Vergrößerungsstufe verändern.</para>
+
+ <para>Um Darstellungen von der Befehlszeile aus zu erstellen, lesen Sie bitte die Dokumentation der
<link linkend="gel-function-LinePlot"><function>LinePlot</function></link>-Funktion.</para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Parametrische Darstellungen</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Parametric</guilabel> notebook
+ tab to create two dimensional parametric plots. This way you can
+ plot a single parametric function. You can either specify the
+ points as <varname>x</varname> and <varname>y</varname>, or giving a single complex number
+ as a function of the variable <varname>t</varname>.
+ The range of the variable <varname>t</varname> is given explicitly, and the function is sampled
+ according to the given increment.
+ The <varname>x</varname> and <varname>y</varname> range can be set
+ automatically by turning on the <guilabel>Fit dependent axis</guilabel>
+ checkbox, or it can be specified explicitly.
+ See <xref linkend="paramplot-fig"/>.
+ </para>
+
+ <figure id="paramplot-fig">
+ <title>Reiter »Parametrische Darstellung«</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Reiter »Parametrische Darstellung« im <guilabel>Darstellung
erstellen</guilabel>-Fenster.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ An example of a parametric plot is given in
+ <xref linkend="paramplot2-fig"/>.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> or
+ <link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>
function.
+ </para>
+
+ <figure id="paramplot2-fig">
+ <title>Parametrische Darstellung</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Erstellte parametrische Darstellung</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Richtungsfeld-Darstellungen</title>
+ <para>Im Fenster »Darstellung erstellen« können Sie den Reiter <guilabel>Richtungsfeld</guilabel>
wählen, um eine zweidimensionale Richtungsfeld-Darstellung zu erstellen. Auf derartige Graphen können
ähnliche Operationen angewendet werden wie bei anderen Kurvendarstellungen. Wie Sie Darstellungen von der
Befehlszeile aus erzeugen, können Sie in der Dokumentation der Funktion <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link> nachlesen.</para>
+
+ <para>Wenn ein Richtungsfeld dargestellt wird, so steht ein zusätzlicher Menüeintrag
<guilabel>Löser</guilabel> zur Verfügung. Damit gelangen Sie zum Löser-Dialogfeld und Sie können Genius
bestimmte Lösungen zu den gegebenen Anfangsbedingungen darstellen lassen. Sie können die Anfangsbedingungen
entweder im Dialogfeld angeben oder Sie klicken direkt auf die Darstellung, um den Anfangspunkt festzulegen.
Während das Löser-Dialogfeld aktiv ist, funktionieren Größenänderungen durch Klicken und Ziehen nicht. Wenn
Sie die Vergrößerungsstufe mit der Maus verändern möchten, müssen Sie zuerst das Dialogfenster
schließen.</para>
+
+ <para>Der Löser verwendet das klassische Runge-Kutta-Verfahren. Die Darstellungen bleiben so lange am
Bildschirm erhalten, bis sie gelöscht werden. Der Löser stoppt, sobald er die Grenzen des
Darstellungsfensters erreicht hat. Durch Ändern der Vergrößerungsstufe werden die Grenzen der Parameter der
Lösungen nicht verändert, dazu müssen Sie die Lösungen löschen und mit den gewünschten Parametern neu
darstellen. Sie können auch die Funktion <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link> verwenden,
um Lösungen von der Befehlszeile oder von Programmen aus darzustellen.</para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Vektorfeld-Darstellungen</title>
+ <para>Im Fenster »Darstellung erstellen« können Sie den Reiter <guilabel>Vektorfeld</guilabel> wählen,
um eine zweidimensionale Vektorfeld-Darstellung zu erstellen. Auf derartige Graphen können ähnliche
Operationen angewendet werden wie bei anderen Kurvendarstellungen. Wie Sie Darstellungen von der Befehlszeile
aus erzeugen, können Sie in der Dokumentation der Funktion <link
linkend="gel-function-SlopefieldPlot"><function>VectorfieldPlot</function></link> nachlesen.</para>
+
+ <para>Standardmäßig werden Richtung und Größe des Vektorfelds angezeigt. Sie können das Ankreuzfeld
<guilabel>Pfeillänge normalisieren</guilabel> aktivieren, um nur die Richtung und nicht die Größe
anzuzeigen.</para>
+
+ <para>Wenn ein Vektorfeld dargestellt wird, so steht ein zusätzlicher Menüeintrag
<guilabel>Löser</guilabel> zur Verfügung. Damit gelangen Sie zum Löser-Dialogfeld und Sie können Genius
bestimmte Lösungen zu den gegebenen Anfangsbedingungen darstellen lassen. Sie können die Anfangsbedingungen
entweder im Dialogfeld angeben oder Sie klicken direkt auf die Darstellung, um den Anfangspunkt festzulegen.
Während das Löser-Dialogfeld aktiv ist, funktioniert das Ändern der Vergrößerungsstufe durch Klicken und
Ziehen nicht. Wenn Sie mit der Maus die Vergrößerungsstufe ändern möchten, müssen Sie zuerst das
Dialogfenster schließen.</para>
+
+ <para>Der Löser verwendet das klassische Runge-Kutta-Verfahren. Die Darstellungen bleiben so lange am
Bildschirm erhalten, bis sie gelöscht werden. Durch Ändern der Vergrößerungsstufe werden die Grenzen der
Parameter der Lösungen nicht verändert, dazu müssen Sie die Lösungen löschen und mit den gewünschten
Parametern neu darstellen. Sie können auch die Funktion <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> verwenden,
um Lösungen von der Befehlszeile oder von Programmen aus darzustellen.</para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>2D-Darstellungen</title>
+ <para>
+ Genius can also plot surfaces. Select the <guilabel>Surface plot</guilabel> tab in the
+ main notebook of the <guilabel>Create Plot</guilabel> window. Here you can specify a single
+ expression that should use either <varname>x</varname> and <varname>y</varname> as real independent
variables
+ or <varname>z</varname> as a complex variable (where <varname>x</varname> is the real part of
<varname>z</varname> and <varname>y</varname> is the
+ imaginary part). For example to plot the modulus of the cosine
+ function for complex parameters,
+ you could enter <userinput>|cos(z)|</userinput>. This would be
+ equivalent to <userinput>|cos(x+1i*y)|</userinput>.
+ See <xref linkend="surfaceplot-fig"/>.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link> function.
+ </para>
+ <para>
+ The <varname>z</varname> range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox. The variables can be renamed by clicking the <guilabel>Change variable
names...</guilabel> button, which is useful if you wish to print or save the figure and don't want to use the
standard
+ names. Finally you can also avoid printing the legend, which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="surfaceplot-fig">
+ <title>2D-Darstellung</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Modulus der komplexen Kosinus-Funktion.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ In surface mode, left and right arrow keys on your keyboard will rotate the
+ view along the z axis. Alternatively you can rotate along any axis by
+ selecting <guilabel>Rotate axis...</guilabel> in the <guilabel>View</guilabel>
+ menu. The <guilabel>View</guilabel> menu also has a top view mode which rotates the
+ graph so that the z axis is facing straight out, that is, we view the graph from the top
+ and get essentially just the colors that define the values of the function getting a
+ temperature plot of the function. Finally you should
+ try <guilabel>Start rotate animation</guilabel>, to start a continuous slow rotation.
+ This is especially good if using <application>Genius Mathematics Tool</application> to present
to an audience.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>GEL-Grundlagen</title>
+
+ <para>
+ GEL stands for Genius Extension Language. It is the language you use
+ to write programs in Genius. A program in GEL is simply an
+ expression that evaluates to a number, a matrix, or another object
+ in GEL.
+ <application>Genius Mathematics Tool</application> can be used as a simple calculator, or as a
+ powerful theoretical research tool. The syntax is meant to
+ have as shallow of a learning curve as possible, especially for use
+ as a calculator.
+ </para>
+
+ <sect1 id="genius-gel-values">
+ <title>Werte</title>
+
+ <para>
+ Values in GEL can be <link linkend="genius-gel-values-numbers">numbers</link>, <link
linkend="genius-gel-values-booleans">Booleans</link>, or <link
linkend="genius-gel-values-strings">strings</link>. GEL also treats
+<link linkend="genius-gel-matrices">matrices</link> as values.
+ Values can be used in calculations, assigned to variables and returned from functions, among
other uses.
+ </para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Zahlen</title>
+ <para>
+Integers are the first type of number in GEL. Integers are written in the normal way.
+<programlisting>1234
+</programlisting>
+Hexadecimal and octal numbers can be written using C notation. For example:
+<programlisting>0x123ABC
+01234
+</programlisting>
+Or you can type numbers in an arbitrary base using <literal><base>\<number></literal>. Digits
higher than 10 use letters in a similar way to hexadecimal. For example, a number in base 23 could be written:
+<programlisting>23\1234ABCD
+</programlisting>
+ </para>
+
+ <para>
+The second type of GEL number is rationals. Rationals are simply achieved by dividing two integers. So one
could write:
+<programlisting>3/4
+</programlisting>
+to get three quarters. Rationals also accept mixed fraction notation. So in order to get one and three
tenths you could write:
+<programlisting>1 3/10
+</programlisting>
+ </para>
+
+ <para>
+The next type of number is floating point. These are entered in a similar fashion to C notation. You can use
<literal>E</literal>, <literal>e</literal> or <literal>@</literal> as the exponent delimiter. Note that using
the exponent delimiter gives a float even if there is no decimal point in the number. Examples:
+<programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting>
+ When Genius prints a floating point number it will always append a
+ <computeroutput>.0</computeroutput> even if the number is whole. This is to indicate that
+ floating point numbers are taken as imprecise quantities. When a number is written in the
+ scientific notation, it is always a floating point number and thus Genius does not
+ print the <computeroutput>.0</computeroutput>.
+ </para>
+
+ <para>
+The final type of number in GEL is the complex numbers. You can enter a complex number as a sum of real and
imaginary parts. To add an imaginary part, append an <literal>i</literal>. Here are examples of entering
complex numbers:
+<programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting>
+ </para>
+
+ <important>
+ <para>
+When entering imaginary numbers, a number must be in front of the <literal>i</literal>. If you use
<literal>i</literal> by itself, Genius will interpret this as referring to the variable <varname>i</varname>.
If you need to refer to <literal>i</literal> by itself, use <literal>1i</literal> instead.
+ </para>
+
+ <para>
+In order to use mixed fraction notation with imaginary numbers you must have the mixed fraction in
parentheses. (i.e., <userinput>(1 2/5)i</userinput>)
+ </para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Wahrheitswerte</title>
+ <para>
+Genius also supports native Boolean values. The two Boolean constants are
+defined as <constant>true</constant> and <constant>false</constant>; these
+identifiers can be used like any other variable. You can also use the
+identifiers <constant>True</constant>, <constant>TRUE</constant>,
+<constant>False</constant> and <constant>FALSE</constant> as aliases for the
+above.
+ </para>
+ <para>
+At any place where a Boolean expression is expected, you can use a Boolean
+value or any expression that produces either a number or a Boolean. If
+Genius needs to evaluate a number as a Boolean it will interpret
+0 as <constant>false</constant> and any other number as
+<constant>true</constant>.
+ </para>
+ <para>
+In addition, you can do arithmetic with Boolean values. For example:
+<programlisting>( (1 + true) - false ) * true
+</programlisting>
+is the same as:
+<programlisting>( (true or true) or not false ) and true
+</programlisting>
+Only addition, subtraction and multiplication are supported. If you mix numbers with Booleans in an
expression then the numbers are converted to Booleans as described above. This means that, for example:
+<programlisting>1 == true
+</programlisting>
+always evaluates to <constant>true</constant> since 1 will be converted to <constant>true</constant> before
being compared to <constant>true</constant>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Strings</title>
+ <para>
+Like numbers and Booleans, strings in GEL can be stored as values inside variables and passed to functions.
You can also concatenate a string with another value using the plus operator. For example:
+<programlisting>a=2+3;"Das Ergebnis ist: "+a
+</programlisting>
+will create the string:
+<programlisting>Das Ergebnis ist: 5
+</programlisting>
+You can also use C-like escape sequences such as
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> and
<literal>\r</literal>. To get a <literal>\</literal> or <literal>"</literal> into the string you can quote it
with a <literal>\</literal>. For example:
+<programlisting>"Slash: \\ Quotes: \" Tabs: \t1\t2\t3"
+</programlisting>
+will make a string:
+<programlisting>Slash: \ Quotes: " Tabs: 1 2 3
+</programlisting>
+Do note however that when a string is returned from a function, escapes are
+quoted, so that the output can be used as input. If you wish to print the
+string as it is (without escapes), use the
+<link linkend="gel-function-print"><function>print</function></link>
+or
+<link linkend="gel-function-printn"><function>printn</function></link> functions.
+ </para>
+ <para>
+ In addition, you can use the library function <link
linkend="gel-function-string"><function>string</function></link> to convert anything to a string. For example:
+<programlisting>string(22)
+</programlisting>
+will return
+<programlisting>"22"
+</programlisting>
+Strings can also be compared with <literal>==</literal> (equal), <literal>!=</literal> (not equal) and
<literal><=></literal> (comparison) operators
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>
+There is a special value called
+<constant>null</constant>. No operations can be performed on
+it, and nothing is printed when it is returned. Therefore,
+<constant>null</constant> is useful when you do not want output from an
+expression. The value <constant>null</constant> can be obtained as an expression when you
+type <literal>.</literal>, the constant <constant>null</constant> or nothing.
+By nothing we mean that if you end an expression with
+a separator <literal>;</literal>, it is equivalent to ending it with a
+separator followed by a <constant>null</constant>.
+ </para>
+ <para>Beispiel: <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>
+Some functions return <constant>null</constant> when no value can be returned
+or an error happened. Also <constant>null</constant> is used as an empty vector
+or matrix, or an empty reference.
+</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Verwendung von Variablen</title>
+
+ <para>Syntax: <programlisting>VariableName
+</programlisting> Beispiel: <screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen></para>
+
+ <para>
+To evaluate a variable by itself, just enter the name of the variable. This will return the value of the
variable. You can use a variable anywhere you would normally use a number or string. In addition, variables
are necessary when defining functions that take arguments (see <xref
linkend="genius-gel-functions-defining"/>).
+ </para>
+
+ <tip>
+ <title>Vervollständigung mit der Tabulatortaste</title>
+ <para>
+You can use Tab completion to get Genius to complete variable names for you. Try typing the first few
letters of the name and pressing <userinput>Tab</userinput>.
+ </para>
+ </tip>
+
+ <important>
+ <title>Groß-/Kleinschreibung für Variablennamen</title>
+ <para>Bei Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden. Das bedeutet, dass
die Variablennamen <varname>hello</varname>, <varname>HELLO</varname> und <varname>Hello</varname> als
unterschiedliche Variablen erkannt werden.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Setzen von Variablen</title>
+ <para>Syntax: <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Beispiel: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>
+To assign a value to a variable, use the <literal>=</literal> or <literal>:=</literal> operators. These
operators set the value of the variable and return the value you set, so you can do things like
+<programlisting>a = b = 5
+</programlisting>
+This will set <varname>b</varname> to 5 and then also set <varname>a</varname> to 5.
+ </para>
+
+ <para>
+The <literal>=</literal> and <literal>:=</literal> operators can both be used to set variables. The
difference between them is that the <literal>:=</literal> operator always acts as an assignment operator,
whereas the <literal>=</literal> operator may be interpreted as testing for equality when used in a context
where a Boolean expression is expected.
+ </para>
+
+ <para>
+ For more information about the scope of variables, that is when are what variables visible, see
<xref linkend="genius-gel-variables-global"/>.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Eingebaute Variablen</title>
+ <para>
+GEL has a number of built-in ‘variables’, such as
+<varname>e</varname>, <varname>pi</varname> or <varname>GoldenRatio</varname>. These are widely used
constants with a preset value, and
+they cannot be assigned new values.
+There are a number of other built-in variables.
+See <xref linkend="genius-gel-function-list-constants"/> for a full list. Note that <varname>i</varname> is
not by default
+the square root of negative one (the imaginary number), and is undefined to allow its use as a counter. If
you wish to write the imaginary number you need to
+use <userinput>1i</userinput>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Vorherige Ergebnisvariable</title>
+ <para>
+The <varname>Ans</varname> and <varname>ans</varname> variables can be used to get the result of the last
expression. For example, if you had performed some calculation, to add 389 to the result you could do:
+<programlisting>Ans+389
+</programlisting>
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Verwendung von Funktionen</title>
+
+ <para>
+Syntax:
+<programlisting>FunctionName(argument1, argument2, ...)
+</programlisting>
+Example:
+<programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting>
+
+To evaluate a function, enter the name of the function, followed by the arguments (if any) to the function
in parentheses. This will return the result of applying the function to its arguments. The number of
arguments to the function is, of course, different for each function.
+ </para>
+
+ <para>
+ There are many built-in functions, such as <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> and <link
linkend="gel-function-tan"><function>tan</function></link>. You can use the <link
linkend="gel-command-help"><function>help</function></link> built-in command to get a list of available
functions, or see <xref linkend="genius-gel-function-list"/> for a full listing.
+ </para>
+
+ <tip>
+ <title>Vervollständigung mit der Tabulatortaste</title>
+ <para>
+You can use Tab completion to get Genius to complete function names for you. Try typing the first few
letters of the name and pressing <userinput>Tab</userinput>.
+ </para>
+ </tip>
+
+ <important>
+ <title>Groß-/Kleinschreibung für Funktionsnamen</title>
+ <para>
+The names of functions are case sensitive. That means that functions named <function>dosomething</function>,
<function>DOSOMETHING</function> and <function>DoSomething</function> are all different functions.
+ </para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Definieren von Funktionen</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[function <identifier>(<comma separated arguments>) = <function body>
+<identifier> = (`() = <function body>)
+]]></programlisting>
+The <literal>`</literal> is the backquote character, and signifies an anonymous function. By setting it to a
variable name you effectively define a function.
+ </para>
+
+ <para>
+A function takes zero or more comma separated arguments, and returns the result of the function body.
Defining your own functions is primarily a matter of convenience; one possible use is to have sets of
functions defined in GEL files that Genius can load in order to make them available.
+Example:
+<programlisting>function addup(a,b,c) = a+b+c
+</programlisting>
+then <userinput>addup(1,4,9)</userinput> yields 14
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Variable Argument Lists</title>
+ <para>
+If you include <literal>...</literal> after the last argument name in the function declaration, then Genius
will allow any number of arguments to be passed in place of that argument. If no arguments were passed then
that argument will be set to <constant>null</constant>. Otherwise, it will be a horizontal vector containing
all the arguments. For example:
+<programlisting>function f(a,b...) = b
+</programlisting>
+Then <userinput>f(1,2,3)</userinput> yields <computeroutput>[2,3]</computeroutput>, while
<userinput>f(1)</userinput> yields a <constant>null</constant>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Übergabe von Funktionen an Funktionen</title>
+
+ <para>
+In Genius, it is possible to pass a function as an argument to another function. This can be done using
either ‘function nodes’ or anonymous functions.
+ </para>
+
+ <para>
+If you do not enter the parentheses after a function name, instead of being evaluated, the function will
instead be returned as a ‘function node’. The function node can then be passed to another function.
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting>
+ </para>
+ <para>
+To pass functions that are not defined,
+you can use an anonymous function (see <xref linkend="genius-gel-functions-defining"/>). That is, you want
to pass a function without giving it a name.
+Syntax:
+<programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting>
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting>
+This will return 5.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Operationen mit Funktionen</title>
+ <para>
+ Some functions allow arithmetic operations, and some single argument functions such as <link
linkend="gel-function-exp"><function>exp</function></link> or <link
linkend="gel-function-ln"><function>ln</function></link>, to operate on the function. For example,
+<programlisting>exp(sin*cos+4)
+</programlisting>
+will return a function that takes <varname>x</varname> and returns
<userinput>exp(sin(x)*cos(x)+4)</userinput>. It is functionally equivalent
+to typing
+<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting>
+
+This operation can be useful when quickly defining functions. For example to create a function called
<varname>f</varname>
+to perform the above operation, you can just type:
+<programlisting>f = exp(sin*cos+4)
+</programlisting>
+It can also be used in plotting. For example, to plot sin squared you can enter:
+<programlisting>LinePlot(sin^2)
+</programlisting>
+ </para>
+
+ <warning>
+ <para>
+Not all functions can be used in this way. For example, when you use a binary operation the functions must
take the same number of arguments.
+ </para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Trenner</title>
+ <para>
+ GEL is somewhat different from other languages in how it deals with multiple commands and
functions.
+ In GEL you must chain commands together with a separator operator.
+That is, if you want to type more than one expression you have to use
+the <literal>;</literal> operator in between the expressions. This is
+a way in which both expressions are evaluated and the result of the second one (or the last one
+if there is more than two expressions) is returned.
+Suppose you type the following:
+<programlisting>3 ; 5
+</programlisting>
+This expression will yield 5.
+ </para>
+ <para>
+This will require some parenthesizing to make it unambiguous sometimes,
+especially if the <literal>;</literal> is not the top most primitive. This slightly differs from
+other programming languages where the <literal>;</literal> is a terminator of statements, whereas
+in GEL it’s actually a binary operator. If you are familiar with pascal
+this should be second nature. However genius can let you pretend it is a
+terminator to some degree. If a <literal>;</literal> is found at the end of a parenthesis or a block,
+genius will append a null to it as if you would have written
+<userinput>;null</userinput>.
+This is useful in case you do not want to return a value from say a loop,
+or if you handle the return differently. Note that it will slightly slow down
+the code if it is executed too often as there is one more operator involved.
+ </para>
+ <para>
+ If you are typing expressions in a program you do not have to add a semicolon. In this case
+ genius will simply print the return value whenever it executes the expression. However, do
note that if you are defining a
+ function, the body of the function is a single expression.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Kommentare</title>
+ <para>
+ GEL is similar to other scripting languages in that <literal>#</literal> denotes
+ a comment, that is text that is not meant to be evaluated. Everything beyond the
+ pound sign till the end of line will just be ignored. For example,
+<programlisting># This is just a comment
+# every line in a comment must have its own pound sign
+# in the next line we set x to the value 123
+x=123;
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Modulare Auswertung</title>
+ <para>
+ Genius implements modular arithmetic.
+To use it you just add "mod <integer>" after
+the expression. Example:
+<userinput>2^(5!) * 3^(6!) mod 5</userinput>
+It could be possible to do modular arithmetic by computing with integers and then modding in the end with
+the <literal>%</literal> operator, which simply gives the remainder, but
+that may be time consuming if not impossible when working with larger numbers.
+For example, <userinput>10^(10^10) % 6</userinput> will simply not work (the exponent
+will be too large), while
+<userinput>10^(10^10) mod 6</userinput> is instantaneous. The first expression first tries to compute the
integer
+<userinput>10^(10^10)</userinput> and then find remainder after division by 6, while the second expression
evaluates
+everything modulo 6 to begin with.
+ </para>
+ <para>
+You can calculate the inverses of numbers mod some integer by just using
+rational numbers (of course the inverse has to exist).
+Examples:
+<programlisting>10^-1 mod 101
+1/10 mod 101</programlisting>
+You can also do modular evaluation with matrices including taking inverses,
+powers and dividing.
+Example:
+<programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting>
+This should yield the identity matrix as B will be the inverse of A mod 5.
+ </para>
+ <para>
+Some functions such as
+<link linkend="gel-function-sqrt"><function>sqrt</function></link> or
+<link linkend="gel-function-log"><function>log</function></link>
+work in a different way when in modulo mode. These will then work like their
+discrete versions working within the ring of integers you selected. For
+example:
+<programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting>
+ <function>sqrt</function> will actually return all the possible square
+ roots.
+ </para>
+ <para>
+ Do not chain mod operators, simply place it at the end of the computation, all computations in
the expression on the left
+ will be carried out in mod arithmetic. If you place a mod inside
+ a mod, you will get unexpected results. If you simply want to
+ mod a single number and control exactly when remainders are
+ taken, best to use the <literal>%</literal> operator. When you
+ need to chain several expressions in modular arithmetic with
+ different divisors, it may be best to just split up the expression into several and use
+ temporary variables to avoid a mod inside a mod.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Liste der GEL-Operatoren</title>
+
+ <para>
+ Everything in GEL is really just an expression. Expressions are stringed together with
+ different operators. As we have seen, even the separator is simply a binary operator
+ in GEL. Here is a list of the operators in GEL.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>
+ The separator, just evaluates both
+ <varname>a</varname> and
+ <varname>b</varname>,
+ but returns only the result of
+ <varname>b</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>
+ The assignment operator. This assigns <varname>b</varname> to
+<varname>a</varname> (<varname>a</varname> must be a valid <link linkend="genius-gel-lvalues">lvalue</link>)
(note however that this operator
+may be translated to <literal>==</literal> if used in a place where boolean
+expression is expected)
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>
+ The assignment operator. Assigns <varname>b</varname> to
+<varname>a</varname> (<varname>a</varname> must be a valid <link
linkend="genius-gel-lvalues">lvalue</link>). This is
+different from <literal>=</literal> because it never gets translated to a
+<literal>==</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>
+ Absolute value.
+ In case the expression is a complex number the result will be the modulus
+(distance from the origin). For example:
+<userinput>|3 * e^(1i*pi)|</userinput>
+returns 3.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>
+ Exponentiation, raises <varname>a</varname> to the <varname>b</varname>th power.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>
+ Element by element exponentiation. Raise each element of a matrix
+ <varname>a</varname> to the <varname>b</varname>th power. Or if
+ <varname>b</varname> is a matrix of the same size as
+ <varname>a</varname>, then do the operation element by element.
+ If <varname>a</varname> is a number and <varname>b</varname> is a
+ matrix then it creates matrix of the same size as
+ <varname>b</varname> with <varname>a</varname> raised to all the
+ different powers in <varname>b</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>
+ Addition. Adds two numbers, matrices, functions or strings. If
+ you add a string to anything the result will just be a string. If one is
+ a square matrix and the other a number, then the number is multiplied by
+ the identity matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>
+ Subtraction. Subtract two numbers, matrices or functions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>
+ Multiplication. This is the normal matrix multiplication.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>
+ Element by element multiplication if <varname>a</varname> and
+ <varname>b</varname> are matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>
+ Division. When <varname>a</varname> and <varname>b</varname> are just numbers
+ this is the normal division. When they are matrices, then this is
+ equivalent to <userinput>a*b^-1</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>
+ Element by element division. Same as <userinput>a/b</userinput> for
+ numbers, but operates element by element on matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>
+ Back division. That is this is the same as <userinput>b/a</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>
+ Element by element back division.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>
+ The mod operator. This does not turn on the <link
linkend="genius-gel-modular-evaluation">modular mode</link>, but
+ just returns the remainder of integer division
+ <userinput>a/b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>
+ Element by element mod operator. Returns the remainder
+ after element by element integer division
+ <userinput>a./b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>
+ Modular evaluation operator. The expression <varname>a</varname>
+ is evaluated modulo <varname>b</varname>. See <xref linkend="genius-gel-modular-evaluation"/>.
+ Some functions and operators behave differently modulo an integer.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>
+ Factorial operator. This is like
+ <userinput>1*...*(n-2)*(n-1)*n</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>
+ Double factorial operator. This is like
+ <userinput>1*...*(n-4)*(n-2)*n</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>
+ Equality operator.
+ Returns <constant>true</constant> or <constant>false</constant>
+ depending on <varname>a</varname> and <varname>b</varname> being equal or not.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>
+ Inequality operator,
+ returns <constant>true</constant> if <varname>a</varname> does not
+ equal <varname>b</varname> else returns <constant>false</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>
+ Alternative inequality operator,
+ returns <constant>true</constant> if <varname>a</varname> does not
+ equal <varname>b</varname> else returns <constant>false</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>
+ Less than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a <= b <= c</userinput> (can
+ also be combined with the less than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>
+ Greater than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a >= b >= c</userinput>
+ (and they can also be combined with the greater than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>
+ Less than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a < b < c</userinput>
+ (they can also be combined with the less than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>
+ Greater than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a > b > c</userinput>
+ (they can also be combined with the greater than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>
+ Comparison operator. If <varname>a</varname> is equal to
+ <varname>b</varname> it returns 0, if <varname>a</varname> is less
+ than <varname>b</varname> it returns -1 and if
+ <varname>a</varname> is greater than <varname>b</varname> it
+ returns 1.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>
+ Logical and. Returns true if both
+ <varname>a</varname> and <varname>b</varname> are true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>
+ Logical or.
+ Returns true if either
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>
+ Logical xor.
+ Returns true if exactly one of
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>
+ Logical not. Returns the logical negation of <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>
+ Negation operator. Returns the negative of a number or a matrix (works element-wise on a
matrix).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>
+ Variable referencing (to pass a reference to a variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Variable dereferencing (to access a referenced variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>
+ Matrix conjugate transpose. That is, rows and columns get swapped and we take complex
conjugate of all entries. That is
+ if the i,j element of <varname>a</varname> is x+iy, then the j,i element of
<userinput>a'</userinput> is x-iy.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>
+ Matrix transpose, does not conjugate the entries. That is,
+ the i,j element of <varname>a</varname> becomes the j,i element of <userinput>a.'</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>
+ Get element of a matrix in row <varname>b</varname> and column
+ <varname>c</varname>. If <varname>b</varname>,
+ <varname>c</varname> are vectors, then this gets the corresponding
+ rows, columns or submatrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>
+ Get row of a matrix (or multiple rows if <varname>b</varname> is a vector).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>Gleiches wie oben.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>
+ Get column of a matrix (or columns if <varname>c</varname> is a
+ vector).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>Gleiches wie oben.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>
+ Get an element from a matrix treating it as a vector. This will
+ traverse the matrix row-wise.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>
+ Build a vector from <varname>a</varname> to <varname>b</varname> (or specify a row, column
region for the <literal>@</literal> operator). For example to get rows 2 to 4 of matrix <varname>A</varname>
we could do
+ <programlisting>A@(2:4,)
+ </programlisting>
+ as <userinput>2:4</userinput> will return a vector
+ <userinput>[2,3,4]</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>
+ Build a vector from <varname>a</varname> to <varname>c</varname>
+ with <varname>b</varname> as a step. That is for example
+ <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting>
+ </para>
+ <para>
+ When the numbers involved are floating point numbers, for example
+ <userinput>1.0:0.4:3.0</userinput>, the output is what is expected
+ even though adding 0.4 to 1.0 five times is actually just slightly
+ more than 3.0 due to the way that floating point numbers are
+ stored in base 2 (there is no 0.4, the actual number stored is
+ just ever so slightly bigger). The way this is handled is the
+ same as in the for, sum, and prod loops. If the end is within
+ <userinput>2^-20</userinput> times the step size of the endpoint,
+ the endpoint is used and we assume there were roundoff errors.
+ This is not perfect, but it handles the majority of the cases.
+ This check is done only from version 1.0.18 onwards, so execution
+ of your code may differ on older versions. If you want to avoid
+ dealing with this issue, use actual rational numbers, possibly
+ using the <function>float</function> if you wish to get floating
+ point numbers in the end. For example
+ <userinput>1:2/5:3</userinput> does the right thing and
+ <userinput>float(1:2/5:3)</userinput> even gives you floating
+ point numbers and is ever so slightly more precise than
+ <userinput>1.0:0.4:3.0</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>
+ Make <varname>a</varname> into an imaginary number (multiply <varname>a</varname> by the
+ imaginary). Normally the imaginary number <varname>i</varname> is
+ written as <userinput>1i</userinput>. So the above is equal to
+ <programlisting>(a)*1i
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>
+ Quote an identifier so that it doesn't get evaluated. Or
+ quote a matrix so that it doesn't get expanded.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>
+ Swap value of <varname>a</varname> with the value
+ of <varname>b</varname>. Currently does not operate
+ on ranges of matrix elements.
+ It returns <constant>null</constant>.
+ Available from version 1.0.13.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>
+ Increment the variable <varname>a</varname> by 1. If
+ <varname>a</varname> is a matrix, then increment each element.
+ This is equivalent to <userinput>a=a+1</userinput>, but
+ it is somewhat faster. It returns <constant>null</constant>.
+ Available from version 1.0.13.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>
+ Increment the variable <varname>a</varname> by <varname>b</varname>. If
+ <varname>a</varname> is a matrix, then increment each element.
+ This is equivalent to <userinput>a=a+b</userinput>, but
+ it is somewhat faster. It returns <constant>null</constant>.
+ Available from version 1.0.13.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>
+The @() operator makes the : operator most useful. With this you can specify regions of a matrix. So that
a@(2:4,6) is the rows 2,3,4 of the column 6. Or a@(,1:2) will get you the first two columns of a matrix. You
can also assign to the @() operator, as long as the right value is a matrix that matches the region in size,
or if it is any other type of value.
+</para>
+</note>
+
+<note>
+<para>
+The comparison operators (except for the <=> operator, which behaves normally), are not strictly
binary operators, they can in fact be grouped in the normal mathematical way, e.g.: (1<x<=y<5) is a
legal boolean expression and means just what it should, that is (1<x and x≤y and y<5)
+</para>
+</note>
+
+<note>
+<para>
+The unitary minus operates in a different fashion depending on where it
+appears. If it appears before a number it binds very closely, if it appears in
+front of an expression it binds less than the power and factorial operators.
+So for example <userinput>-1^k</userinput> is really <userinput>(-1)^k</userinput>,
+but <userinput>-foo(1)^k</userinput> is really <userinput>-(foo(1)^k)</userinput>. So
+be careful how you use it and if in doubt, add parentheses.
+</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Programmierung mit GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Bedingungen</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting>
+If <literal>else</literal> is omitted, then if the <literal>expression1</literal> yields
<constant>false</constant> or 0, <literal>NULL</literal> is returned.
+ </para>
+ <para>
+Examples:
+<programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting>
+Note that <literal>=</literal> will be translated to <literal>==</literal> if used inside the expression for
<literal>if</literal>, so
+<programlisting>if a=5 then a=a-1
+</programlisting>
+will be interpreted as:
+<programlisting>if a==5 then a:=a-1
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Schleifen</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>While-Schleifen</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting>
+
+ These are similar to other languages. However, as in GEL it is simply an expression that must have
some return value, these
+ constructs will simply return the result of the last iteration or <literal>NULL</literal> if no
iteration was done. In the boolean expression, <literal>=</literal> is translated into <literal>==</literal>
just as for the <literal>if</literal> statement.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>For-Schleifen</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting>
+
+Loop with identifier being set to all values from <literal><from></literal> to
<literal><to></literal>, optionally using an increment other than 1. These are faster, nicer and more
compact than the normal loops such as above, but less flexible. The identifier must be an identifier and
can't be a dereference. The value of identifier is the last value of identifier, or
<literal><from></literal> if body was never evaluated. The variable is guaranteed to be initialized
after a loop, so you can safely use it. Also the <literal><from></literal>,
<literal><to></literal> and <literal><increment></literal> must be non complex values. The
<literal><to></literal> is not guaranteed to be hit, but will never be overshot, for example the
following prints out odd numbers from 1 to 19:
+<programlisting>for i = 1 to 20 by 2 do print(i)
+</programlisting>
+ </para>
+ <para>
+ When one of the values is a floating point number, then the
+ final check is done to within 2^-20 of the step size. That is,
+ even if we overshoot by 2^-20 times the "by" above, we still execute the last
+ iteration. This way
+<programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting>
+does the expected even though adding 0.1 ten times becomes just slightly more than 1.0 due to the way that
floating point numbers
+are stored in base 2 (there is no 0.1, the actual number stored is just ever so slightly bigger). This is
not perfect but it handles
+the majority of the cases. If you want to avoid dealing with this issue, use actual rational numbers for
example:
+<programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting>
+ This check is done only from version 1.0.16 onwards, so execution of your code may differ on
older versions.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Foreach-Schleifen</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
+
+ For each element in the matrix, going row by row from left to right we execute the
body
+ with the identifier set to the current element. To
+print numbers 1,2,3 and 4 in this order you could do:
+<programlisting>for n in [1,2:3,4] do print(n)
+</programlisting>
+If you wish to run through the rows and columns of a matrix, you can use
+the RowsOf and ColumnsOf functions, which return a vector of the rows or
+columns of the matrix. So,
+<programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
+</programlisting>
+will print out [1,2] and then [3,4].
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Break and Continue</title>
+ <para>
+You can also use the <literal>break</literal> and <literal>continue</literal> commands in loops. The
continue <literal>continue</literal> command will restart the current loop at its next iteration, while the
<literal>break</literal> command exits the current loop.
+<programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting>
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Summen und Produkte</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting>
+
+If you substitute <literal>for</literal> with <literal>sum</literal> or <literal>prod</literal>, then you
will get a sum or a product instead of a <literal>for</literal> loop. Instead of returning the last value,
these will return the sum or the product of the values respectively.
+ </para>
+ <para>
+If no body is executed (for example <userinput>sum i=1 to 0 do ...</userinput>) then <literal>sum</literal>
returns 0 and <literal>prod</literal> returns 1 as is the standard convention.
+ </para>
+ <para>
+ For floating point numbers the same roundoff error protection is done as in the for loop.
+ See <xref linkend="genius-gel-loops-for"/>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Vergleichsoperatoren</title>
+ <para>
+ The following standard comparison operators are supported in GEL and have the obvious meaning:
+ <literal>==</literal>, <literal>>=</literal>,
+ <literal><=</literal>, <literal>!=</literal>,
+ <literal><></literal>, <literal><</literal>,
+ <literal>></literal>. They return <constant>true</constant> or
+ <constant>false</constant>.
+ The operators
+ <literal>!=</literal> and <literal><></literal> are the same
+ thing and mean "is not equal to".
+ GEL also supports the operator
+ <literal><=></literal>, which returns -1 if left side is
+ smaller, 0 if both sides are equal, 1 if left side is larger.
+ </para>
+
+ <para>
+ Normally <literal>=</literal> is translated to <literal>==</literal> if
+ it happens to be somewhere where GEL is expecting a condition such as
+ in the if condition. For example
+ <programlisting>if a=b then c
+if a==b then c
+</programlisting>
+ are the same thing in GEL. However you should really use
+ <literal>==</literal> or <literal>:=</literal> when you want to compare
+ or assign respectively if you want your code to be easy to read and
+ to avoid mistakes.
+ </para>
+
+ <para>
+ All the comparison operators (except for the
+ <literal><=></literal> operator, which
+ behaves normally), are not strictly binary operators, they can in fact
+ be grouped in the normal mathematical way, e.g.:
+ (<literal>1<x<=y<5</literal>) is
+ a legal boolean expression and means just what it should, that is
+ (1<x and x≤y and y<5)
+ </para>
+ <para>
+ To build up logical expressions use the words <literal>not</literal>,
+ <literal>and</literal>, <literal>or</literal>, <literal>xor</literal>.
+ The operators <literal>or</literal> and <literal>and</literal> are
+special beasts as they evaluate their arguments one by one, so the usual trick
+for conditional evaluation works here as well. For example, <literal>1 or a=1</literal> will not set
+<literal>a=1</literal> since the first argument was true.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Globale Variablen und Variablenbereiche</title>
+ <para>
+ GEL is a
+ <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">
+ dynamically scoped language</ulink>. We will explain what this
+ means below. That is, normal variables and functions are dynamically
+ scoped. The exception are
+ <link linkend="genius-gel-parameters">parameter variables</link>,
+ which are always global.
+ </para>
+ <para>
+ Like most programming languages, GEL has different types
+ of variables. Normally when a variable is defined in a function,
+ it is visible from that function and from all functions that are
+ called (all higher contexts). For example, suppose a function
+ <function>f</function> defines a variable <varname>a</varname>
+ and then calls function <function>g</function>. Then
+ function <function>g</function> can reference
+ <varname>a</varname>. But once <function>f</function> returns,
+ the variable <varname>a</varname> goes out of scope.
+ For example, the following code will print out 5.
+ The function <function>g</function> cannot be called on the
+ top level (outside <function>f</function> as <varname>a</varname>
+ will not be defined).
+<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting>
+ </para>
+ <para>
+ If you define a variable inside a function it will override
+ any variables defined in calling functions. For example,
+ we modify the above code and write:
+<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting>
+ This code will still print out 5. But if you call
+ <function>g</function> outside of <function>f</function> then
+ you will get a printout of 10. Note that
+ setting <varname>a</varname>
+ to 5 inside <function>f</function> does not change
+ the value of <varname>a</varname> at the top (global) level,
+ so if you now check the value of <varname>a</varname> it will
+ still be 10.
+ </para>
+ <para>
+ Function arguments are exactly like variables defined inside
+ the function, except that they are initialized with the value
+ that was passed to the function. Other than this point, they are
+ treated just like all other variables defined inside the
+ function.
+ </para>
+ <para>
+ Functions are treated exactly like variables. Hence you can
+ locally redefine functions. Normally (on the top level) you
+ cannot redefine protected variables and functions. But locally
+ you can do this. Consider the following session:
+<screen><prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen>
+ </para>
+ <para>
+ Functions and variables defined at the top level are
+ considered global. They are visible from anywhere. As we
+ said the following function <function>f</function>
+ will not change the value of <varname>a</varname> to 5.
+<programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting>
+ Sometimes, however, it is necessary to set
+a global variable from inside a function. When this behavior is needed,
+use the
+<link linkend="gel-function-set"><function>set</function></link> function. Passing a string or a quoted
identifier to
+this function sets the variable globally (on the top level).
+For example, to set
+<varname>a</varname> to the value 3 you could call:
+<programlisting>set(`a,3)
+</programlisting>
+or:
+<programlisting>set("a",3)
+</programlisting>
+ </para>
+ <para>
+ The <function>set</function> function always sets the toplevel
+ global. There is no way to set a local variable in some function
+ from a subroutine. If this is required, must use passing by
+ reference.
+ </para>
+ <para>
+ See also the
+ <link linkend="gel-function-SetElement"><function>SetElement</function></link> and
+ <link linkend="gel-function-SetVElement"><function>SetVElement</function></link> functions.
+ </para>
+ <para>
+ So to recap in a more technical language: Genius operates with
+ different numbered contexts. The top level is the context 0
+ (zero). Whenever a function is entered, the context is raised,
+ and when the function returns the context is lowered. A function
+ or a variable is always visible from all higher numbered contexts.
+ When a variable was defined in a lower numbered context, then
+ setting this variable has the effect of creating a new local
+ variable in the current context number and this variable
+ will now be visible from all higher numbered contexts.
+ </para>
+ <para>
+ There are also true local variables that are not seen from
+ anywhere but the current context. Also when returning functions
+ by value it may reference variables not visible from higher context
+ and this may be a problem. See the sections
+ <link linkend="genius-gel-true-local-variables">True
+ Local Variables</link> and
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Parametervariablen</title>
+ <para>
+ As we said before, there exist special variables called parameters
+ that exist in all scopes. To declare a parameter called
+ <varname>foo</varname> with the initial value 1, we write
+<programlisting><![CDATA[parameter foo = 1
+]]></programlisting>
+ From then on, <varname>foo</varname> is a strictly global variable.
+ Setting <varname>foo</varname> inside any function will modify the
+ variable in all contexts, that is, functions do not have a private
+ copy of parameters.
+ </para>
+ <para>
+ When you undefine a parameter using the
+ <link linkend="gel-function-undefine">
+ <function>undefine</function></link> function, it stops being
+ a parameter.
+ </para>
+ <para>
+ Some parameters are built-in and modify the behavior of genius.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Rückgabewerte</title>
+ <para>
+ Normally a function is one or several expressions separated by a
+semicolon, and the value of the last expression is returned. This is fine for
+simple functions, but
+sometimes you do not want a function to return the last thing calculated. You may, for example, want to
return from a middle of a function. In this case, you can use the <literal>return</literal> keyword.
<literal>return</literal> takes one argument, which is the value to be returned.
+ </para>
+ <para>Beispiel: <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>Referenzen</title>
+ <para>
+ It may be necessary for some functions to return more than one value.
+ This may be accomplished by returning a vector of values, but many
+ times it is convenient to use passing a reference to a variable.
+ You pass a reference to a variable to a function, and the function
+ will set the variable for you using a dereference. You do not have
+ to use references only for this purpose, but this is their main use.
+ </para>
+ <para>
+ When using functions that return values through references
+ in the argument list, just pass the variable name with an ampersand.
+ For example the following code will compute an eigenvalue of a matrix
+ <varname>A</varname> with initial eigenvector guess
+ <varname>x</varname>, and store the computed eigenvector
+ into the variable named <varname>v</varname>:
+<programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
+]]></programlisting>
+ </para>
+ <para>
+The details of how references work and the syntax is similar to the C language.
+The operator
+<literal>&</literal> references a variable
+and <literal>*</literal> dereferences a variable. Both can only be applied to an identifier,
+so <literal>**a</literal> is not a legal expression in GEL.
+ </para>
+ <para>
+References are best explained by an example:
+<programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting>
+now <varname>a</varname> contains 2. You can also reference functions:
+<programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting>
+gives us 4.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Lvalues (linke Werte)</title>
+ <para>
+ An lvalue is the left hand side of an assignment. In other words, an
+ lvalue is what you assign something to. Valid lvalues are:
+<variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>
+ Identifier. Here we would be setting the variable of name
+ <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Dereference of an identifier. This will set whatever variable
+ <varname>a</varname> points to.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<region>)</userinput></term>
+ <listitem>
+ <para>
+ A region of a matrix. Here the region is specified normally as with
+ the regular @() operator, and can be a single entry, or an entire
+ region of the matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+ </para>
+ <para>
+Examples:
+<programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting>
+Note that both <literal>:=</literal> and <literal>=</literal> can be used
+interchangeably. Except if the assignment appears in a condition.
+It is thus always safer to just use
+<literal>:=</literal> when you mean assignment, and <literal>==</literal>
+when you mean comparison.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Fortgeschrittene Programmierung mit GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Fehlerbehandlung</title>
+ <para>
+If you detect an error in your function, you can bail out of it. For normal
+errors, such as wrong types of arguments, you can fail to compute the function
+by adding the statement <literal>bailout</literal>. If something went
+really wrong and you want to completely kill the current computation, you can
+use <literal>exception</literal>.
+ </para>
+ <para>
+ For example if you want to check for arguments in your function. You
+could use the following code.
+<programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M not a matrix!");
+ bailout
+ );
+ ...
+)
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Übergeordnete Syntax</title>
+ <para>
+ The syntax is slightly different if you enter statements on
+ the top level versus when they are inside parentheses or
+ inside functions. On the top level, enter acts the same as if
+ you press return on the command line. Therefore think of programs
+ as just a sequence of lines as if they were entered on the command line.
+ In particular, you do not need to enter the separator at the end of the
+ line (unless it is of course part of several statements inside
+ parentheses). When a statement does not end with a separator on the
+ top level, the result is printed after being executed.
+ </para>
+ <para>
+ For example,
+ <programlisting>function f(x)=x^2
+f(3)
+</programlisting>
+ will print first the result of setting a function (a representation of
+ the function, in this case <computeroutput>(`(x)=(x^2))</computeroutput>)
+ and then the expected 9. To avoid this, enter a separator
+ after the function definition.
+ <programlisting>function f(x)=x^2;
+f(3)
+</programlisting>
+ If you need to put a separator into your function then you have to surround with
+ parenthesis. For example:
+<programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting>
+ </para>
+ <para>
+ The following code will produce an error when entered on the top
+ level of a program, while it will work just fine in a function.
+<programlisting>if Something() then
+ DoSomething()
+else
+ DoSomethingElse()
+</programlisting>
+ </para>
+ <para>
+ The problem is that after <application>Genius Mathematics Tool</application> sees the end of line
after the
+ second line, it will decide that we have whole statement and
+ it will execute it. After the execution is done, <application>Genius Mathematics Tool</application>
will
+ go on to the next
+ line, it will see <literal>else</literal>, and it will produce
+ a parsing error. To fix this, use parentheses. <application>Genius Mathematics Tool</application>
will not
+ be satisfied until it has found that all parentheses are closed.
+<programlisting>if Something() then (
+ DoSomething()
+) else (
+ DoSomethingElse()
+)
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Funktionen als Rückgabe</title>
+ <para>
+ It is possible to return functions as value. This way you can
+ build functions that construct special purpose functions according
+ to some parameters. The tricky bit is what variables does the
+ function see. The way this works in GEL is that when a function
+ returns another function, all identifiers referenced in the
+ function body that went out of scope
+ are prepended a private dictionary of the returned
+ function. So the function will see all variables that were in
+ scope
+ when it was defined. For example, we define a function that
+ returns a function that adds 5 to its argument.
+<programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting>
+ Notice that the function adds <varname>k</varname> to
+ <varname>x</varname>. You could use this as follows.
+<programlisting>g = f();
+g(5)
+</programlisting>
+ And <userinput>g(5)</userinput> should return 10.
+ </para>
+ <para>
+ One thing to note is that the value of <varname>k</varname>
+ that is used is the one that's in effect when the
+ <function>f</function> returns. For example:
+<programlisting>function f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting>
+ will return a function that adds 10 to its argument rather than
+ 5. This is because the extra dictionary is created only when
+ the context
+ in which the function was defined ends, which is when the function
+ <function>f</function> returns. This is consistent with how you
+ would expect the function <function>r</function> to work inside
+ the function <function>f</function> according to the rules of
+ scope of variables in GEL. Only those variables are added to the
+ extra dictionary that are in the context that just ended and
+ no longer exists. Variables
+ used in the function that are in still valid contexts will work
+ as usual, using the current value of the variable.
+ The only difference is with global variables and functions.
+ All identifiers that referenced global variables at time of
+ the function definition are not added to the private dictionary.
+ This is to avoid much unnecessary work when returning functions
+ and would rarely be a problem. For example, suppose that you
+ delete the "k=5" from the function <function>f</function>,
+ and at the top level you define <varname>k</varname> to be
+ say 5. Then when you run <function>f</function>, the function
+ <function>r</function> will not put <varname>k</varname> into
+ the private dictionary because it was global (toplevel)
+ at the time of definition of <function>r</function>.
+ </para>
+ <para>
+ Sometimes it is better to have more control over how variables
+ are copied into the private dictionary. Since version 1.0.7,
+ you can specify which
+ variables are copied into the private dictionary by putting
+ extra square brackets after the arguments with the list of
+ variables to be copied separated by commas.
+ If you do this, then variables are
+ copied into the private dictionary at time of the function
+ definition, and the private dictionary is not touched afterwards.
+ For example
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting>
+ will return a function that when called will add 5 to its
+ argument. The local copy of <varname>k</varname> was created
+ when the function was defined.
+ </para>
+ <para>
+ When you want the function to not have any private dictionary
+ then put empty square brackets after the argument list. Then
+ no private dictionary will be created at all. Doing this is
+ good to increase efficiency when a private dictionary is not
+ needed or when you want the function to lookup all variables
+ as it sees them when called. For example suppose you want
+ the function returned from <function>f</function> to see
+ the value of <varname>k</varname> from the toplevel despite
+ there being a local variable of the same name during definition.
+ So the code
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting>
+ will return 20 and not 15, which would happen if
+ <varname>k</varname> with a value of 5 was added to the private
+ dictionary.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>Echte lokale Variablen</title>
+ <para>
+ When passing functions into other functions, the normal scoping of
+ variables might be undesired. For example:
+<programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting>
+ you probably want the function <function>r</function>
+ when passed as <function>g</function> into <function>f</function>
+ to see <varname>k</varname> as 10 rather than 5, so that
+ the code returns 11 and not 6. However, as written, the function
+ when executed will see the <varname>k</varname> that is
+ equal to 5. There are two ways to solve this. One would be
+ to have <function>r</function> get <varname>k</varname> in a
+ private dictionary using the square bracket notation section
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ <para>
+ But there is another solution. Since version 1.0.7 there are
+ true local variables. These are variables that are visible only
+ from the current context and not from any called functions.
+ We could define <varname>k</varname> as a local variable in the
+ function <function>f</function>. To do this add a
+ <command>local</command> statement as the first statement in the
+ function (it must always be the first statement in the function).
+ You can also make any arguments be local variables as well.
+ That is,
+<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ Then the code will work as expected and prints out 11.
+ Note that the <command>local</command> statement initializes
+ all the referenced variables (except for function arguments) to
+ a <constant>null</constant>.
+ </para>
+ <para>
+ If all variables are to be created as locals you can just pass an
+ asterisk instead of a list of variables. In this case the variables
+ will not be initialized until they are actually set of course.
+ So the following definition of <function>f</function>
+ will also work:
+<programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ </para>
+ <para>
+ It is good practice that all functions that take other functions
+ as arguments use local variables. This way the passed function
+ does not see implementation details and get confused.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>GEL Startprozedur</title>
+ <para>
+First the program looks for the installed library file (the compiled version <filename>lib.cgel</filename>)
in the installed directory, then it looks into the current directory, and then it tries to load an uncompiled
file called
+<filename>~/.geniusinit</filename>.
+ </para>
+ <para>
+If you ever change the library in its installed place, you’ll have to
+first compile it with <command>genius --compile loader.gel > lib.cgel</command>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Laden von Programmen</title>
+ <para>
+Sometimes you have a larger program you wrote into a file and want to read that file into
<application>Genius Mathematics Tool</application>. In these situations, you have two options. You can keep
the functions you use most inside the <filename>~/.geniusinit</filename> file. Or if you want to load up a
file in a middle of a session (or from within another file), you can type <command>load <list of
filenames></command> at the prompt. This has to be done on the top level and not inside any function or
whatnot, and it cannot be part of any expression. It also has a slightly different syntax than the rest of
genius, more similar to a shell. You can enter the file in quotes. If you use the '' quotes, you will get
exactly the string that you typed, if you use the "" quotes, special characters will be unescaped as they are
for strings. Example:
+<programlisting>load program1.gel program2.gel
+load "Weird File Name With SPACES.gel"
+</programlisting>
+There are also <command>cd</command>, <command>pwd</command> and <command>ls</command> commands built in.
<command>cd</command> will take one argument, <command>ls</command> will take an argument that is like the
glob in the UNIX shell (i.e., you can use wildcards). <command>pwd</command> takes no arguments. For example:
+<programlisting>cd directory_with_gel_programs
+ls *.gel
+</programlisting>
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Matrizen in GEL</title>
+
+ <para>
+ Genius has support for vectors and matrices and possesses a sizable library of
+ matrix manipulation and linear algebra functions.
+ </para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Matrizen eingeben</title>
+ <para>
+To enter matrices, you can use one of the following two syntaxes. You can either enter
+the matrix on one line, separating values by commas and rows by semicolons. Or you
+can enter each row on one line, separating
+values by commas.
+You can also just combine the two methods.
+So to enter a 3x3 matrix
+of numbers 1-9 you could do
+<programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting>
+or
+<programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting>
+Do not use both ';' and return at once on the same line though.
+ </para>
+
+ <para>
+You can also use the matrix expansion functionality to enter matrices.
+For example you can do:
+<programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting>
+and you should get
+<programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting>
+similarly you can build matrices out of vectors and other stuff like that.
+ </para>
+
+ <para>
+Another thing is that non-specified spots are initialized to 0, so
+<programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting>
+will end up being
+<programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting>
+ </para>
+
+ <para>
+ When matrices are evaluated, they are evaluated and traversed row-wise. This is just
+ like the <literal>M@(j)</literal> operator, which traverses the matrix row-wise.
+ </para>
+
+ <note>
+ <para>
+Be careful about using returns for expressions inside the
+<literal>[ ]</literal> brackets, as they have a slightly different meaning
+there. You will start a new row.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Operatoren für konjugierte Transposition und Transposition</title>
+ <para>
+You can conjugate transpose a matrix by using the <literal>'</literal> operator. That is
+the entry in the
+<varname>i</varname>th column and the <varname>j</varname>th row will be
+the complex conjugate of the entry in the
+<varname>j</varname>th column and the <varname>i</varname>th row of the original matrix.
+ For example:
+<programlisting>[1,2,3]*[4,5,6]'
+</programlisting>
+We transpose the second vector to make matrix multiplication possible.
+If you just want to transpose a matrix without conjugating it, you would
+use the <literal>.'</literal> operator. For example:
+<programlisting>[1,2,3]*[4,5,6i].'
+</programlisting>
+ </para>
+ <para>
+ Note that normal transpose, that is the <literal>.'</literal> operator, is much faster
+ and will not create a new copy of the matrix in memory. The conjugate transpose does
+ create a new copy unfortunately.
+ It is recommended to always use the <literal>.'</literal> operator when working with real
+ matrices and vectors.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Lineare Algebra</title>
+ <para>
+ Genius implements many useful linear algebra and matrix manipulation
+routines. See the <link linkend="genius-gel-function-list-linear-algebra">Linear Algebra</link> and
+<link linkend="genius-gel-function-list-matrix">Matrix Manipulation</link>
+sections of the GEL function listing.
+ </para>
+ <para>
+ The linear algebra routines implemented in GEL do not currently come
+from a well tested numerical package, and thus should not be used for critical
+numerical computation. On the other hand, Genius implements very well many
+linear algebra operations with rational and integer coefficients. These are
+inherently exact and in fact will give you much better results than common
+double precision routines for linear algebra.
+ </para>
+ <para>
+ For example, it is pointless to compute the rank and nullspace of a
+floating point matrix since for all practical purposes, we need to consider the
+matrix as having some slight errors. You are likely to get a different result
+than you expect. The problem is that under a small perturbation every matrix
+is of full rank and invertible. If the matrix however is of rational numbers,
+then the rank and nullspace are always exact.
+ </para>
+ <para>
+ In general when Genius computes the basis of a certain vectorspace
+ (for example with the <link linkend="gel-function-NullSpace"><function>NullSpace</function></link>)
it will give the basis as
+a matrix, in which the columns are the vectors of the basis. That is, when
+Genius talks of a linear subspace it means a matrix whose column space is
+the given linear subspace.
+ </para>
+ <para>
+ It should be noted that Genius can remember certain properties of a
+matrix. For example, it will remember that a matrix is in row reduced form.
+If many calls are made to functions that internally use row reduced form of
+the matrix, we can just row reduce the matrix beforehand once. Successive
+calls to <link linkend="gel-function-rref"><function>rref</function></link> will be very fast.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Polynome in GEL</title>
+
+ <para>
+ Currently Genius can handle polynomials of one variable written out
+ as vectors, and do some basic operations with these. It is planned to
+ expand this support further.
+ </para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Verwendung von Polynomen</title>
+ <para>
+Currently
+polynomials in one variable are just horizontal vectors with value only nodes.
+The power of the term is the position in the vector, with the first position
+being 0. So,
+<programlisting>[1,2,3]
+</programlisting>
+translates to a polynomial of
+<programlisting>1 + 2*x + 3*x^2
+</programlisting>
+ </para>
+ <para>
+You can add, subtract and multiply polynomials using the
+<link linkend="gel-function-AddPoly"><function>AddPoly</function></link>,
+<link linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link>, and
+<link linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link> functions respectively.
+You can print a polynomial using the
+<link linkend="gel-function-PolyToString"><function>PolyToString</function></link>
+function.
+For example,
+<programlisting>PolyToString([1,2,3],"y")
+</programlisting>
+gives
+<programlisting>3*y^2 + 2*y + 1
+</programlisting>
+You can also get a function representation of the polynomial so that you can
+evaluate it. This is done by using
+<link linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>,
+which
+returns an anonymous function.
+<programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting>
+ </para>
+ <para>
+ It is also possible to find roots of polynomials of degrees 1 through 4 by using the
+function
+<link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>,
+which calls the appropriate formula function. Higher degree polynomials must be converted to
+functions and solved
+numerically using a function such as
+<link linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>,
+<link linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>,
+<link linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link>, or
+<link linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.
+ </para>
+ <para>
+See <xref linkend="genius-gel-function-list-polynomials"/> in the function list
+for the rest of functions acting on polynomials.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Mengenlehre in GEL</title>
+
+ <para>
+ Genius has some basic set theoretic functionality built in. Currently a set is
+ just a vector (or a matrix). Every distinct object is treated as a different element.
+ </para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Mengen verwenden</title>
+ <para>
+ Just like vectors, objects
+ in sets can include numbers, strings, <constant>null</constant>, matrices and vectors. It is
+ planned in the future to have a dedicated type for sets, rather than using vectors.
+ Note that floating point numbers are distinct from integers, even if they appear the same.
+ That is, Genius will treat <constant>0</constant> and <constant>0.0</constant>
+ as two distinct elements. The <constant>null</constant> is treated as an empty set.
+ </para>
+ <para>
+ To build a set out of a vector, use the
+ <link linkend="gel-function-MakeSet"><function>MakeSet</function></link> function.
+ Currently, it will just return a new vector where every element is unique.
+<screen><prompt>genius> </prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen>
+</para>
+
+ <para>
+ Similarly there are functions
+ <link linkend="gel-function-Union"><function>Union</function></link>,
+ <link linkend="gel-function-Intersection"><function>Intersection</function></link>,
+ <link linkend="gel-function-SetMinus"><function>SetMinus</function></link>, which
+ are rather self explanatory. For example:
+<screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen>
+ Note that no order is guaranteed for the return values. If you wish to sort the vector you
+should use the
+ <link linkend="gel-function-SortVector"><function>SortVector</function></link> function.
+ </para>
+
+ <para>
+ For testing membership, there are functions
+ <link linkend="gel-function-IsIn"><function>IsIn</function></link> and
+ <link linkend="gel-function-IsSubset"><function>IsSubset</function></link>,
+ which return a boolean value. For example:
+<screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen>
+ The input <userinput>IsIn(x,X)</userinput> is of course equivalent to
+ <userinput>IsSubset([x],X)</userinput>. Note that since the empty set is a subset
+ of every set, <userinput>IsSubset(null,X)</userinput> is always true.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Liste der GEL-Funktionen</title>
+
+ <!--&gel-function-list;-->
+
+ <para>So erhalten Sie Hilfe zu einer bestimmten Konsolenfunktion: <programlisting>help FunctionName
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Befehle</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>help FunctionName</synopsis>
+ <para>Print help (or help on a function/command).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "file.gel"</synopsis>
+ <para>Load a file into the interpreter. The file will execute
+as if it were typed onto the command line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /Ordner/Name</synopsis>
+ <para>Wechselt den Arbeitsordner zu <filename>/Ordner/Name</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Print the current working directory.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Listet die Dateien im aktuellen Ordner auf.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin plugin_name</synopsis>
+ <para>Lädt ein Plugin. Ein Plugin dieses Namens muss auf Ihrem System vorhanden und im richtigen
Ordner installiert sein.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Grundlegendes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (query)</synopsis>
+ <synopsis>AskButtons (query, button1, ...)</synopsis>
+ <para>Asks a question and presents a list of buttons to the user (or
+a menu of options in text mode). Returns the 1-based index of the button
+pressed. That is, returns 1 if the first button was pressed, 2 if the second
+button was pressed, and so on. If the user closes the window (or simply hits
+enter in text mode), then <constant>null</constant> is returned. The execution
+of the program is blocked until the user responds.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (query)</synopsis>
+ <synopsis>AskString (query, default)</synopsis>
+ <para>Asks a question and lets the user enter a string, which
+it then returns. If the user cancels or closes the window, then
+<constant>null</constant> is returned. The execution of the program
+is blocked until the user responds. If <varname>default</varname> is given, then it is pre-typed in for the
user to just press enter on (version 1.0.6 onwards).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Compose two functions and return a function that is the composition of
<function>f</function> and <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Compose and execute a function with itself <varname>n</varname> times, passing
<varname>x</varname> as argument. Returning <varname>x</varname> if
+<varname>n</varname> equals 0.
+ Example:
+ <screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (str)</synopsis>
+ <para>Parses and evaluates a string.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Get current modulo from the context outside the function. That is, if outside of
+the function was executed in modulo (using <literal>mod</literal>) then this returns what
+this modulo was. Normally the body of the function called is not executed in modular arithmetic,
+and this builtin function makes it possible to make GEL functions aware of modular arithmetic.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Identity function, returns its argument. It is equivalent to <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (bval)</synopsis>
+ <para>
+ Make integer (0 for <constant>false</constant> or 1 for
+ <constant>true</constant>) from a boolean value.
+ <varname>bval</varname> can also be a number in which case a
+ non-zero value will be interpreted as <constant>true</constant> and
+ zero will be interpreted as <constant>false</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (arg)</synopsis>
+ <para>Check if argument is a boolean (and not a number).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Check if an id is defined. You should pass a string or
+ and identifier. If you pass a matrix, each entry will be
+ evaluated separately and the matrix should contain strings
+ or identifiers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (arg)</synopsis>
+ <para>Check if argument is a function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (arg)</synopsis>
+ <para>Check if argument is a function or an identifier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (arg)</synopsis>
+ <para>Check if argument is a function reference. This includes variable
+references.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (arg)</synopsis>
+ <para>Check if argument is a matrix. Even though <constant>null</constant> is
+sometimes considered an empty matrix, the function <function>IsMatrix</function> does
+not consider <constant>null</constant> a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (arg)</synopsis>
+ <para>Check if argument is a <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (arg)</synopsis>
+ <para>Check if argument is a text string.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (arg)</synopsis>
+ <para>Check if argument is a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (str)</synopsis>
+ <para>Parses but does not evaluate a string. Note that certain
+ pre-computation is done during the parsing stage.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,flags...)</synopsis>
+ <para>Set flags for a function, currently <literal>"PropagateMod"</literal> and
<literal>"NoModuloArguments"</literal>.
+If <literal>"PropagateMod"</literal> is set, then the body of the function is evaluated in modular
arithmetic when the function
+is called inside a block that was evaluated using modular arithmetic (using <literal>mod</literal>). If
+<literal>"NoModuloArguments"</literal>, then the arguments of the function are never evaluated using modular
arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,category,desc)</synopsis>
+ <para>Set the category and help description line for a function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Sets up a help alias.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (dir)</synopsis>
+ <para>Changes current directory, same as the <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Returns the current UNIX time with microsecond precision as a floating point number. That
is, returns the number of seconds since January 1st 1970.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (str,expr)</synopsis>
+ <para>Display a string and an expression with a colon to separate them.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Display set of variables. The variables can be given as
+ strings or identifiers. For example:
+ <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting>
+ </para>
+ <para>
+ If called without arguments (must supply empty argument list) as
+ <programlisting>DisplayVariables()
+ </programlisting>
+ then all variables are printed including a stacktrace similar to
+ <guilabel>Show user variables</guilabel> in the graphical version.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (str)</synopsis>
+ <para>Prints a string to the error stream (onto the console).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Aliase: <function>quit</function></para>
+ <para>Beendet das Programm.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Aliases: <function>False</function> <function>FALSE</function></para>
+ <para>The <constant>false</constant> boolean value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Zeigt das Benutzerhandbuch an.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (str)</synopsis>
+ <para>Prints an expression and then print a newline. The argument <varname>str</varname> can be
any expression. It is
+made into a string before being printed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (str)</synopsis>
+ <para>Prints an expression without a trailing newline. The argument <varname>str</varname> can be
any expression. It is
+made into a string before being printed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Print a table of values for a function. The values are in the
+ vector <varname>v</varname>. You can use the vector
+ building notation as follows:
+ <programlisting>PrintTable (f,[0:10])
+ </programlisting>
+ If <varname>v</varname> is a positive integer, then the table of
+ integers from 1 up to and including v will be used.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Protect a variable from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Protect all currently defined variables, parameters and
+functions from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden. Normally <application>Genius Mathematics Tool</application>
considers
+unprotected variables as user defined.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,val)</synopsis>
+ <para>Set a global variable. The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>set(`x,1)
+ </programlisting>
+ will set the global variable <varname>x</varname> to the value 1.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,row,col,val)</synopsis>
+ <para>Set an element of a global variable which is a matrix.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,3,1)
+ </programlisting>
+ will set the second row third column element of the global variable <varname>x</varname> to the
value 1. If no global variable of the name exists, or if it is set to something that's not a matrix, a new
zero matrix of appropriate size will be created.
+ </para>
+ <para>The <varname>row</varname> and <varname>col</varname> can also be ranges, and the semantics
are the same as for regular setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,val)</synopsis>
+ <para>Set an element of a global variable which is a vector.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,1)
+ </programlisting>
+ will set the second element of the global vector variable <varname>x</varname> to the value 1.
If no global variable of the name exists, or if it is set to something that's not a vector (matrix), a new
zero row vector of appropriate size will be created.
+ </para>
+ <para>The <varname>elt</varname> can also be a range, and the semantics are the same as for regular
setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Make a string. This will make a string out of any argument.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Aliases: <function>True</function> <function>TRUE</function></para>
+ <para>The <constant>true</constant> boolean value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Aliase: <function>Undefine</function></para>
+ <para>Undefine a variable. This includes locals and globals,
+ every value on all context levels is wiped. This function
+ should really not be used on local variables. A vector of
+ identifiers can also be passed to undefine several variables.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Undefine all unprotected global variables
+ (including functions and parameters). Normally <application>Genius Mathematics Tool</application>
+ considers protected variables as system defined functions
+ and variables. Note that <function>UndefineAll</function>
+ only removes the global definition of symbols not local ones,
+ so that it may be run from inside other functions safely.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Unprotect a variable from being modified.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Return a vector of identifiers of
+ user defined (unprotected) global variables.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (secs)</synopsis>
+ <para>Waits a specified number of seconds. <varname>secs</varname>
+must be non-negative. Zero is accepted and nothing happens in this case,
+except possibly user interface events are processed.</para>
+ <para>Since version 1.0.18, <varname>secs</varname> can be a noninteger number, so
+ <userinput>wait(0.1)</userinput> will wait for one tenth of a second.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Returns the version of Genius as a horizontal 3-vector with
+ major version first, then minor version and finally the patch level.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Gives the warranty information.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Parameter</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = Zahl</synopsis>
+ <para>Tolerance of the <function>Chop</function> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = Zahl</synopsis>
+ <para>How many iterations to try to find the limit for continuity and limits.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = Zahl</synopsis>
+ <para>How many successive steps to be within tolerance for calculation of continuity.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = Zahl</synopsis>
+ <para>Tolerance for continuity of functions and for calculating the limit.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = Zahl</synopsis>
+ <para>How many iterations to try to find the limit for derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = Zahl</synopsis>
+ <para>How many successive steps to be within tolerance for calculation of derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = Zahl</synopsis>
+ <para>Tolerance for calculating the derivatives of functions.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = Zahl</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = Zahl</synopsis>
+ <para>Gleitkommagenauigkeit</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = boolean</synopsis>
+ <para>Print full expressions, even if more than a line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = Zahl</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = Zahl</synopsis>
+ <para>Integer output base.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = Zahl</synopsis>
+ <para>Number of extra Miller-Rabin tests to run on a number before declaring it a prime in <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link linkend="genius-gel-function-list-plotting">line
plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Tells genius to draw the axis labels for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>
and friends.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Sets the limits for <link linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = Zahl</synopsis>
+ <para>Maximal anzuzeigende Stellen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = Zahl</synopsis>
+ <para>Maximal anzuzeigende Fehler.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = boolean</synopsis>
+ <para>If true, mixed fractions are printed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = Funktion</synopsis>
+ <para>The function used for numerical integration in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = Zahl</synopsis>
+ <para>Steps to perform in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = Zahl</synopsis>
+ <para>When another number in the object being printed (a matrix or a
+value) is greater than
+10<superscript>-OutputChopWhenExponent</superscript>, and
+the number being printed is less than
+10<superscript>-OutputChopExponent</superscript>, then
+display <computeroutput>0.0</computeroutput> instead of the number.
+</para>
+<para>
+Output is never chopped if <function>OutputChopExponent</function> is zero.
+It must be a non-negative integer.
+</para>
+<para>
+If you want output always chopped according to
+<function>OutputChopExponent</function>, then set
+<function>OutputChopWhenExponent</function>, to something
+greater than or equal to
+<function>OutputChopExponent</function>.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = Zahl</synopsis>
+ <para>When to chop output. See
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = String</synopsis>
+ <para>
+ Output style, this can be <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> or <literal>troff</literal>.
+ </para>
+ <para>
+ This affects mostly how matrices and fractions are printed out and
+ is useful for pasting into documents. For example you can set this
+ to the latex by:
+ <programlisting>OutputStyle = "latex"
+</programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = boolean</synopsis>
+ <para>Wandelt alle Ergebnisse vor der Ausgabe in Gleitkommazahlen um.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = boolean</synopsis>
+ <para>Wissenschaftliche Notation verwenden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [vertical,horizontal]</synopsis>
+ <para>Sets the number of vertical and horizontal ticks in a
+slopefield plot. (See <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = Zahl</synopsis>
+ <para>How many iterations to try for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = Zahl</synopsis>
+ <para>How many successive steps to be within tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = Zahl</synopsis>
+ <para>Tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> such as <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> using <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ Note that the <varname>z</varname> does not refer to the dependent (vertical) axis, but to the
independent complex variable
+ <userinput>z=x+iy</userinput>.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Sets the limits for surface plotting (See <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Should the vectorfield plotting have normalized arrow length. If true, vector fields will
only show direction
+ and not magnitude. (See <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [vertical,horizontal]</synopsis>
+ <para>Sets the number of vertical and horizontal ticks in a
+vectorfield plot. (See <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Konstanten</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>
+ Catalan's Constant, approximately 0.915... It is defined to be the series where terms are
<userinput>(-1^k)/((2*k+1)^2)</userinput>, where <varname>k</varname> ranges from 0 to infinity.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Aliase: <function>gamma</function></para>
+ <para>
+ Euler's constant gamma. Sometimes called the
+ Euler-Mascheroni constant.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>Der »Goldene Schnitt«.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GoldenRatio">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Free fall acceleration at sea level in meters per second squared. This is the standard
gravity constant 9.80665. The gravity
+ in your particular neck of the woods might be different due to different altitude and the
fact that the earth is not perfectly
+ round and uniform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>
+ The base of the natural logarithm. <userinput>e^x</userinput>
+ is the exponential function
+ <link linkend="gel-function-exp"><function>exp</function></link>. It is approximately
+ 2.71828182846... This number is sometimes called Euler's number, although there are
+ several numbers that are also called Euler's. An example is the gamma constant: <link
linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/E">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>
+ The number pi, that is the ratio of a circle's circumference
+ to its diameter. This is approximately 3.14159265359...
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Pi">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Numerik</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Aliases: <function>abs</function></para>
+ <para>
+ Absolute value of a number and if <varname>x</varname> is
+ a complex value the modulus of <varname>x</varname>. I.e. this
+ the distance of <varname>x</varname> to the origin. This is equivalent
+ to <userinput>|x|</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/AbsoluteValue">Planetmath (absolute value)</ulink>,
+ <ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>,
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolute value)</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (complex modulus)</ulink>
+for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Ersetzung sehr kleiner Zahlen durch Null.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Aliases: <function>conj</function> <function>Conj</function></para>
+ <para>Calculates the complex conjugate of the complex number <varname>z</varname>. If
<varname>z</varname> is a vector or matrix,
+all its elements are conjugated.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Get the denominator of a rational number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Return the fractional part of a number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Aliases: <function>ImaginaryPart</function></para>
+ <para>Get the imaginary part of a complex number. For example <userinput>Re(3+4i)</userinput>
yields 4.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Division ohne Rest.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (num)</synopsis>
+ <para>Check if argument is a complex (non-real) number. Do note that we really mean nonreal
number. That is,
+ <userinput>IsComplex(3)</userinput> yields false, while
+ <userinput>IsComplex(3-1i)</userinput> yields true.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (num)</synopsis>
+ <para>Check if argument is a possibly complex rational number. That is, if both real and imaginary
parts are
+ given as rational numbers. Of course rational simply means "not stored as a floating point
number."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (num)</synopsis>
+ <para>Check if argument is a real floating point number (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (num)</synopsis>
+ <para>Aliases: <function>IsComplexInteger</function></para>
+ <para>Check if argument is a possibly complex integer. That is a complex integer is a number of
+ the form <userinput>n+1i*m</userinput> where <varname>n</varname> and <varname>m</varname>
+ are integers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (num)</synopsis>
+ <para>Check if argument is an integer (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (num)</synopsis>
+ <para>Check if argument is a non-negative real integer. That is, either a positive integer or
zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (num)</synopsis>
+ <para>Aliases: <function>IsNaturalNumber</function></para>
+ <para>Check if argument is a positive real integer. Note that
+we accept the convention that 0 is not a natural number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (num)</synopsis>
+ <para>Check if argument is a rational number (non-complex). Of course rational simply means "not
stored as a floating point number."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (num)</synopsis>
+ <para>Check if argument is a real number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Get the numerator of a rational number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Aliases: <function>RealPart</function></para>
+ <para>Get the real part of a complex number. For example <userinput>Re(3+4i)</userinput> yields
3.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Aliases: <function>sign</function></para>
+ <para>Return the sign of a number. That is returns
+<literal>-1</literal> if value is negative,
+<literal>0</literal> if value is zero and
+<literal>1</literal> if value is positive. If <varname>x</varname> is a complex
+value then <function>Sign</function> returns the direction or 0.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Aliases: <function>Ceiling</function></para>
+ <para>Get the lowest integer more than or equal to <varname>n</varname>. Examples:
+ <screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen>
+ </para>
+ <para>Note that you should be careful and notice that floating point
+ numbers are stored in binary and so may not be what you
+ expect. For example <userinput>ceil(420/4.2)</userinput>
+ returns 101 instead of the expected 100. This is because
+ 4.2 is actually very slightly less than 4.2. Use rational
+ representation <userinput>42/10</userinput> if you want
+ exact arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>
+ The exponential function. This is the function
+ <userinput>e^x</userinput> where <varname>e</varname>
+ is the <link linkend="gel-function-e">base of the natural
+ logarithm</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Make number a floating point value. That is returns the floating point representation of
the number <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Aliases: <function>Floor</function></para>
+ <para>Get the highest integer less than or equal to <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>The natural logarithm, the logarithm to base <varname>e</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logarithm of <varname>x</varname> base <varname>b</varname> (calls <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> if in modulo mode), if base is not
given, <link linkend="gel-function-e"><varname>e</varname></link> is used.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Logarithm of <varname>x</varname> base 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Aliases: <function>lg</function></para>
+ <para>Logarithm of <varname>x</varname> base 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,args...)</synopsis>
+ <para>Aliases: <function>Max</function> <function>Maximum</function></para>
+ <para>Returns the maximum of arguments or matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,args...)</synopsis>
+ <para>Aliases: <function>Min</function> <function>Minimum</function></para>
+ <para>Returns the minimum of arguments or matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (size...)</synopsis>
+ <para>Generate random float in the range <literal>[0,1)</literal>.
+If size is given then a matrix (if two numbers are specified) or vector (if one
+number is specified) of the given size returned.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,size...)</synopsis>
+ <para>Generate random integer in the range
+<literal>[0,max)</literal>.
+If size is given then a matrix (if two numbers are specified) or vector (if one
+number is specified) of the given size returned. For example,
+ <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Aliases: <function>Round</function></para>
+ <para>Round a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Aliases: <function>SquareRoot</function></para>
+ <para>The square root. When operating modulo some integer will return either a
<constant>null</constant> or a vector of the square roots. Examples:
+ <screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/SquareRoot">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Aliases: <function>Truncate</function> <function>IntegerPart</function></para>
+ <para>Truncate number to an integer (return the integer part).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Trigonometrie</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Aliases: <function>arccos</function></para>
+ <para>The arccos (inverse cos) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Aliases: <function>arccosh</function></para>
+ <para>The arccosh (inverse cosh) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Aliases: <function>arccot</function></para>
+ <para>The arccot (inverse cot) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Aliases: <function>arccoth</function></para>
+ <para>The arccoth (inverse coth) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Aliases: <function>arccsc</function></para>
+ <para>The inverse cosecant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Aliases: <function>arccsch</function></para>
+ <para>The inverse hyperbolic cosecant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Aliases: <function>arcsec</function></para>
+ <para>The inverse secant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Aliases: <function>arcsech</function></para>
+ <para>The inverse hyperbolic secant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Aliases: <function>arcsin</function></para>
+ <para>The arcsin (inverse sin) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Aliases: <function>arcsinh</function></para>
+ <para>The arcsinh (inverse sinh) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Aliases: <function>arctan</function></para>
+ <para>Calculates the arctan (inverse tan) function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Aliases: <function>arctanh</function></para>
+ <para>The arctanh (inverse tanh) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Aliases: <function>arctan2</function></para>
+ <para>Calculates the arctan2 function. If
+ <userinput>x>0</userinput> then it returns
+ <userinput>atan(y/x)</userinput>. If <userinput>x<0</userinput>
+ then it returns <userinput>sign(y) * (pi - atan(|y/x|)</userinput>.
+ When <userinput>x=0</userinput> it returns <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> returns 0
+ rather than failing.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Calculates the cosine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Calculates the hyperbolic cosine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>The cotangent function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>The hyperbolic cotangent function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>The cosecant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>The hyperbolic cosecant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>The secant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>The hyperbolic secant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Calculates the sine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Calculates the hyperbolic sine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Calculates the tan function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>The hyperbolic tangent function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Zahlentheorie</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>
+ Are the real integers <varname>a</varname> and <varname>b</varname> relatively prime?
+ Returns <constant>true</constant> or <constant>false</constant>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Return the <varname>n</varname>th Bernoulli number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Aliases: <function>CRT</function></para>
+ <para>Find the <varname>x</varname> that solves the system given by
+ the vector <varname>a</varname> and modulo the elements of
+ <varname>m</varname>, using the Chinese Remainder Theorem.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Given two factorizations, give the factorization of the
+ product.</para>
+ <para>See <link linkend="gel-function-Factorize">Factorize</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Convert a vector of values indicating powers of b to a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Convert a number to a vector of powers for elements in base <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
+ F<subscript>q</subscript>, the finite field of order <varname>q</varname>, where
<varname>q</varname>
+ is a prime, using the Silver-Pohlig-Hellman algorithm.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Checks divisibility (if <varname>m</varname> divides <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>
+ Compute the Euler phi function for <varname>n</varname>, that is
+ the number of integers between 1 and <varname>n</varname>
+ relatively prime to <varname>n</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/EulerPhifunction">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>
+ Return <userinput>n/d</userinput> but only if <varname>d</varname>
+ divides <varname>n</varname>. If <varname>d</varname>
+ does not divide <varname>n</varname> then this function returns
+ garbage. This is a lot faster for very large numbers
+ than the operation <userinput>n/d</userinput>, but of course only
+ useful if you know that the division is exact.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>
+ Return factorization of a number as a matrix. The first
+ row is the primes in the factorization (including 1) and the
+ second row are the powers. So for example:
+ <screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>
+ Return all factors of <varname>n</varname> in a vector. This
+ includes all the non-prime factors as well. It includes 1 and the
+ number itself. So for example to print all the perfect numbers
+ (those that are sums of their factors) up to the number 1000 you
+ could do (this is of course very inefficient)
+ <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,tries)</synopsis>
+ <para>
+ Attempt Fermat factorization of <varname>n</varname> into
+ <userinput>(t-s)*(t+s)</userinput>, returns <varname>t</varname>
+ and <varname>s</varname> as a vector if possible, <constant>null</constant> otherwise.
+ <varname>tries</varname> specifies the number of tries before
+ giving up.
+ </para>
+ <para>
+ This is a fairly good factorization if your number is the product
+ of two factors that are very close to each other.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Find the first primitive element in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>. Of course <varname>q</varname> must be a prime.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Find a random primitive element in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (q must be a prime).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Compute discrete log base <varname>b</varname> of n in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (<varname>q</varname> a prime), using the
+factor base <varname>S</varname>. <varname>S</varname> should be a column of
+primes possibly with second column precalculated by
+<link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Run the precalculation step of
+ <link linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> for
logarithms base <varname>b</varname> in
+F<subscript>q</subscript>, the finite group of order <varname>q</varname>
+(<varname>q</varname> a prime), for the factor base <varname>S</varname> (where
+<varname>S</varname> is a column vector of primes). The logs will be
+precalculated and returned in the second column.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Überprüft, ob eine Ganzzahl gerade ist.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>
+ Tests if a positive integer <varname>p</varname> is a
+ Mersenne prime exponent. That is if
+ 2<superscript>p</superscript>-1 is a prime. It does this
+ by looking it up in a table of known values, which is relatively
+ short.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>
+ Tests if a rational number <varname>m</varname> is a perfect
+ <varname>n</varname>th power. See also
+ <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link>
+ and
+ <link linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Überprüft, ob eine Ganzzahl ungerade ist.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Check an integer for being any perfect power, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>
+ Check an integer for being a perfect square of an integer. The number must
+ be an integer. Negative integers are of course never perfect
+ squares of integers.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>
+ Tests primality of integers, for numbers less than 2.5e10 the
+ answer is deterministic (if Riemann hypothesis is true). For
+ numbers larger, the probability of a false positive
+ depends on
+ <link linkend="gel-function-IsPrimeMillerRabinReps">
+ <function>IsPrimeMillerRabinReps</function></link>. That
+ is the probability of false positive is 1/4 to the power
+ <function>IsPrimeMillerRabinReps</function>. The default
+ value of 22 yields a probability of about 5.7e-14.
+ </para>
+ <para>
+ If <constant>false</constant> is returned, you can be sure that
+ the number is a composite. If you want to be absolutely sure
+ that you have a prime you can use
+ <link linkend="gel-function-MillerRabinTestSure">
+ <function>MillerRabinTestSure</function></link> but it may take
+ a lot longer.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>, where <varname>q</varname> is a prime. If <varname>q</varname> is not
prime results are bogus.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>, where <varname>q</varname> is a prime and
+<varname>f</varname> is a vector of prime factors of <varname>q</varname>-1.
+If <varname>q</varname> is not prime results are bogus.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>If <varname>n</varname> is a pseudoprime base <varname>b</varname> but not a prime,
+ that is if <userinput>b^(n-1) == 1 mod n</userinput>. This calls the <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Test if <varname>n</varname> is a strong pseudoprime to base <varname>b</varname> but not a
prime.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Aliases: <function>JacobiSymbol</function></para>
+ <para>Calculate the Jacobi symbol (a/b) (b should be odd).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Aliases: <function>JacobiKroneckerSymbol</function></para>
+ <para>Calculate the Jacobi symbol (a/b) with the Kronecker extension (a/2)=(2/a) when a odd, or
(a/2)=0 when a even.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Return the residue of <varname>a</varname> mod <varname>n</varname> with the least absolute
value (in the interval -n/2 to n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Aliases: <function>LegendreSymbol</function></para>
+ <para>Calculate the Legendre symbol (a/p).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Test if 2<superscript>p</superscript>-1 is a Mersenne prime using the Lucas-Lehmer test.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Returns the <varname>n</varname>th Lucas number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasNumbers">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Return all maximal prime power factors of a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>
+ A vector of known Mersenne prime exponents, that is
+ a list of positive integers
+ <varname>p</varname> such that
+ 2<superscript>p</superscript>-1 is a prime.
+ See also
+ <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname>,
+ <varname>reps</varname> number of times. The probability of false
+ positive is <userinput>(1/4)^reps</userinput>. It is probably
+ usually better to use
+ <link linkend="gel-function-IsPrime">
+ <function>IsPrime</function></link> since that is faster and
+ better on smaller integers.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>
or
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname> with
+ enough bases that assuming the Generalized Riemann Hypothesis the
+ result is deterministic.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink>, or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Returns inverse of n mod m.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>
+ Return the Moebius mu function evaluated in <varname>n</varname>.
+ That is, it returns 0 if <varname>n</varname> is not a product
+ of distinct primes and <userinput>(-1)^k</userinput> if it is
+ a product of <varname>k</varname> distinct primes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>
+ Returns the least prime greater than <varname>n</varname>.
+ Negatives of primes are considered prime and so to get the
+ previous prime you can use <userinput>-NextPrime(-n)</userinput>.
+ </para>
+ <para>
+ This function uses the GMPs <function>mpz_nextprime</function>,
+ which in turn uses the probabilistic Miller-Rabin test
+ (See also <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>).
+ The probability
+ of false positive is not tunable, but is low enough
+ for all practical purposes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Returns the p-adic valuation (number of trailing zeros in base <varname>p</varname>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/PAdicValuation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>
+ Compute <userinput>a^b mod m</userinput>. The
+ <varname>b</varname>'s power of <varname>a</varname> modulo
+ <varname>m</varname>. It is not necessary to use this function
+ as it is automatically used in modulo mode. Hence
+ <userinput>a^b mod m</userinput> is just as fast.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Aliases: <function>prime</function></para>
+ <para>Return the <varname>n</varname>th prime (up to a limit).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Return all prime factors of a number as a vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Pseudoprime test, returns <constant>true</constant> if and only if
+ <userinput>b^(n-1) == 1 mod n</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Removes all instances of the factor <varname>m</varname> from the number
<varname>n</varname>. That is divides by the largest power of <varname>m</varname>, that divides
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
F<subscript>q</subscript>, the finite group of order <varname>q</varname>, where <varname>q</varname> is a
prime using the Silver-Pohlig-Hellman algorithm, given <varname>f</varname> being the factorization of
<varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Find square root of <varname>n</varname> modulo <varname>p</varname> (where
<varname>p</varname> is a prime). Null is returned if not a quadratic residue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Run the strong pseudoprime test base <varname>b</varname> on <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,args...)</synopsis>
+ <para>Aliases: <function>GCD</function></para>
+ <para>
+ Greatest common divisor of integers. You can enter as many
+ integers as you want in the argument list, or you can give
+ a vector or a matrix of integers. If you give more than
+ one matrix of the same size then GCD is done element by
+ element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,args...)</synopsis>
+ <para>Aliases: <function>LCM</function></para>
+ <para>
+ Least common multiplier of integers. You can enter as many
+ integers as you want in the argument list, or you can give a
+ vector or a matrix of integers. If you give more than one
+ matrix of the same size then LCM is done element by element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Matrixoperationen</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,func)</synopsis>
+ <para>Apply a function over all entries of a matrix and return a matrix of the results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,func)</synopsis>
+ <para>Apply a function over all entries of 2 matrices (or 1 value and 1 matrix) and return a
matrix of the results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Gets the columns of a matrix as a horizontal vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Remove column(s) and row(s) from a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Calculate the kth compound matrix of A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>
+ Count the number of zero columns in a matrix. For example,
+ once you column-reduce a matrix, you can use this to find
+ the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
+ and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,col)</synopsis>
+ <para>Löscht eine Spalte einer Matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,row)</synopsis>
+ <para>Löscht eine Zeile einer Matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Gets the diagonal entries of a matrix as a column vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Get the dot product of two vectors. The vectors must be of the
+ same size. No conjugates are taken so this is a bilinear form even if working over the
complex numbers; This is the bilinear scalar product not the sesquilinear scalar product. See <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> for the standard sesquilinear inner
product.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DotProduct">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>
+ Expands a matrix just like we do on unquoted matrix input.
+ That is we expand any internal matrices as blocks. This is
+ a way to construct matrices out of smaller ones and this is
+ normally done automatically on input unless the matrix is quoted.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Aliases: <function>InnerProduct</function></para>
+ <para>Get the Hermitian product of two vectors. The vectors must be of the same size. This is a
sesquilinear form using the identity matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Aliases: <function>eye</function></para>
+ <para>Return an identity matrix of a given size, that is <varname>n</varname> by
<varname>n</varname>. If <varname>n</varname> is zero, returns <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vec,msize)</synopsis>
+ <para>Return the index complement of a vector of indexes. Everything is one based. For example
for vector <userinput>[2,3]</userinput> and size
+<userinput>5</userinput>, we return <userinput>[1,4,5]</userinput>. If
+<varname>msize</varname> is 0, we always return <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Is a matrix diagonal.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Check if a matrix is the identity matrix. Automatically returns <constant>false</constant>
+ if the matrix is not square. Also works on numbers, in which
+ case it is equivalent to <userinput>x==1</userinput>. When <varname>x</varname> is
+ <constant>null</constant> (we could think of that as a 0 by 0 matrix),
+ no error is generated and <constant>false</constant> is returned.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Is a matrix lower triangular. That is, are all the entries above the diagonal zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Check if a matrix is a matrix of integers (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Check if a matrix is non-negative, that is if each element is non-negative.
+ Do not confuse positive matrices with positive semi-definite matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Check if a matrix is positive, that is if each element is
+positive (and hence real). In particular, no element is 0. Do not confuse
+positive matrices with positive definite matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Check if a matrix is a matrix of rational (non-complex)
+numbers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Check if a matrix is a matrix of real (non-complex) numbers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>
+ Check if a matrix is square, that is its width is equal to
+ its height.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Is a matrix upper triangular? That is, a matrix is upper triangular if all the entries
below the diagonal are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Check if a matrix is a matrix of numbers only. Many internal
+functions make this check. Values can be any number including complex numbers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>
+ Is argument a horizontal or a vertical vector. Genius does
+ not distinguish between a matrix and a vector and a vector
+ is just a 1 by <varname>n</varname> or <varname>n</varname> by 1 matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Check if a matrix is composed of all zeros. Also works on numbers, in which
+ case it is equivalent to <userinput>x==0</userinput>. When <varname>x</varname> is
+ <constant>null</constant> (we could think of that as a 0 by 0 matrix),
+ no error is generated and <constant>true</constant> is returned as the condition is
+ vacuous.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Returns a copy of the matrix <varname>M</varname> with all the entries above the diagonal
set to zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,arg...)</synopsis>
+ <para>Aliases: <function>diag</function></para>
+ <para>Make diagonal matrix from a vector. Alternatively you can pass
+ in the values to put on the diagonal as arguments. So
+ <userinput>MakeDiagonal([1,2,3])</userinput> is the same as
+ <userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Make column vector out of matrix by putting columns above
+ each other. Returns <constant>null</constant> when given <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>
+ Calculate the product of all elements in a matrix or vector.
+ That is we multiply all the elements and return a number that
+ is the product of all the elements.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>
+ Calculate the sum of all elements in a matrix or vector. That is
+ we add all the elements and return a number that is the
+ sum of all the elements.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Calculate the sum of squares of all elements in a matrix
+ or vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Returns a row vector of the indices of nonzero columns in the matrix
<varname>M</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Returns a row vector of the indices of nonzero elements in the vector
<varname>v</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Get the outer product of two vectors. That is, suppose that
+<varname>u</varname> and <varname>v</varname> are vertical vectors, then
+the outer product is <userinput>v * u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Reverse elements in a vector. Return <constant>null</constant> if given
<constant>null</constant></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Calculate sum of each row in a matrix and return a vertical
+vector with the result.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Calculate sum of squares of each row in a matrix and return a vertical vector with the
results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Gets the rows of a matrix as a vertical vector. Each element
+of the vector is a horizontal vector that is the corresponding row of
+<varname>M</varname>. This function is useful if you wish to loop over the
+rows of a matrix. For example, as <userinput>for r in RowsOf(M) do
+something(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,rows,columns)</synopsis>
+ <para>Make new matrix of given size from old one. That is, a new
+ matrix will be returned to which the old one is copied. Entries that
+ don't fit are clipped and extra space is filled with zeros.
+ If <varname>rows</varname> or <varname>columns</varname> are zero
+ then <constant>null</constant> is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Shuffle elements in a vector. Return <constant>null</constant> if given
<constant>null</constant>.</para>
+ <para>Version 1.0.13 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Sort vector elements in an increasing order.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Removes any all-zero columns of <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Removes any all-zero rows of <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Return column(s) and row(s) from a matrix. This is
+just equivalent to <userinput>m@(r,c)</userinput>. <varname>r</varname>
+and <varname>c</varname> should be vectors of rows and columns (or single numbers if only one row or column
is needed).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,row1,row2)</synopsis>
+ <para>Swap two rows in a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Returns a copy of the matrix <varname>M</varname> with all the entries below the diagonal
set to zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Get the number of columns of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Get the total number of elements of a matrix. This is the
+number of columns times the number of rows.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (rows,columns...)</synopsis>
+ <para>Make an matrix of all ones (or a row vector if only one argument is given). Returns
<constant>null</constant> if either rows or columns are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Get the number of rows of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (rows,columns...)</synopsis>
+ <para>Make a matrix of all zeros (or a row vector if only one argument is given). Returns
<constant>null</constant> if either rows or columns are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Lineare Algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Get the auxiliary unit matrix of size <varname>n</varname>. This is a square matrix with
that is all zero except the
+superdiagonal being all ones. It is the Jordan block matrix of one zero eigenvalue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information
on Jordan Canonical Form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Evaluate (v,w) with respect to the bilinear form given by the matrix A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Return a function that evaluates two vectors with respect to the bilinear form given by
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Aliases: <function>CharPoly</function></para>
+ <para>Get the characteristic polynomial as a vector. That is, return
+the coefficients of the polynomial starting with the constant term. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
+polynomial are the eigenvalues of <varname>M</varname>.
+See also <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Get the characteristic polynomial as a function. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
+polynomial are the eigenvalues of <varname>M</varname>.
+See also <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Get a basis matrix for the columnspace of a matrix. That is,
+return a matrix whose columns are the basis for the column space of
+<varname>M</varname>. That is the space spanned by the columns of
+<varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Return the commutation matrix <userinput>K(m,n)</userinput>, which is the unique
<userinput>m*n</userinput> by
+ <userinput>m*n</userinput> matrix such that <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> for all <varname>m</varname> by <varname>n</varname>
+ matrices <varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Companion matrix of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Conjugate transpose of a matrix (adjoint). This is the
+ same as the <userinput>'</userinput> operator.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Aliases: <function>convol</function></para>
+ <para>Calculate convolution of two horizontal vectors.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Calculate convolution of two horizontal vectors. Return
+result as a vector and not added together.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>CrossProduct of two vectors in R<superscript>3</superscript> as
+ a column vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Get the determinantal divisors of an integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Direct sum of matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Direct sum of a vector of matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Aliases: <function>eig</function></para>
+ <para>Get the eigenvalues of a square matrix.
+ Currently only works for matrices of size up to 4 by 4, or for
+ triangular matrices (for which the eigenvalues are on the
+ diagonal).
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvalue">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues, &multiplicities)</synopsis>
+ <para>Get the eigenvectors of a square matrix. Optionally get also
+the eigenvalues and their algebraic multiplicities.
+ Currently only works for matrices of size up to 2 by 2.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvector">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Apply the Gram-Schmidt process (to the columns) with respect to
+inner product given by <varname>B</varname>. If <varname>B</varname> is not
+given then the standard Hermitian product is used. <varname>B</varname> can
+either be a sesquilinear function of two arguments or it can be a matrix giving
+a sesquilinear form. The vectors will be made orthonormal with respect to
+<varname>B</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>Hankel matrix, a matrix whose skew-diagonals are constant. <varname>c</varname> is the first
row and <varname>r</varname> is the
+ last column. It is assumed that both arguments are vectors and the last element of
<varname>c</varname> is the same
+ as the first element of <varname>r</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Hilbert matrix of order <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Get the image (columnspace) of a linear transform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Get the Inf Norm of a vector, sometimes called the sup norm or the max norm.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Get the invariant factors of a square integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Inverse Hilbert matrix of order <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Is a matrix Hermitian. That is, is it equal to its conjugate transpose.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Test if a vector is in a subspace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Is a matrix (or number) invertible (Integer matrix is invertible if and only if it is
invertible over the integers).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Is a matrix (or number) invertible over a field.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Is <varname>M</varname> a normal matrix. That is,
+ does <userinput>M*M' == M'*M</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Is <varname>M</varname> a Hermitian positive definite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always strictly positive for
+any vector <varname>v</varname>.
+<varname>M</varname> must be square and Hermitian to be positive definite.
+The check that is performed is that every principal submatrix has a non-negative
+determinant.
+(See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>
+ Note that some authors (for example Mathworld) do not require that
+ <varname>M</varname> be Hermitian, and then the condition is
+ on the real part of the inner product, but we do not take this
+ view. If you wish to perform this check, just check the
+ Hermitian part of the matrix <varname>M</varname> as follows:
+ <userinput>IsPositiveDefinite(M+M')</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/PositiveDefinite">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Is <varname>M</varname> a Hermitian positive semidefinite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always non-negative for
+any vector <varname>v</varname>.
+<varname>M</varname> must be square and Hermitian to be positive semidefinite.
+The check that is performed is that every principal submatrix has a non-negative
+determinant.
+(See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>
+ Note that some authors do not require that
+ <varname>M</varname> be Hermitian, and then the condition is
+ on the real part of the inner product, but we do not take this
+ view. If you wish to perform this check, just check the
+ Hermitian part of the matrix <varname>M</varname> as follows:
+ <userinput>IsPositiveSemidefinite(M+M')</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Is a matrix skew-Hermitian. That is, is the conjugate transpose equal to negative of the
matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Is a matrix unitary? That is, does
+ <userinput>M'*M</userinput> and <userinput>M*M'</userinput>
+ equal the identity.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Aliases: <function>J</function></para>
+ <para>Get the Jordan block corresponding to the eigenvalue
+ <varname>lambda</varname> with multiplicity <varname>n</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Get the kernel (nullspace) of a linear transform.</para>
+ <para>
+ (See <link linkend="gel-function-NullSpace">NullSpace</link>)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Aliases: <function>TensorProduct</function></para>
+ <para>
+ Compute the Kronecker product (tensor product in standard basis)
+ of two matrices.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>
+ Get the LU decomposition of <varname>A</varname>, that is
+ find a lower triangular matrix and upper triangular
+ matrix whose product is <varname>A</varname>.
+ Store the result in the <varname>L</varname> and
+ <varname>U</varname>, which should be references. It returns <constant>true</constant>
+ if successful.
+ For example suppose that A is a square matrix, then after running:
+ <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen>
+ You will have the lower matrix stored in a variable called
+ <varname>L</varname> and the upper matrix in a variable called
+ <varname>U</varname>.
+ </para>
+ <para>
+ This is the LU decomposition of a matrix aka Crout and/or Cholesky
+ reduction.
+ (ISBN 0-201-11577-8 pp.99-103)
+ The upper triangular matrix features a diagonal
+ of values 1 (one). This is not Doolittle's Method, which features
+ the 1's diagonal on the lower matrix.
+ </para>
+ <para>
+ Not all matrices have LU decompositions, for example
+ <userinput>[0,1;1,0]</userinput> does not and this function returns
+ <constant>false</constant> in this case and sets <varname>L</varname>
+ and <varname>U</varname> to <constant>null</constant>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LUDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Get the <varname>i</varname>-<varname>j</varname> minor of a matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Minor">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Return the columns that are not the pivot columns of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Aliases: <function>norm</function></para>
+ <para>Get the p Norm (or 2 Norm if no p is supplied) of a vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Get the nullspace of a matrix. That is the kernel of the
+ linear mapping that the matrix represents. This is returned
+ as a matrix whose column space is the nullspace of
+ <varname>T</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Aliases: <function>nullity</function></para>
+ <para>Get the nullity of a matrix. That is, return the dimension of
+the nullspace; the dimension of the kernel of <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Get the orthogonal complement of the columnspace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Return pivot columns of a matrix, that is columns that have a leading 1 in row reduced form.
Also returns the row where they occur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Projection of vector <varname>v</varname> onto subspace
+<varname>W</varname> with respect to inner product given by
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+Hermitian product is used. <varname>B</varname> can either be a sesquilinear
+function of two arguments or it can be a matrix giving a sesquilinear form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>
+ Get the QR decomposition of a square matrix <varname>A</varname>,
+ returns the upper triangular matrix <varname>R</varname>
+ and sets <varname>Q</varname> to the orthogonal (unitary) matrix.
+ <varname>Q</varname> should be a reference or <constant>null</constant> if you don't
+ want any return.
+ For example:
+ <screen><prompt>genius></prompt> <userinput>R = QRDecomposition(A,&Q)</userinput>
+</screen>
+ You will have the upper triangular matrix stored in
+ a variable called
+ <varname>R</varname> and the orthogonal (unitary) matrix stored in
+ <varname>Q</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Return the Rayleigh quotient (also called the Rayleigh-Ritz quotient or ratio) of a matrix
and a vector.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Find eigenvalues of <varname>A</varname> using the Rayleigh
+ quotient iteration method. <varname>x</varname> is a guess
+ at a eigenvector and could be random. It should have
+ nonzero imaginary part if it will have any chance at finding
+ complex eigenvalues. The code will run at most
+ <varname>maxiter</varname> iterations and return <constant>null</constant>
+ if we cannot get within an error of <varname>epsilon</varname>.
+ <varname>vecref</varname> should either be <constant>null</constant> or a reference
+ to a variable where the eigenvector should be stored.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information on
Rayleigh quotient.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Aliases: <function>rank</function></para>
+ <para>Get the rank of a matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Returns the Rosser matrix, which is a classic symmetric eigenvalue test problem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (angle)</synopsis>
+ <para>Aliases: <function>RotationMatrix</function></para>
+ <para>Return the matrix corresponding to rotation around origin in
R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the x-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the y-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the z-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Get a basis matrix for the rowspace of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Evaluate (v,w) with respect to the sesquilinear form given by the matrix A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Return a function that evaluates two vectors with respect to the sesquilinear form given by
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Returns the Smith normal form of a matrix over fields (will end up with 1's on the
diagonal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Return the Smith normal form for square integer matrices over integers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,args...)</synopsis>
+ <para>Solve linear system Mx=V, return solution V if there is a unique solution,
<constant>null</constant> otherwise. Extra two reference parameters can optionally be used to get the
reduced M and V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (c, r...)</synopsis>
+ <para>Return the Toeplitz matrix constructed given the first column c
+and (optionally) the first row r. If only the column c is given then it is
+conjugated and the nonconjugated version is used for the first row to give a
+Hermitian matrix (if the first element is real of course).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Aliases: <function>trace</function></para>
+ <para>Calculate the trace of a matrix. That is the sum of the diagonal elements.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Trace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Transpose of a matrix. This is the same as the
+ <userinput>.'</userinput> operator.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Transpose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Aliases: <function>vander</function></para>
+ <para>Return the Vandermonde matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>The angle of two vectors with respect to inner product given by
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+Hermitian product is used. <varname>B</varname> can either be a sesquilinear
+function of two arguments or it can be a matrix giving a sesquilinear form.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>The direct sum of the vector spaces M and N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Intersection of the subspaces given by M and N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>The sum of the vector spaces M and N, that is {w | w=m+n, m in M, n in N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Aliases: <function>Adjugate</function></para>
+ <para>Get the classical adjoint (adjugate) of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Aliases: <function>CREF</function> <function>ColumnReducedEchelonForm</function></para>
+ <para>Compute the Column Reduced Echelon Form.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Aliases: <function>Determinant</function></para>
+ <para>Get the determinant of a matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Determinant2">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Aliases: <function>REF</function> <function>RowEchelonForm</function></para>
+ <para>Get the row echelon form of a matrix. That is, apply gaussian
+elimination but not backaddition to <varname>M</varname>. The pivot rows are
+divided to make all pivots 1.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Aliases: <function>RREF</function> <function>ReducedRowEchelonForm</function></para>
+ <para>Get the reduced row echelon form of a matrix. That is, apply gaussian elimination together
with backaddition to <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Kombinatorik</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Get <varname>n</varname>th Catalan number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Get all combinations of k numbers from 1 to n as a vector of vectors.
+ (See also <link linkend="gel-function-NextCombination">NextCombination</link>)
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Double factorial: <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Factorial: <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Falling factorial: <userinput>(n)_k = n(n-1)...(n-(k-1))</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Aliases: <function>fib</function></para>
+ <para>
+ Calculate <varname>n</varname>th Fibonacci number. That
+ is the number defined recursively by
+ <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput>
+ and
+ <userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>
+ Calculate the Frobenius number. That is calculate largest
+ number that cannot be given as a non-negative integer linear
+ combination of a given vector of non-negative integers.
+ The vector can be given as separate numbers or a single vector.
+ All the numbers given should have GCD of 1.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (combining_rule)</synopsis>
+ <para>Galois matrix given a linear combining rule (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>
+ Find the vector <varname>c</varname> of non-negative integers
+ such that taking the dot product with <varname>v</varname> is
+ equal to n. If not possible returns <constant>null</constant>. <varname>v</varname>
+ should be given sorted in increasing order and should consist
+ of non-negative integers.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Aliases: <function>HarmonicH</function></para>
+ <para>Harmonic Number, the <varname>n</varname>th harmonic number of order <varname>r</varname>.
+ That is, it is the sum of <userinput>1/k^r</userinput> for <varname>k</varname>
+ from 1 to n. Equivalent to <userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Hofstadter's function q(n) defined by q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> for more
information.
+ The sequence is <ulink url="https://oeis.org/A005185">A005185 in OEIS</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (seed_values,combining_rule,n)</synopsis>
+ <para>Compute linear recursive sequence using Galois stepping.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Calculate multinomial coefficients. Takes a vector of
+ <varname>k</varname>
+ non-negative integers and computes the multinomial coefficient.
+ This corresponds to the coefficient in the homogeneous polynomial
+ in <varname>k</varname> variables with the corresponding powers.
+ </para>
+ <para>
+ The formula for <userinput>Multinomial(a,b,c)</userinput>
+ can be written as:
+<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting>
+ In other words, if we would have only two elements, then
+<userinput>Multinomial(a,b)</userinput> is the same thing as
+<userinput>Binomial(a+b,a)</userinput> or
+<userinput>Binomial(a+b,b)</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Get combination that would come after v in call to
+combinations, first combination should be <userinput>[1:k]</userinput>. This
+function is useful if you have many combinations to go through and you don't
+want to waste memory to store them all.
+ </para>
+ <para>
+ For example with Combinations you would normally write a loop like:
+ <screen><userinput>for n in Combinations (4,6) do (
+ SomeFunction (n)
+);</userinput>
+</screen>
+ But with NextCombination you would write something like:
+ <screen><userinput>n:=[1:4];
+do (
+ SomeFunction (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen>
+ See also <link linkend="gel-function-Combinations">Combinations</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Get the Pascal's triangle as a matrix. This will return
+ an <varname>i</varname>+1 by <varname>i</varname>+1 lower diagonal
+ matrix that is the Pascal's triangle after <varname>i</varname>
+ iterations.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Get all permutations of <varname>k</varname> numbers from 1 to <varname>n</varname> as a
vector of vectors.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Aliases: <function>Pochhammer</function></para>
+ <para>(Pochhammer) Rising factorial: (n)_k = n(n+1)...(n+(k-1)).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Aliases: <function>StirlingS1</function></para>
+ <para>Stirling number of the first kind.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Aliases: <function>StirlingS2</function></para>
+ <para>Stirling number of the second kind.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink>
for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (nth)</synopsis>
+ <para>Calculate the <varname>n</varname>th triangular number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Aliases: <function>Binomial</function></para>
+ <para>Calculate combinations, that is, the binomial coefficient.
+ <varname>n</varname> can be any real number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Choose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Calculate the number of permutations of size
+ <varname>r</varname> of numbers from 1 to <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Analysis</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Integration of f by Composite Simpson's Rule on the interval [a,b] with n subintervals with
error of max(f'''')*h^4*(b-a)/180, note that n should be even.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
+ <para>Integration of f by Composite Simpson's Rule on the interval [a,b] with the number of steps
calculated by the fourth derivative bound and the desired tolerance.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Attempt to calculate derivative by trying first symbolically and then numerically.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the even periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be even on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
+ and
+ <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Return a function that is a Fourier series with the
+coefficients given by the vectors <varname>a</varname> (sines) and
+<varname>b</varname> (cosines). Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>, while
+<userinput>b@(n)</userinput> refers to the term
+<userinput>sin(x*n*pi/L)</userinput>. Either <varname>a</varname>
+or <varname>b</varname> can be <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (func,start,inc)</synopsis>
+ <para>Try to calculate an infinite product for a single parameter function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (func,arg,start,inc)</synopsis>
+ <para>Try to calculate an infinite product for a double parameter function with func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (func,start,inc)</synopsis>
+ <para>Try to calculate an infinite sum for a single parameter function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (func,arg,start,inc)</synopsis>
+ <para>Try to calculate an infinite sum for a double parameter function with func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Try and see if a real-valued function is continuous at x0 by calculating the limit
there.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Test for differentiability by approximating the left and right limits and comparing.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Calculate the left limit of a real-valued function at x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Calculate the limit of a real-valued function at x0. Tries to calculate both left and right
limits.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Integration by midpoint rule.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Aliases: <function>NDerivative</function></para>
+ <para>Attempt to calculate numerical derivative.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of vectors <userinput>[a,b]</userinput>
+where <varname>a</varname> are the cosine coefficients and
+<varname>b</varname> are the sine coefficients of
+the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. This is the
+trigonometric real series composed of sines and cosines. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.
+Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Integration by rule set in NumericalIntegralFunction of f from a to b using
NumericalIntegralSteps steps.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Attempt to calculate numerical left derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
+ <para>Attempt to calculate the limit of f(step_fun(i)) as i goes from 1 to N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Attempt to calculate numerical right derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the odd periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be odd on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>
+ and
+ <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Compute one-sided derivative using five point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Compute one-sided derivative using three-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Return a function that is the periodic extension of
+<function>f</function> defined on the interval <userinput>[a,b]</userinput>
+and has period <userinput>b-a</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
+ and
+ <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Calculate the right limit of a real-valued function at x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Compute two-sided derivative using five-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Compute two-sided derivative using three-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Funktionen</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Aliases: <function>Arg</function> <function>arg</function></para>
+ <para>argument (angle) of complex number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Bessel function of the first kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Bessel function of the first kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Bessel function of the first kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Bessel function of the second kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Bessel function of the second kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Bessel function of the second kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichlet kernel of order <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Aliases: <function>erf</function></para>
+ <para>The error function, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ErrorFunction">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Fejer kernel of order <varname>n</varname> evaluated at
+ <varname>t</varname></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Aliases: <function>Gamma</function></para>
+ <para>The Gamma function. Currently only implemented for real values.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are equal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>
+ The principal branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>.
+ That is, <function>LambertW</function> is the inverse of
+ the expression <userinput>x*e^x</userinput>. Even for
+ real <varname>x</varname> this expression is not one to one and
+ therefore has two branches over <userinput>[-1/e,0)</userinput>.
+ See <link linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> for the
other real branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>
+ The minus-one branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>
+ and less than 0.
+ That is, <function>LambertWm1</function> is the second
+ branch of the inverse of <userinput>x*e^x</userinput>.
+ See <link linkend="gel-function-LambertW"><function>LambertW</function></link> for the
principal branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (func,x,incr)</synopsis>
+ <para>Find the first value where f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Moebius mapping of the disk to itself mapping a to 0.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking z2,z3,z4 to 1,0, and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to infinity and z2,z3 to 1 and 0
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to 1 and z3,z4 to 0 and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to 0 and z2,z4 to 1 and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Poisson kernel on D(0,1) (not normalized to 1, that is integral of this is 2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Poisson kernel on D(0,R) (not normalized to 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Aliases: <function>zeta</function></para>
+ <para>The Riemann zeta function. Currently only implemented for real values.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>The unit step function is 0 for x<0, 1 otherwise. This is the integral of the Dirac
Delta function. Also called the Heaviside function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>
+ The <function>cis</function> function, that is the same as
+ <userinput>cos(x)+1i*sin(x)</userinput>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Wandelt Grad in Radiant um.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Wandelt Grad in Radiant um.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Calculates the unnormalized sinc function, that is
+ <userinput>sin(x)/x</userinput>.
+ If you want the normalized function call <userinput>sinc(pi*x)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Gleichungen lösen</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>
+ Compute roots of a cubic (degree 3) polynomial using the
+ cubic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,4]</userinput>.
+ Returns a column vector of the three solutions. The first solution is always
+ the real one as a cubic always has one real solution.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns <varname>y</varname> at <varname>x1</varname>.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKutta">RungeKutta</link>
+ for solving ODE.
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link>
+ for solving ODE.
+ Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the bisection method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the method of false position.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Find root of a function using the Muller's method.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the secant method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Halley's method. <varname>f</varname> is
+ the function, <varname>df</varname> is the derivative of
+ <varname>f</varname>, and <varname>ddf</varname> is the second derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link> and
<link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Newton's method. <varname>f</varname> is
+ the function and <varname>df</varname> is the derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> and <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>
+ Compute roots of a polynomial (degrees 1 through 4)
+ using one of the formulas for such polynomials.
+ The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,4]</userinput>.
+ Returns a column vector of the solutions.
+ </para>
+ <para>
+ The function calls
+ <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>,
+ <link linkend="gel-function-CubicFormula">CubicFormula</link>, and
+ <link linkend="gel-function-QuarticFormula">QuarticFormula</link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>
+ Compute roots of a quadratic (degree 2) polynomial using the
+ quadratic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>3*x^2 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,3]</userinput>.
+ Returns a column vector of the two solutions.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>
+ Compute roots of a quartic (degree 4) polynomial using the
+ quartic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>5*x^4 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,0,5]</userinput>.
+ Returns a column vector of the four solutions.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments, returns <varname>y</varname> at <varname>x1</varname>.
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values. Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Statistik</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Aliases: <function>average</function> <function>Mean</function>
<function>mean</function></para>
+ <para>Calculate average (the arithmetic mean) of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Integral of the GaussFunction from 0 to <varname>x</varname> (area under the normal
curve).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>The normalized Gauss distribution function (the normal curve).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Aliases: <function>median</function></para>
+ <para>Calculate median of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>stdevp</function></para>
+ <para>Calculate the population standard deviation of a whole matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Aliases: <function>RowMean</function></para>
+ <para>Calculate average of each row in a matrix. That is, compute the
+ arithmetic mean.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Calculate median of each row in a matrix and return a column
+ vector of the medians.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>rowstdevp</function></para>
+ <para>Calculate the population standard deviations of rows of a matrix and return a vertical
vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>rowstdev</function></para>
+ <para>Calculate the standard deviations of rows of a matrix and return a vertical vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Aliases: <function>stdev</function></para>
+ <para>Calculate the standard deviation of a whole matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Polynomials</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Add two polynomials (vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Divide two polynomials (as vectors) using long division.
+ Returns the quotient
+ of the two polynomials. The optional argument <varname>r</varname>
+ is used to return the remainder. The remainder will have lower
+ degree than <varname>q</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Check if a vector is usable as a polynomial.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Multiply two polynomials (as vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,guess,epsilon,maxn)</synopsis>
+ <para>Find a root of a polynomial using Newton's method. <varname>poly</varname> is
+ the polynomial as a vector and <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Take second polynomial (as vector) derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Take polynomial (as vector) derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Make function out of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Make string out of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Subtract two polynomials (as vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Trim zeros from a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Mengenlehre</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Returns a set theoretic intersection of X and Y (X and Y are vectors pretending to be
sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Returns <constant>true</constant> if the element x is in the set X (where X is a vector
pretending to be a set).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Returns <constant>true</constant> if X is a subset of Y (X and Y are vectors pretending to be
sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Returns a vector where every element of X appears only once.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Returns a set theoretic difference X-Y (X and Y are vectors pretending to be sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Returns a set theoretic union of X and Y (X and Y are vectors pretending to be sets).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Commutative Algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>For a Hilbert function that is c for degree d, given the Macaulay bound for the Hilbert
function of degree d+1 (The c^<d> operator from Green's proof).</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>The c_<d> operator from Green's proof of Macaulay's Theorem.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Return the dth Macaulay representation of a positive integer c.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Verschiedenes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vec)</synopsis>
+ <para>Convert a vector of ASCII values to a string.
+ See also
+ <link linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vec,alphabet)</synopsis>
+ <para>Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string.
A <constant>null</constant> vector results in an empty string.
+ See also
+ <link linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (str)</synopsis>
+ <para>Convert a string to a (row) vector of ASCII values.
+ See also
+ <link linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (str,alphabet)</synopsis>
+ <para>Convert a string to a (row) vector of 0-based alphabet values
+ (positions in the alphabet string), -1's for unknown letters.
+ An empty string results in a <constant>null</constant>.
+ See also
+ <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Symbolische Operationen</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Attempt to symbolically differentiate the function f, where f is a function of one
variable.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Attempt to symbolically differentiate the function f, where f is a function of one variable,
returns <constant>null</constant> if unsuccessful but is silent.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Attempt to symbolically differentiate a function n times.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Attempt to symbolically differentiate a function n times quietly and return
<constant>null</constant> on failure
+ (See <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Attempt to construct the Taylor approximation function around x0 to the nth degree.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Darstellung</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (file,type)</synopsis>
+ <synopsis>ExportPlot (file)</synopsis>
+ <para>
+ Export the contents of the plotting window to a file.
+ The type is a string that specifies the file type to
+ use, "png", "eps", or "ps". If the type is not
+ specified, then it is taken to be the extension, in
+ which case the extension must be ".png", ".eps", or ".ps".
+ </para>
+ <para>
+ Note that files are overwritten without asking.
+ </para>
+ <para>
+ On successful export, true is returned. Otherwise
+ error is printed and exception is raised.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>ExportPlot("file.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/directory/file","eps")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (func1,func2,func3,...)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a function (or several functions) with a line.
+ First (up to 10) arguments are functions, then optionally
+ you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>)
+ If the y limits are not specified, then the functions are computed and then the maxima and minima
+ are used.
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>
+ Show the line plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (func,...)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>
+ Plot a parametric complex valued function with a line. First comes
+the function that returns <computeroutput>x+iy</computeroutput>,
+then optionally the <varname>t</varname> limits as <userinput>t1,t2,tinc</userinput>, then
+optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
+ </para>
+ <para>
+ If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,
+ <varname>x2</varname>,<varname>y2</varname> can be replaced by an
+ <varname>n</varname> by 2 matrix for a longer polyline.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ arrows, the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ <userinput>"arrow"</userinput>, or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, type of arrow, or the legend. (Arrow and window are from version 1.0.6 onwards.)
+ </para>
+ <para>
+ If the line is to be treated as a filled polygon, filled with the given color, you
+ can specify the argument <userinput>"filled"</userinput>. Since version 1.0.22 onwards.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Arrow specification should be
+ <userinput>"origin"</userinput>,
+ <userinput>"end"</userinput>,
+ <userinput>"both"</userinput>, or
+ <userinput>"none"</userinput>.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector.
+ </para>
+ <para>
+ Specifying <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>.
+ The input can be an <varname>n</varname> by 2 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th
roots of unity")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector. Therefore, notice in the
+ last example the transpose of the vector <userinput>0:6</userinput>
+ to make it into a column vector.
+ </para>
+ <para>
+ Available from version 1.0.18 onwards. Specifying
+ <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>
+ Returns a row vector of a point on the line plot corresponding to
+ the current mouse location. If the line plot is not visible,
+ then prints an error and returns <constant>null</constant>.
+ In this case you should run
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> or
+ <link linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link>
+ to put the graphing window into the line plot mode.
+ See also
+ <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfunc,yfunc,...)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
+ <para>
+ Plot a parametric function with a line. First come the functions
+for <varname>x</varname> and <varname>y</varname> then optionally the <varname>t</varname> limits as
<userinput>t1,t2,tinc</userinput>, then optionally the
+limits as <userinput>x1,x2,y1,y2</userinput>.
+ </para>
+ <para>
+ If x and y limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>
+ If in line plot mode, waits for a click on the line plot window
+ and returns the location of the click as a row vector.
+ If the window is closed
+ the function returns immediately with <constant>null</constant>.
+ If the window is not in line plot mode, it is put in it and shown
+ if not shown.
+ See also
+ <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>
+ Freeze drawing of the canvas plot temporarily. Useful if you need to draw a bunch of
elements
+ and want to delay drawing everything to avoid flicker in an animation. After everything
+ has been drawn you should call <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.
+ </para>
+ <para>
+ The canvas is always thawed after end of any execution, so it will never remain frozen.
The moment
+ a new command line is shown for example the plot canvas is thawed automatically. Also note
that
+ calls to freeze and thaw may be safely nested.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>
+ Thaw the plot canvas frozen by
+ <link linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link>
+ and redraw the canvas immediately. The canvas is also always thawed after end of execution
+ of any program.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>
+ Show and raise the plot window, creating it if necessary.
+ Normally the window is created when one of the plotting
+ functions is called, but it is not always raised if it
+ happens to be below other windows. So this function is
+ good to call in scripts where the plot window might have
+ been created before, and by now is hidden behind the
+ console or other windows.
+ </para>
+ <para>Version 1.0.19 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>
+ Clears the solutions drawn by the
+ <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>
+ function.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>
+ When a slope field plot is active, draw a solution with
+ the specified initial condition. The standard
+ Runge-Kutta method is used with increment <varname>dx</varname>.
+ Solutions stay on the graph until a different plot is shown or until
+ you call
+ <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>.
+ You can also use the graphical interface to draw solutions and specify
+ initial conditions with the mouse.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (func)</synopsis>
+ <synopsis>SlopefieldPlot (func,x1,x2,y1,y2)</synopsis>
+ <para>
+ Plot a slope field. The function <varname>func</varname>
+ should take two real numbers <varname>x</varname>
+ and <varname>y</varname>, or a single complex
+ number.
+ Optionally you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (func)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a surface function that takes either two arguments or a complex number. First comes the
function then optionally limits as <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>,
+ <varname>z1</varname>, <varname>z2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>).
+ Genius can only plot a single surface function at this time.
+ </para>
+ <para>
+ If the z limits are not specified then the maxima and minima of the function are used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>
+ Show the surface plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ <para>
+ Available in version 1.0.19 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,label)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>
+ Plot a surface from data. The data is an n by 3 matrix whose
+ rows are the x, y and z coordinates. The data can also be
+ simply a vector whose length is a multiple of 3 and so
+ contains the triples of x, y, z. The data should contain at
+ least 3 points.
+ </para>
+ <para>
+ Optionally we can give the label and also optionally the
+ limits. If limits are not given, they are computed from
+ the data, <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>
+ is not used, if you want to use it, pass it in explicitly.
+ If label is not given then empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"My data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen>
+ </para>
+ <para>
+ Here's an example of how to plot in polar coordinates,
+ in particular how to plot the function
+ <userinput>-r^2 * theta</userinput>:
+ <screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi
by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)</synopsis>
+ <para>
+ Plot a surface from regular rectangular data.
+ The data is given in a n by m matrix where the rows are the
+ x coordinate and the columns are the y coordinate.
+ The x coordinate is divided into equal n-1 subintervals
+ and y coordinate is divided into equal m-1 subintervals.
+ The limits <varname>x1</varname> and <varname>x2</varname>
+ give the interval on the x-axis that we use, and
+ the limits <varname>y1</varname> and <varname>y2</varname>
+ give the interval on the y-axis that we use.
+ If the limits <varname>z1</varname> and <varname>z2</varname>
+ are not given they are computed from the data (to be
+ the extreme values from the data).
+ </para>
+ <para>
+ Optionally we can give the label, if label is not given then
+ empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> can be replaced by an
+ <varname>n</varname> by 3 matrix for a longer polyline.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>,<varname>z</varname>.
+ The input can be an <varname>n</varname> by 3 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>
+ Clears the solutions drawn by the
+ <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>
+ function.
+ </para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
+ <para>
+ When a vector field plot is active, draw a solution with
+ the specified initial condition. The standard
+ Runge-Kutta method is used with increment <varname>dt</varname>
+ for an interval of length <varname>tlen</varname>.
+ Solutions stay on the graph until a different plot is shown or until
+ you call
+ <link
linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>.
+ You can also use the graphical interface to draw solutions and specify
+ initial conditions with the mouse.
+ </para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (funcx, funcy)</synopsis>
+ <synopsis>VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)</synopsis>
+ <para>
+ Plot a two dimensional vector field. The function
+ <varname>funcx</varname>
+ should be the dx/dt of the vectorfield and the function
+ <varname>funcy</varname> should be the dy/dt of the vectorfield.
+ The functions
+ should take two real numbers <varname>x</varname>
+ and <varname>y</varname>, or a single complex
+ number. When the parameter
+ <link
linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link>
+ is <constant>true</constant>, then the magnitude of the vectors is normalized. That is, only
+ the direction and not the magnitude is shown.
+ </para>
+ <para>
+ Optionally you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1,
-1, 1)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Beispielprogramme in GEL</title>
+
+ <para>
+Here is a function that calculates factorials:
+<programlisting><![CDATA[function f(x) = if x <= 1 then 1 else (f(x-1)*x)
+]]></programlisting>
+ </para>
+ <para>
+With indentation it becomes:
+<programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting>
+ </para>
+ <para>
+This is a direct port of the factorial function from the <application>bc</application> manpage. The syntax
seems similar to <application>bc</application>, but different in that in GEL, the last expression is the one
that is returned. Using the <literal>return</literal> function instead, it would be:
+<programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting>
+ </para>
+
+ <para>
+By far the easiest way to define a factorial function would be using
+the product loop as follows. This is not only the shortest and fastest,
+but also probably the most readable version.
+<programlisting>function f(x) = prod k=1 to x do k
+</programlisting>
+ </para>
+
+ <para>
+Here is a larger example, this basically redefines the internal
+<link linkend="gel-function-ref"><function>ref</function></link> function to calculate the row echelon form
of a
+matrix. The function <function>ref</function> is built in and much faster,
+but this example demonstrates some of the more complex features of GEL.
+<programlisting><![CDATA[# Calculate the row-echelon form of a matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting>
+ </para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Einstellungen</title>
+
+ <para>
+ To configure <application>Genius Mathematics Tool</application>, choose
+ <menuchoice><guimenu>Settings</guimenu>
+ <guimenuitem>Preferences</guimenuitem></menuchoice>.
+ There are several basic parameters provided by the calculator in addition
+ to the ones provided by the standard library. These control how the
+ calculator behaves.
+ </para>
+
+ <note>
+ <title>Changing Settings with GEL</title>
+ <para>
+ Many of the settings in Genius are simply global variables, and can
+ be evaluated and assigned to in the same way as normal variables. See
+ <xref linkend="genius-gel-variables"/> about evaluating and assigning
+ to variables, and <xref linkend="genius-gel-function-parameters"/> for
+ a list of settings that can be modified in this way.
+ </para>
+ <para>
+As an example, you can set the maximum number of digits in a result to 12 by typing:
+<programlisting>MaxDigits = 12
+</programlisting>
+ </para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Ausgabe</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximum digits to output</guilabel>
+ </term>
+ <listitem>
+ <para>The maximum digits in a result (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Results as floats</guilabel>
+ </term>
+ <listitem>
+ <para>If the results should be always printed as floats (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Floats in scientific notation</guilabel>
+ </term>
+ <listitem>
+ <para>If floats should be in scientific notation (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Always print full expressions</guilabel>
+ </term>
+ <listitem>
+ <para>Should we print out full expressions for non-numeric return values (longer than a
line) (<link linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Use mixed fractions</guilabel>
+ </term>
+ <listitem>
+ <para>If fractions should be printed as mixed fractions such as "1 1/3" rather than "4/3".
(<link linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Display 0.0 when floating point number is less than 10^-x (0=never chop)</guilabel>
+ </term>
+ <listitem>
+ <para>How to chop output. But only when other numbers nearby are large.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Only chop numbers when another number is greater than 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>When to chop output. This is set by the parameter <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Remember output settings across sessions</guilabel>
+ </term>
+ <listitem>
+ <para>Should the output settings in the <guilabel>Number/Expression output options</guilabel> frame
+ be remembered for next session. Does not apply to the <guilabel>Error/Info output
options</guilabel> frame.</para>
+ <para>
+ If unchecked,
+ either the default or any previously saved settings are used each time Genius starts
+ up. Note that
+ settings are saved at the end of the session, so if you wish to change the defaults
+ check this box, restart <application>Genius Mathematics Tool</application> and then uncheck it
again.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Display errors in a dialog</guilabel>
+ </term>
+ <listitem>
+ <para>If set the errors will be displayed in a separate dialog, if
+ unset the errors will be printed on the console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Display information messages in a dialog</guilabel>
+ </term>
+ <listitem>
+ <para>If set the information messages will be displayed in a separate
+ dialog, if unset the information messages will be printed on the
+ console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Maximum errors to display</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The maximum number of errors to return on one evaluation
+ (<link linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). If you set this to
0 then
+ all errors are always returned. Usually if some loop causes
+ many errors, then it is unlikely that you will be able to make
+ sense out of more than a few of these, so seeing a long list
+ of errors is usually not helpful.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ In addition to these preferences, there are some preferences that can
+ only be changed by setting them in the workspace console. For others
+ that may affect the output see <xref linkend="genius-gel-function-parameters"/>.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>The base that will be used to output integers</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>A string, can be <literal>"normal"</literal>,
+<literal>"latex"</literal>, <literal>"mathml"</literal> or
+<literal>"troff"</literal> and it will affect how matrices (and perhaps other
+stuff) is printed, useful for pasting into documents. Normal style is the
+default human readable printing style of <application>Genius Mathematics Tool</application>. The other
styles are for
+typesetting in LaTeX, MathML (XML), or in Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Genauigkeit</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Gleitkommagenauigkeit</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The floating point precision in bits
+ (<link linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>).
+ Note that changing this only affects newly computed quantities.
+ Old values stored in variables are obviously still in the old
+ precision and if you want to have them more precise you will have
+ to recompute them. Exceptions to this are the system constants
+ such as <link linkend="gel-function-pi"><function>pi</function></link> or
+ <link linkend="gel-function-e"><function>e</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Genauigkeitseinstellungen für folgende Sitzungen merken</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Should the precision setting be remembered for the next session. If unchecked,
+ either the default or any previously saved setting is used each time Genius starts
+ up. Note that
+ settings are saved at the end of the session, so if you wish to change the default
+ check this box, restart genius and then uncheck it again.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Terminal</title>
+
+ <para>»Terminal« bezieht sich auf die Konsole im Arbeitsplatz.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Zeilen an Scrollback</guilabel>
+ </term>
+ <listitem>
+ <para>Durch Zurückrollen sichtbare Zeilen im Terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Schrift</guilabel>
+ </term>
+ <listitem>
+ <para>Die im Terminal zu verwendende Schrift.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Schwarz auf Weiß</guilabel>
+ </term>
+ <listitem>
+ <para>If to use black on white on the terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Blinkender Cursor</guilabel>
+ </term>
+ <listitem>
+ <para>If the cursor in the terminal should blink when the terminal is in focus. This can sometimes
be annoying and it generates idle traffic if you are using Genius remotely.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Speicher</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximale Anzahl zuzuweisender Knoten</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Internally all data is put onto small nodes in memory. This gives
+ a limit on the maximum number of nodes to allocate for
+ computations. This limit avoids the problem of running out of memory
+ if you do something by mistake that uses too much memory, such
+ as a recursion without end. This could slow your computer and make
+ it hard to even interrupt the program.
+ </para>
+ <para>
+ Once the limit is reached, <application>Genius Mathematics Tool</application> asks if you wish to
interrupt
+ the computation or if you wish to continue. If you continue, no
+ limit is applied and it will be possible to run your computer
+ out of memory. The limit will be applied again next time you
+ execute a program or an expression on the Console regardless of how
+ you answered the question.
+ </para>
+ <para>
+ Setting the limit to zero means there is no limit to the amount of
+ memory that genius uses.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>Info zu <application>Genius Mathematikwerkzeug</application></title>
+
+ <para> <application>Genius Mathematics Tool</application> was written by Jiří (George) Lebl
+(<email>jirka 5z com</email>). The history of <application>Genius Mathematics Tool</application> goes back
to late
+1997. It was the first calculator program for GNOME, but it then grew
+beyond being just a desktop calculator. To find more information about
+<application>Genius Mathematics Tool</application>, please visit the <ulink
url="http://www.jirka.org/genius.html" type="http">Genius Web page</ulink>.
+ </para>
+ <para>
+ To report a bug or make a suggestion regarding this application or
+ this manual, send email to me (the author) or post to the mailing
+ list (see the web page).
+ </para>
+
+ <para> This program is distributed under the terms of the GNU
+ General Public license as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option)
+ any later version. A copy of this license can be found at this
+ <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">link</ulink>, or in the file
+ COPYING included with the source code of this program. </para>
+
+ <para>Jiří Lebl was during various parts of the development
+ partially supported for the work by NSF grants DMS 0900885,
+ DMS 1362337,
+ the University of Illinois at Urbana-Champaign,
+ the University of California at San Diego,
+ the University of Wisconsin-Madison, and
+ Oklahoma State University. The software has
+ been used for both teaching and research.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/de/html/index.html b/help/de/html/index.html
index 4776e9a..f76acf6 100644
--- a/help/de/html/index.html
+++ b/help/de/html/index.html
@@ -1,4 +1,4 @@
<html><head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"><title>Genius-Handbuch</title><meta name="generator" content="DocBook XSL Stylesheets
V1.79.1"><meta name="description" content="Handbuch für das Genius Mathematikwerkzeug."><link rel="home"
href="index.html" title="Genius-Handbuch"><link rel="next" href="ch01.html" title="Kapitel 1.
Einführung"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div
class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3"
align="center">Genius-Handbuch</th></tr><tr><td width="20%" align="left"> </td><th width="60%"
align="center"> </th><td width="20%" align="right"> <a accesskey="n"
href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Genius-Handbuch</h1></div><div><div
class="authorgroup"><div class="author"><h3 class="author"><span class="fi
rstname">Jiří</span> <span class="surname">Lebl</span></h3><div class="affiliation"><span
class="orgname">Oklahoma State University<br></span><div class="address"><p> <code class="email"><<a
class="email" href="mailto:jirka 5z com">jirka 5z com</a>></code> </p></div></div></div><div
class="author"><h3 class="author"><span class="firstname">Kai</span> <span
class="surname">Willadsen</span></h3><div class="affiliation"><span class="orgname">University of Queensland,
Australien<br></span><div class="address"><p> <code class="email"><<a class="email" href="mailto:kaiw itee
uq edu au">kaiw itee uq edu au</a>></code> </p></div></div></div></div></div><div><p
class="releaseinfo">This manual describes version 1.0.22 of Genius.
- </p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2009, 2011
Mario Blättermann (mariobl freenet de)</p></div><div><div class="legalnotice"><a
name="legalnotice"></a><p>Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free Documentation
License (GFDL), Version 1.1 oder jeder späteren, von der Free Software Foundation veröffentlichten Version
ohne unveränderbare Abschnitte sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt
und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem <a class="ulink" href="ghelp:fdl"
target="_top">Link</a> oder in der mit diesem Handbuch gelieferten Datei COPYING-DOCS.</p><p>Dieses Handbuch
ist Teil einer Sammlung von GNOME-Handbüchern, die unter der GFDL veröffentlicht werden. Wenn Sie dieses
Handbuch getrennt von der Sammlung weiterverbreite
n möchten, können Sie das tun, indem Sie eine Kopie der Lizenz zum Handbuch hinzufügen, wie es in Abschnitt
6 der Lizenz beschrieben ist.</p><p>Viele der Namen, die von Unternehmen verwendet werden, um ihre Produkte
und Dienstleistungen von anderen zu unterscheiden, sind eingetragene Warenzeichen. An den Stellen, an denen
diese Namen in einer GNOME-Dokumentation erscheinen, werden die Namen in Großbuchstaben oder mit einem großen
Anfangsbuchstaben geschrieben, wenn das GNOME-Dokumentationsprojekt auf diese Warenzeichen hingewiesen
wird.</p><p>DAS DOKUMENT UND VERÄNDERTE FASSUNGEN DES DOKUMENTS WERDEN UNTER DEN BEDINGUNGEN DER GNU FREE
DOCUMENTATION LICENSE ZUR VERFÜGUNG GESTELLT MIT DEM WEITERGEHENDEN VERSTÄNDNIS, DASS: </p><div
class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>DIESES DOKUMENT WIRD »WIE
VORLIEGEND« GELIEFERT, OHNE GARANTIEN IRGENDEINER ART, SOWOHL AUSDRÜCKLICH GENANNTE ALS AUCH ANGEDEUTETE.
DIES BEZIEHT SICH AUCH OHNE EI
NSCHRÄNKUNG AUF GARANTIEN, DASS DIESES DOKUMENT ODER VERÄNDERTE FASSUNGEN DIESES DOKUMENTS FREI VON
HANDELSDEFEKTEN, FÜR EINEN BESTIMMTEN ZWECK GEEIGNET IST ODER DASS ES KEINE RECHTE DRITTER VERLETZT. DAS
VOLLE RISIKO WAS QUALITÄT, GENAUIGKEIT UND LEISTUNG DES DOKUMENTS ODER VERÄNDERTE FASSUNGEN DES DOKUMENTS
LIEGT BEI IHNEN. SOLLTE EIN DOKUMENT ODER EINE VERÄNDERTE FASSUNG DAVON FEHLER IRGENDEINER ART BEINHALTEN,
TRAGEN SIE (NICHT DER URSPRUNGSAUTOR, DER AUTOR ODER EIN MITWIRKENDER) DIE KOSTEN FÜR NOTWENDIGE
DIENSTLEISTUNGEN, REPARATUREN ODER FEHLERKORREKTUREN. DIESER HAFTUNGSAUSSCHLUSS IST EIN ESSENZIELLER TEIL
DIESER LIZENZ. DIE VERWENDUNG EINES DOKUMENTS ODER EINER VERÄNDERTEN VERSION DES DOKUMENTS IST NICHT
GESTATTET AUßER UNTER BEACHTUNG DIESES HAFTUNGSAUSSCHLUSSES UND</p></li><li class="listitem"><p>UNTER KEINEN
UMSTÄNDEN UND AUF BASIS KEINER RECHTSGRUNDLAGE, EGAL OB DURCH UNERLAUBTEN HANDLUNGEN (EINSCHLIEßLICH
FAHRLÄSSIGKEIT), VERTRAG ODER ANDERWEITIG KAN
N DER AUTOR, URSPRUNGSAUTOR, EIN MITWIRKENDER ODER EIN VERTRIEBSPARTNER DIESES DOKUMENTS ODER EINER
VERÄNDERTEN FASSUNG DES DOKUMENTS ODER EIN ZULIEFERER EINER DIESER PARTEIEN, HAFTBAR GEMACHT WERDEN FÜR
DIREKTE, INDIREKTE, SPEZIELLE, VERSEHENTLICHE ODER FOLGESCHÄDEN JEGLICHER ART, EINSCHLIEßLICH UND OHNE
EINSCHRÄNKUNGEN SCHÄDEN DURCH VERLUST VON KULANZ, ARBEITSAUSFALL, COMPUTERVERSAGEN ODER
COMPUTERFEHLFUNKTIONEN ODER ALLE ANDEREN SCHÄDEN ODER VERLUSTE, DIE SICH AUS ODER IN VERBINDUNG MIT DER
VERWENDUNG DES DOKUMENTS UND VERÄNDERTER FASSUNGEN DES DOKUMENTS ERGEBEN, AUCH WENN DIE OBEN GENANNTEN
PARTEIEN ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN INFORMIERT WAREN.</p></li></ol></div></div></div><div><div
class="legalnotice"><a name="idm46099435277808"></a><p
class="legalnotice-title"><b>Rückmeldungen</b></p><p>Um einen Fehler zu melden oder einen Vorschlag zur
Anwendung <span class="application">Genius Mathematikwerkzeug</span> oder zu diesem Handbuch zu machen, folge
S
ie den Anweisungen auf der <a class="ulink" href="http://www.jirka.org/genius.html"
target="_top">Genius-Webseite</a> oder schreiben Sie eine E-Mail an <code class="email"><<a class="email"
href="mailto:jirka 5z com">jirka 5z com</a>></code>.</p></div></div><div><div class="revhistory"><table
style="border-style:solid; width:100%;" summary="Versionsgeschichte"><tr><th align="left" valign="top"
colspan="2"><b>Versionsgeschichte</b></th></tr><tr><td align="left">Version 0.2</td><td
align="left">September 2016</td></tr><tr><td align="left" colspan="2">
+ </p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2009, 2011
Mario Blättermann (mariobl freenet de)</p></div><div><div class="legalnotice"><a
name="legalnotice"></a><p>Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free Documentation
License (GFDL), Version 1.1 oder jeder späteren, von der Free Software Foundation veröffentlichten Version
ohne unveränderbare Abschnitte sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt
und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem <a class="ulink" href="ghelp:fdl"
target="_top">Link</a> oder in der mit diesem Handbuch gelieferten Datei COPYING-DOCS.</p><p>Dieses Handbuch
ist Teil einer Sammlung von GNOME-Handbüchern, die unter der GFDL veröffentlicht werden. Wenn Sie dieses
Handbuch getrennt von der Sammlung weiterverbreite
n möchten, können Sie das tun, indem Sie eine Kopie der Lizenz zum Handbuch hinzufügen, wie es in Abschnitt
6 der Lizenz beschrieben ist.</p><p>Viele der Namen, die von Unternehmen verwendet werden, um ihre Produkte
und Dienstleistungen von anderen zu unterscheiden, sind eingetragene Warenzeichen. An den Stellen, an denen
diese Namen in einer GNOME-Dokumentation erscheinen, werden die Namen in Großbuchstaben oder mit einem großen
Anfangsbuchstaben geschrieben, wenn das GNOME-Dokumentationsprojekt auf diese Warenzeichen hingewiesen
wird.</p><p>DAS DOKUMENT UND VERÄNDERTE FASSUNGEN DES DOKUMENTS WERDEN UNTER DEN BEDINGUNGEN DER GNU FREE
DOCUMENTATION LICENSE ZUR VERFÜGUNG GESTELLT MIT DEM WEITERGEHENDEN VERSTÄNDNIS, DASS: </p><div
class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>DIESES DOKUMENT WIRD »WIE
VORLIEGEND« GELIEFERT, OHNE GARANTIEN IRGENDEINER ART, SOWOHL AUSDRÜCKLICH GENANNTE ALS AUCH ANGEDEUTETE.
DIES BEZIEHT SICH AUCH OHNE EI
NSCHRÄNKUNG AUF GARANTIEN, DASS DIESES DOKUMENT ODER VERÄNDERTE FASSUNGEN DIESES DOKUMENTS FREI VON
HANDELSDEFEKTEN, FÜR EINEN BESTIMMTEN ZWECK GEEIGNET IST ODER DASS ES KEINE RECHTE DRITTER VERLETZT. DAS
VOLLE RISIKO WAS QUALITÄT, GENAUIGKEIT UND LEISTUNG DES DOKUMENTS ODER VERÄNDERTE FASSUNGEN DES DOKUMENTS
LIEGT BEI IHNEN. SOLLTE EIN DOKUMENT ODER EINE VERÄNDERTE FASSUNG DAVON FEHLER IRGENDEINER ART BEINHALTEN,
TRAGEN SIE (NICHT DER URSPRUNGSAUTOR, DER AUTOR ODER EIN MITWIRKENDER) DIE KOSTEN FÜR NOTWENDIGE
DIENSTLEISTUNGEN, REPARATUREN ODER FEHLERKORREKTUREN. DIESER HAFTUNGSAUSSCHLUSS IST EIN ESSENZIELLER TEIL
DIESER LIZENZ. DIE VERWENDUNG EINES DOKUMENTS ODER EINER VERÄNDERTEN VERSION DES DOKUMENTS IST NICHT
GESTATTET AUßER UNTER BEACHTUNG DIESES HAFTUNGSAUSSCHLUSSES UND</p></li><li class="listitem"><p>UNTER KEINEN
UMSTÄNDEN UND AUF BASIS KEINER RECHTSGRUNDLAGE, EGAL OB DURCH UNERLAUBTEN HANDLUNGEN (EINSCHLIEßLICH
FAHRLÄSSIGKEIT), VERTRAG ODER ANDERWEITIG KAN
N DER AUTOR, URSPRUNGSAUTOR, EIN MITWIRKENDER ODER EIN VERTRIEBSPARTNER DIESES DOKUMENTS ODER EINER
VERÄNDERTEN FASSUNG DES DOKUMENTS ODER EIN ZULIEFERER EINER DIESER PARTEIEN, HAFTBAR GEMACHT WERDEN FÜR
DIREKTE, INDIREKTE, SPEZIELLE, VERSEHENTLICHE ODER FOLGESCHÄDEN JEGLICHER ART, EINSCHLIEßLICH UND OHNE
EINSCHRÄNKUNGEN SCHÄDEN DURCH VERLUST VON KULANZ, ARBEITSAUSFALL, COMPUTERVERSAGEN ODER
COMPUTERFEHLFUNKTIONEN ODER ALLE ANDEREN SCHÄDEN ODER VERLUSTE, DIE SICH AUS ODER IN VERBINDUNG MIT DER
VERWENDUNG DES DOKUMENTS UND VERÄNDERTER FASSUNGEN DES DOKUMENTS ERGEBEN, AUCH WENN DIE OBEN GENANNTEN
PARTEIEN ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN INFORMIERT WAREN.</p></li></ol></div></div></div><div><div
class="legalnotice"><a name="idm51"></a><p class="legalnotice-title"><b>Rückmeldungen</b></p><p>Um einen
Fehler zu melden oder einen Vorschlag zur Anwendung <span class="application">Genius
Mathematikwerkzeug</span> oder zu diesem Handbuch zu machen, folge Sie den Anwei
sungen auf der <a class="ulink" href="http://www.jirka.org/genius.html" target="_top">Genius-Webseite</a>
oder schreiben Sie eine E-Mail an <code class="email"><<a class="email" href="mailto:jirka 5z com">jirka
5z com</a>></code>.</p></div></div><div><div class="revhistory"><table style="border-style:solid;
width:100%;" summary="Versionsgeschichte"><tr><th align="left" valign="top"
colspan="2"><b>Versionsgeschichte</b></th></tr><tr><td align="left">Version 0.2</td><td
align="left">September 2016</td></tr><tr><td align="left" colspan="2">
<p class="author">Jiri (George) Lebl <code class="email"><<a class="email"
href="mailto:jirka 5z com">jirka 5z com</a>></code></p>
</td></tr></table></div></div><div><div class="abstract"><p
class="title"><b>Zusammenfassung</b></p><p>Handbuch für das Genius
Mathematikwerkzeug.</p></div></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl
class="toc"><dt><span class="chapter"><a href="ch01.html">1. Einführung</a></span></dt><dt><span
class="chapter"><a href="ch02.html">2. Erste Schritte</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch02.html#genius-to-start"><span class="application">Genius Mathematikwerkzeug
starten</span></a></span></dt><dt><span class="sect1"><a href="ch02s02.html">Beim Start von <span
class="application">Genius</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3.
Grundlagen der Benutzung</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch03.html#genius-usage-workarea">Benutzung des Arbeitsplatzes</a></span></dt><dt><span class="sect1"><a
href="ch03s02.html">Erstellen eines neuen Programms</a></span></dt><dt><span
class="sect1"><a href="ch03s03.html">Öffnen und Ausführen eines Programms</a></span></dt></dl></dd><dt><span
class="chapter"><a href="ch04.html">4. Darstellung</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch04.html#genius-line-plots">Kurvendarstellungen</a></span></dt><dt><span class="sect1"><a
href="ch04s02.html">Parametrische Darstellungen</a></span></dt><dt><span class="sect1"><a
href="ch04s03.html">Richtungsfeld-Darstellungen</a></span></dt><dt><span class="sect1"><a
href="ch04s04.html">Vektorfeld-Darstellungen</a></span></dt><dt><span class="sect1"><a
href="ch04s05.html">2D-Darstellungen</a></span></dt></dl></dd><dt><span class="chapter"><a
href="ch05.html">5. GEL-Grundlagen</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch05.html#genius-gel-values">Werte</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-numbers">Zahlen</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-booleans">Wahrheitsw
erte</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-strings">Strings</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-null">Null</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s02.html">Verwendung von Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s02.html#genius-gel-variables-setting">Setzen von Variablen</a></span></dt><dt><span
class="sect2"><a href="ch05s02.html#genius-gel-variables-built-in">Eingebaute
Variablen</a></span></dt><dt><span class="sect2"><a href="ch05s02.html#genius-gel-previous-result">Vorherige
Ergebnisvariable</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch05s03.html">Verwendung von
Funktionen</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-defining">Definieren von Funktionen</a></span></dt><dt><span
class="sect2"><a href="ch05s03.html#genius-gel-functions-variable-argument-lists">Variable Argument Lists</a>
</span></dt><dt><span class="sect2"><a href="ch05s03.html#genius-gel-functions-passing-functions">Übergabe
von Funktionen an Funktionen</a></span></dt><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-operations">Operationen mit
Funktionen</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s04.html">Trenner</a></span></dt><dt><span class="sect1"><a
href="ch05s05.html">Kommentare</a></span></dt><dt><span class="sect1"><a href="ch05s06.html">Modulare
Auswertung</a></span></dt><dt><span class="sect1"><a href="ch05s07.html">Liste der
GEL-Operatoren</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Programmierung mit
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch06.html#genius-gel-conditionals">Bedingungen</a></span></dt><dt><span class="sect1"><a
href="ch06s02.html">Schleifen</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-while">While-Schleifen</a></span></dt><dt><span cla
ss="sect2"><a href="ch06s02.html#genius-gel-loops-for">For-Schleifen</a></span></dt><dt><span
class="sect2"><a href="ch06s02.html#genius-gel-loops-foreach">Foreach-Schleifen</a></span></dt><dt><span
class="sect2"><a href="ch06s02.html#genius-gel-loops-break-continue">Break and
Continue</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch06s03.html">Summen und
Produkte</a></span></dt><dt><span class="sect1"><a
href="ch06s04.html">Vergleichsoperatoren</a></span></dt><dt><span class="sect1"><a
href="ch06s05.html">Globale Variablen und Variablenbereiche</a></span></dt><dt><span class="sect1"><a
href="ch06s06.html">Parametervariablen</a></span></dt><dt><span class="sect1"><a
href="ch06s07.html">Rückgabewerte</a></span></dt><dt><span class="sect1"><a
href="ch06s08.html">Referenzen</a></span></dt><dt><span class="sect1"><a href="ch06s09.html">Lvalues (linke
Werte)</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Fortgeschrittene
Programmierung mit
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch07.html#genius-gel-error-handling">Fehlerbehandlung</a></span></dt><dt><span class="sect1"><a
href="ch07s02.html">Übergeordnete Syntax</a></span></dt><dt><span class="sect1"><a
href="ch07s03.html">Funktionen als Rückgabe</a></span></dt><dt><span class="sect1"><a
href="ch07s04.html">Echte lokale Variablen</a></span></dt><dt><span class="sect1"><a href="ch07s05.html">GEL
Startprozedur</a></span></dt><dt><span class="sect1"><a href="ch07s06.html">Laden von
Programmen</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Matrizen in
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#genius-gel-matrix-support">Matrizen
eingeben</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">Operatoren für konjugierte
Transposition und Transposition</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">Lineare
Algebra</a></span></dt></dl></dd><dt><span class="chapter"><a h
ref="ch09.html">9. Polynome in GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch09.html#genius-gel-polynomials-using">Verwendung von Polynomen</a></span></dt></dl></dd><dt><span
class="chapter"><a href="ch10.html">10. Mengenlehre in GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch10.html#genius-gel-sets-using">Mengen verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a
href="ch11.html">11. Liste der GEL-Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch11.html#genius-gel-function-list-commands">Befehle</a></span></dt><dt><span class="sect1"><a
href="ch11s02.html">Grundlegendes</a></span></dt><dt><span class="sect1"><a
href="ch11s03.html">Parameter</a></span></dt><dt><span class="sect1"><a
href="ch11s04.html">Konstanten</a></span></dt><dt><span class="sect1"><a
href="ch11s05.html">Numerik</a></span></dt><dt><span class="sect1"><a
href="ch11s06.html">Trigonometrie</a></span></dt><dt><span class="sect1"><a href="ch11s07.h
tml">Zahlentheorie</a></span></dt><dt><span class="sect1"><a
href="ch11s08.html">Matrixoperationen</a></span></dt><dt><span class="sect1"><a href="ch11s09.html">Lineare
Algebra</a></span></dt><dt><span class="sect1"><a href="ch11s10.html">Kombinatorik</a></span></dt><dt><span
class="sect1"><a href="ch11s11.html">Analysis</a></span></dt><dt><span class="sect1"><a
href="ch11s12.html">Funktionen</a></span></dt><dt><span class="sect1"><a href="ch11s13.html">Gleichungen
lösen</a></span></dt><dt><span class="sect1"><a href="ch11s14.html">Statistik</a></span></dt><dt><span
class="sect1"><a href="ch11s15.html">Polynomials</a></span></dt><dt><span class="sect1"><a
href="ch11s16.html">Mengenlehre</a></span></dt><dt><span class="sect1"><a href="ch11s17.html">Commutative
Algebra</a></span></dt><dt><span class="sect1"><a href="ch11s18.html">Verschiedenes</a></span></dt><dt><span
class="sect1"><a href="ch11s19.html">Symbolische Operationen</a></span></dt><dt><span class="sect1"><a href="
ch11s20.html">Darstellung</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch12.html">12.
Beispielprogramme in GEL</a></span></dt><dt><span class="chapter"><a href="ch13.html">13.
Einstellungen</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch13.html#genius-prefs-output">Ausgabe</a></span></dt><dt><span class="sect1"><a
href="ch13s02.html">Genauigkeit</a></span></dt><dt><span class="sect1"><a
href="ch13s03.html">Terminal</a></span></dt><dt><span class="sect1"><a
href="ch13s04.html">Speicher</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch14.html">14. Info
zu <span class="application">Genius Mathematikwerkzeug</span></a></span></dt></dl></div><div
class="list-of-figures"><p><b>Abbildungsverzeichnis</b></p><dl><dt>2.1. <a
href="ch02s02.html#mainwindow-fig"><span class="application">Genius
Mathematikwerkzeug</span>-Fenster</a></dt><dt>4.1. <a href="ch04.html#lineplot-fig">Fenster »Darstellung
erstellen«</a></dt><dt>4.2. <a href="ch04.html#lin
eplot2-fig">Fenster »Darstellen«</a></dt><dt>4.3. <a href="ch04s02.html#paramplot-fig">Reiter »Parametrische
Darstellung«</a></dt><dt>4.4. <a href="ch04s02.html#paramplot2-fig">Parametrische
Darstellung</a></dt><dt>4.5. <a
href="ch04s05.html#surfaceplot-fig">2D-Darstellung</a></dt></dl></div></div><div class="navfooter"><hr><table
width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%"
align="center"> </td><td width="40%" align="right"> <a accesskey="n"
href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%"
align="center"> </td><td width="40%" align="right" valign="top"> Kapitel 1.
Einführung</td></tr></table></div></body></html>
diff --git a/help/el/genius.xml b/help/el/genius.xml
new file mode 100644
index 0000000..aea76d9
--- /dev/null
+++ b/help/el/genius.xml
@@ -0,0 +1,7950 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="el">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Εγχειρίδιο για το εργαλείο μαθηματικών.</para></abstract>
+ <title>Εγχειρίδιο Genius</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2013</year><holder>Δημήτρης Σπίγγος (dmtrs32 gmail
com)</holder></copyright><copyright><year>2014</year><holder>Μαρία Μαυρίδου (mavridou gmail
com)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>Χορηγείται άδεια αντιγραφής, διανομής και/ή τροποποίησης του παρόντος εγγράφου υπό τους όρους
της έκδοσης 1.1 της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL), ή οποιασδήποτε μεταγενέστερης έκδοσής αυτής από
το Ίδρυμα Ελεύθερου Λογισμικού (FSF), χωρίς αμετάβλητες ενότητες, κείμενα εμπροσθοφύλλου και κείμενα
οπισθοφύλλου. Αντίγραφο της άδειας GFDL είναι διαθέσιμο στον ακόλουθο <ulink type="help"
url="ghelp:fdl">σύνδεσμο</ulink>, ή στο αρχείο COPYING-DOCS που διανέμεται μαζί με το παρόν εγχειρίδιο.</para>
+ <para>Αυτό το εγχειρίδιο αποτελεί μέρος της συλλογής εγχειριδίων του GNOME που διανέμονται υπό τους
όρους της GFDL. Αν επιθυμείτε να διανείμετε το παρόν εγχειρίδιο ξεχωριστά από τη συλλογή, οφείλετε να
προσθέσετε στο εγχειρίδιο αντίγραφο της άδειας χρήσης, όπως προβλέπεται στην ενότητα 6 της άδειας.</para>
+
+ <para>Πολλές από τις ονομασίες που χρησιμοποιούνται από εταιρείες για την διαφοροποίηση των προϊόντων
και υπηρεσιών τους έχουν καταχωρηθεί ως εμπορικά σήματα. Σε όποιο σημείο της τεκμηρίωσης GNOME τυχόν
εμφανίζονται αυτές οι ονομασίες, και εφόσον τα μέλη του Έργου τεκμηρίωσης GNOME έχουν λάβει γνώση αυτών των
εμπορικών σημάτων, οι ονομασίες ή τα αρχικά αυτών θα γράφονται με κεφαλαίους χαρακτήρες.</para>
+
+ <para>ΤΟ ΠΑΡΟΝ ΕΓΓΡΑΦΟ ΚΑΙ ΟΙ ΤΡΟΠΟΙΗΜΕΝΕΣ ΕΚΔΟΣΕΙΣ ΑΥΤΟΥ ΠΑΡΕΧΟΝΤΑΙ ΥΠΟ ΤΟΥΣ ΟΡΟΥΣ ΤΗΣ ΕΛΕΥΘΕΡΗΣ
ΑΔΕΙΑΣ ΤΕΚΜΗΡΙΩΣΗΣ GNU (GFDL) ΚΑΙ ΜΕ ΤΗΝ ΠΕΡΑΙΤΕΡΩ ΔΙΕΥΚΡΙΝΙΣΗ ΟΤΙ: <orderedlist>
+ <listitem>
+ <para>ΤΟ ΠΑΡΟΝ ΕΓΓΡΑΦΟ ΠΑΡΕΧΕΤΑΙ "ΩΣ ΕΧΕΙ", ΧΩΡΙΣ ΟΠΟΙΑΔΗΠΟΤΕ ΑΛΛΗ ΕΓΓΥΗΣΗ, ΕΙΤΕ ΡΗΤΗ ΕΙΤΕ
ΣΙΩΠΗΡΗ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΤΗΣ ΕΓΓΥΗΣΗΣ ΟΤΙ ΤΟ ΕΓΓΡΑΦΟ, Ή Η ΤΡΟΠΟΠΟΙΗΜΕΝΗ ΕΚΔΟΣΗ ΑΥΤΟΥ,
ΕΙΝΑΙ ΕΜΠΟΡΕΥΣΙΜΟ, ΚΑΤΑΛΛΗΛΟ ΓΙΑ ΕΙΔΙΚΟ ΣΚΟΠΟ ΚΑΙ ΔΕΝ ΠΡΟΣΒΑΛΛΕΙ ΔΙΚΑΙΩΜΑΤΑ ΤΡΙΤΩΝ. Ο ΧΡΗΣΤΗΣ ΑΝΑΛΑΜΒΑΝΕΙ ΕΞ
ΟΛΟΚΛΗΡΟΥ ΤΗΝ ΕΘΥΝΗ ΩΣ ΠΡΟΣ ΤΗΝ ΠΟΙΟΤΗΤΑ, ΤΗΝ ΑΚΡΙΒΕΙΑ ΚΑΙ ΤΗΝ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή ΤΗΣ ΤΡΟΠΟΠΟΙΗΜΕΝΗΣ
ΕΚΔΟΣΗΣ ΑΥΤΟΥ. ΣΕ ΠΕΡΙΠΤΩΣΗ ΠΟΥ ΟΠΟΙΟΔΗΠΟΤΕ ΕΓΓΡΑΦΟ Ή ΤΡΟΠΟΠΟΙΗΜΕΝΗ ΕΚΔΟΣΗ ΑΥΤΟΥ ΑΠΟΔΕΙΧΘΟΥΝ ΕΛΑΤΤΩΜΑΤΙΚΑ
ΚΑΘ' ΟΙΟΝΔΗΠΟΤΕ ΤΡΟΠΟ,
Ο ΧΡΗΣΤΗΣ (ΚΑΙ ΟΧΙ Ο ΑΡΧΙΚΟΣ ΣΥΓΓΡΑΦΕΑΣ, ΔΗΜΙΟΥΡΓΟΣ Ή ΟΠΟΙΟΣΔΗΠΟΤΕ ΣΥΝΤΕΛΕΣΤΗΣ) ΑΝΑΛΑΜΒΑΝΕΙ ΤΟ ΚΟΣΤΟΣ
ΟΠΟΙΑΣΔΗΠΟΤΕ ΑΝΑΓΚΑΙΑΣ ΣΥΝΤΗΡΗΣΗΣ, ΕΠΙΣΚΕΥΗΣ Ή ΔΙΟΡΘΩΣΗΣ. Η ΠΑΡΟΥΣΑ ΑΠΟΠΟΙΗΣΗ ΕΓΓΥΗΣΗΣ ΑΠΟΤΕΛΕΙ ΑΝΑΠΟΣΠΑΣΤΟ
ΜΕΡΟΣ ΤΗΣ ΑΔΕΙΑΣ. ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΟΥΔΕΜΙΑ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή ΤΡΟΠΟΠΟΙΗΜΕΝΩΝ ΕΚΔΟΣΕΩΝ ΑΥΤΟΥ ΣΥΜΦΩΝΑ ΜΕ ΤΟΥΣ
ΟΡΟΥΣ ΤΗΣ ΠΑΡΟΥΣΑΣ, ΠΑΡΑ ΜΟΝΟ ΕΑΝ ΣΥΝΟΔΕΥΕΤΑΙ ΑΠΟ ΤΗΝ ΑΠΟΠΟΙΗΣΗ ΕΓΓΥΗΣΗΣ, ΚΑΙ</para>
+ </listitem>
+ <listitem>
+ <para>Ο ΔΗΜΙΟΥΡΓΟΣ, Ο ΑΡΧΙΚΟΣ ΣΥΓΓΡΑΦΕΑΣ, ΟΙ ΣΥΝΤΕΛΕΣΤΕΣ Ή ΟΙ ΔΙΑΝΟΜΕΙΣ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή
ΤΡΟΠΟΠΟΙΗΜΕΝΗΣ ΕΚΔΟΣΗΣ ΑΥΤΟΥ, ΚΑΘΩΣ ΚΑΙ ΟΙ ΠΡΟΜΗΘΕΥΤΕΣ ΟΠΟΙΩΝΔΗΠΟΤΕ ΕΚ ΤΩΝ ΠΡΟΑΝΑΦΕΡΟΜΕΝΩΝ ΜΕΡΩΝ, ΔΕΝ
ΕΥΘΥΝΟΝΤΑΙ ΕΝΑΝΤΙ ΟΙΟΥΔΗΠΟΤΕ, ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΚΑΙ ΥΠΟ ΚΑΜΙΑ ΕΡΜΗΝΕΙΑ ΝΟΜΟΥ, ΕΙΤΕ ΕΞ ΑΔΙΚΟΠΡΑΞΙΑΣ
(ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ ΤΗΣ ΑΜΕΛΕΙΑΣ) ΕΙΤΕ ΣΤΟ ΠΛΑΙΣΙΟ ΣΥΜΒΑΤΙΚΗΣ Ή ΑΛΛΗΣ ΥΠΟΧΡΕΩΣΗΣ, ΓΙΑ ΤΥΧΟΝ ΑΜΕΣΕΣ, ΕΜΜΕΣΕΣ,
ΕΙΔΙΚΕΣ, ΤΥΧΑΙΕΣ Ή ΣΥΝΕΠΑΚΟΛΟΥΘΕΣ ΖΗΜΙΕΣ ΟΠΟΙΑΣΔΗΠΟΤΕ ΜΟΡΦΗΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΖΗΜΙΩΝ
ΛΟΓΩ ΑΠΩΛΕΙΑΣ ΦΗΜΗΣ ΚΑΙ ΠΕΛΑΤΕ�
�ΑΣ, ΔΙΑΚΟΠΗΣ ΕΡΓΑΣΙΩΝ, ΔΥΣΛΕΙΤΟΥΡΓΙΑΣ Ή ΒΛΑΒΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ, Ή ΚΑΘΕ ΑΛΛΗΣ ΖΗΜΙΑΣ Ή ΑΠΩΛΕΙΑΣ ΠΟΥ
ΟΦΕΙΛΕΤΑΙ Ή ΣΧΕΤΙΖΕΤΑΙ ΜΕ ΤΗΝ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ ΚΑΙ ΤΩΝ ΤΡΟΠΟΠΟΙΗΜΕΝΩΝ ΕΚΔΟΣΕΩΝ ΑΥΤΟΥ, ΑΚΟΜΑ ΚΑΙ ΑΝ ΤΑ ΩΣ
ΑΝΩ ΜΕΡΗ ΕΙΧΑΝ ΛΑΒΕΙ ΓΝΩΣΗ ΤΗΣ ΠΙΘΑΝΟΤΗΤΑΣ ΠΡΟΚΛΗΣΗΣ ΤΕΤΟΙΩΝ ΖΗΜΙΩΝ.</para>
+ </listitem>
+ </orderedlist></para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Πανεπιστήμιο πολιτείας Οκλαχόμα</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>Πανεπιστήμιο του Κουινσλάντ, Αυστραλία</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>September 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>This manual describes version 1.0.22 of Genius.
+ </releaseinfo>
+ <legalnotice>
+ <title>Aνάδραση</title>
+ <para>
+ To report a bug or make a suggestion regarding the <application>Genius Mathematics
Tool</application>
+ application or this manual, please visit the
+ <ulink url="http://www.jirka.org/genius.html" type="http">Genius
+ Web page</ulink>
+ or email me at <email>jirka 5z com</email>.
+ </para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Εισαγωγή</title>
+ <para>Η εφαρμογή <application>Εργαλείο μαθηματικών Genius</application> είναι μια γενική αριθμομηχανή
για χρήση ως αριθμομηχανή επιφάνειας εργασίας, ένα εκπαιδευτικό εργαλείο στα μαθηματικά και είναι χρήσιμη
ακόμα και για έρευνα. Η χρησιμοποιούμενη γλώσσα στο <application>εργαλείο μαθηματικών Genius</application>
σχεδιάζεται για να είναι ‘μαθηματική’ με την έννοια ότι πρέπει να είναι ‘ότι εννοείτε είναι ότι παίρνετε’.
Φυσικά αυτό δεν είναι ένας πλήρως εφικτός στόχος. Το <application>εργαλείο μαθηματικών Genius</application>
παρουσιάζει ρητούς, ακέραιους τυχαίας ακρίβειας κ�
�ι αριθμούς κινητής υποδιαστολής πολλαπλής ακρίβειας χρησιμοποιώντας τη βιβλιοθήκη GMP. Διαχειρίζεται
μιγαδικούς αριθμούς χρησιμοποιώντας καρτεσιανή σημειογραφία. Έχει καλή επεξεργασία διανυσμάτων και πινάκων
και μπορεί να χειριστεί βασική γραμμική άλγεβρα. Η γλώσσα προγραμματισμού επιτρέπει στον χρήστη να ορίσει
συναρτήσεις, μεταβλητές και τροποποιήσεις παραμέτρων.</para>
+
+ <para>Το <application>εργαλείο μαθηματικών Genius</application> έρχεται σε δύο εκδόσεις. Μια έκδοση
είναι η γραφική έκδοση GNOME, που χαρακτηρίζει μια διεπαφή τεχνοτροπίας IDE και την ικανότητα να σχεδιάσει
συναρτήσεις μιας ή δύο μεταβλητών. Η έκδοση γραμμής εντολών δεν απαιτεί το GNOME, αλλά φυσικά δεν υλοποιεί
οποιοδήποτε γνώρισμα απαιτεί τη γραφική διεπαφή.</para>
+
+ <para>
+ Parts of this manual describe the graphical version of the calculator,
+ but the language is of course the same. The command line only version
+ lacks the graphing capabilities and all other capabilities that require
+ the graphical user interface.
+ </para>
+
+ <para>
+ Generally, when some feature of the language (function, operator, etc...)
+ is new in some version past 1.0.5, it is mentioned, but
+ below 1.0.5 you would have to look at the NEWS file.
+ </para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Ξεκίνημα</title>
+
+ <sect1 id="genius-to-start">
+ <title>Για να ξεκινήσετε το <application>εργαλείο μαθηματικών Genius</application></title>
+ <para>You can start <application>Genius Mathematics Tool</application> in the following ways:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Το μενού <guimenu>Εφαρμογές</guimenu></term>
+ <listitem>
+ <para>Ανάλογα με το λειτουργικό σας σύστημα και την έκδοση, το στοιχείο μενού για το
<application>Εργαλείο μαθηματικών Genius</application> μπορεί να εμφανιστεί σε διαφορετικές θέσεις. Μπορεί να
είναι στο <guisubmenu>Εκπαίδευση</guisubmenu>, <guisubmenu>Βοηθήματα</guisubmenu>,
<guisubmenu>Γραφείο</guisubmenu>, <guisubmenu>Επιστήμη</guisubmenu>, ή παρόμοια υπομενού, ανάλογα με την
συγκεκριμένη διαμόρφωση. Το στοιχείου μενού που ψάχνετε είναι <guimenuitem>Εργαλείο μαθηματικών
Genius</guimenuitem>. Μόλις το εντοπίσετε αυτό το στοιχείο μενού πατήστε το για να ξεκινήσετε το
<application>Εργαλείο μαθηματικών Genius</application>.
</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ο διάλογος <guilabel>Εκτέλεση</guilabel></term>
+ <listitem>
+ <para>Ανάλογα με την εγκατάσταση του συστήματός σας, το στοιχείο μενού μπορεί να μην είναι
διαθέσιμο. Αν δεν είναι, μπορείτε να ανοίξετε τον διάλογο εκτέλεσης και να εκτελέσετε την
<command>gnome-genius</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Γραμμή εντολών</term>
+ <listitem>
+ <para>Για να ξεκινήσετε την έκδοση GNOME του <application>Εργαλείο μαθηματικών
Genius</application> εκτελέστε την <command>gnome-genius</command> από την γραμμή εντολών.</para>
+ <para>Για να ξεκινήσετε μόνο την έκδοση της γραμμής εντολών, εκτελέστε την ακόλουθη εντολή:
<command>genius</command>. Αυτή η έκδοση δεν περιλαμβάνει το γραφικό περιβάλλον και κάποιες λειτουργίες όπως
η σχεδίαση δεν θα είναι διαθέσιμες.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>Όταν ξεκινάτε το Genius</title>
+ <para>Όταν ξεκινάτε την έκδοση GNOME του <application>Εργαλείο μαθηματικών Genius</application>, το
εικονιζόμενο παράθυρο στο <xref linkend="mainwindow-fig"/> εμφανίζεται.</para>
+
+ <figure id="mainwindow-fig">
+ <title>Το παράθυρο <application> Εργαλείο μαθηματικών Genius</application></title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows <application>Εργαλείο μαθηματικών Genius</application> main window. Contains
titlebar, menubar,
+toolbar and working area. Menubar contains <guilabel>Αρχείο</guilabel>,
+<guilabel>Επεξεργασία</guilabel>, <guilabel>Αριθμομηχανή</guilabel>,
+<guilabel>Examples</guilabel>,
+<guilabel>Programs</guilabel>,
+<guilabel>Ρυθμίσεις</guilabel>, and <guilabel>Βοήθεια</guilabel> menus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Το παράθυρο <application>Εργαλείο μαθηματικών Genius</application> περιέχει τα παρακάτω
στοιχεία:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Γραμμή μενού.</term>
+ <listitem>
+ <para>Τα μενού στη γραμμή μενού περιέχουν όλες τις εντολές που χρειάζεστε για να δουλέψετε με
αρχεία στο <application>Εργαλείο μαθηματικών Genius</application>. Το μενού <guilabel>Αρχείο</guilabel>
περιέχει στοιχεία για φόρτωση και αποθήκευση στοιχείων καθώς και δημιουργία νέων προγραμμάτων. Η εντολή
<guilabel>φόρτωση και εκτέλεση...</guilabel> δεν ανοίγει ένα νέο παράθυρο για το πρόγραμμα, αλλά απλά εκτελεί
άμεσα το πρόγραμμα. Είναι ισοδύναμη με την εντολή <command>φόρτωση</command>.</para>
+ <para>
+ The <guilabel>Calculator</guilabel> menu controls the
+calculator engine. It allows you to run the currently selected program or to
+interrupt the current calculation. You can also look at the full expression of
+the last answer (useful if the last answer was too large to fit onto the
+console), or you can view a listing of the values of all user defined
+variables. You can also monitor user variables, which is especially useful
+while a long calculation is running, or to debug a certain program.
+ Finally the <guilabel>Calculator</guilabel> allows plotting functions using a user
friendly dialog box.
+ </para>
+ <para>
+ The <guilabel>Examples</guilabel> menu is a list of example
+ programs or demos. If you open the menu, it will load the
+ example into a new program, which you can run, edit, modify,
+ and save. These programs should be well documented
+ and generally demonstrate either some feature of <application>Genius Mathematics
Tool</application>
+ or some mathematical concept.
+ </para>
+ <para>
+ The <guilabel>Programs</guilabel> menu lists
+ the currently open programs and allows you to switch
+ between them.
+ </para>
+ <para>Τα άλλα μενού έχουν τις ίδιες οικείες συναρτήσεις όπως στις άλλες εφαρμογές.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Εργαλειοθήκη.</term>
+ <listitem>
+ <para>Η εργαλειοθήκη περιέχει ένα υποσύνολο των εντολών που μπορείτε να προσπελάσετε από τη
γραμμή μενού.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Περιοχή εργασίας</term>
+ <listitem>
+ <para>Η περιοχή εργασίας είναι η πρωτεύουσα μέθοδος αλληλεπίδρασης με την εφαρμογή.</para>
+ <para>Η περιοχή εργασίας αρχικά έχει μόνο την καρτέλα <guilabel>κονσόλα</guilabel>, που είναι ο
κύριος τρόπος αλληλεπίδρασης με την αριθμομηχανή. Εδώ πληκτρολογείτε παραστάσεις και τα αποτελέσματα
επιστρέφονται αμέσως μετά το πάτημα του πλήκτρου εισαγωγής.</para>
+ <para>
+ Alternatively you can write longer programs and those can
+ appear in separate tabs. The programs are a set of commands or
+ functions that can be run all at once rather than entering them
+ at the command line. The programs can be saved in files for later
+ retrieval.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Βασική χρήση</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Χρήση της περιοχής εργασίας</title>
+
+ <para>Κανονικά, αλληλεπιδράτε με την αριθμομηχανή στην καρτέλα <guilabel>κονσόλα</guilabel> της
περιοχής εργασίας. Αν τρέχετε την κειμενική μόνο έκδοση, τότε η κονσόλα θα είναι το μόνο πράγμα που είναι
διαθέσιμο σε σας. Αν θέλετε να χρησιμοποιήσετε το <application>Εργαλείο μαθηματικών Genius</application> ως
αριθμομηχανή μόνο, πληκτρολογήστε απλά την παράστασή σας εδώ και η επιστρεφόμενη τιμή θα υπολογιστεί.</para>
+
+ <para>
+ To evaluate an expression, type it into the <guilabel>Console</guilabel> work area and press
enter.
+ Expressions are written in a
+language called GEL. The most simple GEL expressions just looks like
+mathematics. For example
+<screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen>
+(Last is the harmonic sum from 1 to 70)
+</para>
+<para>Για να πάρετε έναν κατάλογο συναρτήσεων και εντολών, πληκτρολογήστε: <screen><prompt>genius>
</prompt><userinput>help</userinput>
+</screen> Αν θέλετε να πάρετε περισσότερη βοήθεια για μια συγκεκριμένη συνάρτηση, πληκτρολογήστε:
<screen><prompt>genius> </prompt><userinput>help FunctionName</userinput>
+</screen> Για να προβάλετε αυτό το εγχειρίδιο, πληκτρολογήστε: <screen><prompt>genius>
</prompt><userinput>manual</userinput>
+</screen></para>
+<para>
+Suppose you have previously saved some GEL commands as a program to a file and
+you now want to execute them.
+To load this program from the file <filename>path/to/program.gel</filename>,
+type
+<screen><prompt>genius> </prompt><userinput>load path/to/program.gel</userinput>
+</screen>
+<application>Genius Mathematics Tool</application> keeps track of the current directory.
+To list files in the current directory type <command>ls</command>, to change directory
+do <userinput>cd directory</userinput> as in the UNIX command shell.
+</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>Για να δημιουργήσετε ένα νέο πρόγραμμα</title>
+ <para>
+ If you wish to enter several more complicated commands, or perhaps write a complicated
+ function using the <link linkend="genius-gel">GEL</link> language, you can create a new
+ program.
+ </para>
+ <para>
+To start writing a new program, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>New
+Program</guimenuitem></menuchoice>. A new tab will appear in the work area. You
+can write a <link linkend="genius-gel">GEL</link> program in this work area.
+Once you have written your program you can run it by
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice> (or
+the <guilabel>Run</guilabel> toolbar button).
+This will execute your program and will display any output on the <guilabel>Console</guilabel> tab.
+Executing a program is equivalent of taking the text of the program and
+typing it into the console. The only difference is that this input is done
+independent of the console and just the output goes onto the console.
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice>
+will always run the currently selected program even if you are on the <guilabel>Console</guilabel>
+tab. The currently selected program has its tab in bold type. To select a
+program, just click on its tab.
+ </para>
+ <para>
+To save the program you've just written, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Save
As...</guimenuitem></menuchoice>.
+Similarly as in other programs you can choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice> to save a program that
already has
+a filename attached to it. If you have many opened programs you have edited and wish to save you can also
choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save All Unsaved</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ Programs that have unsaved changes will have a "[+]" next to their filename. This way you can
see if the file
+ on disk and the currently opened tab differ in content. Programs which have not yet had a
filename associated
+ with them are always considered unsaved and no "[+]" is printed.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Για το άνοιγμα και την εκτέλεση ενός προγράμματος</title>
+ <para>Για να ανοίξετε ένα αρχείο, επιλέξτε
<menuchoice><guimenu>Αρχείο</guimenu><guimenuitem>Άνοιγμα</guimenuitem></menuchoice>. Μια νέα καρτέλα που
περιέχει το αρχείο θα εμφανιστεί στην περιοχή εργασίας. Μπορείτε να την χρησιμοποιήσετε για να επεξεργαστείτε
το αρχείο.</para>
+ <para>Για να εκτελέσετε ένα πρόγραμμα από ένα αρχείο, επιλέξτε
<menuchoice><guimenu>Αρχείο</guimenu><guimenuitem>Φόρτωση και εκτέλεση...</guimenuitem></menuchoice>. Αυτό θα
τρέξει το πρόγραμμα χωρίς να το ανοίξει σε ξεχωριστή καρτέλα. Αυτό είναι ισοδύναμο με την εντολή
<command>φόρτωση</command>.</para>
+ <para>
+ If you have made edits to a file you wish to throw away and want to reload to the version
that's on disk,
+ you can choose the
+ <menuchoice><guimenu>File</guimenu><guimenuitem>Reload from Disk</guimenuitem></menuchoice>
menuitem. This is useful for experimenting
+ with a program and making temporary edits, to run a program, but that you do not intend to keep.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Γραφική παράσταση</title>
+
+ <para>Η υποστήριξη σχεδίασης είναι διαθέσιμη μόνο στην γραφική έκδοση GNOME. Όλες οι προσβάσιμες
σχεδιάσεις από τη γραφική διεπαφή είναι διαθέσιμες από το παράθυρο <guilabel>Δημιουργία σχεδίου</guilabel>.
Μπορείτε να προσπελάσετε αυτό το παράθυρο είτε πατώντας στο κουμπί <guilabel>Γραφική παράσταση</guilabel>
στην εργαλειοθήκη είτε επιλέγοντας <guilabel>Γραφική παράσταση</guilabel> από το μενού
<guilabel>Αριθμομηχανή</guilabel>. Μπορείτε επίσης να προσπελάσετε τη λειτουργία γραφικής παράστασης
χρησιμοποιώντας τις <link linkend="genius-gel-function-list-plotting">συναρτήσεις σχεδίασης</link> τ�
�ς γλώσσας GEL. Δείτε <xref linkend="genius-gel"/> για να βρείτε πώς να εισάγετε εκφράσεις που καταλαβαίνει
το Genius.</para>
+
+ <sect1 id="genius-line-plots">
+ <title>Γραμμικές γραφικές παραστάσεις</title>
+ <para>Για να παραστήσετε με γραφικές παραστάσεις συναρτήσεις πραγματικών τιμών μιας μεταβλητής,
ανοίξτε το παράθυρο <guilabel>Δημιουργία γραφικής παράστασης</guilabel>. Μπορείτε επίσης να χρησιμοποιήσετε
τη συνάρτηση <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> στη γραμμή εντολών
(δείτε την τεκμηρίωσή της).</para>
+ <para>Μόλις πατήσετε το κουμπί <guilabel>Γραφική παράσταση</guilabel>, ανοίγει ένα παράθυρο με κάποια
σημειωματάρια σε αυτό. Πρέπει να είσαστε στην καρτέλα σημειωματαρίου <guilabel>Συνάρτηση γραμμικής γραφικής
παράστασης</guilabel> και μέσα σε αυτό να είσαστε στην καρτέλα σημειωματαρίου <guilabel>Συναρτήσεις /
εκφράσεις</guilabel>. Δείτε <xref linkend="lineplot-fig"/>.</para>
+
+ <figure id="lineplot-fig">
+ <title>Δημιουργία παραθύρου γραφικής παράστασης</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Εμφανίζει το παράθυρο γραμμικής γραφικής παράστασης.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Πληκτρολογήστε τις εκφράσεις με <userinput>x</userinput> ως ανεξάρτητη μεταβλητή στα πλαίσια
κειμένου. Εναλλακτικά μπορείτε να δώσετε τα ονόματα των συναρτήσεων όπως <userinput>cos</userinput> αντί να
πρέπει να πληκτρολογήσετε <userinput>cos(x)</userinput>. Μπορείτε να παραστήσετε μέχρι δέκα συναρτήσεις. Αν
κάνετε λάθος και το Genius δεν μπορεί να αναλύσει την είσοδο, θα το υποδείξει με ένα εικονίδιο προειδοποίησης
στα δεξιά του πλαισίου εισόδου του κειμένου, όπου προέκυψε το σφάλμα, και θα σας δώσει έναν διάλογο
σφάλματος. Μπορείτε να αλλάξετε τις περιοχές των εξαρ�
�ημένων και ανεξάρτητων μεταβλητών στο κάτω τμήμα του διαλόγου. Η <varname>y</varname> (εξαρτημένη) περιοχή
μπορεί να οριστεί αυτόματα ενεργοποιώντας το πλαίσιο ελέγχου <guilabel>Προσαρμογή εξαρτημένου
άξονα</guilabel>. Τα ονόματα των μεταβλητών μπορούν επίσης να αλλαχθούν. Πατώντας το κουμπί <guilabel>Γραφική
παράσταση</guilabel> παράγει το γράφημα που εμφανίζεται στο <xref linkend="lineplot2-fig"/>.</para>
+ <para>
+ The variables can be renamed by clicking the <guilabel>Change variable names...</guilabel>
button, which is useful if you wish to print or save the figure and don't want to use the standard
+ names. Finally you can also avoid printing the legend and the axis labels completely,
+ which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="lineplot2-fig">
+ <title>Παράθυρο γραφικής παράστασης</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Το γράφημα που παράχθηκε.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Από εκεί μπορείτε να τυπώσετε τη γραφική παράσταση, να δημιουργήσετε ενθυλακωμένη postscript ή
μια έκδοση PNG της γραφικής παράστασης ή να αλλάξετε την εστίαση. Αν ο εξαρτημένος άξονας δεν ορίστηκε σωστά,
μπορείτε να κάνετε το Genius να τον προσαρμόσει, βρίσκοντας τα ακρότατα των συναρτήσεων γραφημάτων.</para>
+
+ <para>Για τη σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της συνάρτησης <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Παραμετρικές γραφικές παραστάσεις</title>
+ <para>Στο παράθυρο δημιουργίας γραφικών παραστάσεων, μπορείτε επίσης να επιλέξετε την καρτέλα
σημειωματαρίου <guilabel>Παραμετρικά</guilabel> για να δημιουργήσετε παραμετρικές γραφικές παραστάσεις δύο
διαστάσεων. Με αυτόν τον τρόπο μπορείτε να σχεδιάσετε μια συνάρτηση με μια μοναδική παράμετρο. Μπορείτε είτε
να ορίσετε τα σημεία ως <varname>x</varname> και <varname>y</varname>, είτε να δώσετε έναν μοναδικό μιγαδικό
αριθμό ως μια συνάρτηση της μεταβλητής <varname>t</varname>. Η περιοχή της μεταβλητής <varname>t</varname>
δίνεται ρητά και η συνάρτηση παίρνει δείγματα σύμφωνα με
τη δοσμένη αύξηση. Η περιοχή <varname>x</varname> και <varname>y</varname> μπορεί να οριστεί αυτόματα
ενεργοποιώντας το πλαίσιο ελέγχου <guilabel>Προσαρμογή εξαρτημένου άξονα</guilabel>, ή μπορεί να οριστεί
ρητά. Δείτε <xref linkend="paramplot-fig"/>.</para>
+
+ <figure id="paramplot-fig">
+ <title>Καρτέλα παραμετρικών γραφικών παραστάσεων</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Η καρτέλα παραμετρικών γραφικών παραστάσεων στο παράθυρο <guilabel>Δημιουργία γραφικής
παράστασης</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Ένα παράδειγμα των παραμετρικών γραφικών παραστάσεων δίνεται στο <xref
linkend="paramplot2-fig"/>. Παρόμοιες πράξεις μπορούν να γίνουν σε τέτοια γραφήματα όπως μπορούν να γίνουν σε
άλλες γραμμικές γραφικές παραστάσεις. Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της
συνάρτησης <link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> ή
<link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>.</para>
+
+ <figure id="paramplot2-fig">
+ <title>Παραμετρικές γραφικές παραστάσεις</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Παραγόμενη παραμετρική γραφική παράσταση</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Γραφικές παραστάσεις πεδίου κλίσεων</title>
+ <para>Στο παράθυρο δημιουργίας γραφικής παράστασης, μπορείτε επίσης να επιλέξετε την καρτέλα
σημειωματαρίου <guilabel>πεδίου κλίσης</guilabel> για τη δημιουργία μιας δισδιάστατης γραφικής παράστασης
πεδίου κλίσης. Παρόμοιες πράξεις μπορούν να γίνουν σε τέτοια γραφήματα όπως μπορούν να γίνουν στις άλλες
γραμμικές γραφικές παραστάσεις. Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της
συνάρτησης <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>.</para>
+
+ <para>Όταν ένα πεδίο κλίσης είναι ενεργό, υπάρχει ένα πρόσθετο διαθέσιμο μενού
<guilabel>επίλυσης</guilabel>, μέσα από το οποίο μπορείτε να εμφανίσετε τον διάλογο επίλυσης. Εδώ μπορείτε να
έχετε συγκεκριμένες λύσεις για γραφικές παραστάσεις σε δεδομένες αρχικές συνθήκες. Μπορείτε είτε να ορίσετε
εσωτερικές συνθήκες στον διάλογο, ή μπορείτε να πατήσετε στη γραφική παράσταση άμεσα για να ορίσετε το αρχικό
σημείο. Ενώ ο διάλογος επίλυσης είναι ενεργός, η εστίαση πατώντας και μεταφέροντας δεν δουλεύει. Πρέπει να
κλείσετε πρώτα τον διάλογο, αν θέλ
ετε να εστιάσετε χρησιμοποιώντας το ποντίκι.</para>
+
+ <para>Ο επιλύτης χρησιμοποιεί την τυπική μέθοδο Runge-Kutta. Οι γραφικές παραστάσεις θα μείνουν στην
οθόνη μέχρι να καθαριστούν. Ο επιλύτης θα σταματήσει όποτε φτάσει στα όρια του παραθύρου σχεδίασης. Η εστίαση
δεν αλλάζει τα όρια ή τις παραμέτρους των λύσεων, θα πρέπει να καθαρίσετε και να τις επανασχεδιάσετε με
κατάλληλες παραμέτρους. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link> για να
σχεδιάσετε λύσεις από τη γραμμή εντολών ή προγραμμάτων.</para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Γραφικές παραστάσεις διανυσματικού πεδίου</title>
+ <para>Στο παράθυρο δημιουργίας γραφικής παράστασης, μπορείτε να επιλέξετε επίσης την καρτέλα
σημειωματαρίου <guilabel>διανυσματικό πεδίο</guilabel> για να δημιουργήσετε μια δισδιάστατη γραφική παράσταση
διανυσματικού πεδίου. Παρόμοιες λειτουργίες μπορούν να γίνουν σε τέτοια γραφήματα όπως μπορούν να γίνουν σε
άλλες γραμμικές γραφικές παραστάσεις. Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της
συνάρτησης <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>.</para>
+
+ <para>Από προεπιλογή η κατεύθυνση και το μέγεθος του διανυσματικού πεδίου εμφανίζονται. Για να
εμφανίσετε μόνο την κατεύθυνση και όχι το μέγεθος, σημειώστε το κατάλληλο πλαίσιο ελέγχου για να
κανονικοποιήσετε τα μήκη των διανυσμάτων.</para>
+
+ <para>Όταν ένα πεδίο κλίσης είναι ενεργό, υπάρχει ένα πρόσθετο διαθέσιμο μενού
<guilabel>επιλύτη</guilabel>, μέσα από το οποίο μπορείτε να εμφανίσετε τον διάλογο επίλυσης. Εδώ μπορείτε να
έχετε συγκεκριμένες λύσεις για γραφικές παραστάσεις σε δεδομένες αρχικές συνθήκες. Μπορείτε είτε να ορίσετε
εσωτερικές συνθήκες στον διάλογο, ή μπορείτε να πατήσετε στη γραφική παράσταση άμεσα για να ορίσετε το αρχικό
σημείο. Ενώ ο διάλογος επίλυσης είναι ενεργός, η εστίαση πατώντας και μεταφέροντας δεν δουλεύει. Πρέπει να
κλείσετε πρώτα τον διάλογο, αν θέλε
τε να εστιάσετε χρησιμοποιώντας το ποντίκι.</para>
+
+ <para>Ο επιλύτης χρησιμοποιεί την τυπική μέθοδο Runge-Kutta. Οι γραφικές παραστάσεις θα μείνουν στην
οθόνη μέχρι να καθαριστούν. Η εστίαση δεν αλλάζει τα όρια ή τις παραμέτρους των λύσεων, θα πρέπει να
καθαρίσετε και να τις επανασχεδιάσετε με κατάλληλες παραμέτρους. Μπορείτε επίσης να χρησιμοποιήσετε τη
συνάρτηση <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> για να
σχεδιάσετε λύσεις από τη γραμμή εντολών ή προγραμμάτων.</para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Γραφικές παραστάσεις επιφάνειας</title>
+ <para>Η Genius μπορεί να σχεδιάσει επίσης επιφάνειες. Επιλέξτε την καρτέλα <guilabel>γραφική παράσταση
επιφάνειας</guilabel> στο κύριο σημειωματάριο του παραθύρου <guilabel>Δημιουργία γραφικής
παράστασης</guilabel>. Εδώ μπορείτε να ορίσετε μια μοναδική έκφραση που πρέπει να χρησιμοποιήσει είτε τις
<varname>x</varname> και <varname>y</varname> ως πραγματικές ανεξάρτητες μεταβλητές ή την
<varname>z</varname> ως μιγαδική μεταβλητή (όπου <varname>x</varname> είναι το πραγματικό τμήμα της
<varname>z</varname> και <varname>y</varname> είναι το φανταστικό τμήμα). Για παράδειγμα για να σχεδιάσετε το
μέτρο της συνάρτ�
�σης συνημιτόνου για μιγαδικές παραμέτρους, μπορείτε να εισάγετε <userinput>|cos(z)|</userinput>. Αυτό θα
είναι ισοδύναμο με <userinput>|cos(x+1i*y)|</userinput>. Δείτε <xref linkend="surfaceplot-fig"/>. Για
σχεδίαση χρησιμοποιώντας τη γραμμή εντολών, δείτε την τεκμηρίωση της συνάρτησης <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>
+ The <varname>z</varname> range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox. The variables can be renamed by clicking the <guilabel>Change variable
names...</guilabel> button, which is useful if you wish to print or save the figure and don't want to use the
standard
+ names. Finally you can also avoid printing the legend, which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="surfaceplot-fig">
+ <title>Γραφικές παραστάσεις επιφάνειας</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Μέτρο της μιγαδικής συνάρτησης συνημιτόνου.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ In surface mode, left and right arrow keys on your keyboard will rotate the
+ view along the z axis. Alternatively you can rotate along any axis by
+ selecting <guilabel>Rotate axis...</guilabel> in the <guilabel>View</guilabel>
+ menu. The <guilabel>View</guilabel> menu also has a top view mode which rotates the
+ graph so that the z axis is facing straight out, that is, we view the graph from the top
+ and get essentially just the colors that define the values of the function getting a
+ temperature plot of the function. Finally you should
+ try <guilabel>Start rotate animation</guilabel>, to start a continuous slow rotation.
+ This is especially good if using <application>Genius Mathematics Tool</application> to present
to an audience.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>Βασικά της GEL</title>
+
+ <para>GEL σημαίνει γλώσσα επέκτασης Genius. Είναι η γλώσσα που χρησιμοποιείτε για να γράψετε
προγράμματα στη Genius. Ένα πρόγραμμα στη GEL είναι απλά μια παράσταση που υπολογίζει έναν αριθμό. Το
<application>Εργαλείο μαθηματικών Genius</application> μπορεί να χρησιμοποιηθεί ως μια απλή αριθμομηχανή, ή
ως ένα ισχυρό θεωρητικό εργαλείο αναζήτησης. Η σύνταξη πρέπει να έχει όσο πιο ρηχή καμπύλη μάθησης γίνεται,
ειδικά για χρήση ως αριθμομηχανή.</para>
+
+ <sect1 id="genius-gel-values">
+ <title>Τιμές</title>
+
+ <para>Οι τιμές στην GEL μπορεί να είναι <link linkend="genius-gel-values-numbers">αριθμοί</link>,
<link linkend="genius-gel-values-booleans">Λογικές τιμές</link> ή <link
linkend="genius-gel-values-strings">συμβολοσειρές</link>. Η GEL θεωρεί επίσης <link
linkend="genius-gel-matrices">πίνακες</link> ως τιμές. Οι τιμές μπορεί να χρησιμοποιηθούν σε υπολογισμούς,
εκχωρημένες σε μεταβλητές και να επιστραφούν από τις συναρτήσεις, μεταξύ άλλων χρήσεων.</para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Αριθμοί</title>
+ <para>Οι ακέραιοι είναι ο πρώτος τύπος αριθμού στην GEL. Οι ακέραιοι γράφονται με τον κανονικό
τρόπο. <programlisting>1234
+</programlisting> Δεκαεξαδικοί και οκταδικοί αριθμοί μπορούν να γραφτούν χρησιμοποιώντας σημειογραφία C. Για
παράδειγμα: <programlisting>0x123ABC
+01234
+</programlisting> Ή μπορείτε να πληκτρολογήσετε αριθμούς σε μια ελεύθερη βάση χρησιμοποιώντας
<literal><base>\<number></literal>. Ψηφία μεγαλύτερα από 10 χρησιμοποιούν γράμματα με παρόμοιο
τρόπο με τα δεκαεξαδικά. Για παράδειγμα, ένας αριθμός με βάση 23 πρέπει να γραφτεί:
<programlisting>23\1234ABCD
+</programlisting></para>
+
+ <para>Ο δεύτερος τύπος αριθμού GEL είναι ρητοί. Οι ρητοί εκφράζονται διαιρώντας απλά δύο ακέραιους.
Έτσι, κάποιος μπορεί να γράψει: <programlisting>3/4
+</programlisting> για να πάρει τρία τέταρτα. Οι ρητοί δέχονται επίσης μικτή σημειογραφία κλάσματος. Έτσι,
για να πάρετε ένα και τρία δέκατα μπορείτε να γράψετε: <programlisting>1 3/10
+</programlisting></para>
+
+ <para>
+The next type of number is floating point. These are entered in a similar fashion to C notation. You can use
<literal>E</literal>, <literal>e</literal> or <literal>@</literal> as the exponent delimiter. Note that using
the exponent delimiter gives a float even if there is no decimal point in the number. Examples:
+<programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting>
+ When Genius prints a floating point number it will always append a
+ <computeroutput>.0</computeroutput> even if the number is whole. This is to indicate that
+ floating point numbers are taken as imprecise quantities. When a number is written in the
+ scientific notation, it is always a floating point number and thus Genius does not
+ print the <computeroutput>.0</computeroutput>.
+ </para>
+
+ <para>
+The final type of number in GEL is the complex numbers. You can enter a complex number as a sum of real and
imaginary parts. To add an imaginary part, append an <literal>i</literal>. Here are examples of entering
complex numbers:
+<programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting>
+ </para>
+
+ <important>
+ <para>Κατά την εισαγωγή φανταστικών αριθμών, ένας αριθμός πρέπει να είναι μπροστά από το
<literal>i</literal>. Αν χρησιμοποιήσετε <literal>i</literal> αυτό καθεαυτό, η Genius θα το ερμηνεύσει ως
αναφορά στη μεταβλητή <varname>i</varname>. Αν χρειάζεται να αναφέρετε το <literal>i</literal> αυτό καθεαυτό,
χρησιμοποιήστε <literal>1i</literal> στη θέση του.</para>
+
+ <para>Για να χρησιμοποιήσετε μικτή σημειογραφία κλάσματος με φανταστικούς αριθμούς, πρέπει να
έχετε το μικτό κλάσμα σε παρενθέσεις. (δηλαδή, <userinput>(1 2/5)i</userinput>)</para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Λογικές τιμές </title>
+ <para>Η Genius επίσης υποστηρίζει εγγενείς λογικές τιμές. Οι δύο σταθερές λογικών τιμών ορίζονται ως
<constant>true</constant> και <constant>false</constant>· αυτά τα αναγνωριστικά μπορούν να χρησιμοποιηθούν
όπως κάθε άλλη μεταβλητή. Μπορείτε επίσης να χρησιμοποιήσετε τα αναγνωριστικά <constant>True</constant>,
<constant>TRUE</constant>, <constant>False</constant> και <constant>FALSE</constant> ως παραλλαγές για τα
παραπάνω.</para>
+ <para>Σε οποιαδήποτε θέση όπου αναμένεται παράσταση λογικών τιμών, μπορείτε να χρησιμοποιήσετε μια
λογική τιμή ή οποιαδήποτε παράσταση παράγει ή έναν αριθμό ή μια λογική τιμή. Αν η Genius χρειάζεται να
υπολογίσει έναν αριθμό ως λογική τιμή θα ερμηνεύσει το 0 ως <constant>ψευδή</constant> και οποιοδήποτε άλλο
αριθμό ως <constant>αληθή</constant>.</para>
+ <para>Επιπλέον, μπορείτε να κάνετε αριθμητική με λογικές τιμές. Για παράδειγμα: <programlisting>( (1
+ αληθές) - ψευδές ) * αληθές
+</programlisting> είναι το ίδιο με: <programlisting>( (αληθές ή αληθές) ή όχι ψευδές ) και αληθές
+</programlisting> Μόνο πρόσθεση, αφαίρεση και πολλαπλασιασμός υποστηρίζονται. Αν αναμείξετε αριθμούς με
λογικές τιμές σε μια παράσταση, τότε οι αριθμοί μετατρέπονται σε λογικές τιμές όπως περιγράφεται παραπάνω.
Αυτό σημαίνει ότι, για παράδειγμα: το <programlisting>1 == αληθές
+</programlisting> πάντα αξιολογείται σε <constant>αληθές</constant> αφού το 1 θα μετατραπεί σε
<constant>αληθές</constant> πριν συγκριθεί με το <constant>αληθές</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Συμβολοσειρές</title>
+ <para>Όπως οι αριθμοί και οι λογικές τιμές, οι συμβολοσειρές στην GEL μπορούν να αποθηκευτούν ως
τιμές μέσα σε μεταβλητές και να περάσουν σε συναρτήσεις. Μπορείτε επίσης να συνενώσετε μια συμβολοσειρά με
μια άλλη τιμή χρησιμοποιώντας τον τελεστή συν. Για παράδειγμα: το <programlisting>a=2+3· "Το αποτέλεσμα
είναι: "+a
+</programlisting> θα δημιουργήσει τη συμβολοσειρά: <programlisting>Το αποτέλεσμα είναι: 5
+</programlisting> Μπορείτε επίσης να χρησιμοποιήσετε τις ακολουθίες διαφυγής παρόμοιες με C όπως
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> και
<literal>\r</literal>. Για να πάρετε ένα <literal>\</literal> or <literal>"</literal> μέσα στη συμβολοσειρά
μπορείτε να βάλετε εισαγωγικά με ένα <literal>\</literal>. Για παράδειγμα: <programlisting>"Slash: \\ Quotes:
\" Tabs: \t1\t2\t3"
+</programlisting> θα κάνει μια συμβολοσειρά: <programlisting>Slash: \ Quotes: " Tabs: 1 2 3
+</programlisting> Σημειώστε, όμως, ότι όταν μια συμβολοσειρά επιστρέφεται από μια συνάρτηση, οι διαφυγές
είναι σε εισαγωγικά, έτσι ώστε η έξοδος να μπορεί να χρησιμοποιηθεί ως είσοδος. Αν θέλετε να εκτυπώσετε τη
συμβολοσειρά όπως είναι (χωρίς διαφυγές), χρησιμοποιήστε τις συναρτήσεις <link
linkend="gel-function-print"><function>print</function></link> ή <link
linkend="gel-function-printn"><function>printn</function></link>.</para>
+ <para>Επιπλέον, μπορείτε να χρησιμοποιήσετε τη συνάρτηση βιβλιοθήκης <link
linkend="gel-function-string"><function>string</function></link> για να μετατρέψετε ο,τιδήποτε σε μια
συμβολοσειρά. Για παράδειγμα: το <programlisting>string(22)
+</programlisting> θα επιστρέψει <programlisting>"22"
+</programlisting> Οι συμβολοσειρές μπορούν επίσης να συγκριθούν με τελεστές <literal>==</literal> (ίσον),
<literal>!=</literal> (όχι ίσο) και <literal><=></literal> (σύγκρισης)</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>
+There is a special value called
+<constant>null</constant>. No operations can be performed on
+it, and nothing is printed when it is returned. Therefore,
+<constant>null</constant> is useful when you do not want output from an
+expression. The value <constant>null</constant> can be obtained as an expression when you
+type <literal>.</literal>, the constant <constant>null</constant> or nothing.
+By nothing we mean that if you end an expression with
+a separator <literal>;</literal>, it is equivalent to ending it with a
+separator followed by a <constant>null</constant>.
+ </para>
+ <para>Παράδειγμα: <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>Κάποιες συναρτήσεις επιστρέφουν <constant>null</constant>, όταν καμιά τιμή δεν μπορεί να επιστραφεί ή
όταν συμβαίνει ένα σφάλμα. Επίσης η <constant>null</constant> χρησιμοποιείται ως ένα κενό διάνυσμα ή πίνακας,
ή μια κενή αναφορά.</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Χρήση μεταβλητών</title>
+
+ <para>Σύνταξη: <programlisting>VariableName
+</programlisting> Παράδειγμα: <screen><prompt>genius> </prompt><userinput>e</userinput>
+=2.71828182846
+</screen></para>
+
+ <para>Για να αξιολογηθεί μια μεταβλητή αυτή καθεαυτή, εισάγετε απλώς το όνομα της μεταβλητής. Αυτή θα
επιστρέψει την τιμή της μεταβλητής. Μπορείτε να χρησιμοποιήσετε μια μεταβλητή οπουδήποτε θα μπορούσατε
κανονικά να χρησιμοποιήσετε έναν αριθμό ή την συμβολοσειρά. Επιπλέον, οι μεταβλητές είναι απαραίτητες όταν
ορίζονται συναρτήσεις που παίρνουν ορίσματα (δείτε <xref linkend="genius-gel-functions-defining"/>).</para>
+
+ <tip>
+ <title>Χρήση συμπλήρωσης καρτέλας</title>
+ <para>Μπορείτε να χρησιμοποιήσετε την συμπλήρωση καρτέλας για να πάρετε την Genius για να
συμπληρωθούν τα ονόματα των μεταβλητών για σας. Δοκιμάστε την πληκτρολόγηση των πρώτων λίγων γραμμάτων του
ονόματος και πατήστε <userinput>καρτέλα</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Τα ονόματα των μεταβλητών είναι με διάκριση πεζών/κεφαλαίων</title>
+ <para>Τα ονόματα των μεταβλητών είναι με διάκριση πεζών/κεφαλαίων. Αυτό σημαίνει ότι οι μεταβλητές
με όνομα <varname>hello</varname>, <varname>HELLO</varname> and <varname>Hello</varname> είναι όλες
διαφορετικές μεταβλητές.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Ορισμός μεταβλητών</title>
+ <para>Σύνταξη: <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Παράδειγμα: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>Για εκχώρηση σε μια μεταβλητή, χρησιμοποιήστε τους τελεστές <literal>=</literal> ή
<literal>:=</literal>. Αυτοί οι τελεστές ορίζουν την τιμή της μεταβλητής και επιστρέφουν την τιμή που
ορίσατε, έτσι μπορείτε να κάνετε πράγματα όπως <programlisting>a = b = 5
+</programlisting> Αυτό θα ορίσει το <varname>b</varname> σε 5 και μετά ορίζει επίσης το <varname>a</varname>
σε 5.</para>
+
+ <para>Οι τελεστές <literal>=</literal> και <literal>:=</literal> μπορούν να χρησιμοποιηθούν και οι
δύο για να ορίσουν μεταβλητές. Η διαφορά μεταξύ τους είναι ότι ο τελεστής <literal>:=</literal> δρα πάντα ως
μια ανάθεση τελεστή, ενώ ο τελεστής <literal>=</literal> μπορεί να ερμηνευτεί ως δοκιμή για ισότητα όταν
χρησιμοποιείται σε ένα περιεχόμενο όπου μια παράσταση λογικής τιμής αναμένεται.</para>
+
+ <para>Για περισσότερες πληροφορίες σχετικά με την εμβέλεια των μεταβλητών, δηλαδή, πότε είναι ορατές
οι μεταβλητές, δείτε <xref linkend="genius-gel-variables-global"/>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Ενσωματωμένες μεταβλητές</title>
+ <para>
+GEL has a number of built-in ‘variables’, such as
+<varname>e</varname>, <varname>pi</varname> or <varname>GoldenRatio</varname>. These are widely used
constants with a preset value, and
+they cannot be assigned new values.
+There are a number of other built-in variables.
+See <xref linkend="genius-gel-function-list-constants"/> for a full list. Note that <varname>i</varname> is
not by default
+the square root of negative one (the imaginary number), and is undefined to allow its use as a counter. If
you wish to write the imaginary number you need to
+use <userinput>1i</userinput>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Προηγούμενη μεταβλητή αποτελέσματος</title>
+ <para>Οι μεταβλητές <varname>Ans</varname> και <varname>ans</varname> μπορούν να χρησιμοποιηθούν για
να πάρετε το αποτέλεσμα της τελευταίας παράστασης. Για παράδειγμα, αν έχετε εκτελέσει κάποιο υπολογισμό, για
να προσθέσετε το 389 στο αποτέλεσμα μπορείτε να κάνετε: <programlisting>Ans+389
+</programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Χρησιμοποίηση συναρτήσεων</title>
+
+ <para>Σύνταξη: <programlisting>FunctionName(όρισμα1, όρισμα2, ...)
+</programlisting> Παράδειγμα: <programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting> Για να αξιολογήσετε μια συνάρτηση, εισάγετε το όνομα της συνάρτησης, που ακολουθείται από
τα ορίσματα (αν υπάρχουν) της συνάρτησης σε παρενθέσεις. Αυτό θα επιστρέψει το αποτέλεσμα της εφαρμογής της
συνάρτησης στα ορίσματά της. Ο αριθμός των ορισμάτων στη συνάρτηση είναι, φυσικά, διαφορετικός για κάθε
συνάρτηση.</para>
+
+ <para>Υπάρχουν πολλές ενσωματωμένες συναρτήσεις, όπως οι <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> και <link
linkend="gel-function-tan"><function>tan</function></link>. Μπορείτε να χρησιμοποιήσετε την ενσωματωμένη
εντολή <link linkend="gel-command-help"><function>help</function></link> για να πάρετε έναν κατάλογο
διαθέσιμων συναρτήσεων, ή δείτε <xref linkend="genius-gel-function-list"/> για έναν πλήρη κατάλογο.</para>
+
+ <tip>
+ <title>Χρήση συμπλήρωσης καρτέλας</title>
+ <para>Μπορείτε να χρησιμοποιήσετε την συμπλήρωση καρτέλας για να βάλετε την Genius να συμπληρώσει τα
ονόματα των συναρτήσεων για σας. Δοκιμάστε την πληκτρολόγηση των πρώτων λίγων γραμμάτων του ονόματος και
πατήστε <userinput>Καρτέλα</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Τα ονόματα των συναρτήσεων είναι με διάκριση πεζών/κεφαλαίων</title>
+ <para>Τα ονόματα των συναρτήσεων είναι με διάκριση πεζών/κεφαλαίων. Αυτό σημαίνει ότι οι συναρτήσεις
με όνομα <function>dosomething</function>, <function>DOSOMETHING</function> και
<function>DoSomething</function> είναι όλες διαφορετικές συναρτήσεις.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Ορισμός συναρτήσεων</title>
+ <para>Σύνταξη: <programlisting><![CDATA[function <identifier>(<comma separated arguments>) =
<function body>
+<identifier> = (`() = <function body>)
+]]></programlisting> Το <literal>`</literal> είναι ο χαρακτήρας ` και υποδηλώνει μια ανώνυμη συνάρτηση.
Ορίζοντας την σε ένα όνομα μεταβλητής την ορίζετε αποτελεσματικά ως συνάρτηση.</para>
+
+ <para>Μια συνάρτηση παίρνει μηδέν ή περισσότερα ορίσματα που χωρίζονται με κόμμα και επιστρέφει το
αποτέλεσμα του σώματος της συνάρτησης. Ορίζοντας τις δικές σας συναρτήσεις είναι κυρίως ένα θέμα ευκολίας·
μια πιθανή χρήση είναι να βάλετε σύνολα συναρτήσεων που ορίστηκαν στα αρχεία GEL, τα οποία η Genius μπορεί να
φορτώσει για να τα κάνει διαθέσιμα. Παράδειγμα: <programlisting>function addup(a,b,c) = a+b+c
+</programlisting> έπειτα <userinput>addup(1,4,9)</userinput> δίνει 14</para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Κατάλογοι ορισμάτων μεταβλητής</title>
+ <para>Αν συμπεριλάβετε <literal>...</literal> μετά το τελευταίο όνομα ορίσματος στη δήλωση
συνάρτησης, τότε η Genius θα επιτρέψει οποιονδήποτε αριθμό ορισμάτων να περαστεί επί τόπου σε αυτό το όρισμα.
Αν δεν περαστούν ορίσματα τότε αυτό το όρισμα θα οριστεί σε <constant>null</constant>. Αλλιώς, θα είναι
οριζόντιο διάνυσμα που περιέχει όλα τα ορίσματα. Για παράδειγμα: <programlisting>function f(a,b...) = b
+</programlisting> Τότε το <userinput>f(1,2,3)</userinput> δίνει <computeroutput>[2,3]</computeroutput>, ενώ
<userinput>f(1)</userinput> δίνει <constant>null</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Πέρασμα συναρτήσεων σε συναρτήσεις</title>
+
+ <para>Στο Genius, είναι δυνατό να περάσετε μια συνάρτηση ως ένα όρισμα σε μια άλλη συνάρτηση. Αυτό
μπορεί να γίνει χρησιμοποιώντας είτε ‘κόμβους συνάρτησης’ ή ανώνυμες συναρτήσεις.</para>
+
+ <para>Αν δεν εισάγετε τις παρενθέσεις μετά από ένα όνομα συνάρτησης, αντί να αξιολογηθεί, η
συνάρτηση θα επιστραφεί στη θέση της ως ‘κόμβος συνάρτησης’. Ο κόμβος συνάρτησης μπορεί τότε να περαστεί σε
μια άλλη συνάρτηση. Παράδειγμα: <programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting></para>
+ <para>Για να περάσετε συναρτήσεις που δεν ορίζονται, μπορείτε να χρησιμοποιήσετε μια ανώνυμη
συνάρτηση (δείτε <xref linkend="genius-gel-functions-defining"/>). Δηλαδή, αν θέλετε να περάσετε μια
συνάρτηση χωρίς να της δώσετε ένα όνομα. Σύνταξη: <programlisting><![CDATA[function(<comma separated
arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting> Παράδειγμα: <programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting> Αυτό θα επιστρέψει 5.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Πράξεις σε συναρτήσεις</title>
+ <para>Κάποιες συναρτήσεις επιτρέπουν αριθμητικές πράξεις και κάποιες συναρτήσεις μοναδικού ορίσματος
όπως <link linkend="gel-function-exp"><function>exp</function></link> ή <link
linkend="gel-function-ln"><function>ln</function></link>, λειτουργούν στη συνάρτηση. Για παράδειγμα, η
<programlisting>exp(sin*cos+4)
+</programlisting> θα επιστρέψει μια συνάρτηση που παίρνει <varname>x</varname> και επιστρέφει
<userinput>exp(sin(x)*cos(x)+4)</userinput>. Είναι ισοδύναμη λειτουργικά με την πληκτρολόγηση
<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting> Αυτή η πράξη μπορεί να είναι χρήσιμη, όταν ορίζετε γρήγορα συναρτήσεις. Για παράδειγμα για
να δημιουργήσετε μια συνάρτηση που λέγεται <varname>f</varname> για να εκτελέσετε την παραπάνω πράξη,
μπορείτε να πληκτρολογήσετε απλά: <programlisting>f = exp(sin*cos+4)
+</programlisting> Μπορεί επίσης να χρησιμοποιηθεί στη σχεδίαση. Για παράδειγμα, για να σχεδιάσετε τετράγωνο
ημιτόνου μπορείτε να εισάγετε: <programlisting>LinePlot(sin^2)
+</programlisting></para>
+
+ <warning>
+ <para>Δεν μπορούν όλες οι συναρτήσεις να χρησιμοποιηθούν κατ' αυτόν τον τρόπο. Για παράδειγμα, όταν
χρησιμοποιείτε μια δυαδική πράξη οι συναρτήσεις πρέπει να παίρνουν τον ίδιο αριθμό ορισμάτων.</para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Διαχωριστικό</title>
+ <para>
+ GEL is somewhat different from other languages in how it deals with multiple commands and
functions.
+ In GEL you must chain commands together with a separator operator.
+That is, if you want to type more than one expression you have to use
+the <literal>;</literal> operator in between the expressions. This is
+a way in which both expressions are evaluated and the result of the second one (or the last one
+if there is more than two expressions) is returned.
+Suppose you type the following:
+<programlisting>3 ; 5
+</programlisting>
+This expression will yield 5.
+ </para>
+ <para>
+This will require some parenthesizing to make it unambiguous sometimes,
+especially if the <literal>;</literal> is not the top most primitive. This slightly differs from
+other programming languages where the <literal>;</literal> is a terminator of statements, whereas
+in GEL it’s actually a binary operator. If you are familiar with pascal
+this should be second nature. However genius can let you pretend it is a
+terminator to some degree. If a <literal>;</literal> is found at the end of a parenthesis or a block,
+genius will append a null to it as if you would have written
+<userinput>;null</userinput>.
+This is useful in case you do not want to return a value from say a loop,
+or if you handle the return differently. Note that it will slightly slow down
+the code if it is executed too often as there is one more operator involved.
+ </para>
+ <para>
+ If you are typing expressions in a program you do not have to add a semicolon. In this case
+ genius will simply print the return value whenever it executes the expression. However, do
note that if you are defining a
+ function, the body of the function is a single expression.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Σχόλια</title>
+ <para>
+ GEL is similar to other scripting languages in that <literal>#</literal> denotes
+ a comment, that is text that is not meant to be evaluated. Everything beyond the
+ pound sign till the end of line will just be ignored. For example,
+<programlisting># This is just a comment
+# every line in a comment must have its own pound sign
+# in the next line we set x to the value 123
+x=123;
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Μετρικός υπολογισμός</title>
+ <para>
+ Genius implements modular arithmetic.
+To use it you just add "mod <integer>" after
+the expression. Example:
+<userinput>2^(5!) * 3^(6!) mod 5</userinput>
+It could be possible to do modular arithmetic by computing with integers and then modding in the end with
+the <literal>%</literal> operator, which simply gives the remainder, but
+that may be time consuming if not impossible when working with larger numbers.
+For example, <userinput>10^(10^10) % 6</userinput> will simply not work (the exponent
+will be too large), while
+<userinput>10^(10^10) mod 6</userinput> is instantaneous. The first expression first tries to compute the
integer
+<userinput>10^(10^10)</userinput> and then find remainder after division by 6, while the second expression
evaluates
+everything modulo 6 to begin with.
+ </para>
+ <para>Μπορείτε να υπολογίσετε τους αντίστροφους των αριθμών mod μερικών ακέραιων χρησιμοποιώντας απλά
ρητούς αριθμούς (φυσικά ο αντίστροφος πρέπει να υπάρχει). Παραδείγματα: <programlisting>10^-1 mod 101
+1/10 mod 101</programlisting> Μπορείτε επίσης να κάνετε υπολογισμό υπολοίπων με πίνακες που συμπεριλαμβάνουν
λήψη αντίστροφων, δυνάμεων και διαίρεση. Παράδειγμα: <programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting> Αυτό πρέπει να δίνει τον μοναδιαίο πίνακα ως Β που θα είναι ο αντίστροφος του Α
mod 5.</para>
+ <para>Μερικές συναρτήσεις όπως <link linkend="gel-function-sqrt"><function>sqrt</function></link> ή
<link linkend="gel-function-log"><function>log</function></link> δουλεύουν διαφορετικά όταν είναι κατάσταση
σε modulo. Αυτές τότε δουλεύουν όπως οι διακριτές εκδόσεις που δουλεύουν μέσα στον δακτύλιο των ακεραίων που
επιλέξατε. Για παράδειγμα: η <programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting><function>sqrt</function> θα επιστρέψει στην πραγματικότητα όλες τις πιθανές
τετραγωνικές ρίζες.</para>
+ <para>Μην συνδέετε τελεστές mod, απλά τοποθετήστε τους στο τέλος του υπολογισμού, όλοι οι υπολογισμοί
στην παράσταση στα αριστερά θα εκτελεστούν σε αριθμητική mod. Αν βάλετε μια mod μέσα σε μια mod, θα πάρετε
απροσδόκητα αποτελέσματα. Αν θέλετε απλά να πάρετε υπόλοιπο ενός απλού αριθμού και να ελέγξετε ακριβώς πότε
παίρνονται υπόλοιπα, καλύτερα να χρησιμοποιήσετε τον τελεστή <literal>%</literal>. Όταν χρειάζεται να
συνδέσετε αρκετές παραστάσεις σε αριθμητική υπολοίπων με διαφορετικούς διαιρέτες, μπορεί να είναι καλύτερο να
χωρίσετε απλά την παράστ
αση σε αρκετές και να χρησιμοποιήσετε προσωρινές μεταβλητές για να αποφύγετε ένα mod μέσα σε ένα mod.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Κατάλογος τελεστών GEL</title>
+
+ <para>
+ Everything in GEL is really just an expression. Expressions are stringed together with
+ different operators. As we have seen, even the separator is simply a binary operator
+ in GEL. Here is a list of the operators in GEL.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>Το διαχωριστικό, δίνει και την <varname>a</varname> και την <varname>b</varname>, αλλά
επιστρέφει μόνο το αποτέλεσμα της <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>Ο τελεστής ανάθεσης. Αυτός αναθέτει τη <varname>b</varname> στη <varname>a</varname> (η
<varname>a</varname> πρέπει να είναι μια έγκυρη <link linkend="genius-gel-lvalues">lvalue</link>) (σημειώστε
όμως ότι αυτός ο τελεστής μπορεί να μεταφραστεί σε <literal>==</literal> αν χρησιμοποιηθεί σε μια θέση όπου
αναμένεται παράσταση λογικής τιμής)</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>Ο τελεστής ανάθεσης. Εκχωρεί την <varname>b</varname> στην <varname>a</varname> (η
<varname>a</varname> πρέπει να είναι μια έγκυρη <link linkend="genius-gel-lvalues">lvalue</link>). Αυτός
είναι διαφορετικός από τον <literal>=</literal>, επειδή δεν μεταφράζεται ποτέ σε μια
<literal>==</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>
+ Absolute value.
+ In case the expression is a complex number the result will be the modulus
+(distance from the origin). For example:
+<userinput>|3 * e^(1i*pi)|</userinput>
+returns 3.
+ </para>
+ <para>Δείτε <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> για
περισσότερες πληροφορίες.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>Εκθετοποίηση, ανυψώνει μια <varname>a</varname> στη δύναμη <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>Εκθετοποίηση στοιχείου κατά στοιχείο. Ανυψώνει κάθε στοιχείο ενός πίνακα
<varname>a</varname> στη δύναμη <varname>b</varname>. Ή αν η <varname>b</varname> είναι ένας πίνακας του
ίδιου μεγέθους όπως η <varname>a</varname>, τότε κάνει την πράξη στοιχείο κατά στοιχείο. Αν η
<varname>a</varname> είναι ένας αριθμός και η <varname>b</varname> είναι ένας πίνακας, τότε δημιουργεί έναν
πίνακα του ίδιου μεγέθους όπως η <varname>b</varname> με τη <varname>a</varname> υψωμένη σε όλες τις
διαφορετικές δυνάμεις στην <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>Πρόσθεση. Προσθέτει δύο αριθμούς, πίνακες, συναρτήσεις ή συμβολοσειρές. Αν προσθέτετε μια
συμβολοσειρά σε ο,τιδήποτε το αποτέλεσμα θα είναι απλά μια συμβολοσειρά. Αν ο ένας είναι ένας τετραγωνικός
πίνακας και ο άλλος ένας αριθμός, τότε ο αριθμός πολλαπλασιάζεται με τον ταυτοτικό πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>Αφαίρεση. Αφαιρεί δύο αριθμούς, πίνακες ή συναρτήσεις.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>Πολλαπλασιασμός. Αυτός είναι ο κανονικός πίνακας πολλαπλασιασμού.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>Πολλαπλασιασμός στοιχείο με στοιχείο αν οι <varname>a</varname> και <varname>b</varname>
είναι πίνακες.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>Διαίρεση. Όταν οι <varname>a</varname> και <varname>b</varname> είναι μόνο αριθμοί, αυτή
είναι η κανονική διαίρεση. Όταν είναι πίνακες, τότε αυτή είναι ισοδύναμη με
<userinput>a*b^-1</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>
+ Element by element division. Same as <userinput>a/b</userinput> for
+ numbers, but operates element by element on matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>Οπίσθια διαίρεση. Είναι η ίδια με <userinput>b/a</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>Οπίσθια διαίρεση στοιχείου με στοιχείο.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>
+ The mod operator. This does not turn on the <link
linkend="genius-gel-modular-evaluation">modular mode</link>, but
+ just returns the remainder of integer division
+ <userinput>a/b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>
+ Element by element mod operator. Returns the remainder
+ after element by element integer division
+ <userinput>a./b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>Τελεστής υπολογισμού υπολοίπων. Η παράσταση <varname>a</varname> υπολογίζει το modulo
<varname>b</varname>. Δείτε <xref linkend="genius-gel-modular-evaluation"/>. Κάποιες συναρτήσεις και κάποιοι
τελεστές συμπεριφέρονται διαφορετικά με το ισοϋπόλοιπο ενός ακεραίου.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>Παραγοντικός τελεστής. Αυτό είναι παρόμοιο με
<userinput>1*...*(n-2)*(n-1)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>Διπλός παραγοντικός τελεστής. Αυτός είναι παρόμοιος με
<userinput>1*...*(n-4)*(n-2)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>Τελεστής ισότητας. Επιστρέφει <constant>αληθές</constant> ή <constant>ψευδές</constant>
ανάλογα με το αν οι <varname>a</varname> και <varname>b</varname> είναι ίσες ή όχι.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>Τελεστής ανισότητας, επιστρέφει <constant>αληθές</constant> αν η <varname>a</varname> δεν
είναι ίση με την <varname>b</varname>, αλλιώς επιστρέφει <constant>ψευδές</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>Εναλλακτικός τελεστής ανισότητας, επιστρέφει <constant>αληθές</constant> αν η
<varname>a</varname> δεν είναι ίση με την <varname>b</varname>, αλλιώς επιστρέφει
<constant>ψευδές</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>Τελεστής μικρότερος από ή ίσος, επιστρέφει <constant>αληθές</constant> αν
<varname>a</varname> είναι μικρότερο από ή ίσο με <varname>b</varname>, αλλιώς επιστρέφει
<constant>ψευδές</constant>. Αυτοί μπορούν να συνδεθούν όπως στο <userinput>a <= b <= c</userinput>
(μπορούν επίσης να συνδυαστούν με τον τελεστή λιγότερο από).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>
+ Greater than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a >= b >= c</userinput>
+ (and they can also be combined with the greater than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>
+ Less than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a < b < c</userinput>
+ (they can also be combined with the less than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>
+ Greater than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a > b > c</userinput>
+ (they can also be combined with the greater than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>Τελεστής σύγκρισης. Αν <varname>a</varname> είναι ίσο με <varname>b</varname> επιστρέφει 0,
αν <varname>a</varname> είναι μικρότερο από <varname>b</varname> επιστρέφει -1 και αν <varname>a</varname>
είναι μεγαλύτερο από <varname>b</varname> επιστρέφει 1.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a και b</userinput></term>
+ <listitem>
+ <para>Λογικό και. Επιστρέφει αληθές αν αμφότερα τα <varname>a</varname> και <varname>b</varname>
είναι αληθή, αλλιώς επιστρέφει ψευδές. Αν είναι δοσμένοι οι αριθμοί, οι μη μηδενικοί αριθμοί αντιμετωπίζονται
ως αληθείς.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a ή b</userinput></term>
+ <listitem>
+ <para>
+ Logical or.
+ Returns true if either
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>
+ Logical xor.
+ Returns true if exactly one of
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>όχι a</userinput></term>
+ <listitem>
+ <para>
+ Logical not. Returns the logical negation of <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>
+ Negation operator. Returns the negative of a number or a matrix (works element-wise on a
matrix).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>Αναφορά μεταβλητής (για το πέρασμα μιας αναφοράς σε μια μεταβλητή). Δείτε <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Αποαναφορά μεταβλητής (για πρόσβαση σε μια αναφερθείσα μεταβλητή). Δείτε <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>Αναστροφή συζυγούς πίνακα. Δηλαδή, οι γραμμές και οι στήλες εναλλάσσονται και παίρνουμε τον
συζυγή μιγαδικό όλων των καταχωρίσεων. Δηλαδή αν τα στοιχεία i,j της <varname>a</varname> είναι x+iy, τότε τα
στοιχεία j,i του <userinput>a'</userinput> είναι x-iy.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>Η αναστροφή πίνακα, δεν παίρνει τον συζυγή μιγαδικό των καταχωρίσεων. Δηλαδή, τα στοιχεία
i,j της <varname>a</varname> γίνονται τα στοιχεία του <userinput>a.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>
+ Get element of a matrix in row <varname>b</varname> and column
+ <varname>c</varname>. If <varname>b</varname>,
+ <varname>c</varname> are vectors, then this gets the corresponding
+ rows, columns or submatrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>Λήψη γραμμής ενός πίνακα (ή πολλαπλών γραμμών αν το <varname>b</varname> είναι ένα
διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>Ίδιο με το παραπάνω.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>Λήψη στήλης ενός πίνακα (ή στηλών αν το <varname>c</varname> είναι ένα διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>Ίδιο με το παραπάνω.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>Λήψη ενός στοιχείου από έναν πίνακα αντιμετωπίζοντας τον ως διάνυσμα. Αυτό θα διατρέξει τον
πίνακα κατά τη γραμμή.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>Δόμηση ενός διανύσματος από το <varname>a</varname> στο <varname>b</varname> (ή ορίστε
γραμμή, περιοχή στήλης για τον τελεστή <literal>@</literal>). Για παράδειγμα για να πάρετε τις γραμμές 2
μέχρι 4 του πίνακα <varname>Α</varname> μπορούμε να κάνουμε <programlisting>A@(2:4,)
+ </programlisting> ως <userinput>2:4</userinput> που θα επιστρέψει ένα διάνυσμα
<userinput>[2,3,4]</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>Δόμηση ενός διανύσματος από <varname>a</varname> σε <varname>c</varname> με
<varname>b</varname> ως ένα βήμα. Δηλαδή για παράδειγμα <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting></para>
+ <para>
+ When the numbers involved are floating point numbers, for example
+ <userinput>1.0:0.4:3.0</userinput>, the output is what is expected
+ even though adding 0.4 to 1.0 five times is actually just slightly
+ more than 3.0 due to the way that floating point numbers are
+ stored in base 2 (there is no 0.4, the actual number stored is
+ just ever so slightly bigger). The way this is handled is the
+ same as in the for, sum, and prod loops. If the end is within
+ <userinput>2^-20</userinput> times the step size of the endpoint,
+ the endpoint is used and we assume there were roundoff errors.
+ This is not perfect, but it handles the majority of the cases.
+ This check is done only from version 1.0.18 onwards, so execution
+ of your code may differ on older versions. If you want to avoid
+ dealing with this issue, use actual rational numbers, possibly
+ using the <function>float</function> if you wish to get floating
+ point numbers in the end. For example
+ <userinput>1:2/5:3</userinput> does the right thing and
+ <userinput>float(1:2/5:3)</userinput> even gives you floating
+ point numbers and is ever so slightly more precise than
+ <userinput>1.0:0.4:3.0</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>
+ Make <varname>a</varname> into an imaginary number (multiply <varname>a</varname> by the
+ imaginary). Normally the imaginary number <varname>i</varname> is
+ written as <userinput>1i</userinput>. So the above is equal to
+ <programlisting>(a)*1i
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>Βάλτε ` σε ένα αναγνωριστικό έτσι ώστε να μην υπολογιστεί. Ή βάλτε ` σε έναν πίνακα, έτσι
ώστε να μην επεκταθεί.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>Εναλλαγή τιμής του <varname>a</varname> με την τιμή του <varname>b</varname>. Πρός το παρόν
δεν λειτουργεί σε περιοχές στοιχείων πίνακα. Επιστρέφει <constant>null</constant>. Διαθέσιμο από την έκδοση
1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>Αύξηση της μεταβλητής <varname>a</varname> κατά 1. Αν η <varname>a</varname> είναι ένας
πίνακας, τότε αυξάνεται κάθε στοιχείο. Αυτό είναι ισοδύναμο με το <userinput>a=a+1</userinput>, αλλά είναι
κάπως γρηγορότερο. Επιστρέφει <constant>null</constant>. Διαθέσιμο από την έκδοση 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>Αυξάνει τη μεταβλητή <varname>a</varname> κατά <varname>b</varname>. Αν η
<varname>a</varname> είναι ένας πίνακας, τότε αυξάνεται κάθε στοιχείο. Αυτό είναι ισοδύναμο με το
<userinput>a=a+b</userinput>, αλλά είναι κάπως γρηγορότερο. Επιστρέφει <constant>null</constant>. Διαθέσιμο
από την έκδοση 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>Ο τελεστής @() καθιστά τον: τελεστή πιο χρήσιμο. Με αυτό μπορείτε να ορίσετε περιοχές ενός πίνακα.
Έτσι ώστε a@(2:4,6) είναι οι γραμμές 2,3,4 της στήλης 6. Ή a@(,1:2) θα σας πάρει τις πρώτες δύο στήλες ενός
πίνακα. Μπορείτε επίσης να αναθέσετε στον τελεστή @(), όσο η δεξιά τιμή είναι ο πίνακας που ταιριάζει στην
περιοχή σε μέγεθος, ή αν είναι οποιουδήποτε άλλου τύπου τιμής.</para>
+</note>
+
+<note>
+<para>Οι τελεστές σύγκρισης (εκτός από τον τελεστή <=> που συμπεριφέρεται κανονικά), δεν είναι αυστηρά
δυαδικοί τελεστές, μπορούν στην πραγματικότητα να ομαδοποιηθούν με τον κανονικό μαθηματικό τρόπο, π.χ.:
(1<x<=y<5) είναι μια επιτρεπτή παράσταση λογικών τιμών και σημαίνει απλά αυτό που πρέπει, δηλαδή
(1<x and x≤y and y<5)</para>
+</note>
+
+<note>
+<para>Ο μοναδιαίος τελεστής μείον λειτουργεί με διαφορετικό τρόπο ανάλογα με το πού εμφανίζεται. Αν
εμφανίζεται πριν από ένα αριθμό έχει στενή προτεραιότητα, αν εμφανίζεται μπροστά από μια παράσταση έχει
μικρότερη προτεραιότητα από τη δύναμη και τους παραγοντικούς τελεστές. Έτσι για παράδειγμα
<userinput>-1^k</userinput> είναι στην πραγματικότητα <userinput>(-1)^k</userinput>, αλλά
<userinput>-foo(1)^k</userinput> είναι στην πραγματικότητα <userinput>-(foo(1)^k)</userinput>. Γιαυτό να
προσέχετε τη χρήση του και αν αμφιβάλετε, προσθέστε παρενθέσεις.</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Προγραμματισμός με GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Εξαρτήσεις</title>
+ <para>Σύνταξη: <programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting> Αν <literal>else</literal> παραλείπεται, τότε αν η <literal>expression1</literal> δίνει
<constant>ψευδές</constant> ή 0, επιστρέφεται η <literal>NULL</literal>.</para>
+ <para>Παραδείγματα: <programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting> Σημειώστε ότι <literal>=</literal> θα μεταφραστεί σε <literal>==</literal> αν
χρησιμοποιηθεί μέσα στην παράσταση για <literal>if</literal>, έτσι το <programlisting>if a=5 then a=a-1
+</programlisting> θα ερμηνευτεί ως: <programlisting>if a==5 then a:=a-1
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Βρόχοι</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>Βρόχοι While</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting>
+
+ These are similar to other languages. However, as in GEL it is simply an expression that must have
some return value, these
+ constructs will simply return the result of the last iteration or <literal>NULL</literal> if no
iteration was done. In the boolean expression, <literal>=</literal> is translated into <literal>==</literal>
just as for the <literal>if</literal> statement.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>Βρόχοι For</title>
+ <para>Σύνταξη: <programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting> Βρόχος με αναγνωριστικό
ορίζεται για όλες τις τιμές από το <literal><from></literal> μέχρι το <literal><to></literal>,
χρησιμοποιώντας προαιρετικά μια αύξηση άλλη από 1. Αυτοί είναι γρηγορότεροι, πιο ωραίοι και περισσότερο
συμπαγείς από τους κανονικούς βρόχους όπως παραπάνω, αλλά λιγότερο ευέλικτοι. Το αναγνωριστικό πρέπει να
είναι ένα αναγνωριστικό και δεν μπορεί να είναι μια αποαναφορά. Η τιμή του αναγνωριστικού είναι η τελευταία
τιμή του ή <literal><from></literal> αν το σώμα δεν υπολογίστηκε ποτέ. Η μεταβλητή εγγ
υάται την αρχικοποίηση μετά από ένα βρόχο, έτσι μπορείτε να την χρησιμοποιήσετε με ασφάλεια. Επίσης τα
<literal><from></literal>, <literal><to></literal> και <literal><increment></literal>
πρέπει να είναι μη μιγαδικές τιμές. Το <literal><to></literal> δεν είναι βέβαιο ότι θα επιτευχθεί, αλλά
δεν θα ξεπεραστεί ποτέ, για παράδειγμα το παρακάτω εκτυπώνει περιττούς αριθμούς από 1 έως 19:
<programlisting>for i = 1 to 20 by 2 do print(i)
+</programlisting></para>
+ <para>
+ When one of the values is a floating point number, then the
+ final check is done to within 2^-20 of the step size. That is,
+ even if we overshoot by 2^-20 times the "by" above, we still execute the last
+ iteration. This way
+<programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting>
+does the expected even though adding 0.1 ten times becomes just slightly more than 1.0 due to the way that
floating point numbers
+are stored in base 2 (there is no 0.1, the actual number stored is just ever so slightly bigger). This is
not perfect but it handles
+the majority of the cases. If you want to avoid dealing with this issue, use actual rational numbers for
example:
+<programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting>
+ This check is done only from version 1.0.16 onwards, so execution of your code may differ on
older versions.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Βρόχοι Foreach</title>
+ <para>Σύνταξη: <programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
Για κάθε στοιχείο στον πίνακα, πηγαίνοντας γραμμή ανά γραμμή από αριστερά προς τα δεξιά, εκτελούμε το σώμα με
το αναγνωριστικό ορισμένο στο τρέχον στοιχείο. Για να εκτυπώσετε τους αριθμούς 1,2,3 και 4 με αυτήν τη σειρά
θα μπορούσατε να κάνετε: <programlisting>for n in [1,2:3,4] do print(n)
+</programlisting> Αν επιθυμείτε να διασχίσετε τις γραμμές και τις στήλες ενός πίνακα, μπορείτε να
χρησιμοποιήσετε τις συναρτήσεις RowsOf και ColumnsOf που επιστρέφουν ένα διάνυσμα γραμμών ή στηλών του
πίνακα. Έτσι, το <programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
+</programlisting> θα εκτυπώσει [1,2] και έπειτα [3,4].</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Break και Continue (διακοπή και συνέχιση)</title>
+ <para>Μπορείτε επίσης να χρησιμοποιήσετε τις εντολές <literal>break</literal> και
<literal>continue</literal> σε βρόχους. Η εντολή <literal>continue</literal> θα επανεκκινήσει τον τρέχοντα
βρόχο στην επόμενη του επανάληψη, ενώ η εντολή <literal>break</literal> φεύγει από τον τρέχοντα βρόχο.
<programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Sums και Products (αθροίσματα και γινόμενα)</title>
+ <para>Σύνταξη: <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting> Αν αντικαταστήσετε το <literal>for</literal> με
το <literal>sum</literal> ή <literal>prod</literal>, τότε θα πάρετε ένα άθροισμα ή γινόμενο αντί για έναν
βρόχο <literal>for</literal> loop. Αντί για επιστροφή στην τελευταία τιμή, αυτά θα επιστρέψουν το άθροισμα ή
το γινόμενο των τιμών αντίστοιχα.</para>
+ <para>Αν δεν εκτελεστεί κανένα σώμα (για παράδειγμα <userinput>sum i=1 to 0 do ...</userinput>) τότε
το <literal>sum</literal> επιστρέφει 0 και το <literal>prod</literal> επιστρέφει 1 όπως είναι η τυπική
σύμβαση.</para>
+ <para>Για αριθμούς κινητής υποδιαστολής η ίδια στρογγυλοποίηση προστασίας σφάλματος γίνεται όπως στον
βρόχο for. Δείτε <xref linkend="genius-gel-loops-for"/>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Τελεστές σύγκρισης</title>
+ <para>Οι παρακάτω τυπικοί τελεστές σύγκρισης υποστηρίζονται στο GEL και έχουν την προφανή σημασία:
<literal>==</literal>, <literal>>=</literal>, <literal><=</literal>, <literal>!=</literal>,
<literal><></literal>, <literal><</literal>, <literal>></literal>. Επιστρέφουν
<constant>αληθές</constant> ή <constant>ψευδές</constant>. Οι τελεστές <literal>!=</literal> και
<literal><></literal> είναι το ίδιο πράγμα και σημαίνουν "δεν είναι ίσο με". Η GEL επίσης υποστηρίζει
τον τελεστή <literal><=></literal>, που επιστρέφει -1 αν το αριστερό μέλος είναι μικρότερο, 0 αν και τα
δύο μέλη είναι ίσα, 1 αν το αριστερό μέλος είναι μεγαλύτερο.</para>
+
+ <para>Κανονικά <literal>=</literal> μεταφράζεται σε <literal>==</literal> αν συμβεί να είναι κάπου
όπου το GEL αναμένει μια συνθήκη όπως στη συνθήκη if. Για παράδειγμα <programlisting>if a=b then c
+if a==b then c
+</programlisting> είναι το ίδιο πράγμα στη GEL. Όμως, θα πρέπει να χρησιμοποιήσετε πραγματικά το
<literal>==</literal> ή <literal>:=</literal> όταν θέλετε να συγκρίνετε ή να αναθέσετε αντίστοιχα, αν θέλετε
ο κώδικας σας να είναι ευανάγνωστος και να αποφύγετε λάθη.</para>
+
+ <para>Όλοι οι τελεστές σύγκρισης (εκτός από τον τελεστή <literal><=></literal> που
συμπεριφέρεται κανονικά), δεν είναι αυστηρά δυαδικοί τελεστές, μπορούν στην πραγματικότητα να ομαδοποιηθούν
με τον κανονικό μαθηματικό τρόπο, π.χ.: (<literal>1<x<=y<5</literal>) είναι μια επιτρεπτή παράσταση
λογικών τιμών και σημαίνει ακριβώς αυτό που πρέπει, δηλαδή (1<x and x≤y and y<5)</para>
+ <para>Για να δημιουργήσετε λογικές παραστάσεις χρησιμοποιήστε τις λέξεις <literal>not</literal>,
<literal>and</literal>, <literal>or</literal>, <literal>xor</literal>. Οι τελεστές <literal>or</literal> και
<literal>and</literal> είναι ειδικές οντότητες επειδή υπολογίζουν τα ορίσματά τους ένα προς ένα, έτσι το
συνηθισμένο κόλπο για υπό όρο υπολογισμό δουλεύει εδώ επίσης. Για παράδειγμα, <literal>1 or a=1</literal> δεν
θα ορίσουν <literal>a=1</literal> αφού το πρώτο όρισμα ήταν αληθές.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Καθολικές μεταβλητές και εμβέλεια μεταβλητών</title>
+ <para>
+ GEL is a
+ <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">
+ dynamically scoped language</ulink>. We will explain what this
+ means below. That is, normal variables and functions are dynamically
+ scoped. The exception are
+ <link linkend="genius-gel-parameters">parameter variables</link>,
+ which are always global.
+ </para>
+ <para>Όπως οι περισσότερες γλώσσες προγραμματισμού, η GEL έχει διαφορετικούς τύπους μεταβλητών.
Κανονικά, όταν μια μεταβλητή ορίζεται σε μια συνάρτηση, είναι ορατή από αυτή τη συνάρτηση και από όλες τις
συναρτήσεις που καλούνται (όλες με υψηλότερα περιεχόμενα). Για παράδειγμα, ας υποθέσουμε ότι μια συνάρτηση
<function>f</function> ορίζει μια μεταβλητή <varname>a</varname> και έπειτα καλεί τη συνάρτηση
<function>g</function>. Τότε η συνάρτηση <function>g</function> μπορεί να αναφέρει την <varname>a</varname>.
Αλλά μόλις η <function>f</function> επιστρέφει, η μεταβλητή <varname>a</varname> βγαίνει εκτός εμβέλ�
�ιας. Για παράδειγμα, ο παρακάτω κώδικας θα εμφανίσει 5. Η συνάρτηση <function>g</function> δεν μπορεί να
κληθεί στο ανώτατο επίπεδο (έξω από τη <function>f</function> ως <varname>a</varname> δεν θα οριστεί).
<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting></para>
+ <para>Αν ορίσετε μια μεταβλητή μέσα σε μια συνάρτηση θα επικαλύψει οποιεσδήποτε μεταβλητές ορίστηκαν
στις συναρτήσεις κλήσης. Για παράδειγμα, τροποποιούμε τον παραπάνω κώδικα και γράφουμε:
<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting> Αυτός ο κώδικας θα εμφανίσει ακόμα 5. Αλλά αν καλέσετε την <function>g</function> έξω από
την <function>f</function>, τότε θα πάρετε ένα αποτέλεσμα 10. Σημειώστε ότι, ο ορισμός μιας
<varname>a</varname> σε 5 μέσα σε μια <function>f</function> δεν αλλάζει την τιμή της <varname>a</varname>
στο ανώτατο (καθολικό) επίπεδο, έτσι αν τώρα ελέγξετε την τιμή της <varname>a</varname> θα είναι ακόμα
10.</para>
+ <para>Τα ορίσματα συναρτήσεων είναι ακριβώς όπως οι μεταβλητές που ορίστηκαν μέσα στη συνάρτηση,
εκτός από το ότι είναι αρχικοποιημένες με την τιμή που περάστηκε στη συνάρτηση. Πέρα από αυτό το σημείο,
αντιμετωπίζονται ακριβώς όπως όλες οι άλλες μεταβλητές που ορίστηκαν μέσα στη συνάρτηση.</para>
+ <para>Οι συναρτήσεις αντιμετωπίζονται ακριβώς όπως οι μεταβλητές. Συνεπώς, μπορείτε τοπικά να
επανορίσετε τις συναρτήσεις. Κανονικά, (στο ανώτατο επίπεδο) δεν μπορείτε να επανορίσετε προστατευμένες
μεταβλητές και συναρτήσεις. Αλλά τοπικά μπορείτε να το κάνετε. Θεωρείστε την ακόλουθη συνεδρία:
<screen><prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen></para>
+ <para>
+ Functions and variables defined at the top level are
+ considered global. They are visible from anywhere. As we
+ said the following function <function>f</function>
+ will not change the value of <varname>a</varname> to 5.
+<programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting>
+ Sometimes, however, it is necessary to set
+a global variable from inside a function. When this behavior is needed,
+use the
+<link linkend="gel-function-set"><function>set</function></link> function. Passing a string or a quoted
identifier to
+this function sets the variable globally (on the top level).
+For example, to set
+<varname>a</varname> to the value 3 you could call:
+<programlisting>set(`a,3)
+</programlisting>
+or:
+<programlisting>set("a",3)
+</programlisting>
+ </para>
+ <para>Η συνάρτηση <function>set</function> ορίζει πάντα την καθολική ανωτάτου επιπέδου. Δεν υπάρχει
τρόπος να οριστεί μια τοπική μεταβλητή σε κάποια συνάρτηση από μια υπορουτίνα. Αν αυτό απαιτείται, πρέπει να
χρησιμοποιηθεί το πέρασμα με αναφορά.</para>
+ <para>
+ See also the
+ <link linkend="gel-function-SetElement"><function>SetElement</function></link> and
+ <link linkend="gel-function-SetVElement"><function>SetVElement</function></link> functions.
+ </para>
+ <para>Για να ανακεφαλαιώσουμε σε μια πιο τεχνική γλώσσα: Η Genius λειτουργεί με διαφορετικά
αριθμημένα περιεχόμενα. Το ανώτατο επίπεδο είναι το περιεχόμενο 0 (μηδέν). Όποτε μια συνάρτηση εισέρχεται, το
περιεχόμενο αυξάνεται και όταν η συνάρτηση επιστρέφει το περιεχόμενο μειώνεται. Μια συνάρτηση ή μια μεταβλητή
είναι πάντα ορατή από όλα τα περιεχόμενα με υψηλότερη αρίθμηση. Όταν μια μεταβλητή ορίζεται σε ένα
περιεχόμενο χαμηλότερης αρίθμησης, τότε ο ορισμός αυτής της μεταβλητής επιδρά στη δημιουργία μιας νέας
τοπικής μεταβλητής με τον τρέ�
�οντα αριθμό περιεχομένου και αυτή η μεταβλητή θα είναι τώρα ορατή από όλα τα περιεχόμενα με υψηλότερη
αρίθμηση.</para>
+ <para>Υπάρχουν επίσης αληθινές τοπικές μεταβλητές, που δεν φαίνονται από οπουδήποτε εκτός από το
τρέχον περιεχόμενο. Επίσης όταν επιστρέφονται συναρτήσεις με τιμή μπορεί να αναφέρονται σε μεταβλητές μη
ορατές από υψηλότερο περιεχόμενο και αυτό μπορεί να είναι ένα πρόβλημα. Δείτε τις ενότητες <link
linkend="genius-gel-true-local-variables">Αληθείς τοπικές μεταβλητές</link> και <link
linkend="genius-gel-returning-functions">Επιστροφή συναρτήσεων</link>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Μεταβλητές παραμέτρων</title>
+ <para>Όπως είπαμε πριν, υπάρχουν ειδικές μεταβλητές που λέγονται παράμετροι που υπάρχουν σε όλες τις
εμβέλειες. Για να δηλώσετε μια παράμετρο που λέγεται <varname>foo</varname> με την αρχική τιμή 1, γράφουμε
<programlisting><![CDATA[parameter foo = 1
+]]></programlisting> Από κει και πέρα η <varname>foo</varname> είναι μια αυστηρά καθολική μεταβλητή.
Ορίζοντας την <varname>foo</varname> μέσα σε οποιαδήποτε συνάρτηση θα τροποποιεί τη μεταβλητή σε όλα τα
περιεχόμενα, δηλαδή, οι συναρτήσεις δεν έχουν ένα ιδιωτικό αντίγραφο των παραμέτρων.</para>
+ <para>Όταν αποκαθορίζετε μια παράμετρο χρησιμοποιώντας τη συνάρτηση <link
linkend="gel-function-undefine"><function>undefine</function></link>, σταματά να είναι μια παράμετρος.</para>
+ <para>
+ Some parameters are built-in and modify the behavior of genius.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Επιστροφή</title>
+ <para>Κανονικά, μια συνάρτηση είναι μία ή πολλές παραστάσεις χωρισμένες με ; και η τιμή της
τελευταίας παράστασης επιστρέφεται. Αυτό είναι θαυμάσιο για απλές συναρτήσεις, αλλά μερικές φορές δεν θέλετε
μια συνάρτηση νε επιστρέφει το τελευταίο υπολογισμένο πράγμα. Μπορείτε, για παράδειγμα, να θέλετε να
επιστρέψετε από το μέσο μιας συνάρτησης. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί
<literal>return</literal>. Η <literal>return</literal> παίρνει ένα όρισμα, που είναι η τιμή για
επιστροφή.</para>
+ <para>Παράδειγμα: <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>Αναφορές</title>
+ <para>Μπορεί να είναι απαραίτητο για μερικές συναρτήσεις να επιστραφούν περισσότερες από μία τιμές.
Αυτό μπορεί να επιτευχθεί επιστρέφοντας ένα διάνυσμα τιμών, αλλά πολλές φορές, είναι βολικό να
χρησιμοποιήσετε το πέρασμα μιας αναφοράς σε μια μεταβλητή. Περνάτε μια αναφορά σε μια μεταβλητή σε μια
συνάρτηση και η συνάρτηση θα ορίσει τη μεταβλητή για σας χρησιμοποιώντας μια αποαναφορά. Δεν πρέπει να
χρησιμοποιείτε αναφορές μόνο για αυτόν το σκοπό, αλλά αυτή είναι η κύρια χρήση τους.</para>
+ <para>Όταν χρησιμοποιείτε συναρτήσεις που επιστρέφουν τιμές μέσα από αναφορές στη λίστα ορισμάτων,
περάστε απλά το όνομα της μεταβλητής με ένα (A x v: </para>
+ <para>Οι λεπτομέρειες του πώς δουλεύουν οι αναφορές και η σύνταξη είναι παρόμοιες με τη γλώσσα C. Ο
τελεστής <literal>&</literal> αναφέρεται σε μια μεταβλητή και το <literal>*</literal> αποαναφέρει μια
μεταβλητή. Αμφότεροι μπορούν να εφαρμοστούν μόνο σε ένα αναγνωριστικό, έτσι το <literal>**a</literal> δεν
είναι επιτρεπτή παράσταση στο GEL.</para>
+ <para>Οι αναφορές εξηγούνται καλύτερα με ένα παράδειγμα: <programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting> τώρα η <varname>a</varname> περιέχει 2. Μπορείτε επίσης να αναφέρετε συναρτήσεις: το
<programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting> μας δίνει 4.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Lvalues (αριστερές τιμές)</title>
+ <para>Μια lvalue είναι το αριστερό μέλος μιας ανάθεσης. Με άλλα λόγια, μια lvalue είναι αυτό που
αναθέτετε σε κάτι. Έγκυρες lvalues είναι: <variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>Αναγνωριστικό. Εδώ μπορεί να οριστεί η μεταβλητή του ονόματος <varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Αποαναφορά ενός αναγνωριστικού. Αυτό θα ορίσει οποιαδήποτε μεταβλητή δείχνει στο
<varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<region>)</userinput></term>
+ <listitem>
+ <para>Μια περιοχή ενός πίνακα. Εδώ η περιοχή ορίζεται κανονικά όπως στην περίπτωση του κανονικού
τελεστή @() και μπορεί να είναι μια μοναδική καταχώριση, ή μια πλήρης περιοχή του πίνακα.</para>
+ </listitem>
+ </varlistentry>
+</variablelist></para>
+ <para>
+Examples:
+<programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting>
+Note that both <literal>:=</literal> and <literal>=</literal> can be used
+interchangeably. Except if the assignment appears in a condition.
+It is thus always safer to just use
+<literal>:=</literal> when you mean assignment, and <literal>==</literal>
+when you mean comparison.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Προχωρημένος προγραμματισμός με GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Χειρισμός σφάλματος</title>
+ <para>Αν εντοπίσετε ένα σφάλμα στη συνάρτησή σας, μπορείτε να το αποφύγετε. Για φυσιολογικά σφάλματα,
όπως εσφαλμένους τύπους ορισμάτων, μπορείτε να παραλείψετε να υπολογίσετε τη συνάρτηση προσθέτοντας την
δήλωση <literal>bailout</literal>. Αν κάτι πήγε πραγματικά εσφαλμένα και θέλετε να τερματίσετε πλήρως τον
τρέχοντα υπολογισμό, μπορείτε να χρησιμοποιήσετε το <literal>exception</literal>.</para>
+ <para>Για παράδειγμα αν θέλετε να ελέγξετε για ορίσματα στη συνάρτησή σας. Θα μπορούσατε να
χρησιμοποιήσετε τον ακόλουθο κώδικα. <programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M not a matrix!");
+ bailout
+ );
+ ...
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Σύνταξη ανωτάτου επιπέδου</title>
+ <para>
+ The syntax is slightly different if you enter statements on
+ the top level versus when they are inside parentheses or
+ inside functions. On the top level, enter acts the same as if
+ you press return on the command line. Therefore think of programs
+ as just a sequence of lines as if they were entered on the command line.
+ In particular, you do not need to enter the separator at the end of the
+ line (unless it is of course part of several statements inside
+ parentheses). When a statement does not end with a separator on the
+ top level, the result is printed after being executed.
+ </para>
+ <para>
+ For example,
+ <programlisting>function f(x)=x^2
+f(3)
+</programlisting>
+ will print first the result of setting a function (a representation of
+ the function, in this case <computeroutput>(`(x)=(x^2))</computeroutput>)
+ and then the expected 9. To avoid this, enter a separator
+ after the function definition.
+ <programlisting>function f(x)=x^2;
+f(3)
+</programlisting>
+ If you need to put a separator into your function then you have to surround with
+ parenthesis. For example:
+<programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting>
+ </para>
+ <para>Ο παρακάτω κώδικας θα παράξει ένα σφάλμα όταν εισαχθεί στο ανώτατο επίπεδο ενός προγράμματος,
ενώ θα δουλέψει θαυμάσια σε μια συνάρτηση. <programlisting>if Something() then
+ DoSomething()
+else
+ DoSomethingElse()
+</programlisting></para>
+ <para>Το πρόβλημα είναι ότι μετά το <application>Εργαλείο μαθηματικών Genius</application> βλέπει το
τέλος της γραμμής μετά τη δεύτερη γραμμή, θα αποφασίσει ότι έχουμε ολόκληρη τη δήλωση και θα την εκτελέσει.
Μετά την εκτέλεση, το <application>Εργαλείο μαθηματικών Genius</application> θα συνεχίσει με την επόμενη
γραμμή, θα δει το <literal>else</literal> και θα παράξει ένα σφάλμα ανάλυσης. Για να το διορθώσετε,
χρησιμοποιήστε παρενθέσεις. Το <application>Εργαλείο μαθηματικών Genius</application> δεν θα ικανοποιηθεί
μέχρι να βρει ότι όλες οι παρενθέσεις έχουν κλείσει. <programlisting>if Something() then (
+ DoSomething()
+) else (
+ DoSomethingElse()
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Επιστροφή συναρτήσεων</title>
+ <para>Είναι δυνατό να επιστρέψετε συναρτήσεις ως τιμή. Με αυτόν τον τρόπο μπορείτε να δομήσετε
συναρτήσεις που κατασκευάζουν συναρτήσεις ειδικού σκοπού σύμφωνα με κάποιες παραμέτρους. Το ευαίσθητο κομμάτι
είναι τι μεταβλητές βλέπει η συνάρτηση. Ο τρόπος που αυτό δουλεύει στο GEL είναι ότι όταν μια συνάρτηση
επιστρέφει μια άλλη συνάρτηση, όλα τα αναγνωριστικά που αναφέρθηκαν στο σώμα της συνάρτησης που βγήκε εκτός
εμβέλειας προτάσσουν ένα ιδιωτικό λεξικό της επιστρεφόμενης συνάρτησης. Έτσι η συνάρτηση θα δει όλες τις
μεταβλητέςπου ήτα�
� στην εμβέλεια όταν ορίστηκε. Για παράδειγμα, ορίζουμε μια συνάρτηση που επιστρέφει μια συνάρτηση που
προσθέτει 5 στο όρισμά της. <programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting> Σημειώστε ότι, η συνάρτηση προσθέτει τη <varname>k</varname> στη <varname>x</varname>.
Μπορείτε να τη χρησιμοποιήσετε ως εξής. <programlisting>g = f();
+g(5)
+</programlisting> Και η <userinput>g(5)</userinput> πρέπει να επιστρέψει 10.</para>
+ <para>Πρέπει να σημειώσετε ότι η τιμή της <varname>k</varname> που χρησιμοποιείται είναι αυτή που
επιστρέφεται στην πραγματικότητα από την <function>f</function>. Για παράδειγμα: το <programlisting>function
f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting> θα επιστρέψει μια συνάρτηση που προσθέτει 10 στο όρισμά της αντί για 5. Αυτό συμβαίνει
επειδή το πρόσθετο λεξικό δημιουργείται μόνο όταν το περιεχόμενο στο οποίο η συνάρτηση ορίστηκε τελειώνει,
που συμβαίνει όταν η συνάρτηση <function>f</function> επιστρέφεται. Αυτό είναι συνεπές με το πώς θα
περιμένατε η συνάρτηση <function>r</function> να δουλέψει μέσα στη συνάρτηση <function>f</function> σύμφωνα
με τους κανόνες εμβέλειας των μεταβλητών στη GEL. Μόνο αυτές οι μεταβλητές προστίθενται στο πρόσθετο λεξικό
που είναι στο περιεχόμενο που μόλις τελείωσε και δεν �
�πάρχει πια. Οι χρησιμοποιούμενες μεταβλητές στη συνάρτηση που είναι ακόμα σε έγκυρα περιεχόμενα θα
δουλέψουν ως συνήθως, χρησιμοποιώντας την τρέχουσα τιμή της μεταβλητής. Η μόνη διαφορά είναι με τις καθολικές
μεταβλητές και συναρτήσεις. Όλα τα αναγνωριστικά που αναφέρθηκαν σε καθολικές μεταβλητές κατά τον ορισμό της
συνάρτησης δεν προστίθενται στο ιδιωτικό λεξικό. Αυτό συμβαίνει για να αποφευχθεί πολλή περιττή εργασία κατά
την επιστροφή συναρτήσεων και μπορεί σπάνια να είναι πρόβλημα. Για παράδειγμα, ας υποθέσουμε ότι διαγράφετε
το "k=5" από τη συνάρτηση <function>f</function> και στο ανώτατο επίπεδο ορίζετε την <varname>k</varname> να
είναι ας πούμε 5. Τότε όταν εκτελείτε τη <function>f</function>, η συνάρτηση <function>r</function> δεν θα
βάλει την <varname>k</varname> στο ιδιωτικό λεξικό, επειδή είναι καθολική (ανωτάτου επιπέδου) τη στιγμή του
ορισμού της <function>r</function>.</para>
+ <para>Μερικές φορές είναι καλύτερο να έχετε περισσότερο έλεγχο στο πώς αντιγράφονται οι μεταβλητές
στο ιδιωτικό λεξικό. Από την έκδοση 1.0.7, μπορείτε να ορίσετε ποιες μεταβλητές αντιγράφονται στο ιδιωτικό
λεξικό βάζοντας πρόσθετες αγκύλες μετά τα ορίσματα με τον κατάλογο των μεταβλητών να αντιγράφεται χωριζόμενο
με κόμματα. Αν το κάνετε αυτό, τότε οι μεταβλητές αντιγράφονται στο προσωπικό λεξικό τη στιγμή του ορισμού
της συνάρτησης και το ιδιωτικό λεξικό δεν επηρεάζεται κατόπιν. Για παράδειγμα το <programlisting>function f()
= (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting> θα επιστρέψει μια συνάρτηση που όταν καλείται θα προσθέσει 5 στο όρισμά του. Το τοπικό
αντίγραφο της <varname>k</varname> δημιουργήθηκε όταν η συνάρτηση ορίστηκε.</para>
+ <para>Όταν θέλετε η συνάρτηση να μην έχει κανένα ιδιωτικό λεξικό, τότε βάλτε κενές αγκύλες μετά την
λίστα ορισμάτων. Τότε κανένα ιδιωτικό λεξικό δεν θα δημιουργηθεί. Κάνοντας το αυξάνετε την
αποτελεσματικότητα, όταν ένα προσωπικό λεξικό δεν χρειάζεται ή όταν θέλετε η συνάρτηση να αναζητήσει όλες τις
μεταβλητές όπως τις βλέπει όταν καλούνται. Για παράδειγμα ας υποθέσουμε ότι θέλετε η επιστρεφόμενη συνάρτηση
από την <function>f</function> να δει την τιμή της <varname>k</varname> από το ανώτατο επίπεδο παρά το ότι
εκεί είναι μια τοπική μεταβλητή με το ίδιο όν�
�μα κατά τη διάρκεια του ορισμού. Έτσι ο κώδικας <programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting> θα επιστρέψει 20 και όχι 15, που θα συμβεί αν η <varname>k</varname> με μια τιμή 5
προστέθηκε στο ιδιωτικό λεξικό.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>Αληθείς τοπικές μεταβλητές</title>
+ <para>Κατά τη μεταβίβαση συναρτήσεων σε άλλες συναρτήσεις, η κανονική εμβέλεια των μεταβλητών μπορεί
να είναι ανεπιθύμητη. Για παράδειγμα: <programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting> προφανώς θέλετε η συνάρτηση <function>r</function> κατά τη μεταβίβαση ως
<function>g</function> στη <function>f</function> να δει τη <varname>k</varname> ως 10 αντί για 5, έτσι ώστε
ο κώδικας να επιστρέψει 11 και όχι 6. Όμως, όπως είναι γραμμένο, η συνάρτηση κατά την εκτέλεση θα δει τη
<varname>k</varname> που είναι ίση με 5. Υπάρχουν δύο τρόποι για την επίλυση αυτού του θέματος. Κάποιος
πρέπει να κάνει την <function>r</function> να πάρει την <varname>k</varname> σε ένα ιδιωτικό λεξικό
χρησιμοποιώντας την σημειογραφία αγκύλης στην ενότητα <link
linkend="genius-gel-returning-functions">Επιστροφή συναρτήσεων</link>.</para>
+ <para>
+ But there is another solution. Since version 1.0.7 there are
+ true local variables. These are variables that are visible only
+ from the current context and not from any called functions.
+ We could define <varname>k</varname> as a local variable in the
+ function <function>f</function>. To do this add a
+ <command>local</command> statement as the first statement in the
+ function (it must always be the first statement in the function).
+ You can also make any arguments be local variables as well.
+ That is,
+<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ Then the code will work as expected and prints out 11.
+ Note that the <command>local</command> statement initializes
+ all the referenced variables (except for function arguments) to
+ a <constant>null</constant>.
+ </para>
+ <para>
+ If all variables are to be created as locals you can just pass an
+ asterisk instead of a list of variables. In this case the variables
+ will not be initialized until they are actually set of course.
+ So the following definition of <function>f</function>
+ will also work:
+<programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ </para>
+ <para>Είναι μια καλή πρακτική όλες οι συναρτήσεις που παίρνουν άλλες συναρτήσεις ως ορίσματα να
χρησιμοποιούν τοπικές μεταβλητές. Με αυτόν το τρόπο η μεταβιβαζόμενη συνάρτηση δεν βλέπει λεπτομέρειες
υλοποίησης και δεν μπερδεύεται.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>Διαδικασία έναρξης GEL</title>
+ <para>Αρχικά το πρόγραμμα αναζητά το εγκατεστημένο αρχείο βιβλιοθήκης (τη μεταγλωττισμένη έκδοση
<filename>lib.cgel</filename>) στον εγκατεστημένο κατάλογο, έπειτα ψάχνει στον τρέχοντα κατάλογο και έπειτα
προσπαθεί να φορτώσει το αμεταγλώττιστο αρχείο που λέγεται <filename>~/.geniusinit</filename>.</para>
+ <para>Αν ποτέ αλλάξετε την εγκατεστημένη θέση της βιβλιοθήκης, θα πρέπει πρώτα να τη μεταγλωττίσετε με
<command>genius --compile loader.gel > lib.cgel</command></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Φόρτωση προγραμμάτων</title>
+ <para>
+Sometimes you have a larger program you wrote into a file and want to read that file into
<application>Genius Mathematics Tool</application>. In these situations, you have two options. You can keep
the functions you use most inside the <filename>~/.geniusinit</filename> file. Or if you want to load up a
file in a middle of a session (or from within another file), you can type <command>load <list of
filenames></command> at the prompt. This has to be done on the top level and not inside any function or
whatnot, and it cannot be part of any expression. It also has a slightly different syntax than the rest of
genius, more similar to a shell. You can enter the file in quotes. If you use the '' quotes, you will get
exactly the string that you typed, if you use the "" quotes, special characters will be unescaped as they are
for strings. Example:
+<programlisting>load program1.gel program2.gel
+load "Weird File Name With SPACES.gel"
+</programlisting>
+There are also <command>cd</command>, <command>pwd</command> and <command>ls</command> commands built in.
<command>cd</command> will take one argument, <command>ls</command> will take an argument that is like the
glob in the UNIX shell (i.e., you can use wildcards). <command>pwd</command> takes no arguments. For example:
+<programlisting>cd directory_with_gel_programs
+ls *.gel
+</programlisting>
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Πίνακες στη GEL</title>
+
+ <para>
+ Genius has support for vectors and matrices and possesses a sizable library of
+ matrix manipulation and linear algebra functions.
+ </para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Εισαγωγή πινάκων</title>
+ <para>
+To enter matrices, you can use one of the following two syntaxes. You can either enter
+the matrix on one line, separating values by commas and rows by semicolons. Or you
+can enter each row on one line, separating
+values by commas.
+You can also just combine the two methods.
+So to enter a 3x3 matrix
+of numbers 1-9 you could do
+<programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting>
+or
+<programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting>
+Do not use both ';' and return at once on the same line though.
+ </para>
+
+ <para>
+You can also use the matrix expansion functionality to enter matrices.
+For example you can do:
+<programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting>
+and you should get
+<programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting>
+similarly you can build matrices out of vectors and other stuff like that.
+ </para>
+
+ <para>Ένα άλλο είναι ότι αρχικοποιούνται μη καθορισμένα σημεία σε 0, έτσι το <programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting> θα καταλήξει να είναι <programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting></para>
+
+ <para>Όταν υπολογίζονται πίνακες, υπολογίζονται και διατρέχονται κατά την έννοια της γραμμής. Αυτό
είναι ακριβώς όπως ο τελεστής <literal>M@(j)</literal> που διατρέχει τον πίνακα κατά την έννοια της
γραμμής.</para>
+
+ <note>
+ <para>Προσέξτε τη χρήση επιστροφών για εκφράσεις μέσα σε αγκύλες <literal>[ ]</literal>, επειδή
έχουν μια ελαφρώς διαφορετική έννοια εδώ. Θα ξεκινήσετε μια νέα γραμμή.</para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Συζυγής αντιστροφή και τελεστής αντιστροφής</title>
+ <para>Μπορείτε να πάρετε τον συζυγή ενός ανάστροφου πίνακα χρησιμοποιώντας τον τελεστή
<literal>'</literal>. Δηλαδή, η καταχώριση στην <varname>i</varname>στη στήλη και στην
<varname>j</varname>στη γραμμή θα είναι ο μιγαδικός συζυγής της καταχώρισης στη <varname>j</varname>στη στήλη
και την <varname>i</varname>στη γραμμή του αρχικού πίνακα. Για παράδειγμα: <programlisting>[1,2,3]*[4,5,6]'
+</programlisting> Αναστρέφουμε το δεύτερο διάνυσμα για να κάνουμε τον πολλαπλασιασμό του πίνακα δυνατό. Αν
θέλετε απλά να αναστρέψετε έναν πίνακα χωρίς να πάρετε τον συζυγή του, μπορείτε να χρησιμοποιήσετε τον
τελεστή <literal>.'</literal>. Για παράδειγμα: <programlisting>[1,2,3]*[4,5,6i].'
+</programlisting></para>
+ <para>Σημειώστε ότι ο κανονικός ανάστροφος, δηλαδή ο τελεστής <literal>.'</literal>, είναι πολύ
γρηγορότερος και δεν θα δημιουργήσει ένα νέο αντίγραφο του πίνακα στη μνήμη. Η αναστροφή του συζυγή δεν
δημιουργεί ένα νέο αντίγραφο δυστυχώς. Συνιστάται να χρησιμοποιείτε πάντα τον τελεστή <literal>.'</literal>
όταν δουλεύετε με πραγματικούς πίνακες και διανύσματα.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Γραμμική Άλγεβρα</title>
+ <para>Η Genius υλοποιεί πολλές χρήσιμες ρουτίνες χειρισμού γραμμικής άλγεβρας και πινάκων. Δείτε <link
linkend="genius-gel-function-list-linear-algebra">γραμμική άλγεβρα</link> και τις ενότητες <link
linkend="genius-gel-function-list-matrix">Χειρισμός πίνακα</link> του καταλόγου συναρτήσεων GEL.</para>
+ <para>Οι υλοποιούμενες ρουτίνες γραμμικής άλγεβρας στο GEL δεν έρχονται προς το παρόν από ένα καλά
ελεγμένο αριθμητικό πακέτο και έτσι δεν πρέπει να χρησιμοποιηθούν για κρίσιμους αριθμητικούς υπολογισμούς.
Από την άλλη μεριά, η Genius υλοποιεί πολύ καλά πολλές πράξεις γραμμικής άλγεβρας με ρητούς και ακέραιους
συντελεστές. Αυτές είναι έμφυτα ακριβείς και στην πραγματικότητα θα σας δώσουν πολύ καλύτερα αποτελέσματα από
τις συνηθισμένες ρουτίνες διπλής ακρίβειας για γραμμική άλγεβρα.</para>
+ <para>Για παράδειγμα, είναι χωρίς νόημα να υπολογίσετε την τάξη και μηδενικό χώρο ενός πίνακα κινητής
υποδιαστολής αφού για όλους τους πρακτικούς σκοπούς, χρειάζεται να θεωρήσουμε ότι ο πίνακας έχει κάποια μικρά
σφάλματα. Είναι πιθανό να πάρετε ένα διαφορετικό αποτέλεσμα από αυτό που περιμένετε. Το πρόβλημα είναι κάτω
από μια μικρή διαταραχή κάθε πίνακας είναι πλήρους τάξης και αντιστρέψιμος. Αν ο πίνακας όμως είναι ρητών
αριθμών, τότε η τάξη και ο μηδενικός χώρος είναι πάντα ακριβείς.</para>
+ <para>Γενικά, όταν η Genius υπολογίζει τη βάση συγκεκριμένου διανυσματικού χώρου (για παράδειγμα με
την <link linkend="gel-function-NullSpace"><function>NullSpace</function></link>) θα δώσει τη βάση ως πίνακα,
στον οποίον οι στήλες είναι τα διανύσματα της βάσης. Δηλαδή, όταν η Genius μιλά για έναν γραμμικό υπόχωρο
σημαίνει ένας πίνακας του οποίου ο χώρος στηλών είναι ο δοσμένος γραμμικός υπόχωρος.</para>
+ <para>Θα πρέπει να σημειωθεί ότι η Genius μπορεί να θυμάται συγκεκριμένες ιδιότητες ενός πίνακα. Για
παράδειγμα, θα θυμάται ότι ο πίνακας είναι σε ανηγμένη μορφή γραμμής. Αν γίνουν πολλές κλήσεις σε συναρτήσεις
που χρησιμοποιούν εσωτερικά ανηγμένη μορφή γραμμής του πίνακα, μπορούμε απλά να μειώσουμε τη γραμμή του
πίνακα προκαταβολικά μια φορά. Διαδοχικές κλήσεις στο <link
linkend="gel-function-rref"><function>rref</function></link> θα είναι πολύ γρήγορες.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Πολυώνυμα στην GEL</title>
+
+ <para>Προς το παρόν η Genius μπορεί να χειριστεί πολυώνυμα μιας μεταβλητής γραμμένα ως διανύσματα και να
κάνει μερικές βασικές πράξεις με αυτές. Είναι προγραμματισμένο να επεκτείνει αυτήν την υποστήριξη
παραπέρα.</para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Χρήση πολυωνύμων</title>
+ <para>Προς το παρόν πολυώνυμα με μια μεταβλητή είναι μόνο οριζόντια διανύσματα με τιμή μόνο κόμβων. Η
δύναμη του όρου είναι η θέση στο διάνυσμα, με την πρώτη θέση να είναι το 0. Έτσι, το <programlisting>[1,2,3]
+</programlisting> μεταφράζεται σε ένα πολυωνύμου του <programlisting>1 + 2*x + 3*x^2
+</programlisting></para>
+ <para>Μπορείτε να προσθέσετε, αφαιρέσετε και να πολλαπλασιάσετε πολυώνυμα χρησιμοποιώντας τις
συναρτήσεις <link linkend="gel-function-AddPoly"><function>AddPoly</function></link>, <link
linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link> και <link
linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link> αντίστοιχα. Μπορείτε να
εκτυπώσετε ένα πολυώνυμο χρησιμοποιώντας τη συνάρτηση <link
linkend="gel-function-PolyToString"><function>PolyToString</function></link>. Για παράδειγμα, το
<programlisting>PolyToString([1,2,3],"y")
+</programlisting> δίνει <programlisting>3*y^2 + 2*y + 1
+</programlisting> Μπορείτε επίσης να πάρετε μια αναπαράσταση συνάρτησης του πολυωνύμου έτσι ώστε να
μπορέσετε την υπολογίσετε. Αυτό γίνεται χρησιμοποιώντας την <link
linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>, που επιστρέφει μια ανώνυμη
συνάρτηση. <programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting></para>
+ <para>Είναι επίσης δυνατό να βρείτε ρίζες πολυωνύμων βαθμών 1 μέχρι 4 χρησιμοποιώντας τη συνάρτηση
<link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>, που καλεί τη
συνάρτηση κατάλληλου τύπου. Πολυώνυμα μεγαλύτερου βαθμού πρέπει να μετατραπούν σε συναρτήσεις και να
επιλυθούν αριθμητικά χρησιμοποιώντας μια συνάρτηση όπως οι <link
linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>, <link
linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>, <link
linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link>, ή <link
linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.</para>
+ <para>Δείτε <xref linkend="genius-gel-function-list-polynomials"/> στον κατάλογο συναρτήσεων για τις
υπόλοιπες συναρτήσεις που δρουν σε πολυώνυμα.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Θεωρία συνόλων στη GEL</title>
+
+ <para>Η Genius έχει κάποια βασική θεωρητική λειτουργικότητα συνόλων ενσωματωμένη. Προς το παρόν ένα
σύνολο είναι απλά ένα διάνυσμα (ή πίνακας). Κάθε ξεχωριστό αντικείμενο αντιμετωπίζεται ως διαφορετικό
στοιχείο.</para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Χρήση συνόλων</title>
+ <para>Ακριβώς όπως τα διανύσματα, τα αντικείμενα στα σύνολα μπορούν να περιλαμβάνουν αριθμούς,
συμβολοσειρές <constant>null</constant>, πίνακες και διανύσματα. Σχεδιάζεται στο μέλλον να υπάρχει ένας
αποκλειστικός τύπος για σύνολα, αντί να χρησιμοποιούνται διανύσματα. Σημειώστε ότι οι αριθμοί κινητής
υποδιαστολής είναι διακριτοί από τους ακέραιους, ακόμα κι αν εμφανίζονται το ίδιο. Δηλαδή η Genius θα
θεωρήσει τις <constant>0</constant> και <constant>0.0</constant> ως δύο διαφορετικά στοιχεία. Η
<constant>null</constant> αντιμετωπίζεται ως ένα κενό σύνολο.</para>
+ <para>Για να δομήσετε ένα σύνολο από ένα διάνυσμα, χρησιμοποιήστε τη συνάρτηση <link
linkend="gel-function-MakeSet"><function>MakeSet</function></link>. Προς το παρόν, θα επιστρέψει απλά ένα νέο
διάνυσμα, όπου κάθε στοιχείο είναι μοναδικό. <screen><prompt>genius>
</prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen></para>
+
+ <para>Παρόμοια, υπάρχουν συναρτήσεις <link
linkend="gel-function-Union"><function>Union</function></link>, <link
linkend="gel-function-Intersection"><function>Intersection</function></link>, <link
linkend="gel-function-SetMinus"><function>SetMinus</function></link>, που είναι μάλλον αυτονόητες. Για
παράδειγμα: <screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen> Σημειώστε ότι δεν εγγυάται καμία τάξη για τις τιμές επιστροφής. Αν θέλετε να ταξινομήσετε το
διάνυσμα θα πρέπει να χρησιμοποιήσετε τη συνάρτηση <link
linkend="gel-function-SortVector"><function>SortVector</function></link>.</para>
+
+ <para>Για τον έλεγχο μέλους, υπάρχουν συναρτήσεις <link
linkend="gel-function-IsIn"><function>IsIn</function></link> and <link
linkend="gel-function-IsSubset"><function>IsSubset</function></link>, που επιστρέφουν μια λογική τιμή. Για
παράδειγμα: <screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen> Η είσοδος <userinput>IsIn(x,X)</userinput> είναι φυσικά ισοδύναμη με
<userinput>IsSubset([x],X)</userinput>. Σημειώστε ότι, αφού το κενό σύνολο είναι ένα υποσύνολο κάθε συνόλου,
η <userinput>IsSubset(null,X)</userinput> είναι πάντα αληθής.</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Κατάλογος συναρτήσεων της GEL</title>
+
+ <!--&gel-function-list;-->
+
+ <para>Για να πάρετε βοήθεια σε μια συγκεκριμένη συνάρτηση από την κονσόλα πληκτρολογήστε:
<programlisting>βοήθεια FunctionName
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Εντολές</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>βοήθεια</synopsis>
+ <synopsis>βοήθεια FunctionName</synopsis>
+ <para>Εμφάνιση βοήθειας (ή βοήθεια για μια συνάρτηση/εντολή).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "file.gel"</synopsis>
+ <para>Load a file into the interpreter. The file will execute
+as if it were typed onto the command line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /directory/name</synopsis>
+ <para>Αλλαγή καταλόγου εργασίας σε <filename>/directory/name</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Εμφάνιση του τρέχοντος καταλόγου εργασίας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Λίστα αρχείων στον τρέχοντα κατάλογο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin plugin_name</synopsis>
+ <para>Φόρτωση ενός προσθέτου. Το πρόσθετο πρέπει να εγκατασταθεί στο σύστημα στο σωστό
κατάλογο.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Βασικά</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (query)</synopsis>
+ <synopsis>AskButtons (query, button1, ...)</synopsis>
+ <para>Ερωτά και παρουσιάζει έναν κατάλογο κουμπιών στον χρήστη (ή ένα μενού επιλογών σε κατάσταση
κειμένου). Επιστρέφει τον δείκτη με βάση το 1 του πατημένου κουμπιού. Δηλαδή, επιστρέφει 1 αν το πρώτο κουμπί
πατήθηκε, 2 αν το δεύτερο κουμπί πατήθηκε και ούτω καθεξής. Αν ο χρήστης κλείσει το παράθυρο (ή απλά πατήσει
εισαγωγή στην κατάσταση κειμένου), τότε η <constant>null</constant> επιστρέφεται. Η εκτέλεση του προγράμματος
εμποδίζεται μέχρι να απαντήσει ο χρήστης.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (query)</synopsis>
+ <synopsis>AskString (query, default)</synopsis>
+ <para>Asks a question and lets the user enter a string, which
+it then returns. If the user cancels or closes the window, then
+<constant>null</constant> is returned. The execution of the program
+is blocked until the user responds. If <varname>default</varname> is given, then it is pre-typed in for the
user to just press enter on (version 1.0.6 onwards).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Σύνθεση δύο συναρτήσεων και επιστροφή μιας συνάρτησης που είναι η σύνθεση των
<function>f</function> και <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Σύνθεση και εκτέλεση μιας συνάρτησης με τον εαυτό της <varname>n</varname> φορές,
μεταβιβάζοντας την <varname>x</varname> ως όρισμα. Επιστροφή της <varname>x</varname> αν η
<varname>n</varname> είναι ίση με 0. Παράδειγμα: <screen><prompt>genius></prompt> <userinput>function f(x)
= x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (str)</synopsis>
+ <para>Αναλύει και υπολογίζει μια συμβολοσειρά.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Λήψη του τρέχοντος ισοϋπόλοιπου από το περιεχόμενο έξω από τη συνάρτηση. Δηλαδή, αν
εκτελέστηκε έξω από την συνάρτηση σε modulo (χρησιμοποιώντας <literal>mod</literal>), τότε αυτό επιστρέφει
ποιο ήταν αυτό το modulo. Κανονικά το καλούμενο σώμα της συνάρτησης δεν εκτελείται σε αριθμητική υπολοίπων
και αυτή η ενσωματωμένη συνάρτηση κάνει δυνατή την ενημέρωση των συναρτήσεων GEL αριθμητικής υπολοίπων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Identity function, returns its argument. It is equivalent to <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (bval)</synopsis>
+ <para>Κάνει τον ακέραιο (0 για <constant>ψευδή</constant> ή 1 για <constant>αληθή</constant>) από
μια λογική τιμή. Η <varname>bval</varname> μπορεί επίσης να είναι ένας αριθμός οπότε μια μη μηδενική τιμή θα
ερμηνευτεί ως <constant>αληθής</constant> και το μηδέν θα ερμηνευτεί ως <constant>ψευδής</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι λογική τιμή (και όχι αριθμός).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Ελέγχει αν ένα αναγνωριστικό ορίζεται. Θα πρέπει να περάσετε μια συμβολοσειρά ή και
αναγνωριστικό. Αν περάσετε έναν πίνακα, κάθε καταχώριση θα υπολογιστεί ξεχωριστά και ο πίνακας πρέπει να
περιέχει συμβολοσειρές ή αναγνωριστικά.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι συνάρτηση.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι συνάρτηση ή ένα αναγνωριστικό.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι μια συνάρτηση αναφοράς. Αυτό περιλαμβάνει αναφορές
μεταβλητών.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (arg)</synopsis>
+ <para>Ελέγχει αν ένα όρισμα είναι ένας πίνακας. Αν και η <constant>null</constant> θεωρείται
μερικές φορές ως κενός πίνακας, η συνάρτηση <function>IsMatrix</function> δεν θεωρεί την
<constant>null</constant> ως πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι μια <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι μια συμβολοσειρά κειμένου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (arg)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι αριθμός.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (str)</synopsis>
+ <para>Αναλύει, αλλά δεν υπολογίζει μια συμβολοσειρά. Σημειώστε ότι, συγκεκριμένος προϋπολογισμός
γίνεται κατά τη διάρκεια του σταδίου ανάλυσης.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,flags...)</synopsis>
+ <para>Ορίζει σημαίες για μια συνάρτηση, προς το παρόν <literal>"PropagateMod"</literal> and
<literal>"NoModuloArguments"</literal>. Αν η <literal>"PropagateMod"</literal> οριστεί, τότε το σώμα της
συνάρτησης υπολογίζεται σε αριθμητική υπολοίπων, όταν η συνάρτηση καλείται μέσα σε μια ομάδα που υπολογίστηκε
χρησιμοποιώντας αριθμητική υπολοίπων (χρησιμοποιώντας <literal>mod</literal>). Αν είναι
<literal>"NoModuloArguments"</literal>, τότε τα ορίσματα της συνάρτησης δεν υπολογίζονται ποτέ
χρησιμοποιώντας αριθμητική υπολοίπων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,category,desc)</synopsis>
+ <para>Ορισμός της γραμμής περιγραφής κατηγορίας και βοήθειας για μια συνάρτηση.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Εγκαθιστά μια παραλλαγή βοήθειας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (dir)</synopsis>
+ <para>Αλλάζει τον τρέχοντα κατάλογο, το ίδιο με <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Επιστρέφει τον τρέχοντα χρόνο UNIX με ακρίβεια μικροδευτερολέπτου ως έναν αριθμό κινητής
υποδιαστολής. Δηλαδή, επιστρέφει τον αριθμό των δευτερολέπτων από την 1η Ιανουαρίου 1970.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (str,expr)</synopsis>
+ <para>Εμφανίζει μια συμβολοσειρά και μια έκφραση με άνω-κάτω τελεία για να τις διακρίνει.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Εμφάνιση συνόλου μεταβλητών. Οι μεταβλητές μπορούν να δοθούν ως συμβολοσειρές ή
αναγνωριστικά. Για παράδειγμα: <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting></para>
+ <para>Αν κληθεί χωρίς ορίσματα (πρέπει να παρέχεται άδεια λίστα ορισμάτων), όπως
<programlisting>DisplayVariables()
+ </programlisting> τότε όλες οι μεταβλητές εκτυπώνονται συμπεριλαμβανομένου ενός ιχνηλάτηση
στοίβας παρόμιου με την <guilabel>Εμφάνιση μεταβλητών χρήστη</guilabel> στην έκδοση γραφικών.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (str)</synopsis>
+ <para>Εμφανίζει μια συμβολοσειρά στη ροή σφάλματος (στην κονσόλα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Παραλλαγές: <function>quit</function></para>
+ <para>Φεύγει από το πρόγραμμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Παραλλαγές: <function>False</function><function>FALSE</function></para>
+ <para>Η λογική τιμή <constant>ψευδές</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Προβολή του εγχειριδίου χρήστη.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (str)</synopsis>
+ <para>Εμφανίζει μια παράσταση και έπειτα δίνει μια νέα γραμμή. Το όρισμα <varname>str</varname>
μπορεί να είναι οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (str)</synopsis>
+ <para>Εμφανίζει μια παράσταση χωρίς μια τελική νέα γραμμή. Το όρισμα <varname>str</varname> μπορεί
να είναι οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Εκτύπωση ενός πίνακα τιμών για μια λειτουργία. Οι τιμές είναι στο διάνυσμα
<varname>v</varname>. Μπορείτε να χρησιμοποιήσετε τη σημειογραφία δόμησης διανύσματος ως εξής:
<programlisting>PrintTable (f,[0:10])
+ </programlisting> Αν <varname>v</varname> είναι ένας θετικός ακέραιος, τότε θα χρησιμοποιηθεί ο
πίνακας των ακεραίων από το 1 έως και το v.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Προστατεύει μια μεταβλητή από τροποποίηση. Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις
GEL για να αποφευχθεί η τυχαία αντικατάστασή τους.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Προστατεύει όλες τις τρέχουσες ορισμένες μεταβλητές, παραμέτρους και συναρτήσεις από
τροποποίηση. Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η τυχαία αντικατάστασή
τους. Κανονικά το <application>Εργαλείο μαθηματικών Genius</application> θεωρεί απροστάτευτες τις μεταβλητές
που όρισε ο χρήστης.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,val)</synopsis>
+ <para>Set a global variable. The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>set(`x,1)
+ </programlisting>
+ will set the global variable <varname>x</varname> to the value 1.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,row,col,val)</synopsis>
+ <para>Set an element of a global variable which is a matrix.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,3,1)
+ </programlisting>
+ will set the second row third column element of the global variable <varname>x</varname> to the
value 1. If no global variable of the name exists, or if it is set to something that's not a matrix, a new
zero matrix of appropriate size will be created.
+ </para>
+ <para>The <varname>row</varname> and <varname>col</varname> can also be ranges, and the semantics
are the same as for regular setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,val)</synopsis>
+ <para>Set an element of a global variable which is a vector.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,1)
+ </programlisting>
+ will set the second element of the global vector variable <varname>x</varname> to the value 1.
If no global variable of the name exists, or if it is set to something that's not a vector (matrix), a new
zero row vector of appropriate size will be created.
+ </para>
+ <para>The <varname>elt</varname> can also be a range, and the semantics are the same as for regular
setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Δημιουργία συμβολοσειράς. Αυτή θα δημιουργήσει μια συμβολοσειρά από οποιοδήποτε
όρισμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Παραλλαγές: <function>True</function><function>TRUE</function></para>
+ <para>Η λογική τιμή <constant>true</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Παραλλαγές: <function>Undefine</function></para>
+ <para>Αποκαθορισμός μεταβλητής. Αυτό περιλαμβάνει τοπικές και καθολικές, κάθε τιμή σε όλα τα
επίπεδα περιεχομένου καθαρίζεται. Αυτή η συνάρτηση πρέπει πραγματικά να μην χρησιμοποιηθεί σε τοπικές
μεταβλητές. Ένα διάνυσμα αναγνωριστικών μπορεί επίσης να περαστεί για αποκαθορισμό πολλών μεταβλητών.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Αποκαθορίζει όλες τις απροστάτευτες καθολικές μεταβλητές (συμπεριλαμβάνοντας συναρτήσεις και
παραμέτρους). Κανονικά το <application>Εργαλείο μαθηματικών Genius</application> θεωρεί τις προστατευμένες
μεταβλητές ως ορισμένες από το σύστημα συναρτήσεις και μεταβλητές. Σημειώστε ότι η
<function>UndefineAll</function> αφαιρεί μόνο τον καθολικό ορισμό των συμβόλων και όχι των τοπικών, έτσι ώστε
να μπορεί να εκτελεστεί μέσα από άλλες συναρτήσεις με ασφάλεια.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Αφαιρεί την προστασία μιας μεταβλητής από τροποποίηση.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα αναγνωριστικών ορισμένων από τον χρήστη (απροστάτευτων) καθολικών
μεταβλητών.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (secs)</synopsis>
+ <para>Περιμένει ορισμένα δευτερόλεπτα. Η <varname>secs</varname> πρέπει να είναι μη αρνητική. Το
μηδέν γίνεται δεκτό και τίποτα δεν συμβαίνει σε αυτήν την περίπτωση, εκτός από το ότι πιθανά συμβάντα
διεπαφής χρήστη επεξεργάζονται.</para>
+ <para>Since version 1.0.18, <varname>secs</varname> can be a noninteger number, so
+ <userinput>wait(0.1)</userinput> will wait for one tenth of a second.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Επιστρέφει την έκδοση του Genius ως ένα οριζόντιο διάνυσμα 3 με πρώτη την κύρια έκδοση,
έπειτα την δευτερεύουσα και τελικά το επίπεδο διόρθωσης.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Δίνει τις πληροφορίες εγγύησης.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Παράμετροι</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = number</synopsis>
+ <para>Ανοχή της συνάρτησης <function>Chop</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = number</synopsis>
+ <para>Αριθμός επαναλήψεων για την εύρεση του ορίου για τη συνέχεια και τα όρια.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = number</synopsis>
+ <para>Αριθμός διαδοχικών βημάτων για να είναι μέσα στην ανοχή για τον υπολογισμό της
συνέχειας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = number</synopsis>
+ <para>Η ανοχή για συνέχεια των συναρτήσεων και για υπολογισμό του ορίου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = number</synopsis>
+ <para>Αριθμός επαναλήψεων για την εύρεση του ορίου για την παράγωγο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = number</synopsis>
+ <para>Αριθμός διαδοχικών βημάτων για να είναι μέσα στην ανοχή για τον υπολογισμό της
παραγώγου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = number</synopsis>
+ <para>Ανοχή για τον υπολογισμό των παραγώγων των συναρτήσεων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = number</synopsis>
+ <para>Ανοχή της <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = number</synopsis>
+ <para>Ακρίβεια κινητής υποδιαστολής.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = boolean</synopsis>
+ <para>Εμφάνιση πλήρων εκφράσεων, ακόμα κι αν είναι περισσότερες από μία γραμμή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = number</synopsis>
+ <para>Ανοχή της συνάρτησης <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = number</synopsis>
+ <para>Βάση εξόδου ακεραίων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = number</synopsis>
+ <para>Αριθμός των πρόσθετων δοκιμών Miller-Rabin που θα εκτελεστούν σε έναν αριθμό πριν τη δήλωση
του ως πρώτου στην <link linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Λέει στο Genius να σχεδιάσει τα υπομνήματα για τις <link
linkend="genius-gel-function-list-plotting">συναρτήσεις γραφικής παράστασης γραμμής</link> όπως <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Λέει στο Genius να σχεδιάσει τις ετικέτες του άξονα για τις <link
linkend="genius-gel-function-list-plotting">συναρτήσεις γραφικής παράστασης γραμμής</link> όπως <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Λέει στο Genius ποια ονόματα μεταβλητών χρησιμοποιούνται ως προεπιλεγμένα ονόματα για τις
<link linkend="genius-gel-function-list-plotting">συναρτήσεις γραφικής παράστασης γραμμής</link> όπως <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> και παρόμοιες.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Ορίζει τα όρια για τις <link linkend="genius-gel-function-list-plotting">συναρτήσεις
γραφικής παράστασης γραμμής</link> όπως <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = number</synopsis>
+ <para>Μέγιστα αριθμός ψηφίων που θα εμφανίζονται.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = number</synopsis>
+ <para>Μέγιστος αριθμός σφαλμάτων που θα εμφανίζονται.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = boolean</synopsis>
+ <para>Αν είναι αληθές, εμφανίζονται μικτά κλάσματα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = function</synopsis>
+ <para>Η χρησιμοποιούμενη συνάρτηση για αριθμητική ολοκλήρωση στη <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = number</synopsis>
+ <para>Βήματα για εκτέλεση στη <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = number</synopsis>
+ <para>Όταν ένας άλλος αριθμός στο αντικείμενο εμφανίζεται (πίνακας ή τιμή) που είναι μεγαλύτερος
από 10<superscript>-OutputChopWhenExponent</superscript> και ο εμφανιζόμενος αριθμός είναι μικρότερος από
10<superscript>-OutputChopExponent</superscript>, τότε εμφανίζεται ο <computeroutput>0.0</computeroutput>
αντί για τον αριθμό.</para>
+<para>Η έξοδος δεν είναι ποτέ κομμένη αν η <function>OutputChopExponent</function> είναι μηδέν. Πρέπει να
είναι ένας μη αρνητικός ακέραιος.</para>
+<para>Αν θέλετε η έξοδος να περικόπτεται πάντα σύμφωνα με την <function>OutputChopExponent</function>, τότε
ορίστε την <function>OutputChopWhenExponent</function>, σε κάτι μεγαλύτερο από ή ίσο με
<function>OutputChopExponent</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = number</synopsis>
+ <para>Πότε να περικόψετε την έξοδο. Δείτε <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = string</synopsis>
+ <para>Η τεχνοτροπία εξόδου μπορεί να είναι <literal>κανονική</literal>, <literal>latex</literal>,
<literal>mathml</literal> ή <literal>troff</literal>.</para>
+ <para>Αυτή επηρεάζει κυρίως πώς εμφανίζονται οι πίνακες και τα κλάσματα και είναι χρήσιμη για
επικόλληση στα έγγραφα. Για παράδειγμα μπορείτε να την ορίσετε σε latex με: <programlisting>OutputStyle =
"latex"
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = boolean</synopsis>
+ <para>Μετατροπή όλων των αποτελεσμάτων σε αριθμούς κινητής υποδιαστολής πριν την εμφάνιση.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = boolean</synopsis>
+ <para>Χρήση επιστημονικής σημειογραφίας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [vertical,horizontal]</synopsis>
+ <para>Ορίζει τον αριθμό των κάθετων και οριζόντιων υποδιαιρέσεων σε μια γραφική παράσταση πεδίου
κλίσης. (Δείτε <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = number</synopsis>
+ <para>Πόσες επαναλήψεις να δοκιμαστούν για <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> και <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = number</synopsis>
+ <para>Πόσα διαδοχικά βήματα να γίνουν μέσα στην ανοχή για <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> και <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = number</synopsis>
+ <para>Ανοχή για <link linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link>
και <link linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Λέει στο Genius να σχεδιάσει τα υπομνήματα για τις <link
linkend="genius-gel-function-list-plotting">συναρτήσεις γραφικής παράστασης επιφάνειας</link> όπως <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> using <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ Note that the <varname>z</varname> does not refer to the dependent (vertical) axis, but to the
independent complex variable
+ <userinput>z=x+iy</userinput>.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Ορίζει τα όρια για τη γραφική παράσταση επιφάνειας (Δείτε <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Αν θα πρέπει η γραφική παράσταση του διανυσματικού πεδίου να έχει κανονικοποιημένο μήκος
βέλους. Αν είναι αληθές, τα διανυσματικά πεδία θα εμφανίσουν μόνο την κατεύθυνση και όχι το μέγεθος. (Δείτε
<link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [vertical,horizontal]</synopsis>
+ <para>Ορίζει τον αριθμό των κάθετων και οριζόντιων υποδιαιρέσεων σε μια γραφική παράσταση
διανυσματικού πεδίου. (Δείτε <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Σταθερές</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>Η σταθερά του Catalan, περίπου 0.915... Ορίζεται να είναι η σειρά, όπου οι όροι είναι
<userinput>(-1^k)/((2*k+1)^2)</userinput>, με την <varname>k</varname> να κυμαίνεται από 0 μέχρι το
άπειρο.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Παραλλαγές: <function>gamma</function></para>
+ <para>
+ Euler's constant gamma. Sometimes called the
+ Euler-Mascheroni constant.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>Η χρυσή τομή.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GoldenRatio">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Free fall acceleration at sea level in meters per second squared. This is the standard
gravity constant 9.80665. The gravity
+ in your particular neck of the woods might be different due to different altitude and the
fact that the earth is not perfectly
+ round and uniform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>
+ The base of the natural logarithm. <userinput>e^x</userinput>
+ is the exponential function
+ <link linkend="gel-function-exp"><function>exp</function></link>. It is approximately
+ 2.71828182846... This number is sometimes called Euler's number, although there are
+ several numbers that are also called Euler's. An example is the gamma constant: <link
linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/E">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>Ο αριθμός π, που είναι ο λόγος της περιφέρειας ενός κύκλου προς τη διάμετρό του. Αυτός είναι
περίπου 3.14159265359...</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Pi">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Αριθμητικό</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Παραλλαγές: <function>abs</function></para>
+ <para>
+ Absolute value of a number and if <varname>x</varname> is
+ a complex value the modulus of <varname>x</varname>. I.e. this
+ the distance of <varname>x</varname> to the origin. This is equivalent
+ to <userinput>|x|</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/AbsoluteValue">Planetmath (absolute value)</ulink>,
+ <ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>,
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolute value)</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (complex modulus)</ulink>
+for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Αντικατάσταση πολύ μικρού αριθμού με μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Παραλλαγές: <function>conj</function><function>Conj</function></para>
+ <para>Υπολογίζει τον μιγαδικό συζυγή του μιγαδικού αριθμού <varname>z</varname>. Αν η
<varname>z</varname> είναι ένα διάνυσμα ή πίνακας, όλα τα στοιχεία του παίρνουν συζυγή.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Λήψη του παρανομαστή ενός ρητού αριθμού.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Επιστροφή του κλασματικού μέρους ενός αριθμού.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Παραλλαγές: <function>ImaginaryPart</function></para>
+ <para>Get the imaginary part of a complex number. For example <userinput>Re(3+4i)</userinput>
yields 4.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Διαίρεση χωρίς υπόλοιπο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (num)</synopsis>
+ <para>Check if argument is a complex (non-real) number. Do note that we really mean nonreal
number. That is,
+ <userinput>IsComplex(3)</userinput> yields false, while
+ <userinput>IsComplex(3-1i)</userinput> yields true.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (num)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι πιθανόν μιγαδικός ρητός αριθμός. Δηλαδή, αν και το πραγματικό και
το φανταστικό μέρος δίνονται ως ρητοί αριθμοί. Φυσικά ρητός σημαίνει απλά "μη αποθηκευμένος ως αριθμός
κινητής υποδιαστολής."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (num)</synopsis>
+ <para>Check if argument is a real floating point number (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (num)</synopsis>
+ <para>Παραλλαγές: <function>IsComplexInteger</function></para>
+ <para>Check if argument is a possibly complex integer. That is a complex integer is a number of
+ the form <userinput>n+1i*m</userinput> where <varname>n</varname> and <varname>m</varname>
+ are integers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (num)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι ένας ακέραιος (μη μιγαδικός).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (num)</synopsis>
+ <para>Check if argument is a non-negative real integer. That is, either a positive integer or
zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (num)</synopsis>
+ <para>Παραλλαγές: <function>IsNaturalNumber</function></para>
+ <para>Ελέγχει αν το όρισμα είναι θετικός πραγματικός ακέραιος. Σημειώστε ότι δεχόμαστε τη σύμβαση
ότι το 0 δεν είναι φυσικός αριθμός.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (num)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι ένας ρητός αριθμός (μη μιγαδικός). Φυσικά ρητός σημαίνει απλά "μη
αποθηκευμένος ως αριθμός κινητής υποδιαστολής."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (num)</synopsis>
+ <para>Ελέγχει αν το όρισμα είναι ένας πραγματικός αριθμός.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Λήψη του αριθμητή ενός ρητού αριθμού.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Παραλλαγές: <function>RealPart</function></para>
+ <para>Get the real part of a complex number. For example <userinput>Re(3+4i)</userinput> yields
3.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Παραλλαγές: <function>sign</function></para>
+ <para>Επιστρέφει το πρόσημο ενός αριθμού. Δηλαδή επιστρέφει <literal>-1</literal> αν η τιμή είναι
αρνητική, <literal>0</literal> αν η τιμή είναι μηδέν και <literal>1</literal> αν η τιμή είναι θετική. Αν
<varname>x</varname> είναι μια μιγαδική τιμή τότε η <function>Sign</function> επιστρέφει την κατεύθυνση ή
0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Παραλλαγές: <function>Ceiling</function></para>
+ <para>Παίρνει τον πιο μικρό ακέραιο μεγαλύτερο από ή ίσο με τη <varname>n</varname>. Παραδείγματα:
<screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen></para>
+ <para>Note that you should be careful and notice that floating point
+ numbers are stored in binary and so may not be what you
+ expect. For example <userinput>ceil(420/4.2)</userinput>
+ returns 101 instead of the expected 100. This is because
+ 4.2 is actually very slightly less than 4.2. Use rational
+ representation <userinput>42/10</userinput> if you want
+ exact arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>Η εκθετική συνάρτηση. Αυτή είναι η συνάρτηση <userinput>e^x</userinput> όπου
<varname>e</varname> είναι η <link linkend="gel-function-e">βάση του φυσικού λογαρίθμου</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Δημιουργεί αριθμό τιμής κινητής υποδιαστολής. Δηλαδή επιστρέφει την αναπαράσταση κινητής
υποδιαστολής του αριθμού <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Παραλλαγές: <function>Floor</function></para>
+ <para>Παίρνει τον μεγαλύτερο ακέραιο που είναι μικρότερος από ή ίσος με
<varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>Ο φυσικός λογάριθμος, ο λογάριθμος με βάση το <varname>e</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Ο λογάριθμος του <varname>x</varname> με βάση <varname>b</varname> (καλεί <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> αν είναι σε κατάσταση modulo), αν
η βάση δεν δίνεται, <link linkend="gel-function-e"><varname>e</varname></link> χρησιμοποιείται.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Ο λογάριθμος της <varname>x</varname> με βάση 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Παραλλαγές: <function>lg</function></para>
+ <para>Ο λογάριθμος του <varname>x</varname> με βάση 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,args...)</synopsis>
+ <para>Παραλλαγές: <function>Max</function><function>Maximum</function></para>
+ <para>Επιστρέφει το μέγιστο των ορισμάτων ή πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,args...)</synopsis>
+ <para>Παραλλαγές: <function>Min</function><function>Minimum</function></para>
+ <para>Επιστρέφει το ελάχιστο των ορισμάτων ή πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (size...)</synopsis>
+ <para>Δημιουργεί τυχαίο αριθμό κινητής υποδιαστολής στην περιοχή <literal>[0,1)</literal>. Αν το
μέγεθος δίνεται, τότε ένας πίνακας (αν δύο αριθμοί ορίζονται) ή ένα διάνυσμα (αν ορίζεται ένας αριθμός) του
δοσμένου μεγέθους επιστρέφεται.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,size...)</synopsis>
+ <para>Δημιουργεί τυχαίο ακέραιο στην περιοχή <literal>[0,max)</literal>. Αν το μέγεθος δίνεται,
τότε ένας πίνακας (αν ορίζονται δύο αριθμοί) ή ένα διάνυσμα (αν ορίζεται ένας αριθμός) του δοσμένου μεγέθους
επιστρέφεται. Για παράδειγμα, <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Παραλλαγές: <function>Round</function></para>
+ <para>Στρογγυλοποίηση αριθμού.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Παραλλαγές: <function>SquareRoot</function></para>
+ <para>Η τετραγωνική ρίζα. Όταν λειτουργεί modulo κάποιοι ακέραιοι θα επιστρέψουν ή μια
<constant>null</constant> ή ένα διάνυσμα τετραγωνικών ριζών. Παραδείγματα:
<screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/SquareRoot">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Παραλλαγές: <function>Truncate</function><function>IntegerPart</function></para>
+ <para>Περικοπή αριθμού σε ακέραιο (επιστροφή του ακέραιου μέρους).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Τριγωνομετρία</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Παραλλαγές: <function>arccos</function></para>
+ <para>Η συνάρτηση arccos (τόξο συνημιτόνου).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Παραλλαγές: <function>arccosh</function></para>
+ <para>Η συνάρτηση arccosh (τόξο υπερβολικού συνημιτόνου).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Παραλλαγές: <function>arccot</function></para>
+ <para>Η συνάρτηση arccot (τόξο συνεφαπτομένης).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Παραλλαγές: <function>arccoth</function></para>
+ <para>Η συνάρτηση arccoth (τόξο υπερβολικής συνεφαπτομένης).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Παραλλαγές: <function>arccsc</function></para>
+ <para>Η συνάρτηση τόξου συντέμνουσας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Παραλλαγές: <function>arccsch</function></para>
+ <para>Η συνάρτηση τόξου υπερβολικής συντέμνουσας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Παραλλαγές: <function>arcsec</function></para>
+ <para>Η συνάρτηση τόξου τέμνουσας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Παραλλαγές: <function>arcsech</function></para>
+ <para>Η συνάρτηση τόξου υπερβολικής τέμνουσας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Παραλλαγές: <function>arcsin</function></para>
+ <para>Η συνάρτηση arcsin (τόξο ημιτόνου).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Παραλλαγές: <function>arcsinh</function></para>
+ <para>Η συνάρτηση arcsinh (τόξο υπερβολικού ημιτόνου).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Παραλλαγές: <function>arctan</function></para>
+ <para>Υπολογίζει τη συνάρτηση arctan (τόξο εφαπτομένης).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Παραλλαγές: <function>arctanh</function></para>
+ <para>Η συνάρτηση arctanh (τόξο υπερβολικής εφαπτομένης).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Παραλλαγές: <function>arctan2</function></para>
+ <para>Calculates the arctan2 function. If
+ <userinput>x>0</userinput> then it returns
+ <userinput>atan(y/x)</userinput>. If <userinput>x<0</userinput>
+ then it returns <userinput>sign(y) * (pi - atan(|y/x|)</userinput>.
+ When <userinput>x=0</userinput> it returns <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> returns 0
+ rather than failing.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Υπολογίζει τη συνάρτηση του συνημιτόνου.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Υπολογίζει την συνάρτηση υπερβολικού συνημιτόνου.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>Η συνάρτηση συνεφαπτομένης.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>Η συνάρτηση υπερβολικής συνεφαπτομένης.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>Η συνάρτηση συντέμνουσας.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>Η συνάρτηση υπερβολικής συντέμνουσας.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>Η συνάρτηση τέμνουσας.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>Η συνάρτηση υπερβολικής τέμνουσας.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Υπολογίζει τη συνάρτηση του ημιτόνου.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Υπολογίζει την συνάρτηση υπερβολικού ημιτόνου.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Υπολογίζει τη συνάρτηση της εφαπτομένης.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>Η συνάρτηση υπερβολικής εφαπτομένης.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Θεωρία αριθμών</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>Είναι οι πραγματικοί ακέραιοι <varname>a</varname> και <varname>b</varname> σχετικοί πρώτοι;
Επιστρέφει <constant>αληθές</constant> ή <constant>ψευδές</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Επιστρέφει τον <varname>n</varname>στό αριθμό Bernoulli.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Παραλλαγές: <function>CRT</function></para>
+ <para>Εύρεση του <varname>x</varname> που επιλύει το δοσμένο σύστημα με το διάνυσμα
<varname>a</varname> και modulo τα στοιχεία του <varname>m</varname>, χρησιμοποιώντας το θεώρημα υπολοίπου
του Κινέζου.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Με δεδομένες δύο παραγοντοποιήσεις, δίνει την παραγοντοποίηση του γινομένου.</para>
+ <para>Δείτε <link linkend="gel-function-Factorize">παραγοντοποίηση</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Μετατρέπει ένα διάνυσμα τιμών που δείχνει δυνάμεις του b στον αριθμό a.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Μετατρέπει έναν αριθμό σε ένα διάνυσμα δυνάμεων για στοιχεία στη βάση
<varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Βρίσκει τον διακριτό λογάριθμο της <varname>n</varname> με βάση <varname>b</varname> στην
F<subscript>q</subscript>, το πεπερασμένο πεδίο τάξης <varname>q</varname>, όπου η <varname>q</varname> είναι
ένας πρώτος, χρησιμοποιώντας τον αλγόριθμο Silver-Pohlig-Hellman.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Ελέγχει τη διαιρετότητα (αν η <varname>m</varname> διαιρεί την <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>Υπολογίζει τη συνάρτηση φι του Όιλερ για την <varname>n</varname>, δηλαδή τον αριθμό των
ακεραίων μεταξύ 1 και <varname>n</varname> που είναι σχετικά πρώτοι με την <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/EulerPhifunction">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>Επιστρέφει <userinput>n/d</userinput>, αλλά μόνο αν η <varname>d</varname> διαιρεί την
<varname>n</varname>. Αν η <varname>d</varname> δεν διαιρεί την <varname>n</varname>, τότε αυτή η συνάρτηση
επιστρέφει σκουπίδια. Αυτή είναι πολύ πιο γρήγορη για πολύ μεγάλους αριθμούς από την πράξη
<userinput>n/d</userinput>, αλλά φυσικά χρήσιμη μόνο αν ξέρετε ότι η διαίρεση είναι ακριβής.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>Επιστρέφει την παραγοντοποίηση ενός αριθμού ως πίνακα. Η πρώτη γραμμή είναι οι πρώτοι στην
παραγοντοποίηση (συμπεριλαμβάνοντας το 1) και η δεύτερη γραμμή είναι οι δυνάμεις. Έτσι για παράδειγμα:
<screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>Επιστρέφει όλους τους παράγοντες της <varname>n</varname> σε ένα διάνυσμα. Αυτή περιλαμβάνει
όλους τους μη πρώτους παράγοντες επίσης. Περιλαμβάνει το 1 και τον ίδιο τον αριθμό. Έτσι για παράδειγμα για
να εμφανίσετε όλους τους τέλειους αριθμούς (αυτούς που είναι αθροίσματα των παραγόντων τους) μέχρι τον αριθμό
1000 μπορείτε να κάνετε (αυτό φυσικά είναι πολύ ανεπαρκές) <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,tries)</synopsis>
+ <para>Δοκιμάζει την παραγοντοποίηση Φερμά της <varname>n</varname> στο
<userinput>(t-s)*(t+s)</userinput>, επιστρέφει τις <varname>t</varname> και <varname>s</varname> ως ένα
διάνυσμα αν είναι δυνατό, αλλιώς <constant>null</constant>. Η <varname>tries</varname> καθορίζει τον αριθμό
των προσπαθειών πριν να σταματήσει.</para>
+ <para>Αυτή είναι μια αρκετά καλή παραγοντοποίηση, αν ο αριθμός σας είναι το γινόμενο δύο
παραγόντων που είναι πολύ κοντά μεταξύ τους.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Βρίσκει το πρώτο βασικό στοιχείο στην F<subscript>q</subscript>, την πεπερασμένη ομάδα της
τάξης <varname>q</varname>. Φυσικά η <varname>q</varname> πρέπει να είναι πρώτος.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Βρίσκει ένα τυχαίο βασικό στοιχείο στην F<subscript>q</subscript>, την πεπερασμένη ομάδα της
τάξης <varname>q</varname> (το q πρέπει να είναι πρώτος).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Υπολογίζει τη διακριτή λογαριθμική βάση <varname>b</varname> του n στο
F<subscript>q</subscript>, την πεπερασμένη ομάδα της τάξης <varname>q</varname> (<varname>q</varname> είναι
ένας πρώτος), χρησιμοποιώντας τη βάση του συντελεστή <varname>S</varname>. Η <varname>S</varname> πρέπει να
είναι μια στήλη πρώτων πιθανόν με μια δεύτερη στήλη προϋπολογισμένη από την <link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Εκτελεί το βήμα προϋπολογισμού του <link
linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> για λογαρίθμους με βάση
<varname>b</varname> στο F<subscript>q</subscript>, την πεπερασμένη ομάδα της τάξης <varname>q</varname>
(<varname>q</varname> είναι ένας πρώτος), για τη βάση συντελεστή <varname>S</varname> (όπου
<varname>S</varname> είναι ένα διάνυσμα στήλης πρώτων). Οι λογάριθμοι θα προϋπολογιστούν και θα επιστραφούν
στη δεύτερη στήλη.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Ελέγχει αν ο ακέραιος είναι άρτιος.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>Ελέγχει αν ο θετικός ακέραιος <varname>p</varname> είναι ένας εκθέτης πρώτου Μερσέν. Δηλαδή,
αν 2<superscript>p</superscript>-1 είναι ένας πρώτος. Το κάνει αναζητώντας τον σε έναν πίνακα γνωστών τιμών
που είναι σχετικά σύντομος. Δείτε επίσης <link
linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> και <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>Ελέγχει αν ένας ρητός αριθμός <varname>m</varname> είναι μια τέλεια <varname>n</varname>στή
δύναμη. Δείτε επίσης <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link> και <link
linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Έλεγχος αν ο ακέραιος είναι περιττός.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Check an integer for being any perfect power, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>
+ Check an integer for being a perfect square of an integer. The number must
+ be an integer. Negative integers are of course never perfect
+ squares of integers.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>Ελέγχει τους πρώτους αριθμούς ακεραίων, για αριθμούς μικρότερους από 2.5e10 η απάντηση είναι
προσδιοριστική (αν η υπόθεση Ρίμαν είναι αληθής). Για αριθμούς μεγαλύτερους, η πιθανότητα ψευδών θετικών
εξαρτάται από την <link
linkend="gel-function-IsPrimeMillerRabinReps"><function>IsPrimeMillerRabinReps</function></link>. Δηλαδή, η
πιθανότητα ψευδούς θετικού είναι 1/4 στη δύναμη <function>IsPrimeMillerRabinReps</function>. Η προεπιλεγμένη
τιμή του 22 δίνει μια πιθανότητα περίπου 5.7e-14.</para>
+ <para>Αν η <constant>ψευδής</constant> επιστρέφεται, μπορείτε να είστε σίγουροι ότι ο αριθμός
είναι σύνθετος. Αν θέλετε να είσαστε ολότελα βέβαιοι ότι έχετε έναν πρώτο μπορείτε να χρησιμοποιήσετε την
<link linkend="gel-function-MillerRabinTestSure"><function>MillerRabinTestSure</function></link>, αλλά μπορεί
να πάρει πολύ περισσότερο.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Ελέγχει αν το <varname>g</varname> είναι βασικό στην F<subscript>q</subscript>, η
πεπερασμένη ομάδα της τάξης <varname>q</varname>, όπου <varname>q</varname> είναι ένας πρώτος. Αν το
<varname>q</varname> δεν είναι πρώτος τα αποτελέσματα είναι ψευδή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Ελέγχει αν το <varname>g</varname> είναι βασικό στην F<subscript>q</subscript>, την
πεπερασμένη ομάδα της τάξης <varname>q</varname>, όπου <varname>q</varname> είναι ένας πρώτος και το
<varname>f</varname> είναι ένα διάνυσμα πρώτων παραγόντων του <varname>q</varname>-1. Αν το
<varname>q</varname> δεν είναι πρώτος τα αποτελέσματα είναι ψευδή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>Αν το <varname>n</varname> είναι ένας ψευδοπρώτος με βάση <varname>b</varname> αλλά όχι ένας
πρώτος, δηλαδή αν <userinput>b^(n-1) == 1 mod n</userinput>. Αυτό καλεί την <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Ελέγχει αν το <varname>n</varname> είναι ένας ισχυρός ψευδοπρώτος με βάση
<varname>b</varname>, αλλά όχι πρώτος.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Παραλλαγές: <function>JacobiSymbol</function></para>
+ <para>Υπολογίζει το σύμβολο Τζακόμπι (a/b) (το b πρέπει να είναι περιττός).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Παραλλαγές: <function>JacobiKroneckerSymbol</function></para>
+ <para>Υπολογίζει το σύμβολο Τζακόμπι (a/b) με την επέκταση Κρόνεκερ (a/2)=(2/a) όταν είναι
περιττός, ή (a/2)=0 όταν είναι άρτιος.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Επιστρέφει το υπόλοιπο του <varname>a</varname> mod <varname>n</varname>, με την ελάχιστη
απόλυτη τιμή (στο διάστημα -n/2 έως n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Παραλλαγές: <function>LegendreSymbol</function></para>
+ <para>Υπολογίζει το σύμβολο Λεζάντρ (a/p).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Ελέγχει αν 2<superscript>p</superscript>-1 είναι ένας πρώτος Μερσέν χρησιμοποιώντας τη
δοκιμή Lucas-Lehmer. Δείτε επίσης <link
linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> και <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Επιστρέφει τον <varname>n</varname>στο αριθμό Lucas.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasNumbers">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Επιστρέφει όλους τους μέγιστους πρώτους παράγοντες δύναμης ενός αριθμού.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>Ένα διάνυσμα με γνωστούς πρώτους εκθέτες Μερσέν, δηλαδή ένας κατάλογος θετικών ακεραίων
<varname>p</varname> έτσι ώστε το 2<superscript>p</superscript>-1 να είναι πρώτος. Δείτε επίσης <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link> και <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>Χρησιμοποιεί τη δοκιμή πρώτων αριθμών Miller-Rabin στο <varname>n</varname>,
<varname>reps</varname> είναι ο αριθμός των φορών. Η πιθανότητα ενός ψευδούς θετικού είναι
<userinput>(1/4)^reps</userinput>. Είναι προφανώς συνήθως καλύτερο να χρησιμοποιήσετε <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link> αφού είναι γρηγορότερο και καλύτερο σε
μικρότερους ακέραιους.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>
or
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname> with
+ enough bases that assuming the Generalized Riemann Hypothesis the
+ result is deterministic.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink>, or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Επιστρέφει τον αντίστροφο του n mod m.</para>
+ <para>Δείτε <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> για
περισσότερες πληροφορίες.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>Επιστρέφει την συνάρτηση mu του Moebius υπολογισμένη στο <varname>n</varname>. Δηλαδή,
επιστρέφει 0 αν το <varname>n</varname> δεν είναι γινόμενο διακριτών πρώτων και <userinput>(-1)^k</userinput>
αν είναι γινόμενο των <varname>k</varname> διακριτών πρώτων.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>Επιστρέφει τον ελάχιστο πρώτο που είναι μεγαλύτερος από τον <varname>n</varname>. Οι
αρνητικοί των πρώτων θεωρούνται πρώτοι και έτσι για να πάρετε τον προηγούμενο πρώτο μπορείτε να
χρησιμοποιήσετε <userinput>-NextPrime(-n)</userinput>.</para>
+ <para>Αυτή η συνάρτηση χρησιμοποιεί τη <function>mpz_nextprime</function> του GMP που με τη σειρά
της χρησιμοποιεί την πιθανοθεωρητική δοκιμή Μίλερ-Ράμπιν (Δείτε επίσης <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>). Η πιθανότητα ψευδούς
θετικού δεν ρυθμίζεται, αλλά είναι αρκετά χαμηλή για όλους τους πρακτικούς σκοπούς.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Επιστρέφει τον υπολογισμό p-adic (αριθμός των τελικών μηδενικών στη βάση
<varname>p</varname>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/PAdicValuation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>
+ Compute <userinput>a^b mod m</userinput>. The
+ <varname>b</varname>'s power of <varname>a</varname> modulo
+ <varname>m</varname>. It is not necessary to use this function
+ as it is automatically used in modulo mode. Hence
+ <userinput>a^b mod m</userinput> is just as fast.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Παραλλαγές: <function>prime</function></para>
+ <para>Επιστρέφει τον <varname>n</varname>στό πρώτο (μέχρι ένα όριο).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Επιστρέφει όλους τους πρώτους παράγοντες ενός αριθμού ως διάνυσμα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Δοκιμή ψευδοπρώτου, επιστρέφει <constant>αληθές</constant> αν και μόνο αν <userinput>b^(n-1)
== 1 mod n</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Αφαιρεί όλα τα στιγμιότυπα του παράγοντα <varname>m</varname> από τον αριθμό
<varname>n</varname>. Δηλαδή, διαιρεί με τη μέγιστη δύναμη του <varname>m</varname>, που διαιρεί το
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Βρίσκει τους διακριτούς λογάριθμους του <varname>n</varname> με βάση το <varname>b</varname>
στο F<subscript>q</subscript>, την πεπερασμένη ομάδα της τάξης <varname>q</varname>, όπου
<varname>q</varname> είναι ένας πρώτος που χρησιμοποιεί τον αλγόριθμο Silver-Pohlig-Hellman, με δεδομένο το
<varname>f</varname> είναι η παραγοντοποίηση του <varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Βρίσκει την τετραγωνική ρίζα του <varname>n</varname> modulo <varname>p</varname> (όπου το
<varname>p</varname> είναι πρώτος). Null επιστρέφεται αν δεν είναι ένα υπόλοιπο δευτεροβάθμιας.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Εκτελεί τη δοκιμή ισχυρού ψευδοπρώτου με βάση <varname>b</varname> στο
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,args...)</synopsis>
+ <para>Παραλλαγές: <function>GCD</function></para>
+ <para>
+ Greatest common divisor of integers. You can enter as many
+ integers as you want in the argument list, or you can give
+ a vector or a matrix of integers. If you give more than
+ one matrix of the same size then GCD is done element by
+ element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,args...)</synopsis>
+ <para>Παραλλαγές: <function>LCM</function></para>
+ <para>
+ Least common multiplier of integers. You can enter as many
+ integers as you want in the argument list, or you can give a
+ vector or a matrix of integers. If you give more than one
+ matrix of the same size then LCM is done element by element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Διαχείριση πινάκων</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,func)</synopsis>
+ <para>Εφαρμόζει μια συνάρτηση σε όλες τις καταχωρίσεις ενός πίνακα και επιστρέφει έναν πίνακα των
αποτελεσμάτων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,func)</synopsis>
+ <para>Εφαρμόζει μια συνάρτηση σε όλες τις καταχωρίσεις των 2 πινάκων (ή 1 τιμή και 1 πίνακα) και
επιστρέφει έναν πίνακα των αποτελεσμάτων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Παίρνει τις στήλες ενός πίνακα ως οριζόντιο διάνυσμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Αφαιρεί στήλες και γραμμές από έναν πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Υπολογίζει τον kστό σύνθετο πίνακα του Α.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>
+ Count the number of zero columns in a matrix. For example,
+ once you column-reduce a matrix, you can use this to find
+ the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
+ and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,col)</synopsis>
+ <para>Διαγράφει μια στήλη ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,row)</synopsis>
+ <para>Διαγράφει μια γραμμή ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Δίνει τις διαγώνιες καταχωρίσεις ενός πίνακα ως διάνυσμα στήλης.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Get the dot product of two vectors. The vectors must be of the
+ same size. No conjugates are taken so this is a bilinear form even if working over the
complex numbers; This is the bilinear scalar product not the sesquilinear scalar product. See <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> for the standard sesquilinear inner
product.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DotProduct">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>Επεκτείνει έναν πίνακα ακριβώς όπως κάνουμε με εισόδους πίνακα χωρίς κλείσιμο εισαγωγικών.
Δηλαδή, επεκτείνουμε οποιουσδήποτε εσωτερικούς πίνακες ως ομάδες. Αυτός είναι ένας τρόπος για να
κατασκευάσετε πίνακες από μικρότερους και αυτό γίνεται κανονικά αυτόματα σε εισόδους εκτός και ο πίνακας
είναι με εισαγωγικά.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Παραλλαγές: <function>InnerProduct</function></para>
+ <para>Δίνει το ερμιτιανό γινόμενο δύο διανυσμάτων. Τα διανύσματα πρέπει να είναι του ίδιου
μεγέθους. Αυτό είναι μια γραμμικο-ημιγραμμική μορφή χρησιμοποιώντας τον ταυτοτικό πίνακα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Παραλλαγές: <function>eye</function></para>
+ <para>Επιστρέφει έναν ταυτοτικό πίνακα δοσμένου μεγέθους, δηλαδή <varname>n</varname> επί
<varname>n</varname>. Αν το <varname>n</varname> είναι μηδέν, επιστρέφει <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vec,msize)</synopsis>
+ <para>Επιστρέφει το συμπλήρωμα δείκτη ενός διανύσματος δεικτών. Ο πρώτος δείκτης είναι ένα. Για
παράδειγμα για διάνυσμα <userinput>[2,3]</userinput> και μέγεθος <userinput>5</userinput>, επιστρέφει
<userinput>[1,4,5]</userinput>. Αν <varname>msize</varname> είναι 0, επιστρέφει πάντα
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Αν είναι ένας διαγώνιος πίνακας.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Ελέγχει αν ένας πίνακας είναι ο ταυτοτικός πίνακας. Επιστρέφει αυτόματα
<constant>ψευδές</constant> αν ο πίνακας δεν είναι τετραγωνικός. Δουλεύει επίσης με αριθμούς και σε αυτήν την
περίπτωση είναι ισοδύναμος με <userinput>x==1</userinput>. Όταν <varname>x</varname> είναι
<constant>null</constant> (μπορούμε να τον θεωρήσουμε ως έναν πίνακα 0 επί 0), δεν δημιουργείται κανένα
σφάλμα και επιστρέφεται <constant>ψευδές</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Αν είναι ένας κάτω τριγωνικός πίνακας. Δηλαδή, αν είναι όλες οι καταχωρίσεις πάνω από τη
διαγώνιο είναι μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Check if a matrix is a matrix of integers (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Ελέγχει αν ο πίνακας είναι μη αρνητικός, δηλαδή, αν κάθε στοιχείο είναι μη αρνητικός. Μην
μπερδεύετε θετικά πίνακες με θετικούς ημιορισμένους πίνακες.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Ελέγχει αν ένας πίνακας είναι θετικός, δηλαδή, αν κάθε στοιχείο είναι θετικό (και συνεπώς
πραγματικό). Ειδικά, κανένα στοιχείο δεν είναι 0. Μην μπερδεύετε θετικούς πίνακες με θετικά ορισμένους
πίνακες.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Ελέγχει αν ένας πίνακας είναι ένας πίνακας ρητών αριθμών (μη μιγαδικός).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Ελέγχει αν ένας πίνακας είναι ένας πίνακας πραγματικών αριθμών (μη μιγαδικός).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>Ελέγχει αν ένας πίνακας είναι τετράγωνος, δηλαδή, αν το πλάτος του είναι ίσο με το ύψος
του.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Είναι ένας άνω τριγωνικός πίνακας; Δηλαδή, ένας πίνακας είναι άνω τριγωνικός αν όλες οι
καταχωρίσεις κάτω από τη διαγώνιο είναι μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Ελέγχει αν ο πίνακας είναι ένας πίνακας μόνο αριθμών. Πολλές εσωτερικές συναρτήσεις κάνουν
αυτόν τον έλεγχο. Οι τιμές μπορεί να είναι οποιοιδήποτε αριθμοί συμπεριλαμβανομένων μιγαδικών αριθμών.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>Αν είναι το όρισμα οριζόντιο ή κάθετο διάνυσμα. Η Genius δεν ξεχωρίζει μεταξύ πίνακα και
διανύσματος και ένα διάνυσμα είναι απλά ένας πίνακας 1 επί <varname>n</varname> ή <varname>n</varname> επί
1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Ελέγχει αν ένας πίνακας αποτελείται όλος από μηδενικά. Δουλεύει επίσης και σε αριθμούς,
οπότε είναι ισοδύναμος με <userinput>x==0</userinput>. Όταν η <varname>x</varname> είναι
<constant>null</constant> (μπορούμε να σκεφτούμε ως έναν πίνακα 0 επί 0), δεν δημιουργείται κανένα σφάλμα και
επιστρέφεται η <constant>true</constant> επειδή η συνθήκη είναι κενή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Επιστρέφει ένα αντίγραφο του πίνακα <varname>M</varname> με όλες τις καταχωρίσεις πάνω από
τη διαγώνιο ορισμένες σε μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,arg...)</synopsis>
+ <para>Παραλλαγές: <function>diag</function></para>
+ <para>Δημιουργεί έναν διαγώνιο πίνακα από ένα διάνυσμα. Εναλλακτικά μπορείτε να περάσετε στις τιμές
για να βάλετε τη διαγώνιο ως ορίσματα. Έτσι <userinput>MakeDiagonal([1,2,3])</userinput> είναι το ίδιο με
<userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Δημιουργεί ένα διάνυσμα στήλης από έναν πίνακα βάζοντας στήλες τις μεν πάνω από τις άλλες.
Επιστρέφει <constant>null</constant> όταν δίνεται <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>Υπολογίζει το γινόμενο όλων των στοιχείων σε ένα πίνακα ή διάνυσμα. Δηλαδή, πολλαπλασιάζουμε
όλα τα στοιχεία και επιστρέφει έναν αριθμό που είναι το γινόμενο όλων των στοιχείων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>Υπολογίζει το άθροισμα όλων των στοιχείων σε ένα πίνακα ή διάνυσμα. Δηλαδή, προσθέτουμε όλα
τα στοιχεία και επιστρέφει έναν αριθμό που είναι το άθροισμα όλων των στοιχείων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Υπολογίζει το άθροισμα των τετραγώνων όλων των στοιχείων σε έναν πίνακα ή διάνυσμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα γραμμής των δεικτών των μη μηδενικών στηλών στον πίνακα
<varname>M</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα γραμμής των δεικτών των μη μηδενικών στοιχείων του διανύσματος
<varname>v</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Δίνει το εξωτερικό γινόμενο δύο διανυσμάτων. Δηλαδή, ας υποθέσουμε ότι <varname>u</varname>
και <varname>v</varname> είναι κάθετα διανύσματα, τότε το εξωτερικό γινόμενο είναι <userinput>v *
u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Αντίστροφα στοιχεία σε ένα διάνυσμα. Επιστρέφει <constant>null</constant> αν δίνεται
<constant>null</constant></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Υπολογίζει το άθροισμα κάθε γραμμής σε έναν πίνακα και επιστρέφει ένα κάθετο διάνυσμα με το
αποτέλεσμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Υπολογίζει το άθροισμα των τετραγώνων κάθε γραμμής σε έναν πίνακα και επιστρέφει ένα κάθετο
διάνυσμα με τα αποτελέσματα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Δίνει τις γραμμές ενός πίνακα ως κάθετο διάνυσμα. Κάθε στοιχείο του διανύσματος είναι ένα
οριζόντιο διάνυσμα που είναι η αντίστοιχη γραμμή του <varname>M</varname>. Αυτή η συνάρτηση είναι χρήσιμη, αν
θέλετε να κάνετε βρόχο στις γραμμές ενός πίνακα. Για παράδειγμα, ως <userinput>for r in RowsOf(M) do
+something(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,rows,columns)</synopsis>
+ <para>Δημιουργεί νέο πίνακα δεδομένου μεγέθους από τον παλιό. Δηλαδή, θα επιστραφεί ένας νέος
πίνακας στον οποίον ο παλιός αντιγράφηκε. Οι καταχωρίσεις που δεν ταιριάζουν περικόπτονται και ο πρόσθετος
χώρος συμπληρώνεται με μηδενικά. Αν <varname>rows</varname> ή <varname>columns</varname> είναι μηδέν, τότε
επιστρέφεται <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Shuffle elements in a vector. Return <constant>null</constant> if given
<constant>null</constant>.</para>
+ <para>Version 1.0.13 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Ταξινόμηση στοιχείων διανύσματος με αύξουσα διάταξη.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Αφαιρεί όλες τις ολότελα μηδενικές στήλες του <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Αφαιρεί όλες τις ολότελα μηδενικές γραμμές του <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Επιστρέφει στήλες και γραμμές από έναν πίνακα. Αυτό είναι ακριβώς ισοδύναμο με το
<userinput>m@(r,c)</userinput>. Τα <varname>r</varname> και <varname>c</varname> πρέπει να είναι διανύσματα
γραμμών και στηλών (ή μεμονωμένοι αριθμοί αν χρειάζεται μόνο μια γραμμή ή στήλη).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,row1,row2)</synopsis>
+ <para>Εναλλάσσει δύο γραμμές σε έναν πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Επιστρέφει ένα αντίγραφο του πίνακα <varname>M</varname> με όλες τις καταχωρίσεις κάτω από
τη διαγώνιο ορισμένες σε μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Δίνει τον αριθμό των στηλών ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Δίνει τον συνολικό αριθμό των στοιχείων ενός πίνακα. Αυτός είναι ο αριθμός των στηλών επί
τον αριθμό των γραμμών.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (rows,columns...)</synopsis>
+ <para>Δημιουργεί έναν πίνακα από όλους (ή ένα διάνυσμα γραμμής αν δίνεται μόνο ένα όρισμα).
Επιστρέφει <constant>null</constant> αν οποιαδήποτε σειρά ή στήλη είναι μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Δίνει τον αριθμό των γραμμών ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (rows,columns...)</synopsis>
+ <para>Δημιουργεί έναν πίνακα όλων των μηδενικών (ή ένα διάνυσμα γραμμής αν δίνεται μόνο ένα
όρισμα). Επιστρέφει <constant>null</constant> αν οποιαδήποτε σειρά ή στήλη είναι μηδέν.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Γραμμική Άλγεβρα</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Δίνει τον βοηθητικό μοναδιαίο πίνακα μεγέθους <varname>n</varname>. Αυτός είναι ένας
τετραγωνικός πίνακας με όλα μηδέν εκτός από την υπερδιαγώνιο που είναι όλα 1. Είναι ο σύνθετος πίνακας Jordan
με ιδιοτιμή ενός μηδενικού.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information
on Jordan Canonical Form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Υπολογίζει (v,w) ως προς τη διγραμμική μορφή που δίνεται από τον πίνακα Α.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που υπολογίζει δύο διανύσματα ως προς τη διγραμμική μορφή που
δίνεται από το Α.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Παραλλαγές: <function>CharPoly</function></para>
+ <para>Δίνει το χαρακτηριστικό πολυώνυμο ως διάνυσμα. Δηλαδή, επιστρέφει τους συντελεστές του
πολυωνύμου ξεκινώντας με τον σταθερό όρο. Αυτό είναι το πολυώνυμο που ορίστηκε από
<userinput>det(M-xI)</userinput>. Οι ρίζες αυτού του πολυωνύμου είναι οι ιδιοτιμές του <varname>M</varname>.
Δείτε επίσης <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Δίνει το χαρακτηριστικό πολυώνυμο ως συνάρτηση. Αυτό είναι το πολυώνυμο που ορίστηκε από το
<userinput>det(M-xI)</userinput>. Οι ρίζες αυτού του πολυωνύμου είναι οι ιδιοτιμές του <varname>M</varname>.
Δείτε επίσης <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Δίνει έναν πίνακα βάσης για τον χώρο στηλών ενός πίνακα. Δηλαδή, επιστρέφει έναν πίνακα του
οποίου οι στήλες είναι η βάση για τον χώρο στηλών του <varname>M</varname>. Αυτός είναι ο χώρος που
καλύπτεται από τις στήλες του <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Επιστρέφει τον αντιμεταθετικό πίνακα <userinput>K(m,n)</userinput> που είναι ο μοναδικός
πίνακας <userinput>m*n</userinput> επί <userinput>m*n</userinput> τέτοιος ώστε <userinput>K(m,n) *
MakeVector(A) = MakeVector(A.')</userinput> για όλους τους πίνακες <varname>Α</varname> <varname>m</varname>
επί <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Συνοδός πίνακας ενός πολυωνύμου (ως διανύσματος).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Συζυγής ανάστροφος πίνακας (συζυγής). Αυτός είναι ο ίδιος με τον τελεστή
<userinput>'</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Παραλλαγές: <function>convol</function></para>
+ <para>Υπολογίζει τη συνέλιξη των δύο οριζόντιων διανυσμάτων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Υπολογίζει τη συνέλιξη των δύο οριζόντιων διανυσμάτων. Επιστρέφει αποτέλεσμα ως διάνυσμα του
οποίου τα στοιχεία δεν προστίθεται μαζί.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>Διανυσματικό γινόμενο δύο διανυσμάτων στο R<superscript>3</superscript> ως διάνυσμα
στήλης.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Get the determinantal divisors of an integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Ευθύ άθροισμα των πινάκων.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Ευθύ άθροισμα ενός διανύσματος πινάκων.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Παραλλαγές: <function>eig</function></para>
+ <para>Δίνει τις ιδιοτιμές ενός τετραγωνικού πίνακα. Προς το παρόν δουλεύει μόνο για πίνακες
μεγέθους μέχρι 4 επί 4, ή για τριγωνικούς πίνακες (για τους οποίους οι ιδιοτιμές είναι στη διαγώνιο).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvalue">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues, &multiplicities)</synopsis>
+ <para>Δίνει τα ιδιοδιανύσματα ενός τετραγωνικού πίνακα. Προαιρετικά παίρνετε επίσης τις ιδιοτιμές
και τις αλγεβρικές πολλαπλότητες. Προς το παρόν δουλεύει μόνο για πίνακες μεγέθους μέχρι 2 επί 2.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvector">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Εφαρμόζει τη διεργασία Gram-Schmidt (στις στήλες) ως προς το εσωτερικό γινόμενο που δίνεται
από το <varname>B</varname>. Αν το <varname>B</varname> δεν δίνεται, τότε χρησιμοποιείται το τυπικό ερμιτιανό
γινόμενο. Το <varname>B</varname> μπορεί να είναι ή γραμμικο-ημιγραμμική συνάρτηση δύο ορισμάτων ή μπορεί να
είναι ένας πίνακας που δίνει μια γραμμικο-ημιγραμμική μορφή. Τα διανύσματα θα γίνονται ορθοκανονικά ως προς
το <varname>B</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>Hankel matrix, a matrix whose skew-diagonals are constant. <varname>c</varname> is the first
row and <varname>r</varname> is the
+ last column. It is assumed that both arguments are vectors and the last element of
<varname>c</varname> is the same
+ as the first element of <varname>r</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Πίνακας Χίλμπερτ τάξης <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Δίνει την εικόνα (διάστημα στήλης) ενός γραμμικού μετασχηματισμού.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Δίνει την απειρονόρμα ενός διανύσματος, μερικές φορές λέγεται νόρμα ελάχιστου άνω φράγματος
ή νόρμα μεγίστου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Get the invariant factors of a square integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Αντίστροφος πίνακας Χίλμπερτ τάξης <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Αν είναι ένας ερμιτιανός πίνακας. Δηλαδή, αν είναι ίσος με τον ανάστροφο συζυγή.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Ελέγχει αν ένα διάνυσμα είναι σε έναν υπόχωρο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Αν είναι ένας πίνακας (ή αριθμός) αντιστρέψιμος (ένας ακέραιος πίνακας είναι αντιστρέψιμος
αν και μόνο αν είναι αντιστρέψιμος στους ακέραιους).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Αν είναι ένας πίνακας (ή αριθμός) αντιστρέψιμος σε ένα πεδίο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Αν είναι ο <varname>M</varname> ένας κανονικός πίνακας. Δηλαδή, κάνει <userinput>M*M' ==
M'*M</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Αν είναι το <varname>M</varname> ένας ερμιτιανός θετικά ορισμένος πίνακας. Δηλαδή, αν το
<userinput>HermitianProduct(M*v,v)</userinput> είναι πάντα αυστηρά θετικό για κάθε διάνυσμα
<varname>v</varname>. Ο <varname>M</varname> πρέπει να είναι τετραγωνικός και ερμιτιανός για να είναι θετικά
ορισμένος. Ο έλεγχος που εκτελείται είναι ότι κάθε βασικός υποπίνακας έχει μία μη αρνητική ορίζουσα. (Δείτε
<link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Σημειώστε ότι κάποιοι συγγραφείς (για παράδειγμα Mathworld) δεν απαιτούν ο
<varname>M</varname> να είναι ερμιτιανός και τότε η συνθήκη είναι στο πραγματικό μέρος του εσωτερικού
γινομένου, αλλά δεν παίρνουμε αυτήν την πλευρά. Αν θέλετε να εκτελέσετε αυτόν τον έλεγχο, ελέγξτε απλά το
ερμητιανό μέρος του πίνακα <varname>M</varname> ως εξής:
<userinput>IsPositiveDefinite(M+M')</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/PositiveDefinite">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Αν είναι ο <varname>M</varname> ένας ερμιτιανός θετικά ημιορισμένος πίνακας. Δηλαδή, αν το
<userinput>HermitianProduct(M*v,v)</userinput> είναι πάντα μη αρνητικό για κάθε διάνυσμα
<varname>v</varname>. Το <varname>M</varname> πρέπει να είναι τετραγωνικός και ερμιτιανός για να είναι θετικά
ημιορισμένος. Ο έλεγχος που εκτελείται είναι ότι κάθε βασικός υποπίνακας έχει μια μη αρνητική ορίζουσα.
(Δείτε <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Σημειώστε ότι κάποιοι συγγραφείς δεν απαιτούν ο <varname>M</varname> να είναι ερμιτιανός και
τότε η συνθήκη είναι στο πραγματικό μέρος του εσωτερικού γινομένου, αλλά δεν παίρνουμε αυτήν την πλευρά. Αν
θέλετε να εκτελέσετε αυτόν τον έλεγχο, ελέγξτε απλά το ερμιτιανό μέρος του πίνακα <varname>M</varname> ως
εξής: <userinput>IsPositiveSemidefinite(M+M')</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Αν είναι ο πίνακας λοξός ερμιτιανός. Δηάδή, αν είναι ο συζυγής ανάστροφος ίσος με τον
αρνητικό του πίνακα.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Είναι ένας πίνακας μοναδιαίος; Δηλαδή, αν είναι οι <userinput>M'*M</userinput> and
<userinput>M*M'</userinput> ίσοι στην ταυτότητα.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Παραλλαγές: <function>J</function></para>
+ <para>Δίνει το μπλοκ Jordan που αντιστοιχεί στην ιδιοτιμή <varname>lambda</varname> με
πολλαπλότητα <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Δίνει τον πυρήνα (διάστημα κενού) ενός γραμμικού μετασχηματισμού.</para>
+ <para>(Δείτε <link linkend="gel-function-NullSpace">NullSpace</link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Παραλλαγές: <function>TensorProduct</function></para>
+ <para>Υπολογίζει το γινόμενο Κρόνεκερ (γινόμενο τανυστή σε τυπική βάση) δύο πινάκων.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>
+ Get the LU decomposition of <varname>A</varname>, that is
+ find a lower triangular matrix and upper triangular
+ matrix whose product is <varname>A</varname>.
+ Store the result in the <varname>L</varname> and
+ <varname>U</varname>, which should be references. It returns <constant>true</constant>
+ if successful.
+ For example suppose that A is a square matrix, then after running:
+ <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen>
+ You will have the lower matrix stored in a variable called
+ <varname>L</varname> and the upper matrix in a variable called
+ <varname>U</varname>.
+ </para>
+ <para>Αυτή είναι η ανάλυση LU ενός πίνακα γνωστό και ως Crout και/ή αναγωγή Σολεσκί. (ISBN
0-201-11577-8 pp.99-103) Ο άνω τριγωνικός πίνακας χαρακτηρίζει μια διαγώνιο τιμών 1 (ένα). Αυτή δεν είναι η
μέθοδος του Doolittle που χαρακτηρίζει τη διαγώνιο του 1 στον κάτω πίνακα.</para>
+ <para>Δεν έχουν όλοι οι πίνακες αναλύσεις LU, για παράδειγμα το <userinput>[0,1;1,0]</userinput>
δεν έχει και αυτή η συνάρτηση επιστρέφει <constant>false</constant> σε αυτήν την περίπτωση και ορίζει
<varname>L</varname> και<varname>U</varname> σε <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LUDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Δίνει τον ελάσσονα <varname>i</varname>-<varname>j</varname> ενός πίνακα.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Minor">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Επιστρέφει τις στήλες που δεν είναι οδηγούσες στήλες ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Παραλλαγές: <function>norm</function></para>
+ <para>Δίνει τη νόρμα p (ή νόρμα 2 αν κανένα p δεν δίνεται) ενός διανύσματος.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Δίνει τον μηδενικό χώρο ενός πίνακα. Δηλαδή, τον πυρήνα της γραμμικής απεικόνισης που
απεικονίζει ο πίνακας. Αυτός επιστρέφεται ως ένας πίνακας του οποίου ο χώρος στηλών είναι ο μηδενικός χώρος
του <varname>T</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Παραλλαγές: <function>nullity</function></para>
+ <para>Δίνει την μηδενικότητα ενός πίνακα. Δηλαδή, επιστρέφει τη διάσταση του μηδενικού χώρου· η
διάσταση του πυρήνα του <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Δίνει του ορθογωνίου συμπληρώματος του χώρου στήλης.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Επιστρέφει τις οδηγούσες στήλες ενός πίνακα, δηλαδή τις στήλες που έχουν ένα αρχικό 1 σε
ανηγμένη μορφή κατά γραμμές. Επίσης επιστρέφει τη γραμμή που αυτό συμβαίνει.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Προβολή του διανύσματος <varname>v</varname> στον υπόχωρο <varname>W</varname> ως προς το
δοσμένο εσωτερικό γινόμενο από το <varname>B</varname>. Αν το <varname>B</varname> δεν δίνεται, τότε το
τυπικό ερμιτιανό γινόμενο χρησιμοποιείται. Το <varname>B</varname> μπορεί ή να είναι γραμμικο-ημιγραμμική
συνάρτηση των δύο ορισμάτων ή μπορεί να είναι ένας πίνακας που δίνει μια γραμμικο-ημιγραμμική μορφή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>Δίνει την ανάλυση QR ενός τετραγωνικού πίνακα <varname>A</varname>, επιστρέφει τον άνω
τριγωνικό πίνακα <varname>R</varname> και ορίζει το <varname>Q</varname> στον ορθογώνιο (μοναδιαίο) πίνακα.
Το <varname>Q</varname> πρέπει να είναι μια αναφορά ή <constant>null</constant>, αν δεν θέλετε καμιά
επιστροφή. Για παράδειγμα: <screen><prompt>genius></prompt> <userinput>R =
QRDecomposition(A,&Q)</userinput>
+</screen> Θα έχετε τον άνω τριγωνικό πίνακα αποθηκευμένο σε μια μεταβλητή που λέγεται <varname>R</varname>
και τον ορθογώνιο (μοναδιαίο) πίνακα αποθηκευμένο στο <varname>Q</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Επιστρέφει το πηλίκο Ρέιλι (λέγεται επίσης πηλίκο ή λόγος Ρέιλι-Ρίτζ) ενός πίνακα και ενός
διανύσματος.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Βρίσκει τις ιδιοτιμές του <varname>A</varname> χρησιμοποιώντας τη μέθοδο επανάληψης πηλίκου
Ρέιλι. Το <varname>x</varname> είναι μια πρόβλεψη στο ιδιοδιάνυσμα και μπορεί να είναι τυχαία. Πρέπει να έχει
μη μηδενικό φανταστικό μέρος, αν θα έχει κάποια πιθανότητα στην εύρεση μιγαδικών ιδιοτιμών. Ο κώδικας θα
εκτελεστεί στις περισσότερες επαναλήψεις <varname>maxiter</varname> και θα επιστρέψει
<constant>null</constant> αν δε μπορούμε να πάρουμε ένα σφάλμα του <varname>epsilon</varname>. Το
<varname>vecref</varname> πρέπει να είναι <constant>null</constant> ή μια αναφορά σε μεταβλητή όπου το
ιδιοδιάνυσμα πρ�
�πει να αποθηκευτεί.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information on
Rayleigh quotient.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Παραλλαγές: <function>rank</function></para>
+ <para>Δίνει την τάξη ενός πίνακα.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Επιστρέφει τον πίνακα Ρόσερ, που είναι ένα κλασικό συμμετρικό πρόβλημα δοκιμής
ιδιοτιμής.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (angle)</synopsis>
+ <para>Aliases: <function>RotationMatrix</function></para>
+ <para>Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από το αρχικό στο
R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (angle)</synopsis>
+ <para>Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από τον αρχικό στο
R<superscript>3</superscript> γύρω από τον άξονα x.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (angle)</synopsis>
+ <para>Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από τον αρχικό στο
R<superscript>3</superscript> γύρω από τον άξονα y.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (angle)</synopsis>
+ <para>Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από τον αρχικό στο
R<superscript>3</superscript> γύρω από τον άξονα z.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Δίνει έναν πίνακα βάσης για χώρο γραμμών ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Υπολογίζει το (v,w) ως προς τη γραμμικο-ημιγραμμική μορφή που δίνεται από τον πίνακα
Α.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που υπολογίζει δύο διανύσματα ως προς τη γραμμικο-ημιγραμμική μορφή
που δίνεται από το Α.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Επιστρέφει την κανονική μορφή Σμιθ ενός πίνακα για πεδία (θα τελειώνει με 1 στη
διαγώνιο).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Return the Smith normal form for square integer matrices over integers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,args...)</synopsis>
+ <para>Επιλύει το γραμμικό σύστημα Mx=V, επιστρέφει τη λύση V αν υπάρχει μια μοναδική λύση, αλλιώς
<constant>null</constant>. Δύο πρόσθετες παράμετροι αναφοράς μπορούν να χρησιμοποιηθούν προαιρετικά για να
δώσουν τα ανηγμένα M και V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (c, r...)</synopsis>
+ <para>Επιστρέφει τον πίνακα Toeplitz που κατασκευάστηκε με δεδομένη την πρώτη στήλη c και
(προαιρετικά) την πρώτη γραμμή r. Αν δίνεται μόνο η στήλη c, τότε είναι συζυγής και η μη συζυγής έκδοση
χρησιμοποιείται για να δώσει η πρώτη γραμμή τον ερμιτιανό πίνακα (αν το πρώτο στοιχείο είναι πραγματικός
φυσικά).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Παραλλαγές: <function>trace</function></para>
+ <para>Υπολογίζει το ίχνος ενός πίνακα. Δηλαδή, το άθροισμα των διαγώνιων στοιχείων.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Trace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Ανάστροφος ενός πίνακα. Αυτός είναι ο ίδιος με τον τελεστή <userinput>.'</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Transpose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Παραλλαγές: <function>vander</function></para>
+ <para>Επιστρέφει τον πίνακα Vandermonde.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>Η γωνία των δύο διανυσμάτων ως προς το εσωτερικό γινόμενο που δίνει ο <varname>B</varname>.
Αν ο <varname>B</varname> δεν δίνεται, τότε το τυπικό ερμιτιανό γινόμενο χρησιμοποιείται. Ο
<varname>B</varname> μπορεί είτε να είναι γραμμικο-ημιγραμμική συνάρτηση δύο ορισμάτων ή μπορεί να είναι ένας
πίνακας που δίνει μια γραμμικο-ημιγραμμική μορφή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>Το ευθύ άθροισμα των διαστημάτων διανύσματος Μ και Ν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Τομή των υποχώρων που δίνονται από Μ και Ν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>Το άθροισμα των διανυσματικών χώρων M και N, δηλαδή {w | w=m+n, m στο M, n στο N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Παραλλαγές: <function>Adjugate</function></para>
+ <para>Δίνει τον κλασικό συζυγή ενός πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Παραλλαγές: <function>CREF</function><function>ColumnReducedEchelonForm</function></para>
+ <para>Υπολογίζει την ανηγμένη κλιμακωτή μορφή κατά στήλες.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Παραλλαγές: <function>Determinant</function></para>
+ <para>Δίνει την ορίζουσα ενός πίνακα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Determinant2">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Παραλλαγές: <function>REF</function><function>RowEchelonForm</function></para>
+ <para>Δίνει την μορφή κλιμακωτής γραμμής ενός πίνακα. Δηλαδή, εφαρμόζει την απαλοιφή Γκάους, αλλά
όχι την πίσω πρόσθεση στο <varname>M</varname>. Οι οδηγούσες γραμμές διαιρούνται για να κάνουν όλους τους
οδηγούς 1.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Παραλλαγές: <function>RREF</function><function>ReducedRowEchelonForm</function></para>
+ <para>Δίνει τη ανηγμένη κλιμακωτή μορφή κατά γραμμές ενός πίνακα. Δηλαδή, εφαρμόζει την απαλοιφή
Γκάους μαζί με την πίσω πρόσθεση στο <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Συνδυαστική Ανάλυση</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Δίνει τον <varname>n</varname>στό αριθμό Catalan.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Δίνει όλους τους συνδυασμούς των k αριθμών από 1 μέχρι n ως ένα διάνυσμα διανυσμάτων. (Δείτε
επίσης <link linkend="gel-function-NextCombination">NextCombination</link>)</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Διπλό παραγοντικό: <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Παραγοντικό: <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Μειούμενο παραγοντικό: <userinput>(n)_k = n(n-1)...(n-(k-1))</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Παραλλαγές: <function>fib</function></para>
+ <para>Υπολογίζει τον <varname>n</varname>στό αριθμό Φιμπονάτσι. Δηλαδή, τον αριθμό που ορίζεται
αναδρομικά από <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> και
<userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>
+ Calculate the Frobenius number. That is calculate largest
+ number that cannot be given as a non-negative integer linear
+ combination of a given vector of non-negative integers.
+ The vector can be given as separate numbers or a single vector.
+ All the numbers given should have GCD of 1.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (combining_rule)</synopsis>
+ <para>Galois matrix given a linear combining rule (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>Βρίσκει το διάνυσμα <varname>c</varname> μη αρνητικών ακεραίων έτσι ώστε να παίρνει το
εσωτερικό γινόμενο με το <varname>v</varname> να είναι ίσο με n. Αν δεν είναι δυνατό, επιστρέφει
<constant>null</constant>. Το <varname>v</varname> πρέπει να δίνεται ταξινομημένο με αύξουσα διάταξη και
πρέπει να αποτελείται από μη αρνητικούς ακέραιους.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Παραλλαγές: <function>HarmonicH</function></para>
+ <para>Harmonic Number, the <varname>n</varname>th harmonic number of order <varname>r</varname>.
+ That is, it is the sum of <userinput>1/k^r</userinput> for <varname>k</varname>
+ from 1 to n. Equivalent to <userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Η συνάρτηση Χόφσταντερ q(n) ορίζεται από q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> for more
information.
+ The sequence is <ulink url="https://oeis.org/A005185">A005185 in OEIS</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (seed_values,combining_rule,n)</synopsis>
+ <para>Υπολογίζει τη γραμμική κυκλική ακολουθία χρησιμοποιώντας το βηματισμό Γκαλουά.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Υπολογίζει τους πολυωνυμικούς συντελεστές. Παίρνει ένα διάνυσμα από <varname>k</varname> μη
αρνητικούς ακέραιους και υπολογίζει τον πολυωνυμικό συντελεστή. Αυτός αντιστοιχεί με τον συντελεστή στο
ομογενές πολυώνυμο σε <varname>k</varname> μεταβλητές με τις αντίστοιχες δυνάμεις.</para>
+ <para>Ο τύπος για <userinput>Multinomial(a,b,c)</userinput> μπορεί να γραφτεί ως:
<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting> Με άλλα λόγια, αν μπορούμε να έχουμε δύο μόνο στοιχεία, τότε το
<userinput>Multinomial(a,b)</userinput> είναι το ίδιο με το <userinput>Binomial(a+b,a)</userinput> ή
<userinput>Binomial(a+b,b)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Δίνει τον συνδυασμό που μπορεί να έρθει μετά το v στην κλήση στους συνδυασμούς της
συνάρτησης, ο πρώτος συνδυασμός πρέπει να είναι <userinput>[1:k]</userinput>. Αυτή η συνάρτηση είναι χρήσιμη,
αν έχετε πολλούς συνδυασμούς να περάσετε και δεν θέλετε να σπαταλήσετε μνήμη για να τους αποθηκεύσετε
όλους.</para>
+ <para>
+ For example with Combinations you would normally write a loop like:
+ <screen><userinput>for n in Combinations (4,6) do (
+ SomeFunction (n)
+);</userinput>
+</screen>
+ But with NextCombination you would write something like:
+ <screen><userinput>n:=[1:4];
+do (
+ SomeFunction (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen>
+ See also <link linkend="gel-function-Combinations">Combinations</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Δίνει το τρίγωνο του Πασκάλ ως πίνακα. Αυτό θα επιστρέψει έναν <varname>i</varname>+1 επί
<varname>i</varname>+1 κάτω διαγώνιο πίνακα που είναι το τρίγωνο Πασκάλ μετά από <varname>i</varname>
επαναλήψεις.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Δίνει όλες τις μεταθέσεις των <varname>k</varname> αριθμών από 1 μέχρι <varname>n</varname>
ως ένα διάνυσμα διανυσμάτων.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Παραλλαγές: <function>Pochhammer</function></para>
+ <para>(Pochhammer) Rising factorial: (n)_k = n(n+1)...(n+(k-1)).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Παραλλαγές: <function>StirlingS1</function></para>
+ <para>Ο αριθμός Στέρλινγκ πρώτου είδους.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Παραλλαγές: <function>StirlingS2</function></para>
+ <para>Ο αριθμός Στέρλινγκ δεύτερου είδους.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink>
for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (nth)</synopsis>
+ <para>Υπολογίζει τον <varname>n</varname>στό τριγωνικό αριθμό.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Παραλλαγές: <function>Binomial</function></para>
+ <para>Υπολογίζει συνδυασμούς, δηλαδή, τον συντελεστή διωνύμου. Το <varname>n</varname> μπορεί να
είναι οποιοσδήποτε πραγματικός αριθμός.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Choose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Calculate the number of permutations of size
+ <varname>r</varname> of numbers from 1 to <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Μαθηματική Ανάλυση</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Ολοκλήρωση του f από τον σύνθετο κανόνα του Σίμπσον στο διάστημα [a,b] με n υποδιαστήματα με
σφάλμα του max(f'''')*h^4*(b-a)/180, σημειώστε ότι το n πρέπει να είναι άρτιος.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
+ <para>Ολοκλήρωση της f από τον σύνθετο κανόνα Σίμπσον του διαστήματος [a,b] με τον αριθμό των
υπολογιζόμενων βημάτων από το τέταρτο φράγμα παραγώγου και την επιθυμητή ανοχή.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Προσπαθεί να υπολογίσει την παράγωγου δοκιμάζοντας πρώτα συμβολικά και έπειτα
αριθμητικά.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι άρτια περιοδική επέκταση της <function>f</function> με
ημιπερίοδο <varname>L</varname>. Δηλαδή μια συνάρτηση που ορίστηκε στο διάστημα <userinput>[0,L]</userinput>
επεκτάθηκε για να είναι άρτια στο <userinput>[-L,L]</userinput> και έπειτα επεκτάθηκε να είναι περιοδική με
περίοδο <userinput>2*L</userinput>.</para>
+ <para>Δείτε επίσης <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
και <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι μια σειρά Φουριέ με τους συντελεστές δοσμένους από τα
διανύσματα <varname>a</varname> (ημίτονα) and <varname>b</varname> (συνημίτονα). Σημειώστε ότι, το
<userinput>a@(1)</userinput> είναι συντελεστής σταθεράς! Δηλαδή, το <userinput>a@(n)</userinput> αναφέρεται
στον όρο <userinput>cos(x*(n-1)*pi/L)</userinput>, ενώ το <userinput>b@(n)</userinput> αναφέρεται στον όρο
<userinput>sin(x*n*pi/L)</userinput>. Είτε το <varname>a</varname> είτε το <varname>b</varname> μπορεί να
είναι <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (func,start,inc)</synopsis>
+ <para>Προσπαθεί να υπολογίσει ένα άπειρο γινόμενο για μια συνάρτηση απλής παραμέτρου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (func,arg,start,inc)</synopsis>
+ <para>Προσπαθεί να υπολογίσει ένα άπειρο γινόμενο για μια συνάρτηση διπλής παραμέτρου με
func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (func,start,inc)</synopsis>
+ <para>Προσπαθεί να υπολογίσει ένα άπειρο άθροισμα για μια συνάρτηση απλής παραμέτρου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (func,arg,start,inc)</synopsis>
+ <para>Προσπαθεί να υπολογίσει ένα άπειρο άθροισμα για μια συνάρτηση διπλής παραμέτρου με
func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Δοκιμάστε για να δείτε αν μια συνάρτηση πραγματικών τιμών είναι συνεχής στο x0 υπολογίζοντας
το όριο εκεί.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Δοκιμή διαφορισιμότητας προσεγγίζοντας το αριστερό και δεξιό όριο και συγκρίνοντας.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Υπολογίζει το αριστερό όριο μιας συνάρτησης πραγματικών στο x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Υπολογίζει το όριο μιας συνάρτησης πραγματικών στο x0. Προσπαθεί να υπολογίσει και το
αριστερό και το δεξιό όριο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Ολοκλήρωση με τον κανόνα μέσου.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Παραλλαγές: <function>NDerivative</function></para>
+ <para>Προσπάθεια υπολογισμού αριθμητικής παραγώγου.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα διανυσμάτων <userinput>[a,b]</userinput> όπου το <varname>a</varname>
είναι οι συντελεστές συνημιτόνου και το <varname>b</varname> είναι οι συντελεστές ημιτόνου της σειράς Φουριέ
του <function>f</function> με ημιπερίοδο <varname>L</varname> (που ορίζεται στο <userinput>[-L,L]</userinput>
και επεκτείνεται περιοδικά) με συντελεστές μέχρι τον <varname>N</varname>στό αρμονικό που υπολογίζεται
αριθμητικά. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας το <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ του <function>f</function> με ημιπερίοδο
<varname>L</varname> (που ορίζεται στο <userinput>[-L,L]</userinput> και επεκτείνεται περιοδικά) με
συντελεστές μέχρι τον <varname>N</varname>στό αρμονικό που υπολογίζεται αριθμητικά. Αυτή είναι η
τριγωνομετρική πραγματική σειρά που αποτελείται από ημίτονα και συνημίτονα. Οι συντελεστές υπολογίζονται με
αριθμητική ολοκλήρωση χρησιμοποιώντας το <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα συντελεστών της σειράς Φουριέ συνημιτόνου του <function>f</function>
με ημιπερίοδο <varname>L</varname>. Δηλαδή, η <function>f</function> ορισμένη στο
<userinput>[0,L]</userinput> παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία
έχει μόνο όρους συνημιτόνου. Η σειρά υπολογίζεται μέχρι τον <varname>N</varname>στό αρμονικό. Οι συντελεστές
υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>. Σημειώστε ότι το
<userinput>a@(1)</userinput> είναι ο συντελεστής σταθεράς! Δηλαδή, <userinput>a@(n)</userinpu
t> αναφέρεται στον όρο <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ συνημιτόνου του <function>f</function> με
ημιπερίοδο <varname>L</varname>. Δηλαδή, παίρνουμε την <function>f</function> ορισμένη στο
<userinput>[0,L]</userinput>, παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία
έχει μόνο όρους συνημιτόνου. Η σειρά υπολογίζεται μέχρι τον <varname>N</varname>στό αρμονικό. Οι συντελεστές
υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα συντελεστών της σειράς Φουριέ ημιτόνου του <function>f</function> με
ημιπερίοδο <varname>L</varname>. Δηλαδή, η <function>f</function> ορισμένη στο <userinput>[0,L]</userinput>
παίρνει την περιττή περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους ημιτόνου. Η
σειρά υπολογίζεται μέχρι τον <varname>N</varname>στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική
ολοκλήρωση χρησιμοποιώντας την <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ ημιτόνου του <function>f</function> με
ημιπερίοδο <varname>L</varname>. Δηλαδή, παίρνουμε τη <function>f</function> ορισμένη στο
<userinput>[0,L]</userinput>, παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία
έχει μόνο όρους ημιτόνου. Η σειρά υπολογίζεται μέχρι τον <varname>N</varname>στό αρμονικό. Οι συντελεστές
υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Ολοκλήρωση με τον κανόνα που ορίστηκε στο NumericalIntegralFunction του f από το a μέχρι το
b χρησιμοποιώντας βήματα NumericalIntegralSteps.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Προσπαθεί να υπολογίσει την αριθμητική αριστερή παράγωγο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
+ <para>Προσπαθεί να υπολογίσει το όριο του f(step_fun(i)) καθώς το i πηγαίνει από 1 έως N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Προσπαθεί να υπολογίσει την αριθμητική δεξιά παράγωγο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι περιττή περιοδική επέκταση της <function>f</function> με
ημιπερίοδο <varname>L</varname>. Δηλαδή μια συνάρτηση που ορίστηκε στο διάστημα <userinput>[0,L]</userinput>
επεκτάθηκε για να είναι περιττή στο <userinput>[-L,L]</userinput> και έπειτα επεκτάθηκε να είναι περιοδική με
περίοδο <userinput>2*L</userinput>.</para>
+ <para>Δείτε επίσης <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>
και <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Υπολογίζει τη μονόπλευρη παράγωγο χρησιμοποιώντας τον τύπο πέντε σημείων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Υπολογίζει τη μονόπλευρη παράγωγο χρησιμοποιώντας τον τύπο τριών σημείων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Επιστρέφει μια συνάρτηση που είναι η περιοδική επέκταση της <function>f</function> ορισμένη
στο διάστημα <userinput>[a,b]</userinput> και έχει περίοδο <userinput>b-a</userinput>.</para>
+ <para>Δείτε επίσης <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
και <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Υπολογίζει το δεξιό όριο μιας συνάρτησης πραγματικών στο x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Υπολογίζει τη δίπλευρη παράγωγο χρησιμοποιώντας τον τύπο πέντε σημείων.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Υπολογίζει τη δίπλευρη παράγωγο χρησιμοποιώντας τον τύπο τριών σημείων.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Συναρτήσεις</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Παραλλαγές: <function>Arg</function><function>arg</function></para>
+ <para>όρισμα (γωνία) μιγαδικού αριθμού.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Η συνάρτηση Μπεσέλ πρώτου είδους τάξης 0. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Η συνάρτηση Μπεσέλ πρώτου είδους τάξης 1. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Η συνάρτηση Μπεσέλ πρώτου είδους τάξης <varname>n</varname>. Εφαρμόζεται μόνο για
πραγματικούς αριθμούς.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης 0. Εφαρμόζεται μόνο για πραγματικούς
αριθμούς.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης 1. Εφαρμόζεται μόνο για πραγματικούς
αριθμούς.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης <varname>n</varname>. Εφαρμόζεται μόνο για
πραγματικούς αριθμούς.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichlet kernel of order <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Παραλλαγές: <function>erf</function></para>
+ <para>Η συνάρτηση σφάλματος, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ErrorFunction">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Ο πυρήνας Fejer τάξης <varname>n</varname> που υπολογίστηκε στο <varname>t</varname></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Παραλλαγές: <function>Gamma</function></para>
+ <para>Η συνάρτηση γάμα. Προς το παρόν υλοποιείται μόνο για πραγματικούς.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Επιστρέφει 1 αν και μόνο αν όλα τα στοιχεία είναι ίσα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>Ο βασικός κλάδος της συνάρτησης W Λαμπέρ υπολογίζεται μόνο για πραγματικές τιμές μεγαλύτερες
ή ίσες από <userinput>-1/e</userinput>. Δηλαδή, <function>LambertW</function> είναι το αντίστροφο της
παράστασης <userinput>x*e^x</userinput>. Ακόμα για πραγματικούς <varname>x</varname> αυτή η παράσταση δεν
είναι ένα προς ένα και συνεπώς έχει δύο κλάδους στο <userinput>[-1/e,0)</userinput>. Δείτε <link
linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> για τον άλλο πραγματικό κλάδο.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>Ο κλάδος μείον-ένα της συνάρτησης W Λαμπέρ υπολογίζεται μόνο για πραγματικές τιμές
μεγαλύτερες ή ίσες με <userinput>-1/e</userinput> και μικρότερες από 0. Δηλαδή, το
<function>LambertWm1</function> είναι ο δεύτερος κλάδος του αντίστροφου <userinput>x*e^x</userinput>. Δείτε
<link linkend="gel-function-LambertW"><function>LambertW</function></link> για τον βασικό κλάδο.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (func,x,incr)</synopsis>
+ <para>Βρίσκει την πρώτη τιμή όπου f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Μετασχηματισμός Μέμπιους του δίσκου στον εαυτόν του, απεικονίζοντας το a στο 0.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας z2,z3,z4 στο 1,0, και
άπειρο αντίστοιχα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Απεικόνιση Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο άπειρο και z2,z3
στο 1 και 0 αντίστοιχα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο 1 και z3,z4
στο 0 και άπειρο αντίστοιχα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο 0 και z2,z4
στο 1 και άπειρο αντίστοιχα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Πυρήνας Πουασόν στο D(0,1) (μη κανονικοποιημένο στο 1, δηλαδή το ολοκλήρωμα αυτού είναι
2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Πυρήνας Πουασόν στο D(0,R) (μη κανονικοποιημένο στο 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Παραλλαγές: <function>zeta</function></para>
+ <para>Η συνάρτηση ζήτα Ρίμαν. Προς το παρόν υλοποιείται μόνο για πραγματικούς.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>Το μοναδιαίο βήμα συνάρτησης είναι 0 για x<0, 1 αλλιώς. Αυτό είναι το ολοκλήρωμα της
συνάρτησης δέλτα Ντιράκ. Λέγεται επίσης συνάρτηση Χέβισαϊντ.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>Η συνάρτηση <function>cis</function>, δηλαδή είναι η ίδια με τη
<userinput>cos(x)+1i*sin(x)</userinput></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Μετατρέπει βαθμούς σε ακτίνια.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Μετατρέπει ακτίνια σε μοίρες.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Υπολογίζει τη μη κανονικοποιημένη συνάρτηση sinc, δηλαδή την <userinput>sin(x)/x</userinput>.
Αν θέλετε την κανονικοποιημένη συνάρτηση καλέστε <userinput>sinc(pi*x)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Επίλυση εξίσωσης</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>Υπολογίζει τις ρίζες ενός κυβικού (βαθμού 3) πολυωνύμου χρησιμοποιώντας τον κυβικό τύπο. Το
πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή <userinput>4*x^3 + 2*x + 1</userinput>
αντιστοιχεί στο διάνυσμα <userinput>[1,2,0,4]</userinput>. Επιστρέφει ένα διάνυσμα στήλης των τριών λύσεων. Η
πρώτη λύση είναι πάντα η πραγματική καθώς μια κυβική έχει πάντα μια πραγματική λύση.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns <varname>y</varname> at <varname>x1</varname>.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKutta">RungeKutta</link>
+ for solving ODE.
+ </para>
+ <para>Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το <varname>y</varname> να είναι ένα διάνυσμα
(στήλης) παντού. Δηλαδή, το <varname>y0</varname> μπορεί να είναι ένα διάνυσμα, οπότε το <varname>f</varname>
πρέπει να πάρει έναν αριθμό <varname>x</varname> και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα
και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link>
+ for solving ODE.
+ Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το <varname>y</varname> να είναι ένα διάνυσμα
(στήλης) παντού. Δηλαδή, το <varname>y0</varname> μπορεί να είναι ένα διάνυσμα, οπότε το <varname>f</varname>
πρέπει να πάρει έναν αριθμό <varname>x</varname> και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα
και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.</para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο διχοτόμησης. Τα
<varname>a</varname> και <varname>b</varname> είναι το αρχικό διάστημα πρόβλεψης, τα
<userinput>f(a)</userinput> και <userinput>f(b)</userinput> πρέπει να έχουν αντίθετα πρόσημα. Το
<varname>TOL</varname> είναι η επιθυμητή ανοχή και <varname>N</varname> είναι το όριο στον αριθμό των
επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα
<userinput>[success,value,iteration]</userinput>, όπου <varname>success</varname> είναι μια λογική τιμή που
δείχνει επιτυχία, <varname>value</varname> είναι η τελευταία υπολογισμένη τιμή και <varname>iteration
</varname> είναι ο αριθμός των επαναλήψεων που έγιναν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο ψευδούς θέσης. Τα
<varname>a</varname> και <varname>b</varname> είναι το αρχικό διάστημα πρόβλεψης, τα
<userinput>f(a)</userinput> και <userinput>f(b)</userinput> πρέπει να έχουν αντίθετα πρόσημα. Το
<varname>TOL</varname> είναι η επιθυμητή ανοχή και <varname>N</varname> είναι το όριο στον αριθμό των
επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα
<userinput>[success,value,iteration]</userinput>, όπου <varname>success</varname> είναι μια λογική τιμή που
δείχνει επιτυχία, <varname>value</varname> είναι η τελευταία υπολογισμένη τιμή και <varname>iterat
ion</varname> είναι ο αριθμός των επαναλήψεων που έγιναν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο Μίλερ. Το <varname>TOL</varname>
είναι η επιθυμητή ανοχή και <varname>N</varname> είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0
σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα <userinput>[success,value,iteration]</userinput>,
όπου <varname>success</varname> είναι μια λογική τιμή που δείχνει επιτυχία, <varname>value</varname> είναι η
τελευταία υπολογισμένη τιμή και <varname>iteration</varname> είναι ο αριθμός των επαναλήψεων που
έγιναν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο τέμνουσας. Τα
<varname>a</varname> και <varname>b</varname> είναι το αρχικό διάστημα πρόβλεψης, τα
<userinput>f(a)</userinput> και <userinput>f(b)</userinput> πρέπει να έχουν αντίθετα πρόσημα. Το
<varname>TOL</varname> είναι η επιθυμητή ανοχή και <varname>N</varname> είναι το όριο στον αριθμό των
επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα
<userinput>[success,value,iteration]</userinput>, όπου <varname>success</varname> είναι μια λογική τιμή που
δείχνει επιτυχία, <varname>value</varname> είναι η τελευταία υπολογισμένη τιμή και <varname>iteration</va
rname> είναι ο αριθμός των επαναλήψεων που έγιναν.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Halley's method. <varname>f</varname> is
+ the function, <varname>df</varname> is the derivative of
+ <varname>f</varname>, and <varname>ddf</varname> is the second derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>Δείτε επίσης <link
linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link> και <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10: <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,guess,epsilon,maxn)</synopsis>
+ <para>Βρίσκει μηδενικά χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το <varname>f</varname> είναι η συνάρτηση
και <varname>df</varname> είναι η παράγωγος του <varname>f</varname>. Η <varname>guess</varname> είναι η
αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο
<varname>epsilon</varname> μεταξύ τους, ή μετά από <varname>maxn</varname> προσπάθειες, οπότε η συνάρτηση
επιστρέφει <constant>null</constant> που δείχνει αποτυχία.</para>
+ <para>Δείτε επίσης <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> and <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>Υπολογίζει ρίζες ενός πολυωνύμου (βαθμών από 1 μέχρι 4) χρησιμοποιώντας τους τύπους για
τέτοια πολυώνυμα. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το <userinput>4*x^3 +
2*x + 1</userinput> αντιστοιχεί στο διάνυσμα <userinput>[1,2,0,4]</userinput>. Επιστρέφει ένα διάνυσμα στήλης
των λύσεων.</para>
+ <para>Η συνάρτηση καλεί <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>,
<link linkend="gel-function-CubicFormula">CubicFormula</link> και <link
linkend="gel-function-QuarticFormula">QuarticFormula</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>Υπολογίζει ρίζες ενός δευτεροβάθμιου πολυωνύμου (βαθμού 2) χρησιμοποιώντας τον τύπο
δευτεροβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το <userinput>3*x^2 + 2*x
+ 1</userinput> αντιστοιχεί στο διάνυσμα <userinput>[1,2,3]</userinput>. Επιστρέφει ένα διάνυσμα στήλης των
δύο λύσεων.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>Υπολογίζει ρίζες ενός τεταρτοβάθμιου πολυωνύμου (βαθμού 4) χρησιμοποιώντας τον τύπο
τεταρτοβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το <userinput>5*x^4 + 2*x
+ 1</userinput> αντιστοιχεί στο διάνυσμα <userinput>[1,2,0,0,5]</userinput>. Επιστρέφει ένα διάνυσμα στήλης
τεσσάρων λύσεων.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>Χρησιμοποιεί την κλασική μη αναπροσαρμοστική μέθοδο τέταρτης τάξης Runge-Kutta για
αριθμητική επίλυση της y'=f(x,y) με αρχικά <varname>x0</varname>, <varname>y0</varname> πηγαίνει στο
<varname>x1</varname> με βήματα <varname>n</varname>, επιστρέφει <varname>y</varname> στο
<varname>x1</varname>.</para>
+ <para>Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το <varname>y</varname> να είναι ένα διάνυσμα
(στήλης) παντού. Δηλαδή, το <varname>y0</varname> μπορεί να είναι ένα διάνυσμα, οπότε το <varname>f</varname>
πρέπει να πάρει έναν αριθμό <varname>x</varname> και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα
και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values. Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το <varname>y</varname> να είναι ένα διάνυσμα
(στήλης) παντού. Δηλαδή, το <varname>y0</varname> μπορεί να είναι ένα διάνυσμα, οπότε το <varname>f</varname>
πρέπει να πάρει έναν αριθμό <varname>x</varname> και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα
και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.</para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Στατιστική</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Παραλλαγές:
<function>average</function><function>Mean</function><function>mean</function></para>
+ <para>Calculate average (the arithmetic mean) of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Ολοκλήρωμα της GaussFunction από 0 μέχρι <varname>x</varname> (περιοχή κάτω από την κανονική
καμπύλη).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>Η συνάρτηση κανονικοποιημένης κατανομής Γκάους (η κανονική καμπύλη).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Παραλλαγές: <function>median</function></para>
+ <para>Υπολογίζει τον μέσο ενός ολόκληρου πίνακα.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Παραλλαγές: <function>stdevp</function></para>
+ <para>Υπολογίζει την τυπική απόκλιση πληθυσμού ενός ολόκληρου πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Παραλλαγές: <function>RowMean</function></para>
+ <para>Calculate average of each row in a matrix. That is, compute the
+ arithmetic mean.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Υπολογίζει τον διάμεσο κάθε γραμμής σε έναν πίνακα και επιστρέφει ένα διάνυσμα στήλης με
τους διάμεσους.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Παραλλαγές: <function>rowstdevp</function></para>
+ <para>Υπολογίζει τις τυπικές αποκλίσεις πληθυσμού γραμμών ενός πίνακα και επιστρέφει ένα κάθετο
διάνυσμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Παραλλαγές: <function>rowstdev</function></para>
+ <para>Υπολογίζει τις τυπικές αποκλίσεις γραμμών ενός πίνακα και επιστρέφει ένα κάθετο
διάνυσμα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Παραλλαγές: <function>stdev</function></para>
+ <para>Υπολογίζει την τυπική απόκλιση ενός ολόκληρου πίνακα.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Πολυώνυμα</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Προσθήκη δύο πολυωνύμων (διανύσματα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Διαιρεί δύο πολυώνυμα (ως διανύσματα) χρησιμοποιώντας τη μακριά διαίρεση. Επιστρέφει το
πηλίκο των δύο πολυωνύμων. Το προαιρετικό όρισμα <varname>r</varname> χρησιμοποιείται για να επιστρέψει το
υπόλοιπο. Το υπόλοιπο θα έχει μικρότερο βαθμό από το <varname>q</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Ελέγχει αν ένα διάνυσμα μπορεί να χρησιμοποιηθεί ως πολυώνυμο.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Πολλαπλασιάζει δύο πολυώνυμα (ως διανύσματα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,guess,epsilon,maxn)</synopsis>
+ <para>Βρίσκει μια ρίζα ενός πολυωνύμου χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το
<varname>poly</varname> είναι ένα πολυώνυμο ως διάνυσμα και <varname>guess</varname> είναι η αρχική πρόβλεψη.
Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο <varname>epsilon</varname> μεταξύ
τους, ή μετά από <varname>maxn</varname> προσπάθειες, οπότε η συνάρτηση επιστρέφει <constant>null</constant>
που δείχνει αποτυχία.</para>
+ <para>Δείτε επίσης <link
linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.</para>
+ <para>Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Δίνει τη δεύτερη πολυωνυμική παράγωγο (ως διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Δίνει την πολυωνυμική παράγωγο (ως διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Δημιουργεί συνάρτηση από ένα πολυώνυμο (ως διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Δημιουργεί συμβολοσειρά από ένα πολυώνυμο (ως διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Αφαιρεί δύο πολυώνυμα (ως διανύσματα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Περικόπτει μηδενικά από ένα πολυώνυμο (ως διάνυσμα).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Θεωρία συνόλων</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Επιστρέφει τη θεωρητική τομή συνόλων των Χ και Υ (Χ και Υ είναι διανύσματα που προσποιούνται
ότι είναι σύνολα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Επιστρέφει <constant>true</constant> αν το στοιχείο x είναι στο σύνολο Χ (όπου Χ είναι ένα
διάνυσμα που προσποιείται ότι είναι σύνολο).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Επιστρέφει <constant>true</constant> αν το Χ είναι ένα υποσύνολο του Υ (Χ και Υ είναι
διανύσματα που προσποιούνται ότι είναι σύνολα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Επιστρέφει ένα διάνυσμα όπου κάθε στοιχείο του Χ εμφανίζεται μόνο μια φορά.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Επιστρέφει τη θεωρητική διαφορά συνόλων των Χ-Υ (Χ και Υ είναι διανύσματα που προσποιούνται
ότι είναι σύνολα).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Επιστρέφει ένα μια θεωρητική ένωση συνόλου των Χ και Υ (Χ και Υ είναι διανύσματα που
προσποιούνται ότι είναι σύνολα).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Αντιμεταθετική άλγεβρα</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>Για μια συνάρτηση Χίλμπερτ που είναι c για βαθμό d, με δεδομένο το πέρας Μακόλεϊ για τη
συνάρτηση Χίλμπερτ βαθμού d+1 (Ο τελεστής c^<d> από την απόδειξη Γκριν).</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>Ο τελεστής c_<d> από την απόδειξη Γκριν του θεωρήματος Μακόλεϊ.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Επιστρέφει την dστή αναπαράσταση Μακόλεϊ ενός θετικού ακεραίου c.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Διάφορα</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vec)</synopsis>
+ <para>Convert a vector of ASCII values to a string.
+ See also
+ <link linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vec,alphabet)</synopsis>
+ <para>Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string.
A <constant>null</constant> vector results in an empty string.
+ See also
+ <link linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (str)</synopsis>
+ <para>Convert a string to a (row) vector of ASCII values.
+ See also
+ <link linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (str,alphabet)</synopsis>
+ <para>Convert a string to a (row) vector of 0-based alphabet values
+ (positions in the alphabet string), -1's for unknown letters.
+ An empty string results in a <constant>null</constant>.
+ See also
+ <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Συμβολικές πράξεις</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Προσπαθεί για συμβολική παραγώγιση της συνάρτησης f, όπου f είναι μια συνάρτηση μιας
μεταβλητής.</para>
+ <para>Παραδείγματα: <screen><prompt>genius></prompt>
<userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Προσπαθεί να παραγωγίσει συμβολικά τη συνάρτηση f, όπου f είναι μια συνάρτηση μιας
μεταβλητής, επιστρέφει <constant>null</constant> αν είναι ανεπιτυχής, αλλά είναι σιωπηλό. (Δείτε <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Προσπαθεί να παραγωγίσει συμβολικά μια συνάρτηση n φορές. (Δείτε <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Προσπαθεί να παραγωγίσει συμβολικά μια συνάρτηση n φορές σιωπηρά και επιστρέφει
<constant>null</constant> στην αποτυχία (Δείτε <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Προσπαθεί να κατασκευάσει τη συνάρτηση προσέγγισης Τέιλορ γύρω από το x0 στον nστο βαθμό.
(Δείτε <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Γραφική παράσταση</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (file,type)</synopsis>
+ <synopsis>ExportPlot (file)</synopsis>
+ <para>Εξάγει τα περιεχόμενα του παραθύρου γραφικής παράστασης σε αρχείο. Ο τύπος είναι μια
συμβολοσειρά που καθορίζει τον τύπο αρχείου για χρήση, "png", "eps", ή "ps". Αν ο τύπος δεν ορίζεται, τότε
παίρνεται η επέκταση, οπότε η επέκταση πρέπει να είναι ".png", ".eps", ή ".ps".</para>
+ <para>Σημειώστε ότι τα αρχεία αντικαθίστανται χωρίς ερώτηση.</para>
+ <para>Σε πετυχημένη εξαγωγή, επιστρέφεται αληθές. Αλλιώς, εκτυπώνεται σφάλμα και εγείρεται
εξαίρεση.</para>
+ <para>Παραδείγματα: <screen><prompt>genius></prompt>
<userinput>ExportPlot("file.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/directory/file","eps")</userinput>
+</screen></para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (func1,func2,func3,...)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
+ <para>Σχεδιάστε μια συνάρτηση (ή αρκετές συναρτήσεις) με μια γραμμή. Πρώτα (μέχρι 10) ορίσματα
είναι συναρτήσεις, έπειτα μπορείτε προαιρετικά να ορίσετε τα όρια του παραθύρου σχεδίασης ως
<varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Αν τα όρια δεν
ορίζονται, τότε εφαρμόζονται τα τρέχοντα ορισμένα όρια (Δείτε <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>) Αν τα όρια y δεν ορίζονται,
τότε οι συναρτήσεις υπολογίζονται και έπειτα χρησιμοποιούνται τα μέγιστα και ελάχιστα.</para>
+ <para>Η παράμετρος <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ελέγχει τη
σχεδίαση του υπομνήματος.</para>
+ <para>Παραδείγματα: <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>Εμφανίζει το παράθυρο σχεδίασης γραμμής και καθαρίζει τις συναρτήσεις και οποιαδήποτε άλλη
γραμμή σχεδιάστηκε.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (func,...)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>Σχεδιάζει μια παραμετρική μιγαδική συνάρτηση με μια γραμμή. Πρώτα έρχεται η συνάρτηση που
επιστρέφει <computeroutput>x+iy</computeroutput>, έπειτα προαιρετικά τα όρια <varname>t</varname> ως
<userinput>t1,t2,tinc</userinput>, στη συνέχεια προαιρετικά τα όρια ως
<userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Αν τα όρια δεν καθορίζονται, τότε εφαρμόζονται τα τρέχοντα όρια (Δείτε <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Αν δίνεται η συμβολοσειρά
"fit" για τα όρια x και y, τότε τα όρια είναι η μέγιστη έκταση του γραφήματος.</para>
+ <para>Η παράμετρος <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ελέγχει τη
σχεδίαση του υπομνήματος.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,
+ <varname>x2</varname>,<varname>y2</varname> can be replaced by an
+ <varname>n</varname> by 2 matrix for a longer polyline.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ arrows, the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ <userinput>"arrow"</userinput>, or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, type of arrow, or the legend. (Arrow and window are from version 1.0.6 onwards.)
+ </para>
+ <para>
+ If the line is to be treated as a filled polygon, filled with the given color, you
+ can specify the argument <userinput>"filled"</userinput>. Since version 1.0.22 onwards.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>Το παράθυρο πρέπει να δίνεται ως συνήθως σαν <userinput>[x1,x2,y1,y2]</userinput>, ή
εναλλακτικά μπορεί να δοθεί ως μια συμβολοσειρά <userinput>"fit"</userinput> οπότε, η περιοχή x θα οριστεί
ακριβώς και η περιοχή y θα οριστεί με περιγράμματα πέντε τοις εκατό γύρω από τη γραμμή.</para>
+ <para>Η προδιαγραφή του βέλους πρέπει να είναι <userinput>"origin"</userinput>,
<userinput>"end"</userinput>, <userinput>"both"</userinput>, ή <userinput>"none"</userinput>.</para>
+ <para>Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως
υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector.
+ </para>
+ <para>
+ Specifying <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>.
+ The input can be an <varname>n</varname> by 2 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>Το παράθυρο πρέπει να δίνεται ως συνήθως σαν <userinput>[x1,x2,y1,y2]</userinput>, ή
εναλλακτικά μπορεί να δοθεί ως μια συμβολοσειρά <userinput>"fit"</userinput> οπότε, η περιοχή x θα οριστεί
ακριβώς και η περιοχή y θα οριστεί με περιγράμματα πέντε τοις εκατό γύρω από τη γραμμή.</para>
+ <para>Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως
υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th
roots of unity")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector. Therefore, notice in the
+ last example the transpose of the vector <userinput>0:6</userinput>
+ to make it into a column vector.
+ </para>
+ <para>
+ Available from version 1.0.18 onwards. Specifying
+ <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>
+ Returns a row vector of a point on the line plot corresponding to
+ the current mouse location. If the line plot is not visible,
+ then prints an error and returns <constant>null</constant>.
+ In this case you should run
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> or
+ <link linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link>
+ to put the graphing window into the line plot mode.
+ See also
+ <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfunc,yfunc,...)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
+ <para>Σχεδιάζει μια παραμετρική συνάρτηση με μια γραμμή. Πρώτα έρχονται οι συναρτήσεις για
<varname>x</varname> και <varname>y</varname>, έπειτα προαιρετικά τα όρια του <varname>t</varname> ως
<userinput>t1,t2,tinc</userinput>, έπειτα προαιρετικά τα όρια ως <userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Αν δεν ορίζονται τα όρια x και y, τότε εφαρμόζονται τα τρέχοντα όρια (Δείτε <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Αν δίνεται η συμβολοσειρά
"fit" για τα όρια x και y, τότε τα όρια είναι η μέγιστη έκταση του γραφήματος.</para>
+ <para>Η παράμετρος <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ελέγχει τη
σχεδίαση του υπομνήματος.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>
+ If in line plot mode, waits for a click on the line plot window
+ and returns the location of the click as a row vector.
+ If the window is closed
+ the function returns immediately with <constant>null</constant>.
+ If the window is not in line plot mode, it is put in it and shown
+ if not shown.
+ See also
+ <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>Προσωρινό πάγωμα σχεδίασης του καμβά. Χρήσιμο αν χρειάζεστε να σχεδιάσετε μια ομάδα
στοιχείων και θέλετε να καθυστερήσετε τη σχεδίαση όλων για να αποφύγετε τρεμόσβησμα σε μια κίνηση. Αφού έχουν
σχεδιαστεί όλα θα πρέπει να καλέσετε <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.</para>
+ <para>Ο καμβάς ξεπαγώνει πάντα μετά το τέλος οποιασδήποτε εκτέλεσης, έτσι δεν θα παραμείνει ποτέ
παγωμένος. Τη στιγμή που μια νέα γραμμή εντολών εμφανίζεται για παράδειγμα, ο καμβάς σχεδίασης ξεπαγώνει
αυτόματα. Σημειώστε επίσης ότι οι κλήσεις για πάγωμα και ξεπάγωμα μπορούν με ασφάλεια να εντεθούν.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>
+ Thaw the plot canvas frozen by
+ <link linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link>
+ and redraw the canvas immediately. The canvas is also always thawed after end of execution
+ of any program.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>
+ Show and raise the plot window, creating it if necessary.
+ Normally the window is created when one of the plotting
+ functions is called, but it is not always raised if it
+ happens to be below other windows. So this function is
+ good to call in scripts where the plot window might have
+ been created before, and by now is hidden behind the
+ console or other windows.
+ </para>
+ <para>Version 1.0.19 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>Καθαρίζει τις σχεδιασμένες λύσεις από τη συνάρτηση <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>Όταν μια γραφική παράσταση πεδίου κλίσης είναι ενεργή, σχεδιάστε μια λύση με την καθορισμένη
αρχική συνθήκη. Η τυπική μέθοδος Ρούνγκε-Κούτα χρησιμοποιείται με αύξηση <varname>dx</varname>. Οι λύσεις
μένουν στο γράφημα μέχρι να εμφανιστεί μια διαφορετική γραφική παράσταση ή μέχρι να καλέσετε <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>.
Μπορείτε επίσης να χρησιμοποιήσετε τη γραφική διεπαφή για να σχεδιάσετε λύσεις και να ορίσετε αρχικές
συνθήκες με το ποντίκι.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (func)</synopsis>
+ <synopsis>SlopefieldPlot (func,x1,x2,y1,y2)</synopsis>
+ <para>Σχεδιάστε ένα πεδίο κλίσης. Η συνάρτηση <varname>func</varname> πρέπει να πάρει δύο
πραγματικούς αριθμούς <varname>x</varname> και <varname>y</varname>, ή έναν απλό μιγαδικό αριθμό.
Προαιρετικά, μπορείτε να ορίσετε τα όρια του παραθύρου σχεδίασης ως <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Αν τα όρια δεν καθορίζονται, τότε τα
τρέχοντα ορισμένα όρια εφαρμόζονται (Δείτε <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Η παράμετρος <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ελέγχει τη
σχεδίαση του υπομνήματος.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (func)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
+ <para>Σχεδιάστε μια συνάρτηση επιφάνειας που παίρνει είτε δύο ορίσματα ή έναν μιγαδικό αριθμό.
Πρώτα έρχεται η συνάρτηση, έπειτα προαιρετικά τα όρια ως <varname>x1</varname>, <varname>x2</varname>,
<varname>y1</varname>, <varname>y2</varname>, <varname>z1</varname>, <varname>z2</varname>. Αν τα όρια δεν
καθορίζονται, τότε εφαρμόζονται τα τρέχοντα ορισμένα όρια (Δείτε <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>). Η Genius μπορεί να
σχεδιάσει μόνο μια μοναδική συνάρτηση επιφάνειας τη φορά.</para>
+ <para>Αν τα όρια Z δεν καθορίζονται, τότε χρησιμοποιούνται τα μέγιστα και ελάχιστα της
συνάρτησης.</para>
+ <para>Παραδείγματα: <screen><prompt>genius></prompt>
<userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>
+ Show the surface plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ <para>
+ Available in version 1.0.19 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,label)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>
+ Plot a surface from data. The data is an n by 3 matrix whose
+ rows are the x, y and z coordinates. The data can also be
+ simply a vector whose length is a multiple of 3 and so
+ contains the triples of x, y, z. The data should contain at
+ least 3 points.
+ </para>
+ <para>Προαιρετικά μπορούμε να δώσουμε την ετικέτα και επίσης τα όρια. Αν δεν δίνονται τα όρια,
υπολογίζονται από τα δεδομένα, το <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link> δεν χρησιμοποιείται,
αν θέλετε να το χρησιμοποιήσετε, περάστε το ρητά. Αν δεν δίνεται η ετικέτα, τότε χρησιμοποιείται η κενή
ετικέτα.</para>
+ <para>Παραδείγματα: <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"My data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen></para>
+ <para>Ιδού ένα παράδειγμα πώς να σχεδιάσετε σε πολικές συντεταγμένες, ιδιαίτερα πώς να σχεδιάσετε
τη συνάρτηση <userinput>-r^2 * theta</userinput>: <screen><prompt>genius></prompt> <userinput>d:=null; for
r=0 to 1 by 0.1 do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen></para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)</synopsis>
+ <para>Σχεδιάστε μια επιφάνεια από κανονικά δεδομένα ορθογωνίου. Τα δεδομένα δίνεται σε έναν πίνακα
n επί m, όπου οι γραμμές είναι η συντεταγμένη x και οι στήλες είναι η συντεταγμένη y. Η συντεταγμένη x
διαιρείται σε ίσα n-1 υποδιαστήματα και η συντεταγμένη y διαιρείται σε ίσα m-1 υποδιαστήματα. Τα όρια
<varname>x1</varname> και <varname>x2</varname> δίνουν το διάστημα στον άξονα x που χρησιμοποιούμε, ενώ τα
όρια <varname>y1</varname> και <varname>y2</varname> δίνουν το διάστημα στον άξονα y που χρησιμοποιούμε. Αν
τα όρια <varname>z1</varname> και <varname>z2</varname> δεν δίνονται, υπολογίζονται από τ
α δεδομένα (για να είναι οι ακραίες τιμές από τα δεδομένα).</para>
+ <para>Προαιρετικά, μπορούμε να δώσουμε την ετικέτα. Αν η ετικέτα δεν δίνεται, τότε χρησιμοποιείται
η κενή ετικέτα.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> can be replaced by an
+ <varname>n</varname> by 3 matrix for a longer polyline.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως
υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>,<varname>z</varname>.
+ The input can be an <varname>n</varname> by 3 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως
υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>Καθαρίζει τις σχεδιασμένες λύσεις από τη συνάρτηση <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>.</para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
+ <para>Όταν ένα πεδίο διανύσματος είναι ενεργό, σχεδιάστε μια λύση με την καθορισμένη αρχική
συνθήκη. Η τυπική μέθοδος Ρούνγκε-Κούτα χρησιμοποιείται με αύξηση <varname>dt</varname> για ένα διάστημα
μήκους <varname>tlen</varname>.. Οι λύσεις μένουν στο γράφημα μέχρι να εμφανιστεί μια διαφορετική γραφική
παράσταση ή μέχρι να καλέσετε <link
linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>.
Μπορείτε επίσης να χρησιμοποιήσετε τη γραφική διεπαφή για να σχεδιάσετε λύσεις και να ορίσετε αρχικές
συνθήκες με το ποντίκι.</para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (funcx, funcy)</synopsis>
+ <synopsis>VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)</synopsis>
+ <para>Σχεδιάστε ένα δισδιάστατο διανυσματικό πεδίο. Η συνάρτηση <varname>funcx</varname> πρέπει να
είναι η dx/dt του διανυσματικού πεδίου και η συνάρτηση <varname>funcy</varname> πρέπει να είναι η dy/dt του
διανυσματικού πεδίου. Οι συναρτήσεις πρέπει να παίρνουν δύο πραγματικούς αριθμούς <varname>x</varname> και
<varname>y</varname>, ή έναν μοναδικό μιγαδικό αριθμό. Όταν η παράμετρος <link
linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link> είναι
<constant>true</constant>, τότε το μέγεθος των διανυσμάτων είναι κανονικοποιημένο. Δηλαδή, εμφανίζεται μόνο η
κατεύθυνση και όχι το μέγεθος.</para>
+ <para>Προαιρετικά, μπορείτε να ορίσετε τα όρια του παραθύρου σχεδίασης ως <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Αν δεν καθορίζονται τα όρια, τότε
εφαρμόζονται τα τρέχοντα όρια (Δείτε <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Η παράμετρος <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> ελέγχει τη
σχεδίαση του υπομνήματος.</para>
+ <para>Παραδείγματα: <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y,
`(x,y)=y^2-x, -1, 1, -1, 1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Παράδειγμα προγραμμάτων στην GEL</title>
+
+ <para>Ιδού μια συνάρτηση που υπολογίζει παραγοντικά: <programlisting><![CDATA[function f(x) = if x <= 1
then 1 else (f(x-1)*x)
+]]></programlisting></para>
+ <para>Με παραγραφοποίηση γίνεται: <programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting></para>
+ <para>Αυτή είναι η άμεση θύρα της παραγοντικής συνάρτησης από τη σελίδα εγχειριδίου
<application>bc</application>. Η σύνταξη φαίνεται παρόμοια με την <application>bc</application>, αλλά
διαφέρει στο ότι στην GEL η τελευταία παράσταση είναι αυτή που επιστρέφεται. Χρησιμοποιώντας τη συνάρτηση
<literal>return</literal>, θα πρέπει να είναι: <programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting></para>
+
+ <para>Ο ευκολότερος τρόπος να οριστεί μια παραγοντική συνάρτηση είναι χρησιμοποιώντας τον βρόχο
γινομένου όπως ακολουθεί. Αυτό δεν είναι μόνο ο πιο σύντομη και ο γρήγορη, αλλά επίσης η πιο αναγνώσιμη
έκδοση. <programlisting>function f(x) = prod k=1 to x do k
+</programlisting></para>
+
+ <para>Ιδού ένα μεγαλύτερο παράδειγμα, αυτό βασικά ξαναορίζει την εσωτερική συνάρτηση <link
linkend="gel-function-ref"><function>ref</function></link> για να υπολογίσει τη μορφή κλιμακωτής γραμμής ενός
πίνακα. Η συνάρτηση <function>ref</function> είναι ενσωματωμένη και πολύ γρηγορότερη, αλλά αυτό το παράδειγμα
δείχνει μερικά πιο σύνθετα γνωρίσματα της GEL. <programlisting><![CDATA[# Calculate the row-echelon form of a
matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting></para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Ρυθμίσεις</title>
+
+ <para>Για να ρυθμίσετε το <application>Εργαλείο μαθηματικών Genius</application>, επιλέξτε
<menuchoice><guimenu>Ρυθμίσεις</guimenu><guimenuitem>Προτιμήσεις</guimenuitem></menuchoice>. Υπάρχουν αρκετές
βασικές παράμετροι που παρέχονται από την αριθμομηχανή πέρα από αυτές που δίνονται από την τυπική βιβλιοθήκη.
Αυτές ελέγχουν τη συμπεριφορά της αριθμομηχανής.</para>
+
+ <note>
+ <title>Αλλαγή ρυθμίσεων με την GEL</title>
+ <para>Πολλές από τις ρυθμίσεις στη Genius είναι απλά καθολικές μεταβλητές και μπορούν να υπολογιστούν
και να εκχωρηθούν με τον ίδιο τρόπο όπως οι κανονικές μεταβλητές. Δείτε <xref
linkend="genius-gel-variables"/> για τον υπολογισμό και την εκχώρηση σε μεταβλητές και <xref
linkend="genius-gel-function-parameters"/> για έναν κατάλογο ρυθμίσεων που μπορούν να τροποποιηθούν με αυτόν
τον τρόπο.</para>
+ <para>Ως παράδειγμα, μπορείτε να ορίσετε τον μέγιστο αριθμό ψηφίων σε ένα αποτέλεσμα σε 12
πληκτρολογώντας: <programlisting>MaxDigits = 12
+</programlisting></para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Έξοδος</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Μέγιστος αριθμός ψηφίων στην έξοδο</guilabel>
+ </term>
+ <listitem>
+ <para>Ο μέγιστος αριθμός ψηφίων σε ένα αποτέλεσμα (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Αποτελέσματα ως αριθμοί κινητής υποδιαστολής</guilabel>
+ </term>
+ <listitem>
+ <para>Αν τα αποτελέσματα πρέπει να εμφανίζονται πάντα ως αριθμοί κινητής υποδιαστολής
(<link linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Αριθμοί κινητής υποδιαστολής σε επιστημονική σημειογραφία</guilabel>
+ </term>
+ <listitem>
+ <para>Αν οι αριθμοί κινητής υποδιαστολής πρέπει να είναι σε επιστημονική σημειογραφία
(<link linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Να εμφανίζονται πάντα πλήρεις παραστάσεις</guilabel>
+ </term>
+ <listitem>
+ <para>Αν πρέπει να εμφανίζονται πλήρεις παραστάσεις για μη αριθμητικές τιμές επιστροφής
(μεγαλύτερες από μια γραμμή) (<link
linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Χρήση μικτών κλασμάτων</guilabel>
+ </term>
+ <listitem>
+ <para>Αν τα κλάσματα πρέπει να εμφανίζονται ως μικτά κλάσματα όπως "1 1/3" αντί για "4/3".
(<link linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Να εμφανίζεται 0.0 όταν ο αριθμός κινητής υποδιαστολής είναι μικρότερος από 10^-x (το
0=να μην περικόπτεται ποτέ)</guilabel>
+ </term>
+ <listitem>
+ <para>How to chop output. But only when other numbers nearby are large.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Να περικόπτονται οι αριθμοί μόνο όταν ένας άλλος αριθμός είναι μεγαλύτερος από
10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>When to chop output. This is set by the parameter <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Απομνημόνευση ρυθμίσεων εξόδου σε όλες τις συνεδρίες</guilabel>
+ </term>
+ <listitem>
+ <para>Αν θα πρέπει οι ρυθμίσεις εξόδου στο <guilabel>Επιλογές εξόδου αριθμού/παράστασης</guilabel>
να απομνημονεύονται για την επόμενη συνεδρία. Δεν εφαρμόζεται στο πλαίσιο <guilabel>Επιλογές εξόδου
σφάλματος/πληροφοριών</guilabel>.</para>
+ <para>Αν δεν σημειωθεί, είτε η προεπιλογή είτε οποιεσδήποτε προηγουμένως αποθηκευμένες
ρυθμίσεις χρησιμοποιούνται κάθε φορά που η Genius ξεκινά. Σημειώστε ότι οι ρυθμίσεις αποθηκεύονται στο τέλος
της συνεδρίας, έτσι αν θέλετε να αλλάξετε τις προεπιλογές, σημειώστε αυτό το πλαίσιο, επανεκκινήστε
<application>Εργαλείο μαθηματικών Genius</application> και έπειτα αποεπιλέξτε το ξανά.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Να εμφανίζονται τα σφάλματα σε διάλογο</guilabel>
+ </term>
+ <listitem>
+ <para>Αν οριστεί τα σφάλματα θα εμφανίζονται σε έναν ξεχωριστό διάλογο, αν δεν οριστεί τα σφάλματα
θα τυπωθούν στην κονσόλα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Να εμφανίζονται τα μηνύματα πληροφοριών σε έναν διάλογο</guilabel>
+ </term>
+ <listitem>
+ <para>Αν οριστεί τα μηνύματα πληροφοριών θα εμφανίζονται σε έναν ξεχωριστό διάλογο, αν δεν οριστεί τα
μηνύματα πληροφοριών θα τυπωθούν στην κονσόλα.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Ο μέγιστος αριθμός σφαλμάτων που θα εμφανίζονται</guilabel>
+ </term>
+ <listitem>
+ <para>Ο μέγιστος αριθμός σφαλμάτων που θα επιστρέφεται με έναν υπολογισμό (<link
linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). Αν το ορίσετε σε 0, τότε όλα τα
σφάλματα επιστρέφονται πάντα. Συνήθως, αν κάποιος βρόχος προκαλεί πολλά σφάλματα, τότε είναι απίθανο ότι θα
μπορέσετε να πάρετε νόημα από περισσότερους εκτός από λίγους από αυτούς, έτσι βλέποντας έναν μεγάλο κατάλογο
σφαλμάτων δεν είναι συνήθως χρήσιμο.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Πέρα από αυτές τις προτιμήσεις, υπάρχουν κάποιες προτιμήσεις που μπορούν να αλλαχθούν μόνο
ορίζοντας τες στην κονσόλα χώρου εργασίας. Για άλλες που μπορούν να επηρεάσουν την έξοδο δείτε <xref
linkend="genius-gel-function-parameters"/>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>Η βάση που θα χρησιμοποιηθεί για την έξοδο ακεραίων</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>A string, can be <literal>"normal"</literal>,
+<literal>"latex"</literal>, <literal>"mathml"</literal> or
+<literal>"troff"</literal> and it will affect how matrices (and perhaps other
+stuff) is printed, useful for pasting into documents. Normal style is the
+default human readable printing style of <application>Genius Mathematics Tool</application>. The other
styles are for
+typesetting in LaTeX, MathML (XML), or in Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Ακρίβεια</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Ακρίβεια κινητής υποδιαστολής</guilabel>
+ </term>
+ <listitem>
+ <para>Η ακρίβεια κινητής υποδιαστολής σε δυαδικά ψηφία (<link
linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>). Σημειώστε ότι αλλάζοντας
αυτό επηρεάζει μόνο τις νέες υπολογιζόμενες ποσότητες. Οι παλιές τιμές που αποθηκεύονται σε μεταβλητές είναι
προφανώς ακόμα στην παλιά ακρίβεια και αν θέλετε να τις έχετε πιο ακριβείς, θα πρέπει να τις
επαναϋπολογίσετε. Οι εξαιρέσεις σε αυτό είναι οι σταθερές συστήματος όπως <link
linkend="gel-function-pi"><function>pi</function></link> ή <link
linkend="gel-function-e"><function>e</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Να απομνημονεύεται η ρύθμιση ακρίβειας σε όλες τις συνεδρίες</guilabel>
+ </term>
+ <listitem>
+ <para>Αν θα πρέπει η ακρίβεια να οριστεί για να απομνημονεύεται για την επόμενη συνεδρία. Αν δεν
σημειωθεί, είτε η προεπιλεγμένη είτε οποιαδήποτε προηγουμένως αποθηκευμένη ρύθμιση θα χρησιμοποιηθεί, κάθε
φορά που ξεκινά η Genius. Σημειώστε ότι οι ρυθμίσεις αποθηκεύονται στο τέλος της συνεδρίας και έτσι αν θέλετε
να αλλάξετε την προεπιλογή σημειώστε αυτό το πλαίσιο, επανεκκινήστε τη genius και έπειτα αποεπιλέξτε την
πάλι.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Τερματικό</title>
+
+ <para>Το τερματικό αναφέρεται στην κονσόλα στην περιοχή εργασίας.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Γραμμές οπισθοκύλισης</guilabel>
+ </term>
+ <listitem>
+ <para>Γραμμές οπισθοκύλισης στο τερματικό.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Γραμματοσειρά</guilabel>
+ </term>
+ <listitem>
+ <para>Η γραμματοσειρά που θα χρησιμοποιηθεί στο τερματικό.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Μαύρο σε λευκό</guilabel>
+ </term>
+ <listitem>
+ <para>Αν θα χρησιμοποιήσετε μαύρο σε λευκό στο τερματικό.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Δρομέας που αναβοσβήνει</guilabel>
+ </term>
+ <listitem>
+ <para>Αν ο δρομέας στο τερματικό πρέπει να αναβοσβήνει, όταν το τερματικό εστιάζει. Αυτό μπορεί
μερικές φορές να είναι ενοχλητικό και δημιουργεί αδρανή κυκλοφορία αν χρησιμοποιείτε τη Genius
απομακρυσμένα.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Μνήμη</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Μέγιστος αριθμός κόμβων για κατανομή</guilabel>
+ </term>
+ <listitem>
+ <para>Εσωτερικά, όλα τα δεδομένα τίθενται σε μικρούς κόμβους στη μνήμη. Αυτό δίνει ένα όριο στον
μέγιστο αριθμό κόμβων για κατανομή στους υπολογισμούς. Αυτό το όριο αποφεύγει το πρόβλημα έλλειψης μνήμης, αν
κάνετε κάτι κατά λάθος, που χρησιμοποιεί υπερβολική μνήμη, όπως η αναδρομή χωρίς τέλος. Αυτό μπορεί να
καθυστερήσει τον υπολογιστή σας και να τον δυσκολέψει ακόμα και να διακόψει το πρόγραμμα.</para>
+ <para>Μόλις φτάσει το όριο, το <application>Εργαλείο μαθηματικών Genius</application> ζητά αν θέλετε
να διακόψετε τον υπολογισμό ή αν θέλετε να συνεχίσετε. Αν συνεχίσετε, δεν εφαρμόζεται όριο και είναι πιθανό
στον υπολογιστής σας να λείψει μνήμη. Το όριο θα εφαρμοστεί ξανά την επόμενη φορά που θα εκτελέσετε ένα
πρόγραμμα ή μια παράσταση στην κονσόλα ανεξάρτητα από το πώς απαντήσατε στην ερώτηση.</para>
+ <para>Ορίζοντας το όριο σε μηδέν σημαίνει ότι δεν υπάρχει όριο στο πόση μνήμη χρησιμοποιεί η
Genius.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>Περί του <application>Εργαλείο μαθηματικών Genius</application></title>
+
+ <para>Το <application>Εργαλείο μαθηματικών Genius</application> γράφτηκε από τον Jiří (George) Lebl
(<email>jirka 5z com</email>). Το ιστορικό του <application>Εργαλείο μαθηματικών Genius</application>
πηγαίνει πίσω στο τέλος του 1997. Ήταν το πρώτο πρόγραμμα αριθμομηχανής για GNOME, αλλά έπειτα επεκτάθηκε
πέρα από μια απλή επιτραπέζια αριθμομηχανή. Για να βρείτε περισσότερες πληροφορίες για το
<application>Εργαλείο μαθηματικών Genius</application>, παρακαλούμε επισκεφτείτε την <ulink
url="http://www.jirka.org/genius.html" type="http">ιστοσελίδα Genius</ulink>.</para>
+ <para>Για να αναφέρετε ένα σφάλμα ή να κάνετε μια πρόταση σχετικά με αυτήν την εφαρμογή ή αυτό το
εγχειρίδιο, στείλτε ένα μήνυμα σε μένα (τον συγγραφέα) ή στείλτε στην ταχυδρομική λίστα (δείτε την
ιστοσελίδα).</para>
+
+ <para> This program is distributed under the terms of the GNU
+ General Public license as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option)
+ any later version. A copy of this license can be found at this
+ <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">link</ulink>, or in the file
+ COPYING included with the source code of this program. </para>
+
+ <para>Jiří Lebl was during various parts of the development
+ partially supported for the work by NSF grants DMS 0900885,
+ DMS 1362337,
+ the University of Illinois at Urbana-Champaign,
+ the University of California at San Diego,
+ the University of Wisconsin-Madison, and
+ Oklahoma State University. The software has
+ been used for both teaching and research.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/el/html/ch11s02.html b/help/el/html/ch11s02.html
index 6affe30..8e21850 100644
--- a/help/el/html/ch11s02.html
+++ b/help/el/html/ch11s02.html
@@ -8,8 +8,8 @@ is blocked until the user responds. If <code class="varname">default</code> is
= 5764801
</pre></dd><dt><span class="term"><a name="gel-function-Evaluate"></a>Evaluate</span></dt><dd><pre
class="synopsis">Evaluate (str)</pre><p>Αναλύει και υπολογίζει μια συμβολοσειρά.</p></dd><dt><span
class="term"><a name="gel-function-GetCurrentModulo"></a>GetCurrentModulo</span></dt><dd><pre
class="synopsis">GetCurrentModulo</pre><p>Λήψη του τρέχοντος ισοϋπόλοιπου από το περιεχόμενο έξω από τη
συνάρτηση. Δηλαδή, αν εκτελέστηκε έξω από την συνάρτηση σε modulo (χρησιμοποιώντας <code
class="literal">mod</code>), τότε αυτό επιστρέφει ποιο ήταν αυτό το modulo. Κανονικά το καλούμενο σώμα της
συνάρτησης δεν εκτελείται σε αριθμητική υπολοίπων και αυτή η ενσωματωμένη συνάρτηση κάνει δυνατή την �
�νημέρωση των συναρτήσεων GEL αριθμητικής υπολοίπων.</p></dd><dt><span class="term"><a
name="gel-function-Identity"></a>Identity</span></dt><dd><pre class="synopsis">Identity (x)</pre><p>Identity
function, returns its argument. It is equivalent to <strong class="userinput"><code>function
Identity(x)=x</code></strong>.</p></dd><dt><span class="term"><a
name="gel-function-IntegerFromBoolean"></a>IntegerFromBoolean</span></dt><dd><pre
class="synopsis">IntegerFromBoolean (bval)</pre><p>Κάνει τον ακέραιο (0 για <code
class="constant">ψευδή</code> ή 1 για <code class="constant">αληθή</code>) από μια λογική τιμή. Η <code
class="varname">bval</code> μπορεί επίσης να είναι ένας αριθμός οπότε μια μη μηδενική τιμή θα ερμηνευτεί ως
<code class="constant">αληθής</code> και το μηδέν θα ερμηνευτεί ως <cod
e class="constant">ψευδής</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsBoolean"></a>IsBoolean</span></dt><dd><pre class="synopsis">IsBoolean
(arg)</pre><p>Ελέγχει αν το όρισμα είναι λογική τιμή (και όχι αριθμός).</p></dd><dt><span class="term"><a
name="gel-function-IsDefined"></a>IsDefined</span></dt><dd><pre class="synopsis">IsDefined
(id)</pre><p>Ελέγχει αν ένα αναγνωριστικό ορίζεται. Θα πρέπει να περάσετε μια συμβολοσειρά ή και
αναγνωριστικό. Αν περάσετε έναν πίνακα, κάθε καταχώριση θα υπολογιστεί ξεχωριστά και ο πίνακας πρέπει να
περιέχει συμβολοσειρές ή αναγνωριστικά.</p></dd><dt><span class="term"><a
name="gel-function-IsFunction"></a>IsFunction</span></dt><dd><pre class="synopsis">IsFunction
(arg)</pre><p>Ελ�
�γχει αν το όρισμα είναι συνάρτηση.</p></dd><dt><span class="term"><a
name="gel-function-IsFunctionOrIdentifier"></a>IsFunctionOrIdentifier</span></dt><dd><pre
class="synopsis">IsFunctionOrIdentifier (arg)</pre><p>Ελέγχει αν το όρισμα είναι συνάρτηση ή ένα
αναγνωριστικό.</p></dd><dt><span class="term"><a
name="gel-function-IsFunctionRef"></a>IsFunctionRef</span></dt><dd><pre class="synopsis">IsFunctionRef
(arg)</pre><p>Ελέγχει αν το όρισμα είναι μια συνάρτηση αναφοράς. Αυτό περιλαμβάνει αναφορές
μεταβλητών.</p></dd><dt><span class="term"><a name="gel-function-IsMatrix"></a>IsMatrix</span></dt><dd><pre
class="synopsis">IsMatrix (arg)</pre><p>Ελέγχει αν ένα όρισμα είναι ένας πίνακας. Αν και η <code
class="constant">null</code> θεωρείται μερικές φορές ως κενός �
�ίνακας, η συνάρτηση <code class="function">IsMatrix</code> δεν θεωρεί την <code
class="constant">null</code> ως πίνακα.</p></dd><dt><span class="term"><a
name="gel-function-IsNull"></a>IsNull</span></dt><dd><pre class="synopsis">IsNull (arg)</pre><p>Ελέγχει αν το
όρισμα είναι μια <code class="constant">null</code>.</p></dd><dt><span class="term"><a
name="gel-function-IsString"></a>IsString</span></dt><dd><pre class="synopsis">IsString (arg)</pre><p>Ελέγχει
αν το όρισμα είναι μια συμβολοσειρά κειμένου.</p></dd><dt><span class="term"><a
name="gel-function-IsValue"></a>IsValue</span></dt><dd><pre class="synopsis">IsValue (arg)</pre><p>Ελέγχει αν
το όρισμα είναι αριθμός.</p></dd><dt><span class="term"><a
name="gel-function-Parse"></a>Parse</span></dt><dd><pre class="synopsis">Parse (str)</pre><p>Αναλύει, αλλά
δεν υπολογίζε
ι μια συμβολοσειρά. Σημειώστε ότι, συγκεκριμένος προϋπολογισμός γίνεται κατά τη διάρκεια του σταδίου
ανάλυσης.</p></dd><dt><span class="term"><a
name="gel-function-SetFunctionFlags"></a>SetFunctionFlags</span></dt><dd><pre
class="synopsis">SetFunctionFlags (id,flags...)</pre><p>Ορίζει σημαίες για μια συνάρτηση, προς το παρόν <code
class="literal">"PropagateMod"</code> and <code class="literal">"NoModuloArguments"</code>. Αν η <code
class="literal">"PropagateMod"</code> οριστεί, τότε το σώμα της συνάρτησης υπολογίζεται σε αριθμητική
υπολοίπων, όταν η συνάρτηση καλείται μέσα σε μια ομάδα που υπολογίστηκε χρησιμοποιώντας αριθμητική υπολοίπων
(χρησιμοποιώντας <code class="literal">mod<
/code>). Αν είναι <code class="literal">"NoModuloArguments"</code>, τότε τα ορίσματα της συνάρτησης δεν
υπολογίζονται ποτέ χρησιμοποιώντας αριθμητική υπολοίπων.</p></dd><dt><span class="term"><a
name="gel-function-SetHelp"></a>SetHelp</span></dt><dd><pre class="synopsis">SetHelp
(id,category,desc)</pre><p>Ορισμός της γραμμής περιγραφής κατηγορίας και βοήθειας για μια
συνάρτηση.</p></dd><dt><span class="term"><a
name="gel-function-SetHelpAlias"></a>SetHelpAlias</span></dt><dd><pre class="synopsis">SetHelpAlias
(id,alias)</pre><p>Εγκαθιστά μια παραλλαγή βοήθειας.</p></dd><dt><span class="term"><a
name="gel-function-chdir"></a>chdir</span></dt><dd><pre class="synopsis">chdir (dir)</pre><p>Αλλάζει τον
τρέχοντα κατάλογο, το ίδιο με <span class="command"><strong>cd</stro
ng></span>.</p></dd><dt><span class="term"><a
name="gel-function-CurrentTime"></a>CurrentTime</span></dt><dd><pre
class="synopsis">CurrentTime</pre><p>Επιστρέφει τον τρέχοντα χρόνο UNIX με ακρίβεια μικροδευτερολέπτου ως
έναν αριθμό κινητής υποδιαστολής. Δηλαδή, επιστρέφει τον αριθμό των δευτερολέπτων από την 1η Ιανουαρίου
1970.</p><p>Version 1.0.15 onwards.</p></dd><dt><span class="term"><a
name="gel-function-display"></a>display</span></dt><dd><pre class="synopsis">display
(str,expr)</pre><p>Εμφανίζει μια συμβολοσειρά και μια έκφραση με άνω-κάτω τελεία για να τις
διακρίνει.</p></dd><dt><span class="term"><a
name="gel-function-DisplayVariables"></a>DisplayVariables</span></dt><dd><pre
class="synopsis">DisplayVariables (var1,var2,...)</pre><p>Εμφάνιση συνό
λου μεταβλητών. Οι μεταβλητές μπορούν να δοθούν ως συμβολοσειρές ή αναγνωριστικά. Για παράδειγμα: </p><pre
class="programlisting">DisplayVariables(`x,`y,`z)
</pre><p>Αν κληθεί χωρίς ορίσματα (πρέπει να παρέχεται άδεια λίστα ορισμάτων), όπως </p><pre
class="programlisting">DisplayVariables()
- </pre><p> τότε όλες οι μεταβλητές εκτυπώνονται συμπεριλαμβανομένου ενός ιχνηλάτηση στοίβας
παρόμιου με την <span class="guilabel">Εμφάνιση μεταβλητών χρήστη</span> στην έκδοση γραφικών.</p><p>Version
1.0.18 onwards.</p></dd><dt><span class="term"><a name="gel-function-error"></a>error</span></dt><dd><pre
class="synopsis">error (str)</pre><p>Εμφανίζει μια συμβολοσειρά στη ροή σφάλματος (στην
κονσόλα).</p></dd><dt><span class="term"><a name="gel-function-exit"></a>exit</span></dt><dd><pre
class="synopsis">exit</pre><p>Παραλλαγές: <code class="function">quit</code></p><p>Φεύγει από το
πρόγραμμα.</p></dd><dt><span class="term"><a name="gel-function-false"></a>false</span></dt><dd><pre
class="synopsis">false</pre><p>Παραλλαγές: <code class="function">False</code
<code class="function">FALSE</code></p><p>Η λογική τιμή <code
class="constant">ψευδές</code>.</p></dd><dt><span class="term"><a
name="gel-function-manual"></a>manual</span></dt><dd><pre class="synopsis">manual</pre><p>Προβολή του
εγχειριδίου χρήστη.</p></dd><dt><span class="term"><a
name="gel-function-print"></a>print</span></dt><dd><pre class="synopsis">print (str)</pre><p>Εμφανίζει μια
παράσταση και έπειτα δίνει μια νέα γραμμή. Το όρισμα <code class="varname">str</code> μπορεί να είναι
οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.</p></dd><dt><span class="term"><a
name="gel-function-printn"></a>printn</span></dt><dd><pre class="synopsis">printn (str)</pre><p>Εμφανίζει
μια παράσταση χωρίς μια τελική νέα γραμμή. Το όρισμα <code class="varname"
str</code> μπορεί να είναι οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.</p></dd><dt><span
class="term"><a name="gel-function-PrintTable"></a>PrintTable</span></dt><dd><pre
class="synopsis">PrintTable (f,v)</pre><p>Εκτύπωση ενός πίνακα τιμών για μια λειτουργία. Οι τιμές είναι στο
διάνυσμα <code class="varname">vvarname>. PrintTable (f,[0:10])
- vvarname> </code></p><p>Version 1.0.18 onwards.</p></dd><dt><span class="term"><a
name="gel-function-protect"></a>protect</span></dt><dd><pre class="synopsis">protect (id)</pre><p>Προστατεύει
μια μεταβλητή από τροποποίηση. Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η
τυχαία αντικατάστασή τους.</p></dd><dt><span class="term"><a
name="gel-function-ProtectAll"></a>ProtectAll</span></dt><dd><pre class="synopsis">ProtectAll
()</pre><p>Προστατεύει όλες τις τρέχουσες ορισμένες μεταβλητές, παραμέτρους και συναρτήσεις από τροποποίηση.
Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η τυχαία αντικατάστασή τους. Κανονικά
το <span clas
s="application">Εργαλείο μαθηματικών Genius</span> θεωρεί απροστάτευτες τις μεταβλητές που όρισε ο
χρήστης.</p><p>Version 1.0.7 onwards.</p></dd><dt><span class="term"><a
name="gel-function-set"></a>set</span></dt><dd><pre class="synopsis">set (id,val)</pre><p>Set a global
variable. The <code class="varname">id</code>
+ </pre><p> τότε όλες οι μεταβλητές εκτυπώνονται συμπεριλαμβανομένου ενός ιχνηλάτηση στοίβας
παρόμιου με την <span class="guilabel">Εμφάνιση μεταβλητών χρήστη</span> στην έκδοση γραφικών.</p><p>Version
1.0.18 onwards.</p></dd><dt><span class="term"><a name="gel-function-error"></a>error</span></dt><dd><pre
class="synopsis">error (str)</pre><p>Εμφανίζει μια συμβολοσειρά στη ροή σφάλματος (στην
κονσόλα).</p></dd><dt><span class="term"><a name="gel-function-exit"></a>exit</span></dt><dd><pre
class="synopsis">exit</pre><p>Παραλλαγές: <code class="function">quit</code></p><p>Φεύγει από το
πρόγραμμα.</p></dd><dt><span class="term"><a name="gel-function-false"></a>false</span></dt><dd><pre
class="synopsis">false</pre><p>Παραλλαγές: <code class="function">False</code
<code class="function">FALSE</code></p><p>Η λογική τιμή <code
class="constant">ψευδές</code>.</p></dd><dt><span class="term"><a
name="gel-function-manual"></a>manual</span></dt><dd><pre class="synopsis">manual</pre><p>Προβολή του
εγχειριδίου χρήστη.</p></dd><dt><span class="term"><a
name="gel-function-print"></a>print</span></dt><dd><pre class="synopsis">print (str)</pre><p>Εμφανίζει μια
παράσταση και έπειτα δίνει μια νέα γραμμή. Το όρισμα <code class="varname">str</code> μπορεί να είναι
οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.</p></dd><dt><span class="term"><a
name="gel-function-printn"></a>printn</span></dt><dd><pre class="synopsis">printn (str)</pre><p>Εμφανίζει
μια παράσταση χωρίς μια τελική νέα γραμμή. Το όρισμα <code class="varname"
str</code> μπορεί να είναι οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.</p></dd><dt><span
class="term"><a name="gel-function-PrintTable"></a>PrintTable</span></dt><dd><pre
class="synopsis">PrintTable (f,v)</pre><p>Εκτύπωση ενός πίνακα τιμών για μια λειτουργία. Οι τιμές είναι στο
διάνυσμα <code class="varname">v</code>. Μπορείτε να χρησιμοποιήσετε τη σημειογραφία δόμησης διανύσματος ως
εξής: </p><pre class="programlisting">PrintTable (f,[0:10])
+ </pre><p> Αν <code class="varname">v</code> είναι ένας θετικός ακέραιος, τότε θα χρησιμοποιηθεί ο
πίνακας των ακεραίων από το 1 έως και το v.</p><p>Version 1.0.18 onwards.</p></dd><dt><span class="term"><a
name="gel-function-protect"></a>protect</span></dt><dd><pre class="synopsis">protect (id)</pre><p>Προστατεύει
μια μεταβλητή από τροποποίηση. Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η
τυχαία αντικατάστασή τους.</p></dd><dt><span class="term"><a
name="gel-function-ProtectAll"></a>ProtectAll</span></dt><dd><pre class="synopsis">ProtectAll
()</pre><p>Προστατεύει όλες τις τρέχουσες ορισμένες μεταβλητές, παραμέτρους και συναρτήσεις από τροποποίηση.
Αυτό χρησ
ιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η τυχαία αντικατάστασή τους. Κανονικά το <span
class="application">Εργαλείο μαθηματικών Genius</span> θεωρεί απροστάτευτες τις μεταβλητές που όρισε ο
χρήστης.</p><p>Version 1.0.7 onwards.</p></dd><dt><span class="term"><a
name="gel-function-set"></a>set</span></dt><dd><pre class="synopsis">set (id,val)</pre><p>Set a global
variable. The <code class="varname">id</code>
can be either a string or a quoted identifier.
For example:
</p><pre class="programlisting">set(`x,1)
diff --git a/help/el/html/index.html b/help/el/html/index.html
index 4d3e82d..30f92f3 100644
--- a/help/el/html/index.html
+++ b/help/el/html/index.html
@@ -1,5 +1,5 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Εγχειρίδιο
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Εγχειρίδιο για το εργαλείο μαθηματικών."><link rel="home" href="index.html" title="Εγχειρίδιο
Genius"><link rel="next" href="ch01.html" title="Κεφάλαιο 1. Εισαγωγή"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Εγχειρίδιο Genius</th></tr><tr><td width="20%"
align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n"
href="ch01.html">Επόμενο</a></td></tr></table><hr></div><div lang="el" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Εγχειρίδιο Ge
nius</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span
class="firstname">Jiří</span> <span class="surname">Lebl</span></h3><div class="affiliation"><span
class="orgname">Πανεπιστήμιο πολιτείας Οκλαχόμα<br></span><div class="address"><p> <code class="email"><<a
class="email" href="mailto:jirka 5z com">jirka 5z com</a>></code> </p></div></div></div><div
class="author"><h3 class="author"><span class="firstname">Kai</span> <span
class="surname">Willadsen</span></h3><div class="affiliation"><span class="orgname">Πανεπιστήμιο του
Κουινσλάντ, Αυστραλία<br></span><div class="address"><p> <code class="email"><<a class="email"
href="mailto:kaiw itee uq edu au">kaiw itee uq edu au</a>></code>
</p></div></div></div></div></div><div><p class="releaseinfo">This manual describes version 1.0.22 of Genius.
- </p></div><div><p class="copyright">Πνευματικά Δικαιώματα © 1997-2016 Jiří (George)
Lebl</p></div><div><p class="copyright">Πνευματικά Δικαιώματα © 2004 Kai Willadsen</p></div><div><p
class="copyright">Πνευματικά Δικαιώματα © 2013 Δημήτρης Σπίγγος (dmtrs32 gmail com)</p></div><div><p
class="copyright">Πνευματικά Δικαιώματα © 2014 Μαρία Μαυρίδου (mavridou gmail com)</p></div><div><div
class="legalnotice"><a name="legalnotice"></a><p>Χορηγείται άδεια αντιγραφής, διανομής και/ή τροποποίησης του
παρόντος εγγράφου υπό τους όρους της έκδοσης 1.1 της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL), ή οποιασδήποτε
μεταγενέστερης έκδοσής αυτής από το Ίδρυμα Ελεύθερου Λογισμικού (FSF), χωρ
ίς αμετάβλητες ενότητες, κείμενα εμπροσθοφύλλου και κείμενα οπισθοφύλλου. Αντίγραφο της άδειας GFDL είναι
διαθέσιμο στον ακόλουθο <a class="ulink" href="ghelp:fdl" target="_top">σύνδεσμο</a>, ή στο αρχείο
COPYING-DOCS που διανέμεται μαζί με το παρόν εγχειρίδιο.</p><p>Αυτό το εγχειρίδιο αποτελεί μέρος της συλλογής
εγχειριδίων του GNOME που διανέμονται υπό τους όρους της GFDL. Αν επιθυμείτε να διανείμετε το παρόν
εγχειρίδιο ξεχωριστά από τη συλλογή, οφείλετε να προσθέσετε στο εγχειρίδιο αντίγραφο της άδειας χρήσης, όπως
προβλέπεται στην ενότητα 6 της άδειας.</p><p>Πολλές από �
�ις ονομασίες που χρησιμοποιούνται από εταιρείες για την διαφοροποίηση των προϊόντων και υπηρεσιών τους
έχουν καταχωρηθεί ως εμπορικά σήματα. Σε όποιο σημείο της τεκμηρίωσης GNOME τυχόν εμφανίζονται αυτές οι
ονομασίες, και εφόσον τα μέλη του Έργου τεκμηρίωσης GNOME έχουν λάβει γνώση αυτών των εμπορικών σημάτων, οι
ονομασίες ή τα αρχικά αυτών θα γράφονται με κεφαλαίους χαρακτήρες.</p><p>ΤΟ ΠΑΡΟΝ ΕΓΓΡΑΦΟ ΚΑΙ ΟΙ ΤΡΟΠΟΙΗΜΕΝΕΣ
ΕΚΔΟΣΕΙΣ ΑΥΤΟΥ ΠΑΡΕΧΟΝΤΑΙ ΥΠΟ ΤΟΥΣ ΟΡΟΥΣ ΤΗΣ ΕΛΕΥΘΕΡΗΣ ΑΔΕΙΑΣ ΤΕΚΜΗΡΙΩΣΗΣ GNU (GFDL) ΚΑΙ ΜΕ ΤΗΝ ΠΕΡΑΙΤΕΡΩ
ΔΙΕΥΚΡΙΝΙΣΗ ΟΤΙ: </
p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>ΤΟ ΠΑΡΟΝ ΕΓΓΡΑΦΟ
ΠΑΡΕΧΕΤΑΙ "ΩΣ ΕΧΕΙ", ΧΩΡΙΣ ΟΠΟΙΑΔΗΠΟΤΕ ΑΛΛΗ ΕΓΓΥΗΣΗ, ΕΙΤΕ ΡΗΤΗ ΕΙΤΕ ΣΙΩΠΗΡΗ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ, ΧΩΡΙΣ
ΠΕΡΙΟΡΙΣΜΟ, ΤΗΣ ΕΓΓΥΗΣΗΣ ΟΤΙ ΤΟ ΕΓΓΡΑΦΟ, Ή Η ΤΡΟΠΟΠΟΙΗΜΕΝΗ ΕΚΔΟΣΗ ΑΥΤΟΥ, ΕΙΝΑΙ ΕΜΠΟΡΕΥΣΙΜΟ, ΚΑΤΑΛΛΗΛΟ ΓΙΑ
ΕΙΔΙΚΟ ΣΚΟΠΟ ΚΑΙ ΔΕΝ ΠΡΟΣΒΑΛΛΕΙ ΔΙΚΑΙΩΜΑΤΑ ΤΡΙΤΩΝ. Ο ΧΡΗΣΤΗΣ ΑΝΑΛΑΜΒΑΝΕΙ ΕΞ ΟΛΟΚΛΗΡΟΥ ΤΗΝ ΕΘΥΝΗ ΩΣ ΠΡΟΣ ΤΗΝ
ΠΟΙΟΤΗΤΑ, ΤΗΝ ΑΚΡΙΒΕΙΑ ΚΑΙ ΤΗΝ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή ΤΗΣ ΤΡΟΠΟΠΟΙΗΜΕΝΗΣ ΕΚΔΟΣΗΣ ΑΥΤΟΥ. ΣΕ ΠΕΡΙΠΤΩΣΗ ΠΟΥ
ΟΠΟΙΟΔΗΠΟΤΕ ΕΓΓΡΑΦΟ Ή ΤΡΟΠΟΠΟΙΗΜΕΝΗ ΕΚΔΟΣΗ ΑΥΤΟΥ ΑΠΟΔΕΙΧ
ΘΟΥΝ ΕΛΑΤΤΩΜΑΤΙΚΑ ΚΑΘ' ΟΙΟΝΔΗΠΟΤΕ ΤΡΟΠΟ, Ο ΧΡΗΣΤΗΣ (ΚΑΙ ΟΧΙ Ο ΑΡΧΙΚΟΣ ΣΥΓΓΡΑΦΕΑΣ, ΔΗΜΙΟΥΡΓΟΣ Ή ΟΠΟΙΟΣΔΗΠΟΤΕ
ΣΥΝΤΕΛΕΣΤΗΣ) ΑΝΑΛΑΜΒΑΝΕΙ ΤΟ ΚΟΣΤΟΣ ΟΠΟΙΑΣΔΗΠΟΤΕ ΑΝΑΓΚΑΙΑΣ ΣΥΝΤΗΡΗΣΗΣ, ΕΠΙΣΚΕΥΗΣ Ή ΔΙΟΡΘΩΣΗΣ. Η ΠΑΡΟΥΣΑ
ΑΠΟΠΟΙΗΣΗ ΕΓΓΥΗΣΗΣ ΑΠΟΤΕΛΕΙ ΑΝΑΠΟΣΠΑΣΤΟ ΜΕΡΟΣ ΤΗΣ ΑΔΕΙΑΣ. ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΟΥΔΕΜΙΑ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή
ΤΡΟΠΟΠΟΙΗΜΕΝΩΝ ΕΚΔΟΣΕΩΝ ΑΥΤΟΥ ΣΥΜΦΩΝΑ ΜΕ ΤΟΥΣ ΟΡΟΥΣ ΤΗΣ ΠΑΡΟΥΣΑΣ, ΠΑΡΑ ΜΟΝΟ ΕΑΝ ΣΥΝΟΔΕΥΕΤΑΙ ΑΠΟ ΤΗΝ ΑΠΟΠΟΙΗΣΗ
ΕΓΓΥΗΣΗΣ, ΚΑΙ</p></li><li class="listitem"><p>Ο ΔΗΜΙΟΥΡΓΟΣ, Ο ΑΡΧΙΚΟΣ ΣΥΓΓΡΑΦΕΑΣ, ΟΙ ΣΥΝΤΕΛΕΣΤΕΣ Ή ΟΙ
ΔΙΑΝΟΜΕΙΣ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή Τ�
�ΟΠΟΠΟΙΗΜΕΝΗΣ ΕΚΔΟΣΗΣ ΑΥΤΟΥ, ΚΑΘΩΣ ΚΑΙ ΟΙ ΠΡΟΜΗΘΕΥΤΕΣ ΟΠΟΙΩΝΔΗΠΟΤΕ ΕΚ ΤΩΝ ΠΡΟΑΝΑΦΕΡΟΜΕΝΩΝ ΜΕΡΩΝ, ΔΕΝ
ΕΥΘΥΝΟΝΤΑΙ ΕΝΑΝΤΙ ΟΙΟΥΔΗΠΟΤΕ, ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΚΑΙ ΥΠΟ ΚΑΜΙΑ ΕΡΜΗΝΕΙΑ ΝΟΜΟΥ, ΕΙΤΕ ΕΞ ΑΔΙΚΟΠΡΑΞΙΑΣ
(ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ ΤΗΣ ΑΜΕΛΕΙΑΣ) ΕΙΤΕ ΣΤΟ ΠΛΑΙΣΙΟ ΣΥΜΒΑΤΙΚΗΣ Ή ΑΛΛΗΣ ΥΠΟΧΡΕΩΣΗΣ, ΓΙΑ ΤΥΧΟΝ ΑΜΕΣΕΣ, ΕΜΜΕΣΕΣ,
ΕΙΔΙΚΕΣ, ΤΥΧΑΙΕΣ Ή ΣΥΝΕΠΑΚΟΛΟΥΘΕΣ ΖΗΜΙΕΣ ΟΠΟΙΑΣΔΗΠΟΤΕ ΜΟΡΦΗΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΖΗΜΙΩΝ
ΛΟΓΩ ΑΠΩΛΕΙΑΣ ΦΗΜΗΣ ΚΑΙ ΠΕΛΑΤΕΙΑΣ, ΔΙΑΚΟΠΗΣ ΕΡΓΑΣΙΩΝ, ΔΥΣΛΕΙΤΟΥΡΓΙΑΣ Ή ΒΛΑΒΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ, Ή
ΚΑΘΕ ΑΛΛΗΣ �
�ΗΜΙΑΣ Ή ΑΠΩΛΕΙΑΣ ΠΟΥ ΟΦΕΙΛΕΤΑΙ Ή ΣΧΕΤΙΖΕΤΑΙ ΜΕ ΤΗΝ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ ΚΑΙ ΤΩΝ ΤΡΟΠΟΠΟΙΗΜΕΝΩΝ ΕΚΔΟΣΕΩΝ
ΑΥΤΟΥ, ΑΚΟΜΑ ΚΑΙ ΑΝ ΤΑ ΩΣ ΑΝΩ ΜΕΡΗ ΕΙΧΑΝ ΛΑΒΕΙ ΓΝΩΣΗ ΤΗΣ ΠΙΘΑΝΟΤΗΤΑΣ ΠΡΟΚΛΗΣΗΣ ΤΕΤΟΙΩΝ
ΖΗΜΙΩΝ.</p></li></ol></div></div></div><div><div class="legalnotice"><a name="idm45431170080624"></a><p
class="legalnotice-title"><b>Aνάδραση</b></p><p>
+ </p></div><div><p class="copyright">Πνευματικά Δικαιώματα © 1997-2016 Jiří (George)
Lebl</p></div><div><p class="copyright">Πνευματικά Δικαιώματα © 2004 Kai Willadsen</p></div><div><p
class="copyright">Πνευματικά Δικαιώματα © 2013 Δημήτρης Σπίγγος (dmtrs32 gmail com)</p></div><div><p
class="copyright">Πνευματικά Δικαιώματα © 2014 Μαρία Μαυρίδου (mavridou gmail com)</p></div><div><div
class="legalnotice"><a name="legalnotice"></a><p>Χορηγείται άδεια αντιγραφής, διανομής και/ή τροποποίησης του
παρόντος εγγράφου υπό τους όρους της έκδοσης 1.1 της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL), ή οποιασδήποτε
μεταγενέστερης έκδοσής αυτής από το Ίδρυμα Ελεύθερου Λογισμικού (FSF), χωρ
ίς αμετάβλητες ενότητες, κείμενα εμπροσθοφύλλου και κείμενα οπισθοφύλλου. Αντίγραφο της άδειας GFDL είναι
διαθέσιμο στον ακόλουθο <a class="ulink" href="ghelp:fdl" target="_top">σύνδεσμο</a>, ή στο αρχείο
COPYING-DOCS που διανέμεται μαζί με το παρόν εγχειρίδιο.</p><p>Αυτό το εγχειρίδιο αποτελεί μέρος της συλλογής
εγχειριδίων του GNOME που διανέμονται υπό τους όρους της GFDL. Αν επιθυμείτε να διανείμετε το παρόν
εγχειρίδιο ξεχωριστά από τη συλλογή, οφείλετε να προσθέσετε στο εγχειρίδιο αντίγραφο της άδειας χρήσης, όπως
προβλέπεται στην ενότητα 6 της άδειας.</p><p>Πολλές από �
�ις ονομασίες που χρησιμοποιούνται από εταιρείες για την διαφοροποίηση των προϊόντων και υπηρεσιών τους
έχουν καταχωρηθεί ως εμπορικά σήματα. Σε όποιο σημείο της τεκμηρίωσης GNOME τυχόν εμφανίζονται αυτές οι
ονομασίες, και εφόσον τα μέλη του Έργου τεκμηρίωσης GNOME έχουν λάβει γνώση αυτών των εμπορικών σημάτων, οι
ονομασίες ή τα αρχικά αυτών θα γράφονται με κεφαλαίους χαρακτήρες.</p><p>ΤΟ ΠΑΡΟΝ ΕΓΓΡΑΦΟ ΚΑΙ ΟΙ ΤΡΟΠΟΙΗΜΕΝΕΣ
ΕΚΔΟΣΕΙΣ ΑΥΤΟΥ ΠΑΡΕΧΟΝΤΑΙ ΥΠΟ ΤΟΥΣ ΟΡΟΥΣ ΤΗΣ ΕΛΕΥΘΕΡΗΣ ΑΔΕΙΑΣ ΤΕΚΜΗΡΙΩΣΗΣ GNU (GFDL) ΚΑΙ ΜΕ ΤΗΝ ΠΕΡΑΙΤΕΡΩ
ΔΙΕΥΚΡΙΝΙΣΗ ΟΤΙ: </
p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>ΤΟ ΠΑΡΟΝ ΕΓΓΡΑΦΟ
ΠΑΡΕΧΕΤΑΙ "ΩΣ ΕΧΕΙ", ΧΩΡΙΣ ΟΠΟΙΑΔΗΠΟΤΕ ΑΛΛΗ ΕΓΓΥΗΣΗ, ΕΙΤΕ ΡΗΤΗ ΕΙΤΕ ΣΙΩΠΗΡΗ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ, ΧΩΡΙΣ
ΠΕΡΙΟΡΙΣΜΟ, ΤΗΣ ΕΓΓΥΗΣΗΣ ΟΤΙ ΤΟ ΕΓΓΡΑΦΟ, Ή Η ΤΡΟΠΟΠΟΙΗΜΕΝΗ ΕΚΔΟΣΗ ΑΥΤΟΥ, ΕΙΝΑΙ ΕΜΠΟΡΕΥΣΙΜΟ, ΚΑΤΑΛΛΗΛΟ ΓΙΑ
ΕΙΔΙΚΟ ΣΚΟΠΟ ΚΑΙ ΔΕΝ ΠΡΟΣΒΑΛΛΕΙ ΔΙΚΑΙΩΜΑΤΑ ΤΡΙΤΩΝ. Ο ΧΡΗΣΤΗΣ ΑΝΑΛΑΜΒΑΝΕΙ ΕΞ ΟΛΟΚΛΗΡΟΥ ΤΗΝ ΕΘΥΝΗ ΩΣ ΠΡΟΣ ΤΗΝ
ΠΟΙΟΤΗΤΑ, ΤΗΝ ΑΚΡΙΒΕΙΑ ΚΑΙ ΤΗΝ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή ΤΗΣ ΤΡΟΠΟΠΟΙΗΜΕΝΗΣ ΕΚΔΟΣΗΣ ΑΥΤΟΥ. ΣΕ ΠΕΡΙΠΤΩΣΗ ΠΟΥ
ΟΠΟΙΟΔΗΠΟΤΕ ΕΓΓΡΑΦΟ Ή ΤΡΟΠΟΠΟΙΗΜΕΝΗ ΕΚΔΟΣΗ ΑΥΤΟΥ ΑΠΟΔΕΙΧ
ΘΟΥΝ ΕΛΑΤΤΩΜΑΤΙΚΑ ΚΑΘ' ΟΙΟΝΔΗΠΟΤΕ ΤΡΟΠΟ, Ο ΧΡΗΣΤΗΣ (ΚΑΙ ΟΧΙ Ο ΑΡΧΙΚΟΣ ΣΥΓΓΡΑΦΕΑΣ, ΔΗΜΙΟΥΡΓΟΣ Ή ΟΠΟΙΟΣΔΗΠΟΤΕ
ΣΥΝΤΕΛΕΣΤΗΣ) ΑΝΑΛΑΜΒΑΝΕΙ ΤΟ ΚΟΣΤΟΣ ΟΠΟΙΑΣΔΗΠΟΤΕ ΑΝΑΓΚΑΙΑΣ ΣΥΝΤΗΡΗΣΗΣ, ΕΠΙΣΚΕΥΗΣ Ή ΔΙΟΡΘΩΣΗΣ. Η ΠΑΡΟΥΣΑ
ΑΠΟΠΟΙΗΣΗ ΕΓΓΥΗΣΗΣ ΑΠΟΤΕΛΕΙ ΑΝΑΠΟΣΠΑΣΤΟ ΜΕΡΟΣ ΤΗΣ ΑΔΕΙΑΣ. ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΟΥΔΕΜΙΑ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή
ΤΡΟΠΟΠΟΙΗΜΕΝΩΝ ΕΚΔΟΣΕΩΝ ΑΥΤΟΥ ΣΥΜΦΩΝΑ ΜΕ ΤΟΥΣ ΟΡΟΥΣ ΤΗΣ ΠΑΡΟΥΣΑΣ, ΠΑΡΑ ΜΟΝΟ ΕΑΝ ΣΥΝΟΔΕΥΕΤΑΙ ΑΠΟ ΤΗΝ ΑΠΟΠΟΙΗΣΗ
ΕΓΓΥΗΣΗΣ, ΚΑΙ</p></li><li class="listitem"><p>Ο ΔΗΜΙΟΥΡΓΟΣ, Ο ΑΡΧΙΚΟΣ ΣΥΓΓΡΑΦΕΑΣ, ΟΙ ΣΥΝΤΕΛΕΣΤΕΣ Ή ΟΙ
ΔΙΑΝΟΜΕΙΣ ΤΟΥ ΕΓΓΡΑΦΟΥ Ή Τ�
�ΟΠΟΠΟΙΗΜΕΝΗΣ ΕΚΔΟΣΗΣ ΑΥΤΟΥ, ΚΑΘΩΣ ΚΑΙ ΟΙ ΠΡΟΜΗΘΕΥΤΕΣ ΟΠΟΙΩΝΔΗΠΟΤΕ ΕΚ ΤΩΝ ΠΡΟΑΝΑΦΕΡΟΜΕΝΩΝ ΜΕΡΩΝ, ΔΕΝ
ΕΥΘΥΝΟΝΤΑΙ ΕΝΑΝΤΙ ΟΙΟΥΔΗΠΟΤΕ, ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΚΑΙ ΥΠΟ ΚΑΜΙΑ ΕΡΜΗΝΕΙΑ ΝΟΜΟΥ, ΕΙΤΕ ΕΞ ΑΔΙΚΟΠΡΑΞΙΑΣ
(ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ ΤΗΣ ΑΜΕΛΕΙΑΣ) ΕΙΤΕ ΣΤΟ ΠΛΑΙΣΙΟ ΣΥΜΒΑΤΙΚΗΣ Ή ΑΛΛΗΣ ΥΠΟΧΡΕΩΣΗΣ, ΓΙΑ ΤΥΧΟΝ ΑΜΕΣΕΣ, ΕΜΜΕΣΕΣ,
ΕΙΔΙΚΕΣ, ΤΥΧΑΙΕΣ Ή ΣΥΝΕΠΑΚΟΛΟΥΘΕΣ ΖΗΜΙΕΣ ΟΠΟΙΑΣΔΗΠΟΤΕ ΜΟΡΦΗΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΖΗΜΙΩΝ
ΛΟΓΩ ΑΠΩΛΕΙΑΣ ΦΗΜΗΣ ΚΑΙ ΠΕΛΑΤΕΙΑΣ, ΔΙΑΚΟΠΗΣ ΕΡΓΑΣΙΩΝ, ΔΥΣΛΕΙΤΟΥΡΓΙΑΣ Ή ΒΛΑΒΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ, Ή
ΚΑΘΕ ΑΛΛΗΣ �
�ΗΜΙΑΣ Ή ΑΠΩΛΕΙΑΣ ΠΟΥ ΟΦΕΙΛΕΤΑΙ Ή ΣΧΕΤΙΖΕΤΑΙ ΜΕ ΤΗΝ ΧΡΗΣΗ ΤΟΥ ΕΓΓΡΑΦΟΥ ΚΑΙ ΤΩΝ ΤΡΟΠΟΠΟΙΗΜΕΝΩΝ ΕΚΔΟΣΕΩΝ
ΑΥΤΟΥ, ΑΚΟΜΑ ΚΑΙ ΑΝ ΤΑ ΩΣ ΑΝΩ ΜΕΡΗ ΕΙΧΑΝ ΛΑΒΕΙ ΓΝΩΣΗ ΤΗΣ ΠΙΘΑΝΟΤΗΤΑΣ ΠΡΟΚΛΗΣΗΣ ΤΕΤΟΙΩΝ
ΖΗΜΙΩΝ.</p></li></ol></div></div></div><div><div class="legalnotice"><a name="idm54"></a><p
class="legalnotice-title"><b>Aνάδραση</b></p><p>
To report a bug or make a suggestion regarding the <span class="application">Genius Mathematics
Tool</span>
application or this manual, please visit the
<a class="ulink" href="http://www.jirka.org/genius.html" target="_top">Genius
diff --git a/help/es/genius.xml b/help/es/genius.xml
new file mode 100644
index 0000000..91ae7de
--- /dev/null
+++ b/help/es/genius.xml
@@ -0,0 +1,6999 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="es">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Manual de la herramienta matemática Genius.</para></abstract>
+ <title>Manual de Genius</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2011</year><holder>Daniel Mustieles (daniel mustieles gmail
com)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>Se concede permiso para copiar, distribuir o modificar este documento según las condiciones de
la GNU Free Documentation License (GFDL), Versión 1.1 o cualquier versión posterior publicada por la Free
Software Foundation sin Secciones invariantes, Textos de portada y Textos de contraportada. Encontrará una
copia de la GFDL en este <ulink type="help" url="ghelp:fdl">enlace</ulink> o en el archivo COPYING-DOCS
distribuido con este manual.</para>
+ <para>Este manual es parte de la colección de manuales GNOME distribuidos bajo la GFDL. Si quiere
distribuir este manual separadamente de la colección, puede hacerlo añadiendo una copia de la licencia al
manual, tal como se describe en la sección 6 de la licencia.</para>
+
+ <para>Muchos de los nombres usados por empresas para distinguir sus productos y servicios se
mencionan como marcas comerciales. Donde aparezcan dichos nombres en cualquier documentación GNOME, y para
que los miembros del proyecto de documentación reconozcan dichas marcas comerciales, dichos nombres se
imprimen en mayúsculas o iniciales mayúsculas.</para>
+
+ <para>EL DOCUMENTO Y LAS VERSIONES MODIFICADAS DEL MISMO SE PROPORCIONAN CON SUJECIÓN A LOS
TÉRMINOS DE LA GFDL, QUEDANDO BIEN ENTENDIDO, ADEMÁS, QUE: <orderedlist>
+ <listitem>
+ <para>EL DOCUMENTO SE ENTREGA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, NI EXPLÍCITA NI
IMPLÍCITA INCLUYENDO, SIN LIMITACIÓN, GARANTÍA DE QUE EL DOCUMENTO O VERSIÓN MODIFICADA DE ÉSTE CAREZCA
DE DEFECTOS EN EL MOMENTO DE SU VENTA, SEA ADECUADO A UN FIN CONCRETO O INCUMPLA ALGUNA NORMATIVA. TODO EL
RIESGO RELATIVO A LA CALIDAD, PRECISIÓN Y UTILIDAD DEL DOCUMENTO O SU VERSIÓN MODIFICADA RECAE EN USTED. SI
CUALQUIER DOCUMENTO O VERSIÓN MODIFICADA DE AQUÉL RESULTARA DEFECTUOSO EN CUALQUIER ASPECTO, USTED (Y NO EL
REDACTOR INICIAL, AUTOR O AUTOR DE APORTACIONES) ASUMIRÁ LOS COSTES DE TODA REPARACIÓN, MANTENIMIENTO O
CORRECCIÓN NECESARIOS. ESTA EXENCIÓN DE RESPONSABILIDAD SOBRE LA GARANTÍA ES UNA PARTE ESENCIAL DE ESTA
LICENCIA. NO SE AUTORIZA EL USO DE NINGÚN DOCUMENTO NI VERSIÓN MODIFICADA DE ÉSTE POR EL PRESENTE, SALVO
DENTRO DEL CUMPLIMIENTO DE LA EXENCIÓN DE RESPONSABILIDAD;Y</para>
+ </listitem>
+ <listitem>
+ <para>BAJO NINGUNA CIRCUNSTANCIA NI BAJO NINGUNA TEORÍA LEGAL, SEA POR ERROR (INCLUYENDO
NEGLIGENCIA), CONTRATO O DE ALGÚN OTRO MODO, EL AUTOR, EL ESCRITOR INICIAL, CUALQUIER CONTRIBUIDOR, O
CUALQUIER DISTRIBUIDOR DEL DOCUMENTO O VERSIÓN MODIFICADA DEL DOCUMENTO, O CUALQUIER PROVEEDOR DE CUALQUIERA
DE ESAS PARTES, SERÁ RESPONSABLE ANTE NINGUNA PERSONA POR NINGÚN DAÑO DIRECTO, INDIRECTO, ESPECIAL,
INCIDENTAL O DERIVADO DE NINGÚN TIPO, INCLUYENDO, SIN LIMITACIÓN DAÑOS POR PÉRDIDA DE MERCANCÍAS, PARO
TÉCNICO, FALLO INFORMÁTICO O MAL FUNCIONAMIENTO O CUALQUIER OTRO POSIBLE DAÑO O PÉRDIDAS DERIVADAS O
RELACIONADAS CON EL USO DEL DOCUMENTO O SUS VERSIONES MODIFICADAS, AUNQUE DICHA PARTE HAYA SIDO INFORMADA DE
LA POSIBILIDAD DE QUE SE PRODUJESEN DICHOS DAÑOS.</para>
+ </listitem>
+ </orderedlist></para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Universidad del estado de Oklahoma</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>Universidad de Queensland, Australia</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>Septiembre 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>Este manual describe la versión 1.0.22 de Genius.</releaseinfo>
+ <legalnotice>
+ <title>Comentarios</title>
+ <para>Para informar de un fallo, o hacer alguna sugerencia sobre la aplicación
<application>herramienta matemática Genius</application>, o este manual, siga las instrucciones en la <ulink
url="http://www.jirka.org/genius.html" type="http">página web de Genius</ulink> o envíe un correo electrónico
a <email>jirka 5z com</email>.</para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Introducción</title>
+ <para>La <application>Herramienta matemática Genius</application> es una calculadora de uso general para
usarse como una calculadora de escritorio, una herramienta educativa para matemáticas, incluso es útil en
investigaciones. El lenguaje utilizado por la <application>Herramienta matemática Genius</application> está
diseñado para ser «matemático» en el sentido en que debería ser «lo que quiere decir es lo que obtienes». Por
supuesto que no es una meta completamente alcanzable. La <application>Herramienta matemática
Genius</application> soporta números racionales, enteros de precisión arbitraria y flotantes de precisión
múltiple usando la librería GMP. Maneja números complejos usando notación cartesiana. Tiene buena
manipulación de vectores y matrices, y puede manejar álgebra lineal básica. El lenguaje de programación
permite funciones definidas por el usuario, variables y modificaciones de los parámetros.</para>
+
+ <para>Hay dos versiones de la <application>Herramienta matemática Genius</application>. Una es la
versión gráfica para GNOME, que tiene una interfaz de tipo IDE y permite dibujar funciones de una y dos
variables. La versión de línea de comandos no necesita GNOME, pero por supuesto no implementa ninguna
característica que necesite la interfaz gráfica.</para>
+
+ <para>Este manual describe principalmente la versión gráfica de la calculadora pero, por supuesto, el
lenguaje es el mismo. La línea de comandos carece de las capacidades de dibujo y de otras capacidades que
necesitan la interfaz gráfica de usuario.</para>
+
+ <para>Generalmente, cuando alguna característica del lenguaje (función, operador, etc...) es nueva en
versiones a la 1.0.5 en adelante, se menciona, pero en versiones anteriores a 1.0.5 debería echar un vistazo
al archivo NEWS.</para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Primeros pasos</title>
+
+ <sect1 id="genius-to-start">
+ <title>Para iniciar la <application>herramienta matemática Genius</application></title>
+ <para>Puede iniciar la <application>herramienta matemática Genius</application> de las siguientes
formas:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Menú<guimenu>Aplicaciones</guimenu></term>
+ <listitem>
+ <para>Dependiendo de su sistema operativo y de su versión, el elemento de menú de la
<application>Herramienta matemática Genius</application> puede aparecer en varios lugares diferentes. Puede
estar en <guisubmenu>Educación</guisubmenu>, <guisubmenu>Accesorios</guisubmenu>,
<guisubmenu>Oficina</guisubmenu>, <guisubmenu>Ciencia</guisubmenu>, o en un submenú similar, dependiendo de
su configuración particular. El elemento de menú que está buscando es <guimenuitem>Herramienta matemática
Genius</guimenuitem>. Cuando lo haya localizado, pulse en el para iniciar la <application>Herramienta
matemática Genius</application>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Diálogo <guilabel>Ejecutar</guilabel></term>
+ <listitem>
+ <para>Dependiendo de la instalación de su sistema, el elemento del menú puede no estar
disponible. si no lo está, puede abrir el diálogo «Ejecutar» y ejecutar
<command>gnome-genius</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Línea de comandos</term>
+ <listitem>
+ <para>Para iniciar la versión de GNOME de la<application>herramienta matemática
Genius</application> ejecute <command>gnome-genius</command> desde la línea de comandos.</para>
+ <para>Para iniciar sólo la versión de línea de comandos, ejecute el siguiente comando:
<command>genius</command>. Esta versión no incluye el entorno gráfico y ciertas funcionalidades, como
dibujar, no estarán disponibles.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>Al iniciar Genius</title>
+ <para>Cuando inicia la versión de la <application>herramienta matemática Genius</application> para
GNOME, se muestra la ventana que aparece en la <xref linkend="mainwindow-fig"/>.</para>
+
+ <figure id="mainwindow-fig">
+ <title>Ventana de la <application>herramienta matemática Genius</application></title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Muestra la ventana principal <application>Herramienta matemática Genius</application>.
Contiene barra de título, barra de menús, barra de herramientas y área de trabajo. La barra de menú contiene
los menús <guilabel>Archivo</guilabel>, <guilabel>Editar</guilabel>, <guilabel>Calculadora</guilabel>,
<guilabel>Ejemplos</guilabel>,<guilabel>Programas</guilabel>,<guilabel>Configuración</guilabel>, y
<guilabel>Ayuda</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>La ventana de la <application>herramienta matemática Genius</application> contiene los
siguientes elementos:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Barra de menú.</term>
+ <listitem>
+ <para>Los menús de la barra de menús contienen todos los comandos que necesita para trabajar con
archivos en la <application>Herramienta matemática Genius</application>. El menú <guilabel>Archivo</guilabel>
contiene elementos para cargar y guardar elementos y crear programas nuevos. El comando <guilabel>Cargar y
ejecutar...</guilabel> no abre una ventana nueva para el programa, sino que lo ejecuta directamente. Es
equivalente al comando <command>load</command>.</para>
+ <para>El menú <guilabel>Calculadora</guilabel> controla el motor de la calculadora. Permite
ejecutar el programa actualmente seleccionado o interrumpir el cálculo actual. También puede mirar la
expresión completa del último resultado (útil si el último resultado fue demasiado grande para ajustar a la
consola), y puede mirar una lista con los valores de todas las variables definidas por el usuario. También
puede monitorizar las variables del usuario, que es especialmente útil cuando se está ejecutando un cálculo
muy largo, o para depurar un cierto programa. Finalmente, la <guilabel>Calculadora</guilabel> permite trazar
funciones usando un cuadro de diálogo amigable.</para>
+ <para>El menú <guilabel>Ejemplos</guilabel> es una lista de programas de ejemplo o demostraciones.
Si abre el menú, cargará el ejemplo en un nuevo programa, que puede ejecutar, editar, modificar y guardar.
Estos programas deberían estar bien documentados y generalmente muestran alguna característica de
<application>Herramienta matemática Genius</application> o algunos conceptos matemáticos.</para>
+ <para>El menú <guilabel>Programas</guilabel> muestra una lista de programas abiertos y le permite
cambiar a uno de ellos.</para>
+ <para>Los otros menús tienen funciones similares a las de otras aplicaciones.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Barra de herramientas.</term>
+ <listitem>
+ <para>La barra de herramientas contiene un subconjunto de comandos a los que puede acceder desde
la barra de menús.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Área de trabajo</term>
+ <listitem>
+ <para>El área de trabajo es el método primario para interactuar con la aplicación.</para>
+ <para>Inicialmente, el área de trabajo sólo tenía la pestaña <guilabel>Consola</guilabel>, que es
el principal medio de interacción con la calculadora. Aquí puede escribir expresiones y el resultado se
devuelve inmediatamente después de pulsar la tecla «Intro».</para>
+ <para>Alternativamente, puede escribir programas más largos y éstos pueden aparecer en pestañas
separadas. Los programas son un conjunto de comandos o funciones que se pueden ejecutar a la vez sin tener
que ejecutarlos desde una terminal. Los programas se pueden guardar en archivos para su posterior
recuperación.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Uso básico</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Usar el área de trabajo</title>
+
+ <para>Normalmente, interactúa con la calculadora en la pestaña <guilabel>Consola</guilabel> del área
de trabajo. Si ejecuta la versión de solo texto, entonces la consola será el único medio disponible. Si
quiere usar la <application>Herramienta matemática Genius</application> como una calculadora solamente,
simplemente escriba aquí su expresión y se evaluará, mostrando su resultado en pantalla.</para>
+
+ <para>Escriba su expresión en el área de trabajo de la <guilabel>Consola</guilabel>, pulse «Intro» y
la expresión se evaluará. Las expresiones están escritas en un lenguaje llamado GEL. Las expresiones GEL más
simples parecen matemáticas. Por ejemplo <screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 +
ln(7) * (88.8/100)</userinput>
+</screen> o <screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen> o <screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen> o <screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen> (El último es la suma armónica de 1 a 70)</para>
+<para>Para obtener una lista de todas las funciones y los comandos, escriba: <screen><prompt>genius>
</prompt><userinput>help</userinput>
+</screen> Si quiere obtener más información sobre una función en concreto, escriba:
<screen><prompt>genius> </prompt><userinput>help nombre_de_la_función</userinput>
+</screen> Para ver este manual, escriba: <screen><prompt>genius> </prompt><userinput>manual</userinput>
+</screen></para>
+<para>Suponga que ha guardado algún comando GEL previamente como un programa en un archivo y quiere
ejecutarlo. Para cargar este programa desde el archivo <filename>ruta/a/programa.gel</filename>, escriba
<screen><prompt>genius> </prompt><userinput>load ruta/a/programa.gel</userinput>
+</screen> la<application>Herramienta matemática Genius</application> mantiene la ruta de la carpeta actual.
Para listar los archivos de la carpeta actual, escriba <command>ls</command>, para cambiar de carpeta escriba
<userinput>cd carpeta</userinput>, igual que en la línea de comandos de UNIX.</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>Crear un programa nuevo</title>
+ <para>Si quiere insertar varios comando más complejos, o quizás escribir una función complicada
utilizando el lenguaje <link linkend="genius-gel">GEL</link>. Puede crear un nuevo programa.</para>
+ <para>Para escribir un programa nuevo, eliga
<menuchoice><guimenu>Archivo</guimenu><guimenuitem>Programa Nuevo</guimenuitem></menuchoice>. Aparecerá una
pestaña nueva en el área de trabajo. Puede escribir un programa <link linkend="genius-gel">GEL</link> en esta
área de trabajo. Una vez que haya escrito su programa, puede ejecutarlo desde
<menuchoice><guimenu>Calculadora</guimenu><guimenuitem>Ejecutar</guimenuitem></menuchoice> (o el botón de la
barra de herramientas <guilabel>Ejecutar</guilabel>). Esto ejecutará su programa y mostrará cualquier salida
en la pestaña <guilabel>Consola</guilabel>. Ejecutar un programa es equivalente a tomar el texto del programa
y escribirlo en la consola. La única diferencia es que esta entrada se realiza independientemente de la
consola y solo la salida va hacia la consola.
<menuchoice><guimenu>Calculadora</guimenu><guimenuitem>Ejecutar</guimenuitem></menuchoice> siempre ejecutará
el programa actualmente seleccionado incluso
si se encuentra en la pestaña <guilabel>Consola</guilabel>. El programa actual tiene su letra en negrita.
Para seleccionar un programa, simplemente pulse sobre su pestaña.</para>
+ <para>Para guardar el programa que acaba de escribir, elija
<menuchoice><guimenu>Archivo</guimenu><guimenuitem>Guardar como...</guimenuitem></menuchoice>. Al igual que
en otros programas puede elegir
<menuchoice><guimenu>Archivo</guimenu><guimenuitem>Guardar</guimenuitem></menuchoice> para guardar un
programa que ya tenía un nombre asignado. Si tiene muchos programas abiertos que ha editado y quiere
guardarlos, puede hacerlo eligiendo <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Guardar
todo</guimenuitem></menuchoice>.</para>
+ <para>Los programas que no han guardado los cambios todavía, tienen un símbolo «[+]» junto al nombre
de archivo. Así puede ver si el archivo en la pestaña actual y el que está guardado en el disco, difieren en
su contenido. Los programas que no se han nombrado todavía, se consideran siempre como no guardados, por lo
que no se muestra el símbolo «[+]».</para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Abrir y ejecutar un programa</title>
+ <para>Para abrir un archivo, elija
<menuchoice><guimenu>Archivo</guimenu><guimenuitem>Abrir</guimenuitem></menuchoice>. En el área de trabajo
aparecerá una pestaña nueva que contiene al archivo. Puede usarla para editarlo.</para>
+ <para>Para ejecutar un programa desde un archivo, elija
<menuchoice><guimenu>Archivo</guimenu><guimenuitem>Cargar y ejecutar...</guimenuitem></menuchoice>. Esto
ejecutará el programa sin abrir en una pestaña separada. Es equivalente al comando
<command>load</command>.</para>
+ <para>Si ha hecho cambios en un archivo y quiere descartarlos y volver a la versión original del
disco, puede elegir la opción de menú <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Recargar desde el
disco</guimenuitem></menuchoice>. Esto es útil para experimentar con un programa y hacer cambios temporales,
ejecutar el programa, pero no hacer que dichos cambios sean permanentes.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Dibujar</title>
+
+ <para>El soporte de dibujo solo está disponible para la versión gráfica de GNOME. Todo el dibujo
disponible desde la interfaz gráfica está disponible en la ventana <guilabel>Crear dibujo</guilabel>. Puede
acceder a esta ventana pulsando en el botón <guilabel>Dibujo</guilabel> de la barra de herramientas o
seleccionando <guilabel>Dibujo</guilabel> desde el menú <guilabel>Calculadora</guilabel>. También puede
acceder a las funcionalidades de dibujo usando las <link
linkend="genius-gel-function-list-plotting">funciones de trazado</link> del lenguaje GEL. Consulte la <xref
linkend="genius-gel"/> para aprender a introducir expresiones que entienda Genius.</para>
+
+ <sect1 id="genius-line-plots">
+ <title>Trazado de líneas</title>
+ <para>Para crear gráficas de funciones de valores reales de una variable, abra la ventana
<guilabel>Crear dibujo</guilabel>. También puede usar la función <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> en la línea de comandos (consulte su
documentación).</para>
+ <para>Una vez que pulse el botón <guilabel>Dibujo</guilabel>, se abre una ventana con algunas pestañas
en ella. Se encontrará con la pestaña <guilabel>Dibujo de la línea de función</guilabel> y dentro de ella
encontrará la pestaña <guilabel>Funciones / Expresiones</guilabel>. Consulte la <xref
linkend="lineplot-fig"/>.</para>
+
+ <figure id="lineplot-fig">
+ <title>Crear una ventana de dibujo</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Muestra la ventana de trazado de líneas</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>En los cuadros de texto escriba sólo las expresiones donde <userinput>x</userinput> es la
variable independiente. También puede dar simplemente nombres de funciones como <userinput>cos</userinput> en
lugar de tener que escribir <userinput>cos(x)</userinput>. Puede crear gráficas de hasta 10 funciones. Si
comete un error y Genius no puede analizar la entrada, se señalará con un icono de advertencia a la derecha
del cuadro de texto donde ocurrió el error, y se mostrará un diálogo de error. Puede cambiar el rango de las
variable dependiente <varname>y</varname> activando la casilla <guilabel>Ajustar al eje
dependiente</guilabel>. Pulsando el botón <guilabel>Dibujar</guilabel> se generará el gráfico mostrado en la
<xref linkend="lineplot2-fig"/>.</para>
+ <para>Las variables se pueden renombrar al pulsar el botón <guilabel>Cambiar nombres
variables...</guilabel>, lo que es útil si quiere imprimir o guardar la figura y no quiere utilizar los
nombres predeterminados. Finalmente, puede evitar imprimir la leyenda y las etiquetas de los ejes
completamente, lo que también es útil si está imprimiendo o guardando, cuando la leyenda podría ser
confusa.</para>
+
+ <figure id="lineplot2-fig">
+ <title>Ventana de dibujo</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>El gráfico producido.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Desde aquí puede imprimir el dibujo, crear un PostScript encapsulado o un PNG del dibujo, o
cambiar la escala. Si el eje dependiente no se ha establecido correctamente, puede hacer que Genius lo ajuste
buscando los extremos de las funciones representadas.</para>
+
+ <para>Para dibujar usando la línea de comandos, consulte la documentación de la función <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Gráficos paramétricos</title>
+ <para>En la ventana de crear dibujo, también puede elegir la pestaña <guilabel>Paramétrico</guilabel>
para crear dibujos paramétricos bidimensionales. De este modo, puede dibujar una única función paramétrica.
Puede especificar los puntos como <varname>x</varname> e <varname>y</varname>, o dar un número complejo único
como una función de la variable <varname>t</varname>. El rango de la variable <varname>t</varname> se da
explícitamente, y la función se simplifica de acuerdo al incremento dado. El rango <varname>x</varname> e
<varname>y</varname> se puede establecer automáticamente activando la casilla <guilabel>Ajustar al eje
dependiente</guilabel> o se puede establecer explícitamente. consulte la <xref
linkend="paramplot-fig"/>.</para>
+
+ <figure id="paramplot-fig">
+ <title>Pestaña dibujo paramétrico</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Pestaña dibujo paramétrico en la ventana <guilabel>Crear dibujo</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Puede ver un ejemplo de una gráfica de una función paramétrica en la <xref
linkend="paramplot-fig"/>. Puede realizar operaciones similares en esta gráfica, así como en la otras
gráficas de funciones lineales. Para dibujar usando la línea de comandos, consulte la documentación de las
funciones <link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> o
<link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>.</para>
+
+ <figure id="paramplot2-fig">
+ <title>Gráfico paramétrico</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Gráfico paramétrico producido</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Dibujos de campos de inclinación</title>
+ <para>En la ventana de crear dibujo, también puede elegir la pestaña <guilabel>Campo de
inclinación</guilabel> para crear dibujos de campos de inclinación bidimensionales. Para dibujar usando la
línea de comandos, conuslte la documentación de la función <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>.</para>
+
+ <para>Cuando un campo de inclinación está activo, hay un menú adicional disponible
<guilabel>Solucionador</guilabel>, a través del cual puede abrir el cuadro de diálogo del mismo nombre. Aquí
puede tener soluciones específicas de dibujo de Genius. Puede especificar condiciones iniciales en el
diálogo, o puede pulsar directamente en el dibujo para indicar el punto inicial. Mientras el diálogo del
solucionador esté activo, la ampliación al pulsar y arrastrar no funcionará. Si quiere ampliar usando el
cursor tendrá que cerrar el diálogo primero.</para>
+
+ <para>El solucionador usa el método Runge-Kutta estándar. Los gráficos se quedarán en la pantalla
hasta que los borre. El solucionador se detendrá cuando alcance el límite de la ventana de dibujo. La
ampliación no cambia los límites o los parámetros de la solución, tendrá que borrar y redibujar con los
parámetros apropiados. También puede usar la función <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link> para dibujar
soluciones desde la línea de comandos o programas.</para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Gráficos de campos de vectores</title>
+ <para>En la ventana de crear dibujo, también puede elegir la pestaña <guilabel>Campo
vectorial</guilabel> para crear un dibujo de campos vectoriales bidimensionales. Con este tipo de gráficos se
pueden realizar operaciones similares a las que se hacen con otros gráficos de líneas. Para dibujar usando la
línea de comandos, consulte la documentación de la función <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>.</para>
+
+ <para>De manera predeterminada se muestra la dirección y la magnitud del campo vectorial. Para mostrar
únicamente la dirección y no la magnitud, normalice la longitud de las flechas habilitando la opción
pertinente.</para>
+
+ <para>Cuando un campo vectorial está activo, hay un menú <guilabel>Resolutor</guilabel> adicional
disponible a través del cuál puede abrir el diálogo del Resolutor. Aquí encontrará soluciones gráficas
específicas de Genius para las condiciones iniciales dadas. Puede especificar condiciones iniciales en el
diálogo o pulsar en el dibujo directamente para especificar el punto inicial. Mientras el diálogo del
resolutor esté activa, la opción de aumentar el gráfico pulsando y arrastrando no funcionará. Debe cerrar el
diálogo primero si quiere aumentar el gráfico con el ratón.</para>
+
+ <para>El resolutor usa el método estándar de Runge-Kutta. Los gráficos resultantes permanecerán en la
pantalla hasta que se limpie. Aumentar el gráfico no cambia los límites o parámetros de las soluciones,
tendrá que limpiar y redibujarlos con los parametros adecuados. También puede usar la función <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> para
dibujar soluciones desde la línea de comandos o desde programas.</para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Gráficos de superficie</title>
+ <para>Genius también puede dibujar superficies. Seleccione la pestaña <guilabel>Dibujar
superficie</guilabel> en el cuaderno de notas principal de la ventana <guilabel>Crear gráfico</guilabel>.
Aquí puede especificar una expresión que use o bien <varname>x</varname> e <varname>y</varname> como
variables reales independientes o bien <varname>z</varname> como variable compleja (donde
<varname>x</varname> sea la parte real de <varname>z</varname> e <varname>y</varname> la parte imaginaria).
Por ejemplo, para dibujar los módulos de la función coseno de variable compleja puede escribir
<userinput>|cos(z)|</userinput>. Esto sería equivalente a <userinput>|cos(x+1i*y)|</userinput>. Consulte la
<xref linkend="surfaceplot-fig"/>. Para dibujar desde la línea de comandos véase la documentación de la
función <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>El rango <varname>z</varname> puede establecerse automáticamente al activar el cuadro de
selección <guilabel>Ajustar eje dependiente</guilabel>. Las variables se pueden renombrar al pulsar el botón
<guilabel>Cambiar nombres variable...</guilabel>, lo que es útil si quiere imprimir o guardar la figura y no
quiere utilizar los nombres predeterminados. Finalmente, puede evitar imprimir la leyenda y las etiquetas de
los ejes completamente, lo que también es útil si está imprimiendo o guardando, cuando la leyenda podría ser
confusa.</para>
+
+ <figure id="surfaceplot-fig">
+ <title>Gráfico de superficie</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Valor absoluto de la función coseno complejo.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>En el modo de superficie, las teclas izquierda y derecha de su teclado, rotarán la vista a lo
largo del eje z. Alternativamente puede rotar en cualquier eje seleccionando <guilabel>Rotar
eje...</guilabel> en el menú <guilabel>Ver</guilabel>. El menú <guilabel>Ver</guilabel> también tiene un modo
de vista superior que permite rotar el gráfico de modo que el eje z se enfrenta directamente, es decir, vemos
el gráfico desde la parte superior y obtenemos los colores que definen los valores de la función obteniendo
así un gráfico de temperatura de la función. Finalmente pruebe <guilabel>Iniciar animación de
rotación</guilabel>, para iniciar una lenta rotación continua. Esto es especialmente bueno si se utiliza
<application>Herramienta matemática Genius</application> para presentar a un público.</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>Conceptos de GEL</title>
+
+ <para>GEL significa Lenguaje de Extensión de Genius. Éste es el lenguaje que se utiliza para escribir
programas para Genius. Un programa en GEL es simplemente una expresión que se evalúa como un número, una
matriz, o cualquier objeto en GEL. Por lo tanto, la <application>Herramienta matemática Genius</application>
se puede utilizar como una simple calculadora o como una herramienta de investigación teórica muy potente. La
sintaxis está pensada para suavizar lo más posible la curva de aprendizaje, especialmente para usarlo como
calculadora.</para>
+
+ <sect1 id="genius-gel-values">
+ <title>Valores</title>
+
+ <para>Los valores en GEL pueden ser <link linkend="genius-gel-values-numbers">números</link>, <link
linkend="genius-gel-values-booleans">booleanos</link> o <link
linkend="genius-gel-values-strings">cadenas</link>. GEL también trata las <link
linkend="genius-gel-matrices">matrices</link> como valores. Los valores se pueden usar en cálculos, asignarse
a variables y devolverse desde funciones, entre otros usos.</para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Números</title>
+ <para>Los enteros son el primer tipo numérico en GEL. Los enteros se escriben de forma estándar.
<programlisting>1234
+</programlisting> Las formas hexadecimales y octales se pueden indicar mediante la notación de C. Por
ejemplo: <programlisting>0x123ABC
+01234
+</programlisting> O bien puede indicar los enteros en una base arbitraria usando
<literal><base>\<número></literal>. Los dígitos mayores que 9 usan letras de manera similar a la
forma hexadecimal. Por ejemplo, un número en base 23 podría escribirse: <programlisting>23\1234ABCD
+</programlisting></para>
+
+ <para>El segundo tipo numérico de GEL son los racionales. Los números racionales se obtienen
dividiendo dos enteros. De modo que se puede escribir: <programlisting>3/4
+</programlisting> para obtener tres cuartos. Los racionales aceptan notación fraccionaria mixta. De modo que
para obtener uno y tres décimos se podría indicar: <programlisting>1 3/10
+</programlisting></para>
+
+ <para>El siguiente tipo numérico es el de coma flotante. Estos se especifican de un modo muy similar
a la notación en C. Puedes usar <literal>E</literal>, <literal>e</literal> o <literal>@</literal> como el
delimitador de exponente. Tenga en cuenta que usando el delimitador de exponente da un coma flotante incluso
si no está la coma decimal en el número. Ejemplos: <programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting> Cuando Genius imprime un número en coma flotante siempre añade un
<computeroutput>,0</computeroutput> incluso si el número está completo. Esto indica que los números en coma
flotante se toman como cantidades imprecisas. Cuando un numero se escribe en notación científica, siempre
será en coma flotante y, por tanto, Genius no imprime <computeroutput>,0</computeroutput>.</para>
+
+ <para>El último tipo de números en GEL son los números complejos. Puede escribir un número complejo
como la suma de su parte real y su parte imaginaria. Para agregar la parte imaginaria, escriba una
<literal>i</literal>. Aquí hay algunos ejemplo de cómo escribir números complejos: <programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting></para>
+
+ <important>
+ <para>Al introducir números imaginarios, deba haber un número delante de la <literal>i</literal>.
Si usa <literal>i</literal> por sí sola, Genius lo interpretará como una referencia a la variable
<varname>i</varname>. Si necesita referirse a <literal>i</literal> por sí sola, use <literal>1i</literal> en
su lugar.</para>
+
+ <para>Para usar notación de fracciones mixtas con números imaginarios debe colocar las fracciones
mixtas entre paréntesis (ej. <userinput>(1 2/5)i</userinput>).</para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Booleanos</title>
+ <para>Genius también soporta valores booleanos nativos. Las dos constantes booleanas están definidas
como <constant>true</constant> y <constant>false</constant>; estos identificadores se pueden utilizar como
cualquier otra variable. Así mismo, puede utilizar los identificadores <constant>True</constant>,
<constant>TRUE</constant>, <constant>False</constant> y <constant>FALSE</constant> como alias de las
anteriores.</para>
+ <para>Puede usar un valor booleano o cualquier expresión que produzca un número o valor booleano en
cualquier lugar donde se espera una expresión Booleana. Si Genius necesita evaluar un valor numérico como un
valor booleano interpretará «0» como <constant>false</constant> y cualquier otro valor como
<constant>true</constant>.</para>
+ <para>Además, puede efectuar operaciones con valores booleanos. Por ejemplo: <programlisting>( (1 +
true) - false ) * true
+</programlisting> equivale a: <programlisting>( (true or true) or not false ) and true
+</programlisting> Solamente están soportadas la adición, la sustracción y la multiplicación. Si mezcla
valores numéricos con booleanos en una expresión, los valores numéricos se convertirán a booleanos como se
describió anteriormente. Esto significa que, por ejemplo: <programlisting>1 == true
+</programlisting> siempre se evaluará como <constant>true</constant> dado que «1» siempre se convertirá a
<constant>true</constant> antes de compararlo con <constant>true</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Cadenas</title>
+ <para>Al igual que los números y los booleanos, las cadenas en GEL se pueden almacenar como valores
dentro de variables y pasárselas a funciones. Puede concatenar una cadena con otra cadena mediante el
operador «+». Por ejemplo: <programlisting>a=2+3;«El resultado es: »+a
+</programlisting> creará la cadena: <programlisting>El resultado es: 5
+</programlisting> Puede usar secuencias de escape como en C tales como <literal>\n</literal>,
<literal>\t</literal>, <literal>\b</literal>, <literal>\a</literal> y <literal>\r</literal>. Para insertar
los caracteres <literal>\</literal> o <literal>"</literal> en una cadena puede escaparlo precediéndolo de
<literal>\</literal>. Por ejemplo: <programlisting>"Barra: \\ Comillas: \" Tabulaciones: \t1\t2\t3"
+</programlisting> dará lugar a la cadena: <programlisting>Barra: \ Comillas: " Tabulaciones: 1 2
3
+</programlisting>. Tenga en cuenta, sin embargo, que cuando una función devuelve una cadena, los caracteres
escapados se entrecomillan, por lo que la salida se puede usar como entrada de otra función. Si quiere
imprimir la cadena como es (sin caracteres escapados), use las funciones <link
linkend="gel-function-print"><function>print</function></link> o <link
linkend="gel-function-printn"><function>printn</function></link>.</para>
+ <para>Además, puede usar la función <link
linkend="gel-function-string"><function>string</function></link> de la biblioteca para convertir cualquier
cosa en una cadena. Por ejemplo: <programlisting>string(22)
+</programlisting> devolverá <programlisting>"22"
+</programlisting>. Las cadenas pueden compararse mediante los operadores <literal>==</literal> (igual),
<literal>!=</literal> (distinto) y <literal><=></literal> (comparación).</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Nulo</title>
+ <para>Existe un valor especial llamado <constant>null</constant>. No se permite efectuar operaciones
sobre él y no se muestra nada cuando se devuelve este valor. Por lo tanto, <constant>null</constant> es útil
cuando no quiera ninguna salida de una expresión. El valor <constant>null</constant> puede obtenerse como una
expresión al escribir <literal>.</literal>, la constante <constant>null</constant> o nada. Nada referido a
que si termina una expresión con un separador <literal>;</literal>, equivale a terminar la expresión con un
separador seguido de <constant>null</constant>.</para>
+ <para>Ejemplo: <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>Algunas funciones devuelven <constant>null</constant> cuando no pueden devolver un valor o producen
algún error. También se usa <constant>null</constant> como un vector o matriz vacía o una referencia
vacía.</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Usar variables</title>
+
+ <para>Sintaxis: <programlisting>NombreVariable
+</programlisting> Ejemplo: <screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen></para>
+
+ <para>Para evaluar una variable por sí misma, simplemente introduzca el nombre de la variable. Esto
devolverá el valor de la variable. Puede usar una variable en cualquier lugar donde pueda utilizar un número
o cadena. Además, las variables son necesarias al definir funciones que toman argumentos (consulte la <xref
linkend="genius-gel-functions-defining"/>).</para>
+
+ <tip>
+ <title>Usar completado con el tabulador</title>
+ <para>Puede usar el completado con el tabulador para que Genius complete nombres de las variables.
Intente escribir las primeras letras del nombre de la variable y pulse <userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Los nombres de variables son sensibles a la capitalización</title>
+ <para>Los nombres de variables son sensibles a la capitalización. Esto significa que las variables
<varname>hello</varname>, <varname>HELLO</varname> y <varname>Hello</varname> son todas diferentes.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Configurar variables</title>
+ <para>Sintaxis: <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Ejemplo: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>Para asignar un valor a una variable, use los operadores <literal>=</literal> o
<literal>:=</literal>. Estos operadores establecen el valor de la variable y devuelven el número asignado,
así puede hacer cosas como <programlisting>a = b = 5
+</programlisting>. Esto establecerá <varname>b</varname> a 5 y también <varname>a</varname> será 5.</para>
+
+ <para>Los operadores <literal>=</literal> y <literal>:=</literal> se pueden usar para asignar
variables. La diferencia entre ellos es que <literal>:=</literal> siempre actuará como operador de asignación
mientras que <literal>=</literal> se puede interpretar como prueba de igualdad usado en un contexto donde se
espera una variable booleana.</para>
+
+ <para>Para temas relacionados con el ámbito de las variables, consulte la <xref
linkend="genius-gel-variables-global"/>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Variables integradas</title>
+ <para>GEL tiene un número de «variables» predeterminadas, tales como <varname>e</varname>,
<varname>pi</varname> o <varname>GoldenRatio</varname>. Éstas se usan ampliamente con su valor predeterminado
y no se pueden modificar. Existen más variables predeterminadas. Consulte la <xref
linkend="genius-gel-function-list-constants"/> para obtener la lista completa. Observe que
<varname>i</varname> no es el valor predeterminado de la raíz cuadrada de un número negativo (el número
imaginario), y es indefinido que permite usarlo como un contador. Si quiere escribir un número imaginario,
necesita utilizar <userinput>1i</userinput>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Resultado de la variable anterior</title>
+ <para>Las variables <varname>Ans</varname> y <varname>ans</varname> se pueden usar para obtener el
resultado de la última expresión utilizada. Por ejemplo, si acaba de realizar un cálculo y quiere añadirle
389 al resultado, podría hacer lo siguiente: <programlisting>Ans+389
+</programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Usar funciones</title>
+
+ <para>Sintaxis: <programlisting>NombreFuncion(argumento1, argumento2, ...)
+</programlisting> Ejemplo: <programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting> Para evaluar una funcion introduzca el nombre de ésta seguido de los argumentos (si si los
hay) entre paréntesis. Esto devolverá el resultado de aplicar la función a sus argumentos. El número de
argumentos es, por supuesto, diferente para cada función.</para>
+
+ <para>Hay muchas funciones integradas, como <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> y <link
linkend="gel-function-tan"><function>tan</function></link>. Puede usar la función integrada <link
linkend="gel-command-help"><function>help</function></link> para obtener una lista de todas las funciones
integradas, o consultar la <xref linkend="genius-gel-function-list"/> para obtener una lista completa..</para>
+
+ <tip>
+ <title>Usar completado con el tabulador</title>
+ <para>Puede usar completado con el tabulador para que Genius complete nombres de funciones. Pruebe a
escribir las primeras letras del nombre y pulse <userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Los nombres de las funciones son sensibles a mayúsculas.</title>
+ <para>Los nombres de las funciones son sensibles a la capitalización. Esto significa que las
funciones <function>haceralgo</function>, <function>HACERALGO</function> y <function>HacerAlgo</function> son
todas diferentes entre sí.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Definir funciones</title>
+ <para>Sintaxis: <programlisting><![CDATA[function <identifier>(<comma separated arguments>) =
<function body>
+<identifier> = (`() = <function body>)
+]]></programlisting> El caracter <literal>`</literal> es el acento invertido y significa función anónima.
Estableciéndoselo a una variable se define una función.</para>
+
+ <para>Una función toma cero o más argumentos separados por comas y devuelve el resultado del cuerpo
de dicha función. Definir funciones propias es primordialmente una cuestión de conveniencia; un posible uso
es tener un conjunto de funciones definidas en archivos GEL que Genius pueda cargar para tenerlas
disponibles. Ejemplo: <programlisting>function addup(a,b,c) = a+b+c
+</programlisting> por lo que <userinput>addup(1,4,9)</userinput> devuelve 14.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Listas de argumentos de variables</title>
+ <para>Si se incluye <literal>...</literal> después del último argumento en la declaración de una
función Genius permitirá pasar a dicha función un número de argumentos arbitrario. Si no se pasa ningún
argumento el último tendrá el valor <constant>null</constant>. De lo contrario, será un vector que contiene
todos los argumentos. Por ejemplo: <programlisting>function f(a,b...) = b
+</programlisting> Por tanto <userinput>f(1,2,3)</userinput> devuelve <computeroutput>[2,3]</computeroutput>,
mientras que <userinput>f(1)</userinput> devuelve <constant>null</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Pasar funciones a funciones</title>
+
+ <para>En Genius es posible pasar una función como argumento de otra función. Esto se puede hacer
usando «nodos de funciones» o funciones anónimas.</para>
+
+ <para>Si no se escriben los paréntesis después del nombre de la función, en lugar de evaluarse, la
función se devolverá como un «nodo función». El nodo función se puede pasar a como argumento a otra función.
Ejemplo: <programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting></para>
+ <para>Para pasar funciones que no están definidas se puede hacer uso de la función anónima (consulte
la <xref linkend="genius-gel-functions-defining"/>). Es decir, cuando se quiere pasar una función sin dar un
nombre. Sintaxis: <programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting> Ejemplo: <programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting> Devuelve 5.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Operaciones con funciones</title>
+ <para>Algunas funciones permiten operaciones aritméticas y algunos argumentos de función tales como
<link linkend="gel-function-exp"><function>exp</function></link> o <link
linkend="gel-function-ln"><function>ln</function></link>, para operar en la función. Por ejemplo,
<programlisting>exp(sin*cos+4)
+</programlisting> devolverá una función que toma <varname>x</varname> y devuelve
<userinput>exp(sin(x)*cos(x)+4)</userinput>. Esta funcionalidad es equivalente a escribir
<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting> Esta operación puede ser útil cuando se definen funciones rápidamente. Por ejemplo, para
crear una función llamada <varname>f</varname> que realice la operación arriba descrita, simplemente puede
escribir: <programlisting>f = exp(sin*cos+4)
+</programlisting> También se puede usar al dibujar. Por ejemplo, para dibujar el cuadrado de un seno puede
utilizar: <programlisting>LinePlot(sin^2)
+</programlisting></para>
+
+ <warning>
+ <para>No todas las funciones se pueden usar de este modo. Por ejemplo, cuando usa una función
binaria las funciones deben aceptar el mismo número de argumentos.</para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Separador</title>
+ <para>GEL es más diferente que otros lenguajes a la hora de tratar con varios comandos y funciones. En
GEL puede encadenar comandos junto con un operador de separación. Esto es, si quiere escribir más de una
expresión utilice el operador <literal>;</literal> después de cada expresión. Esta es una forma en la que
ambas expresiones se evaluan y se devuelve el resultado de la segunda expresión (o de la última, si hay más
de dos expresiones). Suponga que escribe la siguiente expresión: <programlisting>3 ; 5
+</programlisting> Esta expresión dará como resultado 5.</para>
+ <para>Esto requiere poner algunos paréntesis para evitar ambigüedades, especialmente si el carácter
<literal>;</literal> no es la primitiva más prioritaria. Esto difiere ligeramente de otros lenguajes de
programación donde el carácter <literal>;</literal> es un finalizador de sentencias. En GEL es un operador
binario. Si está familiarizado con Pascal esto debería ser natural para usted. Sin embargo, Genius le permite
simular que es un terminador si el carácter <literal>;</literal> se encuentra detrás de un paréntesis o un
bloque, Genius añadirá automáticamente un nodo nulo como si hubiese escrito <userinput>;null</userinput>.
Esto es útil en caso de que no quiera devolver ningún valor o si gestiona el retorno de un modo diferente.
Tenga en cuenta que es ralentiza ligeramente el código si se ejecuta demasiado frecuentemente ya que se toma
como un operador más.</para>
+ <para>Si escribe expresiones en un programa no tiene que añadir un punto y coma. En este caso Genius
muestra el resultado de la expresión cuando se ejecuta. Sin embargo, si define una función, el cuerpo de la
función es una sola expresión.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Comentarios</title>
+ <para>GEL es similar a otros lenguajes de scripts en el sentido de que <literal>#</literal> indica un
comentario, que es texto que no se evaluará. Todo lo que vaya después de la almohadilla hasta el final de la
línea se ignorará. Por ejemplo, <programlisting># Esto es un comentario
+# cada línea debe empezar por una almohadilla
+# en la siguiente línea se establece el valor de x a 123
+x=123;
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Evaluación modular</title>
+ <para>Genius implementa aritmética modular. Para usarla, simplemente añada «mod <entero>»
después de la expresión. Ejemplo: <userinput>2^(5!) * 3^(6!) mod 5</userinput> Podría ser posible realizar
aritmética modular trabajando con enteros y aplicando el módulo al final con el operador
<literal>%</literal>, que simplemente devuelve el resto, pero puede requerir más tiempo o ser imposible
cuando se trabaja con valores muy elevados. Por ejemplo <userinput>10^(10^10) % 6</userinput> puede que no
funcione (el exponente es demasiado grande), sin embargo <userinput>10^(10^10) mod 6</userinput> es
instantáneo. La primera expresión primero intenta calcular el entero <userinput>10^(10^10)</userinput> y
luego el resto de la división por 6, mientras que la segunda expresión calcula el módulo 6 de todo primero
que nada.</para>
+ <para>Dados dos números enteros a y b, puede calcular el inverso multiplicativo de a módulo b usando
números racionales (desde luego, el inverso debe existir). Ejemplos: <programlisting>10^-1 mod 101
+1/10 mod 101</programlisting> Puede obtener la evaluación modular de una matriz, calcular potencias, la
matriz inversa y dividir. Ejemplo: <programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting> Es la matriz identidad, pues B es la matriz inversa de A módulo 5.</para>
+ <para>Algunas funciones como <link linkend="gel-function-sqrt"><function>sqrt</function></link> o
<link linkend="gel-function-log"><function>log</function></link> trabajan de una manera diferente en modo
módulo. Éstas utilizarán sus versiones discretas trabajando en el entorno de enteros que el usuario ha
seleccionado. Por ejemplo: <programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting><function>sqrt</function> devolverá todas las raíces cuadradas posibles.</para>
+ <para>No concatene operadores mod, solo colóquelos al final del cálculo, todos los cálculos en la
expresión que está a la izquierda se llevarán a cabo bajo aritmética mod. Si coloca un operador mod dentro de
un mod seguramente obtendrá resultados inesperados. Si solo quiere aplicar mod a un único número y controlar
cuándo se toma el resto, es mejor utilizar el operador <literal>%</literal>. Cuando necesita concatenar
varias expresiones en una aritmética modular con diferentes divisores, lo mejor es simplemente dividir la
expresión en varias y usar variables temporales para evitar un mod dentro de un mod.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Lista de operadores GEL</title>
+
+ <para>Todo en GEL es en realidad una expresión. Las expresiones se encadenan unas tras otras mediante
diferentes operadores. Como hemos visto, incluso el separador es un operador binario en GEL. A continuación
se muestra una lista de los operadores en GEL.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>El separador evalúa <varname>a</varname> y <varname>b</varname>, pero sólo devuelve el
valor de <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>El operador asignación. Asigna <varname>b</varname> a <varname>a</varname>
(<varname>a</varname> debe ser un <link linkend="genius-gel-lvalues">lvalue</link> válido) (tenga en cuenta
que este operador puede equivaler a <literal>==</literal> si se usa cuando se espera una expresión
booleana)</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>El operador asignación. Asigna <varname>b</varname> a <varname>a</varname>
(<varname>a</varname> debe ser un <link linkend="genius-gel-lvalues">lvalue</link> válido). Se diferencia de
<literal>=</literal> en que nunca equivale a <literal>==</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>Valor absoluto. En el caso de que la expresión sea un número complejo el resultado será su
módulo (distancia desde el origen). Por ejemplo: <userinput>|3 * e^(1i*pi)|</userinput> devuelve 3.</para>
+ <para>Consulte <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>Exponenciación, eleva <varname>a</varname> a la <varname>b</varname>-ésima potencia.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>Potencia elemento a elemento. Eleva cada elemento de una matriz <varname>a</varname> a la
<varname>b</varname>-ésima potencia. O si <varname>b</varname> es una matriz del mismo tamaño que
<varname>a</varname>, entonces realiza la operación elemento a elemento. Si <varname>a</varname> es un número
y <varname>b</varname> es una matriz entonces crea una matriz del mismo tamaño que <varname>b</varname>
formada por <varname>a</varname> elevado a todas las diferentes potencias de <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>Adición. Suma dos números, matrices, funciones o cadenas. Si suma una cadena a cualquier
valor el resultado es una cadena. Si uno de ellos es una matriz cuadrada y el otro un número, el número se
multiplica por la identidad de la matriz.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>Sustracción. Resta dos números, matrices o funciones.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>Multiplicación. Es la multiplicación normal de matrices.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>Multiplicación elemento a elemento si <varname>a</varname> y <varname>b</varname> son
matrices.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>División. Cuando <varname>a</varname> y <varname>b</varname> son sólo números es la
división normal. Cuando son matrices, esto es el equivalente a <userinput>a*b^-1</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>División elemento por elemento. Igual que <userinput>a/b</userinput> para números, pero
opera elemento por elemento en matrices.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>División hacia atrás. Es lo mismo que <userinput>b/a</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>División hacia atrás elemento por elemento.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>
+ The mod operator. This does not turn on the <link
linkend="genius-gel-modular-evaluation">modular mode</link>, but
+ just returns the remainder of integer division
+ <userinput>a/b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>
+ Element by element mod operator. Returns the remainder
+ after element by element integer division
+ <userinput>a./b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>Operación de evaluación modular. La expresión <varname>a</varname> se evalúa módulo
<varname>b</varname>. Consulte la <xref linkend="genius-gel-modular-evaluation"/>. Algunas de las funciones y
operadores se comportan de un modo distinto cuando trabajan en módulo entero.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>Operador factorial. Esto es <userinput>1*...*(n-2)*(n-1)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>Operador doble factorial. Esto es <userinput>1*...*(n-4)*(n-2)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>Operador de igualdad, devuelve <constant>true</constant> o <constant>false</constant>
dependiendo de si <varname>a</varname> y <varname>b</varname> son iguales o no.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>Operador de desigualdad, devuelve <constant>true</constant> si <varname>a</varname> no es
igual a <varname>b</varname>; si lo es, devuelve <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>Operador distinto alternativo devuelve <constant>true</constant> si <varname>a</varname> no
es igual a <varname>b</varname> en caso contrario devuelve <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>Operador menor o igual, devuelve <constant>true</constant> si <varname>a</varname> es menor
o igual que <varname>b</varname>, si no, devuelve <constant>false</constant>. Esto se puede concatenar como
<userinput>a <= b <= c</userinput> (también se puede combinar con el operador menor que).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>
+ Greater than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a >= b >= c</userinput>
+ (and they can also be combined with the greater than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>
+ Less than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a < b < c</userinput>
+ (they can also be combined with the less than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>
+ Greater than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a > b > c</userinput>
+ (they can also be combined with the greater than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>Operador de comparación. Si <varname>a</varname> es igual a <varname>b</varname> devuelve
0, si <varname>a</varname> es menor que <varname>b</varname> devuelve -1 y si <varname>a</varname> es mayor
que <varname>b</varname> devuelve 1.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>AND lógico. Devuelve cierto si <varname>a</varname> y <varname>b</varname> son ciertos; si
no, devuelve falso. Si se dan números, los números distintos de cero se consideran como «verdadero».</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>OR lógico. Devuelve verdadero si <varname>a</varname> o <varname>b</varname> son
verdaderos; si no, devuelve falso. Si se dan números, los números distintos de cero se consideran como
verdadero.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>
+ Logical xor.
+ Returns true if exactly one of
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>
+ Logical not. Returns the logical negation of <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>Operador de negación. Devuelve el negativo de un número o una matriz (en una matriz,
funciona de acuerdo al elemento).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>Referencia de variables (pasar una referencia a una variable). Consulte <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Desreferenciar una variable (para acceder a una variable referenciada). Consulte la <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>Transpuesta conjugada de una matriz. Significa que las filas y columnas se intercambian y
se toman la conjugada compleja de todas las entradas. Esto es, si el elemento i,j de <varname>a</varname> es
x+iy, entonces el elemento j,i de <userinput>a'</userinput> es x-iy.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>Transpuesta de matriz, no conjuga las entradas. Esto significa, el elemento i,j de
<varname>a</varname> se convierte en el elemento j,i de <userinput>a.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>
+ Get element of a matrix in row <varname>b</varname> and column
+ <varname>c</varname>. If <varname>b</varname>,
+ <varname>c</varname> are vectors, then this gets the corresponding
+ rows, columns or submatrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>Devuelve la fila de la matriz (o múltiples filas si <varname>b</varname> es un
vector).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>Igual que el anterior</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>Devuelve la columna de la matriz (o columnas si <varname>c</varname> es un vector).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>Igual que el anterior</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>Obtiene un elemento de una matriz tratándola como vector. Recorre la matriz por
filas.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>Crea un vector con valores de <varname>a</varname> a <varname>b</varname> (o específica una
región de filas o columnas para el operador <literal>@</literal>). Por ejemplo para obtener las filas 2 a 4
de la matriz <varname>A</varname> se podría hacer <programlisting>A@(2:4,)
+ </programlisting> ya que <userinput>2:4</userinput> devolverá el vector
<userinput>[2,3,4]</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>Crea un vector con valores desde <varname>a</varname> a <varname>c</varname> usando
<varname>b</varname> como paso. Por ejemplo: <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting></para>
+ <para>Cuando los números implicados son números en coma flotante, por ejemplo
<userinput>1.0:0.4:3.0</userinput>, la salida es lo que se espera a pesar de la adición de 0,4 a 1,0 cinco
veces es en realidad sólo un poco más de 3,0 debido a la forma en que los números de coma flotante se
almacenan en la base 2 (no hay 0.4, el número real almacenado es sólo ligeramente más grande). La forma en
que se maneja es el mismo que en los bucles «for», «sum», y «prod». Si el final está dentro de
<userinput>2^-20</userinput> veces el tamaño de paso del punto final, se utiliza el punto final y suponemos
que no eran errores de redondeo. Esto no es perfecto, pero maneja la mayoría de los casos. Esta comprobación
se realiza sólo desde la versión 1.0.18 en adelante, así que la ejecución de su código puede ser diferente en
las versiones anteriores. Si quiere evitar este problema, utilice los números racionales reales, posiblemente
usando el <function>float</functio
n> si quiere obtener los números de punto flotante en el final. Por ejemplo <userinput>1:2/5:3</userinput>
hace lo correcto y <userinput>float(1:2/5:3)</userinput> incluso le da los números de punto flotante y es
ligeramente más precisa que <userinput>1,0:0,4:3,0</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>
+ Make <varname>a</varname> into an imaginary number (multiply <varname>a</varname> by the
+ imaginary). Normally the imaginary number <varname>i</varname> is
+ written as <userinput>1i</userinput>. So the above is equal to
+ <programlisting>(a)*1i
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>Escapa un identificador de modo que no sea evaluado. O escapa una matriz de modo que no sea
expandida.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>Intercambia el valor de <varname>a</varname> con el valor de <varname>b</varname>.
Actualmente no funciona con rangos de elementos matriciales. Devuelve <constant>null</constant>. Está
disponible desde la versión 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>Incrementa la variable <varname>a</varname> en 1. Si <varname>a</varname> es una matriz
entonces incrementará cada uno de los elementos. Es equivalente a <userinput>a=a+1</userinput> pero más
rápido. Devuelve <constant>null</constant>. Está disponible desde la versión 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>Incrementa la variable <varname>a</varname> en <varname>b</varname>. Si
<varname>a</varname> es una matriz, entonces incrementa cada elemento. Es equivalente a
<userinput>a=a+b</userinput>, pero más rápido. Devuelve null <constant>null</constant>. Está disponible desde
la versión 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>El operador @() hace el operador «:» más útil. Con éste puede especificar regiones dentro de una
matriz. De modo que a@(2:4,6) representa las filas 2, 3 y 4 de la columna 6. O @(,1:2) devuelve las dos
primeras columnas de una matriz. Puede asignar al operador @() siempre que el valor sea una matriz cuyo
tamaño coincida con el tamaño de la región asignada o cualquier otro tipo de valor.</para>
+</note>
+
+<note>
+<para>Los operadores de comparación (excepto el operador <=> que se comporta de un modo normal), no
son estrictamente operadores binarios, de hecho pueden agruparse de una forma matemática estándar, por
ejemplo: (1<x<=y<5) es una expresión booleana válida y significa lo que debería, es decir, (1<x
and x≤y and y<5)</para>
+</note>
+
+<note>
+<para>El operador unario «menos» opera de un modo distinto dependiendo del lugar donde aparece. Si lo hace
antes de un número su prioridad es muy alta. Si aparece delante de una expresión tendrá menos prioridad que
los operadores potencia y factorial. De este modo, por ejemplo, <userinput>-1^k</userinput> es en realidad
<userinput>(-1)^k</userinput>, sin embargo <userinput>-foo(1)^k</userinput> es realmente
<userinput>-(foo(1)^k)</userinput>. Por lo tanto, tenga cuidado con el uso de este operador y si tiene alguna
duda, use paréntesis.</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Programar con GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Condicionales</title>
+ <para>Sintaxis: <programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting> si se omite <literal>else</literal>, si la expresión <literal>expression1</literal>
devuelve <constant>false</constant> o <literal>0</literal>, devolverá <literal>NULL</literal>.</para>
+ <para>Ejemplos: <programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting> tenga en cuenta que <literal>=</literal> se traducirá como <literal>==</literal> si se
usa dentro de una expresión <literal>if</literal>, por lo que <programlisting>if a=5 then a=a-1
+</programlisting> se interpretará como: <programlisting>if a==5 then a:=a-1
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Bucles</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>Bucles «while»</title>
+ <para>Sintaxis: <programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting> son similares a otros lenguajes. Sin embargo,
puesto que GEL es una única expresión que debe devolver algo, estas construcciones devolverán el resultado de
la última iteración o <literal>NULL</literal> si no se realiza ninguna operación. En la expresión booleana,
<literal>=</literal> se traduce a <literal>==</literal> sólo para la sentencia <literal>if</literal>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>Bucles «for»</title>
+ <para>Sintaxis: <programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting> bucle en el que el
identificador es un conjunto de todos los valores desde <literal><from></literal> hasta
<literal><to></literal>, opcionalmente se puede usar un incremento distinto de 1. Dichos bucles son más
rápidos, cómodos y compactos que los bucles normales descritos previamente pero menos flexibles. El
identificador se debe tratar como tal y no se puede eliminar su referencia. El valor del identificador
corresponde al último valor de éste o a <literal><from></literal> si el cuerpo del bucle no se ha
evaluado todavía. Se garantiza que la variable permanezca inicializada tras el bucle, de modo que puede
usarla sin problemas. Además, <literal><from></literal>, <literal><to></literal> e
<literal><increment></literal> no pueden ser valores complejos. Tampoco se garantiza que se alcance
<literal><to></literal>, pero sí que nunca se rebasará. El e
jemplo siguiente imprime todos los números pares desde 1 a 19: <programlisting>for i = 1 to 20 by 2 do
print(i)
+</programlisting></para>
+ <para>Cuando uno de los valores es un número de coma flotante, la verificación final se realiza con
un paso de 2 ^-20. Es decir, incluso si se sobrestima 2 ^-20 veces el «por» por encima, todavía se ejecuta la
última iteración. De este modo <programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting> hace lo esperado aunque sumar 0,1 diez veces es algo superior a 1,0 debido a la forma en
que los números de coma flotante se almacenan en la base 2 (no hay 0,1, el número real almacenado es sólo
ligeramente más grande). Esto no es perfecto, pero funciona en la mayoría de los casos. Si quiere evitar este
problema, utilice números reales racionales, por ejemplo: <programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting> Esta comprobación se realiza únicamente desde la versión 1.0.16 en adelante, por lo que la
ejecución del código puede variar en versiones anteriores.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Bucles «foreach»</title>
+ <para>Sintaxis: <programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
ejecuta el cuerpo del bucle para cada uno de los elementos de la matriz recorriendo ésta fila por fila y de
izquierda a derecha. Para imprimir los números 1, 2, 3 y 4 en este orden se podría hacer lo siguiente:
<programlisting>for n in [1,2:3,4] do print(n)
+</programlisting> Si desea recorrer las filas y columnas de una matriz puede usar las funciones RowsOf y
ColumnsOf que devuelven un vector de filas o columnas de la matriz. Por lo tanto, <programlisting>for n in
RowsOf ([1,2:3,4]) do print(n)
+</programlisting> imprimirá <literal>[1,2]</literal> y después <literal>[3,4]</literal>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Parar y continuar</title>
+ <para>También puede utilizar los comandos <literal>break</literal> y <literal>continue</literal> en
un bucle. El comando <literal>continue</literal> reinicia el bucle actual en la siguiente iteración, mientras
que el comando <literal>break</literal> sale del bucle actual. <programlisting><![CDATA[while(<expression1>)
do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Sumas y productos</title>
+ <para>Sintaxis: <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting> Si sustituye <literal>for</literal> por
<literal>sum</literal> o <literal>prod</literal>, obtendrá una suma o un producto en lugar de un bucle
<literal>for</literal>. En vez de el último valor del bucle, devolverá la suma o el producto de todos los
valores obtenidos respectivamente.</para>
+ <para>Si no se ejecuta ningún comando (por ejemplo <userinput>sum i=1 to 0 do ...</userinput>),
<literal>sum</literal> devuelve el valor 0 y <literal>prod</literal> devuelve el valor 1, que es el convenio
estándar.</para>
+ <para>Para los números en coma flotante el redondeo de protección de errores se realiza como en el
bucle for. Consulte la <xref linkend="genius-gel-loops-for"/>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Operadores de comparación</title>
+ <para>Los siguientes operadores de comparación comunes están soportados en GEL, y tienen el
significado obvio: <literal>==</literal>, <literal>>=</literal>, <literal><=</literal>,
<literal>!=</literal>, <literal><></literal>, <literal><</literal>, <literal>></literal>. Éstos
devuelven los valores <constant>true</constant> o <constant>false</constant>. Los operadores
<literal>!=</literal> y <literal><></literal> son lo mismo y significan «no es igual a». GEL también
permite utilizar el operador <literal><=></literal>, que devuelve el valor -1 si el lado izquierdo es
menor, 0 si ambos lados son iguales, y 1 si el lado izquierdo es mayor.</para>
+
+ <para>Generalmente <literal>=</literal> se traduce como <literal>==</literal> si aparece en algún
lugar dónde GEL espera una condición, como la condición «if». Por ejemplo <programlisting>if a=b then c
+if a==b then c
+</programlisting> son lo mismo en GEL. Sin embargo, debería utilizar <literal>==</literal> o
<literal>:=</literal> cuando se quiere comparar o asignar, respectivamente, si quiere que su código sea fácil
de leer. Además le ayuda a evitar errores.</para>
+
+ <para>No todos los operadores de comparación (salvo el operador <literal><=></literal>, que se
comporta de manera normal), son operadores binarios en el sentido estricto del concepto. De hecho, se pueden
agrupar en el modo matemático usual, por ejemplo: (<literal>1<x<=y<5</literal>) es una expresión
booleana legítima que significa lo que debería, es decir (1<x and x≤y and y<5)</para>
+ <para>Para construir expresiones lógicas utilice las palabras <literal>not</literal>,
<literal>and</literal>, <literal>or</literal>, <literal>xor</literal>. Los operadores <literal>or</literal> y
<literal>and</literal> son especiales pues evalúan sus argumentos de uno en uno, por lo que la técnica usual
para implementar la evaluación condicional también funciona aquí. Por ejemplo, <literal>1 or a=1</literal> no
ejecuta el comando <literal>a=1</literal>, pues el primer argumento es verdadero.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Variables globales y ámbito de variables</title>
+ <para>
+ GEL is a
+ <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">
+ dynamically scoped language</ulink>. We will explain what this
+ means below. That is, normal variables and functions are dynamically
+ scoped. The exception are
+ <link linkend="genius-gel-parameters">parameter variables</link>,
+ which are always global.
+ </para>
+ <para>Al igual que la mayoría de los lenguajes de programación, GEL tiene diferentes tipos de
variables. Normalmente, cuando se define una variable en una función ésta es visible desde esa función y
desde todas las funciones que se llamen (todos los contextos superiores). Por ejemplo, suponga que una
función <function>f</function> define una variable <varname>a</varname> y luego llama a otra función
<function>g</function>. Entonces, la función <function>g</function> puede hacer referencia a la variable
<varname>a</varname>. Pero, una vez que la ejecución de <function>f</function> concluye, la variable
<varname>a</varname> sale del ámbito. Por ejemplo, el siguiente código imprime el número 5. No se puede
llamar a la función <function>g</function> desde el nivel más alto (fuera de <function>f</function>, dado que
<varname>a</varname> no se habrá definido).</para>
+ <para>Si define una variable dentro de una función, ésta anulará toda variable definida al llamar a
funciones. Por ejemplo, si modifica el código anterior y escribe: <programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting> Este código aún imprime 5. Pero si llama a la función <function>g</function> fuera de
<function>f</function>, entonces se imprimirá 10. Observe que al definir <varname>a</varname> como 5 dentro
de <function>f</function> no cambia el valor de <varname>a</varname> al nivel superior (global), por lo que
si verifica el valor de <varname>a</varname> es aún 10.</para>
+ <para>Los argumentos de funciones son exactamente como variables definidas dentro de la función,
salvo que éstas se inicializan con el valor que se introduce en la función. Además de esto, se les trata como
a cualquier otra variable definida dentro de la función.</para>
+ <para>Las funciones se tratan exactamente como variables. Por lo tanto, puede redefinir funciones.
Normalmente, (en el nivel superior) no puede redefinir variables y funciones protegidas. Pero localmente si
lo puede hacer. Considere la siguiente sesión: <screen><prompt>genius> </prompt><userinput>function f(x) =
sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen></para>
+ <para>Las funciones definidas en el nivel superior se consideran globales. Éstas son visibles desde
cualquier parte. Como se dijo, la función <function>f</function> no cambiará el valor de <varname>a</varname>
a 5. <programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting> Sin embargo, en algunas ocasiones es necesario fijar una variable global dentro de una
función. Cuando este comportamiento es necesario, utilice la función <link
linkend="gel-function-set"><function>set</function></link>. Si introduce una cadena o un identificador
entrecomillado a esta función, ésta fija la variable globalmente (al nivel superior). Por ejemplo, podría
utilizar <programlisting>set(`a,3)
+</programlisting> o <programlisting>set("a",3)
+</programlisting> para fijar el valor 3 en la variable <varname>a</varname>.</para>
+ <para>La función <function>set</function> siempre fija el nivel superior global. No existe alguna
manera de definir una variable local en alguna función desde alguna subrutina. Si se necesita hacer esto,
debe utilizar ...</para>
+ <para>Consulte también las funciones <link
linkend="gel-function-SetElement"><function>SetElement</function></link> y <link
linkend="gel-function-SetVElement"><function>SetVElement</function></link>.</para>
+ <para>Para recapitular en un lenguaje más técnico: Genius opera con diferentes contextos numerados.
El nivel más alto es el contexto 0 (cero). Siempre que se introduce una función , el contexto aumenta, y
cuando la función devuelve su resultado el contexto disminuye. Siempre se puede ver una función o una
variable desde los contextos mayores. Cuando una variable se define en un contexto menor, al fijar esta
variable se crea una nueva variable local en el contexto actual y esta variable sera visible desde los
contextos mayores.</para>
+ <para>También existen variables locales, que sólo pueden ser vistas desde el contexto actual. Cuando
se devuelven funciones por un valor se pueden referenciar variables que no son visibles desde un contexto mas
alto y esto puede ser problemático. Consulte las secciones <link
linkend="genius-gel-true-local-variables">Variables locales verdaderas</link> y <link
linkend="genius-gel-returning-functions">Devolver funciones</link>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Variables de parámetros</title>
+ <para>Como se dijo, existen variables especiales llamadas parámetros. Éstas existen en todos los
ámbitos. Para declarar un parámetro llamado <varname>foo</varname> con valor inicial 1, escriba
<programlisting><![CDATA[parameter foo = 1
+]]></programlisting> A partir de ahí, <varname>foo</varname> es una variable estrictamente global. Si asigna
un valor a <varname>foo</varname> dentro de cualquier función, modificará la variable en todos los contextos.
Esto significa que las funciones no tienen una copia privada de los parámetros.</para>
+ <para>Cuando define un parámetro utilizando la función <link
linkend="gel-function-undefine"><function>undefine</function></link>, éste deja de ser un parámetro.</para>
+ <para>Algunos parámetros están integrados de manera predeterminada y modifican el comportamiento de
genius.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Retorno</title>
+ <para>Normalmente, una función se compone de una o varias expresiones separadas con punto y coma, y
se devuelve el valor de la última expresión. Esto resulta útil en funciones sencillas, pero algunas veces no
querrá que una función devuelva el resultado del último cálculo. Podría, por ejemplo, preferir que ésta
devolviera algún valor obtenido a la mitad de la función. En este caso, puede utilizar la palabra
<literal>return</literal>. La función <literal>return</literal> toma un único valor, que es el valor que se
devolverá.</para>
+ <para>Ejemplo: <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>Referencias</title>
+ <para>Para algunas funciones puede ser necesario devolver más de un valor. Esto se puede lograr al
devolver un vector de valores, pero muchas veces resulta conveniente pasar una referencia a una variable.
Puede pasar una referencia a una variable a una función, y la función fijará el valor, eliminando una
referencia. Aunque éste es el principal uso de las referencias, no es el único.</para>
+ <para>Cuando se utilizan funciones que devuelven valores a través de referencias en la lista de
argumentos, pase solo el nombre de la variable con un ampersand (&). Por ejemplo, el siguiente código
calcula el valor propio de una matriz <varname>A</varname> con un vector propio inicial indeterminado
<varname>x</varname>, y guarda el vector propio obtenido en la variable <varname>v</varname>:
<programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
+]]></programlisting></para>
+ <para>La manera como funcionan las referencias y la sintaxis que utilizan son similares al lenguaje C.
El operador <literal>&</literal> hace referencia a una variable y <literal>*</literal> la elimina. Ambos
pueden aplicarse sólo a un identificador, por lo que <literal>**a</literal> no es una expresión legal en
GEL.</para>
+ <para>Las referencias se pueden explicar mejor utilizando un ejemplo: <programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting> ahora <varname>a</varname> contiene el valor 2. También puede hacer referencia a
funciones: <programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting> devuelve el valor 4.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Lvalues</title>
+ <para>Un lvalue es el lado izquierdo the una asignación. En otras palabras, un lvalor es lo que se le
asigna a algo. Algunos lvalues válidos son: <variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>Identificador. Aquí se asignará la variable de nombre <varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Eliminar la referencia a un identificador. Esto fijará lo que a lo que apunta la variable
<varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<region>)</userinput></term>
+ <listitem>
+ <para>Región de una matriz. Aquí, la región normalmente se especifica como con el operador regular
@(), y puede ser un sola entrada, o una región completa de una matriz.</para>
+ </listitem>
+ </varlistentry>
+</variablelist></para>
+ <para>Ejemplos: <programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting> Tenga en cuenta que tanto <literal>:=</literal> como <literal>=</literal> pueden
utilizarse indistintamente, salvo que la asignación aparezca en una condición. Es por esto que siempre es mas
seguro sólo utilizar <literal>:=</literal> cuando se pretenda establecer una asignación y
<literal>==</literal> para hacer una comparación.</para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Programación avanzada con GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Control de errores</title>
+ <para>Si detecta un error en su función, puede salir de ella. Para errores normales, como argumentos
del tipo equivocado, puede impedir que se calcule el resultado de la función al agregar la frase
<literal>bailout</literal>. Si algo saliera de verdad mal y quisiera interrumpir definitivamente el cálculo
en curso, puede utilizar la palabra <literal>exception</literal>.</para>
+ <para>Por ejemplo, si quiere verificar argumentos en una función. Podría utilizar el siguiente código:
<programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M no es una matriz");
+ bailout
+ );
+ ...
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Sintaxis de nivel superior</title>
+ <para>
+ The syntax is slightly different if you enter statements on
+ the top level versus when they are inside parentheses or
+ inside functions. On the top level, enter acts the same as if
+ you press return on the command line. Therefore think of programs
+ as just a sequence of lines as if they were entered on the command line.
+ In particular, you do not need to enter the separator at the end of the
+ line (unless it is of course part of several statements inside
+ parentheses). When a statement does not end with a separator on the
+ top level, the result is printed after being executed.
+ </para>
+ <para>
+ For example,
+ <programlisting>function f(x)=x^2
+f(3)
+</programlisting>
+ will print first the result of setting a function (a representation of
+ the function, in this case <computeroutput>(`(x)=(x^2))</computeroutput>)
+ and then the expected 9. To avoid this, enter a separator
+ after the function definition.
+ <programlisting>function f(x)=x^2;
+f(3)
+</programlisting>
+ If you need to put a separator into your function then you have to surround with
+ parenthesis. For example:
+<programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting>
+ </para>
+ <para>El siguiente código, aunque funcione bien en la función, puede producir un error al introducirlo
en el nivel más alto de un programa. <programlisting>if Algo() then
+ HacerAlgo()
+else
+ HacerOtraCosa()
+</programlisting></para>
+ <para>El problema es que, después que la <application>Herramienta Matemática Genius</application> ve
el caracter de final de línea después de la segunda línea, la aplicación decidirá que ya se a completado la
sentencia y la ejecutará. Cuando se termine la ejecución, la <application>Herramienta Matemática
Genius</application> continuará con la siguiente línea y producirá un error al leer la sentencia
<literal>else</literal>. Utilice paréntesis para evitar esto. La <application>Herramienta Matemática
Genius</application> no estará satisfecha hasta que todos los paréntesis estén cerrados. <programlisting>if
Algo() then (
+ HacerAlgo()
+) else (
+ HacerOtraCosa()
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Devolver funciones</title>
+ <para>Es posible devolver funciones como un valor. De esta manera puede construir funciones que
construyan otras funciones con propósitos específicos de acuerdo a ciertos parámetros. La parte complicada es
determinar qué variables ve la función. La manera en que esto funciona en GEL es la siguiente: cuando una
función devuelve otra función, todos los identificadores que referencia el cuerpo de la función que sale del
ámbito son antepuestos al diccionario privado de la función devuelta. Por lo tanto, la función verá todas las
variables que estaban en el ámbito cuando fue definida. Por ejemplo, la siguiente función devuelve una
función que agrega 5 al valor de su argumento: <programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting> Tenga en cuenta que la función agrega <varname>k</varname> a <varname>x</varname>. Podría
utilizar esto como sigue: <programlisting>g = f();
+g(5)
+</programlisting> And <userinput>g(5)</userinput> devuelve el valor 10.</para>
+ <para>Algo que conviene tener en cuenta es que el valor de <varname>k</varname> que se utiliza es el
que se encuentra activo mientras <function>f</function> devuelve su valor. Por ejemplo:
<programlisting>function f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting> devolverá una función que añade 10 a su argumento, en lugar de 5. Esto es porque el
diccionario adicional se crea sólo cuando el contexto en el que la función se define termina, que es cuando
la función <function>f</function> devuelve su valor. Esto es consistente con cómo que esperaría que la
función <function>r</function> actuara dentro de la función <function>f</function> según las reglas sobre el
ámbito de variables en GEL. Al diccionario adicional sólo se añaden las variables que se utilizaron en
contextos que recién terminan y que ya no existen. Las variables que se utilizan en la función que están en
contextos que se mantienen válidos funcionan de manera usual, utilizan el valor actual de la variable. La
única diferencia es entre las variables globales y las funciones. Todos los identificadores que hacen
referencia a variables globales al momento de definir la función no se agregan al diccionario privado. Esto
es para evitar traba
jo innecesario al devolver una función y rara vez será un problema. Por ejemplo, suponga que borra «k=5» de
la función <function>f</function> y que, en el nivel más alto, define <varname>k</varname> como 5, por
ejemplo. Cuado ejecute la función <function>f</function>, la función <function>r</function> no añadirá
<varname>k</varname> al diccionario privado pues ésta es una variable global (del nivel más alto) en el
momento en que se definió <varname>r</varname>.</para>
+ <para>Algunas veces es mejor tener más control sobre cómo las variables se copian al diccionario
privado. Desde la versión 1.0.7 puede especificar qué variables se copian al diccionario privado colocando
corchetes adicionales después de los argumentos con la lista de variables que se desean copiar separadas con
comas. Si hace esto, las variables se copiarán al diccionario privado en el momento que se define la función,
y no se tocará el diccionario privado después de esto. Por ejemplo, <programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting> devuelve una función que cuando se llama añade 5 a su argumento. La copia local de
<varname>k</varname> se crea cuando la función se define.</para>
+ <para>Cuando quiera que la función no tenga un diccionario privado escriba un par de corchetes vacíos
después de la lista de argumentos. Con esto no se creará ningún diccionario privado. Hacer esto es útil para
incrementar la eficiencia cuando no se necesita un diccionario privado o cuando quiere que la función busque
todas las variables cuando las ve al momento que se la llama. Por ejemplo, suponga que quiere que la función
que devuelve <function>f</function> ve el valor de <varname>k</varname> del nivel más alto sin importar que
hay una variable con el mismo nombre al momento de la definición. El código <programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting> devuelve 20 y no 15, lo que podría suceder si se hubiese añadido <varname>k</varname> con
valor 5 al diccionario privado.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>Variables locales verdaderas</title>
+ <para>Cuando se pasa una función a otras funciones, la manera predeterminada en que se determinan los
ámbitos de las variables puede no ser la que quiere. Por ejemplo: <programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting> probablemente quiere que la función <function>r</function>, en el momento que pasa como
<function>g</function> a la función <function>f</function>, vea la variable <varname>k</varname> como 10 y no
5 y que el código devuelva 11 y no 6. Sin embargo, como está escrita, la función verá <varname>k</varname>
con el valor 5. Existen dos maneras de resolver este problema. Una es hacer que <function>r</function> guarde
<varname>k</varname> en un diccionario privado utilizando la notación de corchetes. Consulte la sección <link
linkend="genius-gel-returning-functions">Devolver funciones</link>.</para>
+ <para>Pero hay otra solución. Desde la versión 1.0.7 existen variables locales verdaderas. Éstas son
variables que son visibles sólo desde el contexto actual y no desde ninguna función que se llame. Se podría
definir <varname>k</varname> como una variable local en la función <function>f</function>. Para hacer esto,
añada la sentencia <command>local</command> como la primera sentencia en la función (siempre debe de ser la
primera sentencia de la función). También puede convertir cualquier argumento en una variable local. Esto es,
<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting> El código funcionará como se espera e imprimirá 11. Observe que la sentencia
<command>local</command> inicializa todas las variables que se referencian (salvo los argumentos de
funciones) como una constante <constant>null</constant>.</para>
+ <para>Si todas las variables se crean localmente, puede pasar un asterisco en lugar de una lista de
variables. En este caso las variables no se inicializarán hasta que se fijen, desde luego. Entonces, la
siguiente definición de <function>f</function> también funcionará: <programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting></para>
+ <para>Es bueno que todas las funciones que toman otras funciones como argumentos utilicen variables
locales. De esta manera las funciones que pasan no ven los detalles de la implementación y luego no se
confunden.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>Procedimiento de inicio de GEL</title>
+ <para>Primero, el programa busca el archivo de la biblioteca instalada (la versión compilada
<filename>lib.cgel</filename>) en la carpeta instalada; luego, busca en la carpeta actual y finalmente trata
de cargar algún archivo no compilado llamado <filename>~/.geniusinit</filename>.</para>
+ <para>Si alguna vez cambia el lugar donde está instalada la biblioteca, primero deberá compilarla con
el comando <command>genius --compile loader.gel > lib.cgel</command></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Cargar programas</title>
+ <para>Algunas veces tiene un programa más largo que escribió en un archivo y quiere leer dicho archivo
con la <application>herramienta matemática Genius</application>. En estas situaciones tiene dos opciones.
Puede conservar las funciones que más usa en el archivo <filename>~/.geniusinit</filename>. Si quiere cargar
un archivo a la mitad de una sesión (o desde otro archivo), puede escribir <command>load <list of
filenames></command> en la línea de comandos. Esto se tiene que hacer desde el nivel más alto y no dentro
de alguna función a algo similar, y no puede ser parte de una expresión. También tiene una sintaxis
ligeramente distinta que el resto de Genius, similar a la que se usa en la consola. Puede escribir el nombre
del archivo entre comillas. Si utiliza las comillas '' obtendrá exactamente la cadena que escriba, si utiliza
las comillas "" no se escaparán los caracteres especiales como se hace con las cadenas. Ejemplo:
<programlisting>load progra
ma1.gel programa2.gel
+load "Nombre raro de archivo con ESPACIOS.gel"
+</programlisting> Los comandos <command>cd</command>, <command>pwd</command> y <command>ls</command> también
están incluídos. El comando <command>cd</command> toma un argumento, <command>ls</command> toma una argumento
que es como «glob» en la consola de Unix (puede utilizar comodines, por ejemplo). El comando
<command>pwd</command> no toma ningún argumento. Por ejemplo: <programlisting>cd «carpeta_con_programas_gel»
+ls *.gel
+</programlisting></para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Matrices en GEL</title>
+
+ <para>Genius tiene soporte para vectores y matrices y una biblioteca dimensionable para manipulación de
matrices y funciones de álgebra lineal.</para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Introducir matrices</title>
+ <para>Para introducir matrices, puede utilizar cualquiera de las dos sintaxis que siguen. Puede
introducir la matriz en una línea, separando los valores con comas y las filas con un punto y coma. También
puede introducir cada fila en una línea, separando los valores con comas. También puede combinar los dos
métodos. Para introducir una matriz de 3x3 con los números 1 a 9 podría hacer lo siguiente:
<programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting> o <programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting> No utilice «;» y «return» en la misma línea.</para>
+
+ <para>También puede utilizar la funcionalidad de expandir matrices para introducir una matriz. Por
ejemplo puede hacer lo siguiente: <programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting> y obtendrá <programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting> Puede construir matrices con vectores y cosas parecidas de manera similar.</para>
+
+ <para>Otra cosa es que se los puntos no especificados se inicialicen a 0, por lo que
<programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting> será <programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting></para>
+
+ <para>Cuando las matrices se evalúan y se recorre fila por fila, justo como el operador
<literal>M@(j)</literal> que recorre la matriz renglón por renglón.</para>
+
+ <note>
+ <para>Tenga cuidado al utilizar «return» en expresiones dentro de corchetes <literal>[ ]</literal>,
ya que tiene un significado ligeramente distinto en ese contexto. Comenzará una fila nueva.</para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Conjugada de la traspuesta y operador de trasposición</title>
+ <para>Puede calcular la matriz traspuesta conjugada de una matriz utilizando el operador
<literal>'</literal>. Es decir, la entrada correspondiente al renglón <varname>j</varname> y la columna
<varname>i</varname> será el complejo conjugado de la entrada correspondiente a la fila <varname>i</varname>
y la columna <varname>j</varname> de la matriz original. Por ejemplo: <programlisting>[1,2,3]*[4,5,6]'
+</programlisting> Se traspone el segundo vector para que sea posible multiplicar las matrices. Si solamente
quiere trasponer la matriz sin conjugarla, utilice el operador <literal>.'</literal>. Por ejemplo:
<programlisting>[1,2,3]*[4,5,6i].'
+</programlisting></para>
+ <para>Observe que la matriz traspuesta, esto es la que se calcula utilizando el operador
<literal>.'</literal>, es más veloz y no crea una copia nueva de la matriz en la memoria. Desafortunadamente,
la matriz traspuesta conjugada sí crea una copia nueva. Se recomienda que siempre utilice el operador
<literal>.'</literal> cuando trabaje con matrices y vectores reales.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Álgebra lineal</title>
+ <para>Genius implementa varias rutinas útiles para manipular álgebra lineal y matrices. Consulte las
secciones <link linkend="genius-gel-function-list-linear-algebra">álgebra lineal</link> y <link
linkend="genius-gel-function-list-matrix">manipulación de matrices</link> de la lista de funciones GEL.</para>
+ <para>Las rutinas de álgebra lineal implementadas en GEL no ofrecen actualmente un paquete numérico
bien probado, por lo que no se deberían utilizar para cálculos numéricos críticos. Por otro lado, Genius
implementa muy bien muchas operaciones de álgebra lineal con coeficientes racionales y enteros. Éstas son
intrínsecamente exactas y, de hecho, dan resultados mucho mejores que las rutinas comunes de doble precisión
para álgebra lineal.</para>
+ <para>Por ejemplo, no tiene sentido calcular el rango y el espacio nulo de una matriz en coma
flotante, ya que para todos los fines prácticos, se debe tener en cuenta que la matriz puede tener algunos
errores pequeños. Es posible que se obtenga un resultado diferente al esperado. El problema es que con una
perturbación pequeña cualquier matriz es de rango completo e invertible. Sin embargo, si la matriz se compone
de números racionales, entonces el rango y el espacio nulo serán siempre exactos.</para>
+ <para>En general, cuando Genius calcula la base de un espacio vectorial determinado (por ejemplo con
la función <link linkend="gel-function-NullSpace"><function>NullSpace</function></link>), se dará la base
como una matriz cuyas columnas son los vectores de la base. Es decir, cuando Genius habla de un subespacio
lineal se refiere a una matriz cuyo espacio de columna es el subespacio lineal indicado.</para>
+ <para>Cabe señalar que Genius puede recordar ciertas propiedades de una matriz. Por ejemplo, se
recordará si una matriz está en su forma reducida por filas. Si se hacen muchas llamadas a funciones que
utilizan internamente la forma reducida por filas de una matriz, se puede reducir por filas la matriz
previamente una sola vez. Las llamadas sucesivas a la función <link
linkend="gel-function-rref"><function>rref</function></link> se harán muy rápido.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Polinomios en GEL</title>
+
+ <para>Actualmente, Genius puede manipular polinomios de una variable escritos como vectores y realizar
algunas operaciones básicas con ellos. Se prevé ampliar este soporte adicional.</para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Usar polinomios</title>
+ <para>Actualmente, los polinomios de una variable son vectores horizontales con valores como nodos. La
potencia del término es la posición en el vector, con la primera posición siendo 0. Por lo tanto,
<programlisting>[1,2,3]
+</programlisting> se traduce en un polinomio como <programlisting>1 + 2*x + 3*x^2
+</programlisting></para>
+ <para>Se pueden sumar, restar y multiplicar polinomios utilizando las funciones <link
linkend="gel-function-AddPoly"><function>AddPoly</function></link>, <link
linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link> y <link
linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link> respectivamente. Se puede
imprimir un polinomio utilizando la función <link
linkend="gel-function-PolyToString"><function>PolyToString</function></link>. Por ejemplo,
<programlisting>PolyToString([1,2,3],"y")
+</programlisting> devuelve <programlisting>3*y^2 + 2*y + 1
+</programlisting> También se puede obtener una representación funcional del polinomio de manera que puede
evaluarse. Esto se realiza utilizando <link
linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>, que devuelve una función
anónima. <programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting></para>
+ <para>También es posible encontrar raíces de los polinomios de grado 1 a 4 mediante el uso de la
función <link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>, que llama a
la función de la fórmula adecuada. Los polinomios de grado más alto se convertirán en funciones y se
resolverán numéricamente al utilizar una función como <link
linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>, <link
linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>, <link
linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link>, o <link
linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.</para>
+ <para>Consulte la <xref linkend="genius-gel-function-list-polynomials"/> en la lista de funciones el
resto de funciones que actúan sobre polinomios.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Teoría de conjuntos en GEL</title>
+
+ <para>Genius incorpora un juego básico de funcionalidades teoréticas. En la actualidad, un conjunto es
sólo un vector (o una matriz). Cada objeto distinto se trata como un elemento diferente.</para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Usar conjuntos</title>
+ <para>Al igual que los vectores, los objetos en conjuntos pueden incluir números, cadenas,
<constant>null</constant>, matrices y vectores. En un futuro se plantea tener un tipo determinado de
conjuntos, en lugar de utilizar vectores. Tenga en cuenta que los números en coma flotante son distintos de
los enteros, y que parecen iguales. Esto significa que Genius los tratará como términos distintos, usando las
constantes <constant>0</constant> y <constant>0.0</constant>. La constante <constant>null</constant> se trata
como un conjunto vacío.</para>
+ <para>Para construir un conjunto fuera de un vector, use la función <link
linkend="gel-function-MakeSet"><function>MakeSet</function></link>.Actualmente, sólo se devolverá un nuevo
vector donde cada elemento es único. <screen><prompt>genius>
</prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen></para>
+
+ <para>Del mismo modo hay funciones que se explican por si mismas como <link
linkend="gel-function-Union"><function>Union</function></link>, <link
linkend="gel-function-Intersection"><function>Intersection</function></link>, <link
linkend="gel-function-SetMinus"><function>SetMinus</function></link>. Por ejemplo: <screen><prompt>genius>
</prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen>. Tenga en cuenta que no se garantiza el orden en los valores que devuelve la función. Si se quiere
ordenar el vector puede usar la función <link
linkend="gel-function-SortVector"><function>SortVector</function></link>.</para>
+
+ <para>Para los miembros del equipo de pruebas, hay funciones <link
linkend="gel-function-IsIn"><function>IsIn</function></link> y <link
linkend="gel-function-IsSubset"><function>IsSubset</function></link>, que devuelven un valor tipo «bool». Por
ejemplo: <screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen> La entrada <userinput>IsIn(x,X)</userinput> por supuesto es equivalente a
<userinput>IsSubset([x],X)</userinput>. Obsérvese que puesto que el conjunto vacío es un subconjunto de cada
conjunto, <userinput>IsSubset(null,X)</userinput> es siempre «true».</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Lista de funciones GEL</title>
+
+ <!--&gel-function-list;-->
+
+ <para>Para obtener ayuda sobre una función específica desde la consola, escriba: <programlisting>help
NombreFuncion
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Comandos</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>ayuda NombreFunción</synopsis>
+ <para>Imprimir ayuda (o ayuda en una función/comando).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load «archivo.gel»</synopsis>
+ <para>Cargar un archivo en el intérprete. El archivo se ejecutará como si se hubiera escrito en la
línea de comandos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /carpeta/nombre</synopsis>
+ <para>Cambiar la carpeta de trabajo a <filename>/carpeta/nombre</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Imprimir la carpeta de trabajo actual.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Listar archivos en la carpeta actual.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin nombre_del_complemento</synopsis>
+ <para>Cargar un complemento. El complemento debe estar instalado en el sistema en la carpeta
adecuada.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Básico</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (consulta)</synopsis>
+ <synopsis>AskButtons (consulta, botón1, ...)</synopsis>
+ <para>Hace una pregunta y presenta una lista de botones para el usuario o un menú de opciones en
modo texto). Devuelve el índice en base a 1 de la tecla pulsada. Esto es, devuelve 1 si se presiona la
primera tecla, 2 si es la segunda, y así sucesivamente. Si el usuario cierra la ventana (o simplemente entra
en modo texto), entonces devuelve la constante <constant>null</constant>. La ejecución del programa permanece
bloqueada hasta que el usuario responda.</para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (consulta)</synopsis>
+ <synopsis>AskString (consulta, predeterminado)</synopsis>
+ <para>Hace una pregunta y deja al usuario que introduzca una cadena que luego devuelve. Si el
usuario cancela o cierra la ventana, entonces se devuelve la constante <constant>null</constant>. El programa
se detiene hasta que el usuario responda. Si de forma predeterminada <varname>default</varname> se da,
entonces se escribe de forma automática cada vez que el usuario presiona la tecla «Intro» (desde la versión
1.0.6 en adelante).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Componer dos funciones y devolver una función, que es la composición de
<function>f</function> y <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Compone y ejecuta una funcion con ella misma <varname>n</varname> veces, pasando
<varname>x</varname> como argumento. Devolviendo <varname>x</varname> si <varname>n</varname> es cero. Por
ejemplo: <screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (cadena)</synopsis>
+ <para>Analiza y evalúa una cadena.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Obtener el módulo actual desde fuera del contexto de la función. Esto significa que, si
fuera de la función se ejecutó en módulo (utilizando <literal>mod</literal>) entonces esto devuelve lo que
este módulo fue. El cuerpo de la función que se llama no se ejecuta en aritmética modular, y esta función
interna hace posible hacer funciones GEL que utilizan la aritmética modular.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Función identidad, devuelve sus argumentos. Esto es equivalente a <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (bval)</synopsis>
+ <para>Hacer entero (0 para <constant>false</constant> o 1 para <constant>true</constant>) desde un
valor booleano. <varname>bval</varname> también puede ser un número y en el caso de que el valor no sea 0 se
interpretará como <constant>true</constant> y si es 0 se interpretará como <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (arg)</synopsis>
+ <para>Comprobar si el argumento es un booleano (y no un número).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Comprobar si un identificador está declarado. Pase una cadena o un identificador. Si pasa
una matriz, cada entrada se evaluará por separado y la matriz contendrá cadenas o identificadores.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (arg)</synopsis>
+ <para>Comprobar si el argumento es una función.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (arg)</synopsis>
+ <para>Comprobar si el argumento es una función o un identificador.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (arg)</synopsis>
+ <para>Comprobar si el argumento es una referencia a la función. Esto incluye las referencias a
variables.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (arg)</synopsis>
+ <para>Comprobar si el argumento es una matriz. Si bien <constant>null</constant> se considera en
algunas ocasiones como una matriz vacía, la función <function>IsMatrix</function> no considera a
<constant>null</constant> como una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (arg)</synopsis>
+ <para>Comprobar si el argumento es <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (arg)</synopsis>
+ <para>Comprobar si el argumento es una cadena de texto.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (arg)</synopsis>
+ <para>Comprobar si el argumento es un número.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (cadena)</synopsis>
+ <para>Comprobar pero no evaluar una cadena. Tenga en cuenta que algunos cálculos internos se
realizan durante el análisis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,opciones...)</synopsis>
+ <para>Establece opciones para una función, actualmente <literal>"PropagateMod"</literal> y
<literal>"NoModuloArguments"</literal>. Si <literal>"PropagateMod"</literal> se activa, entonces el cuerpo de
la función se evalúa en la aritmética modular cuando la función se llama dentro de un bloque que se evaluó
con la aritmética modular (se utilizó <literal>mod</literal>). Si se activa
<literal>"NoModuloArguments"</literal>, entonces los argumentos de la función se evaluarán con la aritmética
modular.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,categoria,desc)</synopsis>
+ <para>Establece la categoría y la línea de descripción de la ayuda para una función.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Establece un alias de ayuda.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (carpeta)</synopsis>
+ <para>Cambia la carpeta actual, igual que <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Devuelve la hora UNIX actual con una precisión de microsegundos, como un número en coma
flotante. Esto es, devuelve el número de segundos desde el 1 de enero de 1970.</para>
+ <para>Desde la versión 1.0.15 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (cadena,expresión)</synopsis>
+ <para>Muestra una cadena y una expresión separadas por dos puntos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Muestra la configuración de variables. Las variables pueden ser cadenas o identificadores.
Por ejemplo: <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting></para>
+ <para>Si se llama sin argumentos (debería suministrar una lista vacía de argumentos) como
<programlisting>DisplayVariables()
+ </programlisting> entonces todas las variables se imprimirán incluyendo una lista de llamadas
similar a <guilabel>Muestra variables del usuario</guilabel> en la versión gráfica.</para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (cadena)</synopsis>
+ <para>Imprime un error en el flujo de error (en la consola).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Aliases: <function>quit</function></para>
+ <para>Sale el programa.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Alias: <function>False</function><function>FALSE</function></para>
+ <para>El valor booleano <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Muestra el manual de usuario.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (cadena)</synopsis>
+ <para>Imprime una expresión y luego una nueva línea. El argumento <varname>str</varname> puede ser
cualquier expresión. Esto se hace dentro de una cadena antes de imprimir.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (cad)</synopsis>
+ <para>Imprime una expresión sin un carácter de nueva línea. El argumento <varname>str</varname>
puede ser cualquier expresión. Esto se hace dentro de una cadena antes de imprimir.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Imprime una tabla de valores para una función. Los valores están en el vector
<varname>v</varname>. Puede usar la notación de construcción de vectores como sigue:
<programlisting>PrintTable (f,[0:10])
+ </programlisting> Si <varname>v</varname> es un entero positivo, se utilizarán todos los
elementos de la tabla de enteros desde 1 hasta v incluido.</para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Puede proteger una variable de ser modificada. Esto se usa en las funciones de GEL internas
para evitar que se sobreescriban accidentalmente.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Protege todas la variables actuales definidas, parámetros y funciones desde que se
modificaron. Se utiliza por las funciones GEL para impedir accidentalmente que se sobrescriba. Normalmente la
<application>herramienta matemática Genius</application> considera desprotegidas las variables que el usuario
definió.</para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,val)</synopsis>
+ <para>Establecer una variable global. La variable <varname>id</varname> sólo puede ser una cadena
o un identificador. Por ejemplo: <programlisting>set(`x,1)
+ </programlisting> establecerá la variable global <varname>x</varname> a 1.</para>
+ <para>La función devuelve el <varname>val</varname>, que podrá utilizarse para
encadenamiento.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,row,col,val)</synopsis>
+ <para>Establecer un elemento de una variable global, que es una matriz. La variable
<varname>id</varname> puede ser una cadena o un identificador entrecomillado. Por ejemplo:
<programlisting>SetElement(`x,2,3,1)
+ </programlisting> establecerá el elemento de la segunda fila, tercera columna de la variable
global <varname>x</varname> a 1. Si no existe el nombre de la variable global, o si se configura algo que no
es una matriz, se creará una nueva matriz con el tamaño apropiado rellena con ceros.</para>
+ <para>Las variables <varname>row</varname> y <varname>col</varname> pueden ser también rangos, y la
semántica es la mísma para las configuraciones normales de los elementos con un signo igual.</para>
+ <para>La función devuelve el <varname>val</varname>, que podrá utilizarse para
encadenamiento.</para>
+ <para>Disponible desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,val)</synopsis>
+ <para>Establecer un elemento de una variable global, que es un vector. La variable
<varname>id</varname> puede ser una cadena o un identificador entrecommillado. Por ejemplo:
<programlisting>SetElement(`x,2,1)
+ </programlisting> establecerá el segundo elemento del vector variable global <varname>x</varname>
a 1. Si no existe el nombre de la variable global, o si está configurado para algo distinto que no sea un
vector (matriz), se creará una nueva fila del vector con valor cero y con el tamaño apropiado.</para>
+ <para>La variable <varname>elt</varname> puede ser un rango, y la semánticas son la mísmas para las
configuraciones normales de los elementos con un signo igual.</para>
+ <para>La función devuelve el <varname>val</varname>, que podrá utilizarse para
encadenamiento.</para>
+ <para>Disponible desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Crear una cadena. Esto creará una cadena desde cualquier argumento.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Alias: <function>True</function><function>TRUE</function></para>
+ <para>El valor booleano <constant>true</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Alias: <function>Undefine</function></para>
+ <para>Elimina la definición de una variable. Esto incluye variables locales y globales, cada valor
se limpia en toda su dimensión. Esta función no se usa en variables locales. Se puede usar un vector de
identificadores para eliminar la definición de varias variables a la vez.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Elimina la definición de todas las variables desprotegidas globales (incluyendo funciones y
parámetros). La <application>herramienta matemática Genius</application> considera a las variables protegidas
como variables y funciones definidas por el sistema. Tenga en cuenta que <function>UndefineAll</function>
solo elimina la definición global de símbolos no locales, por lo que se puede ejecutar desde dentro de otras
funciones de manera segura.</para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Desproteger una variable de ser modificada.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Devolver un vector con todos los nombres de variables globales definidas por el usuario (sin
proteger).</para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (secs)</synopsis>
+ <para>Esperar un número específico de segundos. <varname>secs</varname> no puede ser negativo.
Cero es aceptable y no pasa nada en este caso, excepto si los posibles eventos de interfaz del usuario se
procesan.</para>
+ <para>Desde la versión 1.0.18, la variable <varname>secs</varname> puede ser un número no entero,
así <userinput>wait(0.1)</userinput> esperará durante un periodo de una décima de segundo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Devuelve la versión de Genius como un vector horizontal de tres argumentos en el que el
primero es la versión mayor, le sigue menor versión y la revisión en último lugar.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Da la información de garantía.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Parámetros</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = número</synopsis>
+ <para>Tolerancia de la función <function>Chop</function></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = número</synopsis>
+ <para>Iteraciones para tratar de obtener el límite de continuidad y sus límites.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = número</synopsis>
+ <para>Número de pasos sucesivos dentro de la tolerancia para el cálculo de la continuidad.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = número</synopsis>
+ <para>Tolerancia para la continuidad de las funciones y para el cálculo del límite.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = número</synopsis>
+ <para>Número de iteraciones para tratar de obtener el límite para la derivada.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = número</synopsis>
+ <para>Número de pasos sucesivos dentro de la tolerancia para el cálculo de la derivada.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = número</synopsis>
+ <para>Tolerancia para calcular las derivadas de las funciones.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = número</synopsis>
+ <para>Tolerancia de <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = número</synopsis>
+ <para>Precisión en coma flotante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = booleano</synopsis>
+ <para>Imprimir expresiones completas, incluso si son de más de una línea.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = número</synopsis>
+ <para>Tolerancia de la función <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = número</synopsis>
+ <para>Base de salida de enteros.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = número</synopsis>
+ <para>Número de tests de Miller-Rabin adicionales que ejecutar sobre un número antes de declararlo
primo en <link linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Le dice a Genius cómo dibujar las leyendas para las <link
linkend="genius-gel-function-list-plotting">funciones para dibujar líneas</link> tales como <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Le dice a Genius que dibuje las etiquetas de los ejes cuando se utilizan <link
linkend="genius-gel-function-list-plotting">funciones para dibujar líneas</link> como <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Le dice a Genius qué nombres de variable se usan como nombres predeterminados para <link
linkend="genius-gel-function-list-plotting">funciones para dibujar líneas</link> tales como <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> y compañía.</para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Establece los límites para las<link linkend="genius-gel-function-list-plotting">funciones
para dibujar líneas</link> tales como <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = número</synopsis>
+ <para>Máximo de cifras que mostrar.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = número</synopsis>
+ <para>Máximo de errores que mostrar.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = booleano</synopsis>
+ <para>Si es cierto, las fracciones mixtas se imprimen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = función</synopsis>
+ <para>La función usada para la integración en <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = número</synopsis>
+ <para>Pasos que realizar en <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = número</synopsis>
+ <para>Cuando otro número que se imprime en el objeto (una matriz o un valor) es mayor que
10<superscript>-OutputChopWhenExponent</superscript>, y el número que se imprime es menor que
10<superscript>-OutputChopExponent</superscript>, entonces se mostrará <computeroutput>0.0</computeroutput>
en lugar del número.</para>
+<para>La salida nunca se corta si <function>OutputChopExponent</function> es cero. El número será un entero
positivo.</para>
+<para>Si quiere que la salida siempre se corte según <function>OutputChopExponent</function>, configure
<function>OutputChopWhenExponent</function>, para un valor mayor o igual a
<function>OutputChopExponent</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = número</synopsis>
+ <para>Cuando recortar la salida. Consulte <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = cadena</synopsis>
+ <para>Estilo de salida, puede ser <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> o <literal>troff</literal>.</para>
+ <para>Esto afecta principalmente a cómo las matrices y fracciones se imprimen y es útil para pegar
en los documentos. Por ejemplo, puede configurarlo en LaTeX usando: <programlisting>OutputStyle = "latex"
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = booleano</synopsis>
+ <para>Convertir todos los resultados a flotantes antes de imprimir.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = booleano</synopsis>
+ <para>Usar notación científica.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [vertical,horizontal]</synopsis>
+ <para>Establece el número de pasos verticales y horizontales en un diagrama de pendientes.
(Consulte <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).</para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = número</synopsis>
+ <para>Cuántas iteraciones probar para <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> y <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = número</synopsis>
+ <para>La cantidad de pasos consecutivos para estar dentro de los límites para <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> y <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = número</synopsis>
+ <para>Tolerancia para <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> y <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Le dice a Genius cómo dibujar las leyendas para las <link
linkend="genius-gel-function-list-plotting">funciones de dibujado de superficie</link> tales como <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Indica a Genius los nombres de variables que se usan como nombres predeterminados para las
<link linkend="genius-gel-function-list-plotting">funciones de superficie de dibujado</link> que utiliza
<link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>. Compruebe que
<varname>z</varname> no se refiere al eje dependiente (vertical), sino que a la variable compleja
independiente <userinput>z=x+iy</userinput>.</para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Establece los límites de la superficie de dibujado (consulte <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Indica si la longitud de las flechas tendrá un tamaño normalizado en el trazado dentro del
campo vectorial. Si es cierto, en el campo vectorial solo aparecerá la dirección y no la magnitud. (Consulte
<link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [vertical,horizontal]</synopsis>
+ <para>Establece el número de pasos verticales y horizontales en un gráfico de campo de vectores.
(Observe <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Constantes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>Constante de Catalan, aproximadamente 0,915... Se define para las series donde los términos
son <userinput>(-1^k)/((2*k+1)^2)</userinput>, donde <varname>k</varname> tiene un rango desde 0 a
infinito.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Alias: <function>gamma</function></para>
+ <para>Constante gamma de Euler. También llamada constante de Euler-Mascheroni.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>El número áureo.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GoldenRatio">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravedad</synopsis>
+ <para>La aceleración en caída libre al nivel del mar en metros por segundos al cuadrado. Es la
constante de gravedad estandarizada y su valor es 9.80665. La gravedad en un desfiladero de un bosque es
diferente debido principalmente a la diferencia de altitud y al hecho de que la Tierra no es perfectamente
redonda ni uniforme.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>La base del logaritmo natural. <userinput>e^x</userinput> es la función exponencial <link
linkend="gel-function-exp"><function>exp</function></link>. Su valor es aproximadamente 2.71828182846... Este
número se llama número de Euler, aúnque hay varios números que se llaman también Euler. Un ejemplo es la
constante gamma: <link linkend="gel-function-EulerConstant"><function>Constante de
Euler</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/E">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>El número pi, que es la relación de la circunferencia de un círculo con su diámetro. Esto es
aproximadamente 3,14159265359...</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Pi">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Numérico</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Alias: <function>abs</function></para>
+ <para>Valor absoluto de un número y, si <varname>x</varname> es un valor complejo, el módulo de
<varname>x</varname>. Es decir, es la distancia entre <varname>x</varname> y el origen. Esto es equivalente a
<userinput>|x|</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/AbsoluteValue">Planetmath (absolute value)</ulink>,
+ <ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>,
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolute value)</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (complex modulus)</ulink>
+for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Reemplazar números muy pequeños por cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Alias: <function>conj</function><function>Conj</function></para>
+ <para>Calcula el conjugado complejo del número complejo <varname>z</varname>. Si
<varname>z</varname> es un vector o una matriz, se conjugan todos sus elementos.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Obtener el denominador de un número racional.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Devolver la parte fraccional de un número.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Alias: <function>ImaginaryPart</function></para>
+ <para>Obtener la parte imaginaria de un número complejo. Por ejemplo
<userinput>Re(3+4i)</userinput> yields 4.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>División sin resto.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (num)</synopsis>
+ <para>Comprueba si el argumento es un número complejo (no real). Observe que hacemos énfasis en
número no real. Es decir, <userinput>IsComplex(3)</userinput> que devuelve «false», mientras que
<userinput>IsComplex(3-1i)</userinput> devuelve «true».</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (num)</synopsis>
+ <para>Comprobar si el argumento es, posiblemente, un número racional complejo. Esto es, si tanto la
parte real como la imaginaria se dan como números racionales. Por supuesto, racional significa simplemente
que «no se almacena como un número en coma flotante».</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (num)</synopsis>
+ <para>Comprobar si el argumento es un número real en coma flotante (no complejo).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (num)</synopsis>
+ <para>Alias: <function>IsComplexInteger</function></para>
+ <para>Comprueba si un argumento es un posible número entero complejo. Es decir, un entero complejo
es un número de la forma <userinput>n+1i*m</userinput> donde <varname>n</varname> y <varname>m</varname> son
enteros.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (num)</synopsis>
+ <para>Comprobar si el argumento es un entero (no complejo).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (num)</synopsis>
+ <para>Comprobar si el argumento es un entero real no negativo. Esto es, cualquier número entero
positivo o cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (num)</synopsis>
+ <para>Alias: <function>IsNaturalNumber</function></para>
+ <para>Comprueba si el argumento es un entero real positivo. Tenga en cuenta que se acepta el
convenio de que 0 no es un número natural.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (num)</synopsis>
+ <para>Comprobar si el argumento es un número racional (no complejo). Por supuesto, racional
significa «no almacenado como un número en coma flotante».</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (num)</synopsis>
+ <para>Comprobar si el argumento es un número real</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Obtener el numerador de un número racional.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Alias: <function>RealPart</function></para>
+ <para>Obtiene la parte real de un número complejo. Por ejemplo <userinput>Re(3+4i)</userinput>
devuelve 3.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Alias: <function>sign</function></para>
+ <para>Devolver el signo de un número. Devuelve <literal>-1</literal> si es negativo,
<literal>0</literal> si es cero y <literal>1</literal> si es positivo. Si <varname>x</varname> es un valor
complejo <function>Sign</function> devuelve su dirección o 0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Alias: <function>Ceiling</function></para>
+ <para>Obtener el menor número entero mayor o igual a <varname>n</varname>. Ejemplos:
<screen><prompt>genius></prompt> <userinput>ceil(1,1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1,1)</userinput>
+= -1
+</screen></para>
+ <para>Tenga en cuenta que los números en coma flotante se almacenan en binario y que puede que el
resultado no sea lo que espera. Por ejemplo <userinput>ceil(420/4.2)</userinput> devuelve 101 en vez de 100.
Esto sucede porque en realidad 4,2 es ligeramente menor que 4,2. Utilice la representación racional
<userinput>42/10</userinput> si quiere exactitud aritmética.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>La función exponencial. Esto es la función <userinput>e^x</userinput> donde
<varname>e</varname> es la <link linkend="gel-function-e">base del logaritmo natural</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Convertir un número en un valor en coma flotante. Esto devuelve la representación en coma
flotante del número <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Alias: <function>Floor</function></para>
+ <para>Obtener el entero más alto menor o igual que <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>El logaritmo natural, logaritmo en base <varname>e</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logaritmo de <varname>x</varname> en base <varname>b</varname> (se llama <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> en modo módulo), si no se indica
la base, se utiliza <link linkend="gel-function-e"><varname>e</varname></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Logaritmo de <varname>x</varname> en base 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Alias: <function>lg</function></para>
+ <para>Logaritmo de <varname>x</varname> en base 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,args...)</synopsis>
+ <para>Alias: <function>Max</function><function>Maximum</function></para>
+ <para>Devuelve el máximo de los argumentos o las matrices.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,args...)</synopsis>
+ <para>Alias: <function>Min</function><function>Minimum</function></para>
+ <para>Devuelve el mínimo de los argumentos o las matrices.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (tamaño...)</synopsis>
+ <para>Generar valores en coma flotante aleatorios en el rango <literal>[0,1)</literal>. Si se
indica «tamaño», entonces devuelve una matriz (si se especifican dos números) o un vector (si se especifica
un número).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (máx,tamaño...)</synopsis>
+ <para>Generar número enteros aleatorios en el rango <literal>[0,máx)</literal>. Si se indica
«tamaño», entonces devuelve una matriz (si se especifican dos números) o un vector (si se especifica un
número). Por ejemplo, <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Alias: <function>Round</function></para>
+ <para>Redondear un número.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Alias: <function>SquareRoot</function></para>
+ <para>La raíz cuadrada. Cuando se opera con «módulo», algunos enteros devolverán un valor
<constant>null</constant> o un vector de raíces cuadradas. Ejemplos: <screen><prompt>genius></prompt>
<userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen></para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> o
<ulink url="http://planetmath.org/SquareRoot">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Alias: <function>Truncate</function><function>IntegerPart</function></para>
+ <para>Truncar el número a un entero (devolver la parte entera)</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Trigonometría</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Alias: <function>arccos</function></para>
+ <para>La función arccos (inversa del cos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Alias: <function>arccosh</function></para>
+ <para>La función arccosh (inversa del cosh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Alias: <function>arccot</function></para>
+ <para>La función arccot (inversa de la cot)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Alias: <function>arccoth</function></para>
+ <para>La función arccoth (inversa de la coth).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Alias: <function>arccsc</function></para>
+ <para>La inversa de la función cosecante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Alias: <function>arccsch</function></para>
+ <para>La inversa de la función cosecante hiperbólica.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Alias: <function>arcsec</function></para>
+ <para>La inversa de la función secante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Alias: <function>arcsech</function></para>
+ <para>La inversa de la función secante hiperbólica.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Alias: <function>arcsin</function></para>
+ <para>La función arcsen (inversa del sen).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Alias: <function>arcsinh</function></para>
+ <para>La función arcsenh (inversa del senh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Alias: <function>arctan</function></para>
+ <para>Calcula la función «arctan» (inversa de «tan»).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Alias: <function>arctanh</function></para>
+ <para>La función arctanh (inversa de la tanh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Alias: <function>arctan2</function></para>
+ <para>Calcula la función «arctan2». Si <userinput>x>0</userinput>, entonces devuelve
<userinput>atan(y/x)</userinput>. Si <userinput>x<0</userinput>, entonces devuelve <userinput>sign(y) *
(pi - atan(|y/x|)</userinput>. Cuando <userinput>x=0</userinput> devuelve <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> devuelve 0 en lugar de fallar.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Calcula la función coseno.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Calcula la función coseno hiperbólico.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink>
o <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>La función cotangente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>La función cotangente hiperbólica.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink>
o <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>La función cosecante.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>La función cosecante hiperbólica.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink>
o <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>La función secante.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>La función secante hiperbólica.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink>
o <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Calcula la función seno.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Calcula la función seno hiperbólico.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink>
o <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Calcula la función tangente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>La función tangente hiperbólica.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink>
o <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Teoría de números</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>¿Son los números reales <varname>a</varname> and <varname>b</varname> primos entre sí?
Devuelve <constant>true</constant> o <constant>false</constant>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> o
<ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Devolver el <varname>n</varname>-ésimo número de Bernoulli.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Alias: <function>CRT</function></para>
+ <para>Encontrar la <varname>x</varname> que resuelve el sistema dado por el vector
<varname>a</varname> y el módulo de los elementos de <varname>m</varname>, utilizando el «teorema chino del
resto».</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Dadas dos factorizaciones, dar la factorización del producto.</para>
+ <para>Consulte la sección<link linkend="gel-function-Factorize">factorizar</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Convertir un vector de valores mostrando potencias de b a un número.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Convertir un número en un vector de potencias para elementos en base
<varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Encontrar el logaritmo discreto de <varname>n</varname> en base <varname>b</varname> en
F<subscript>q</subscript>, el campo finito de orden <varname>q</varname>, donde <varname>q</varname> es
primo, utilizando el algoritmo de Silver-Pohlig-Hellman.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Comprueba la divisibilidad (si <varname>m</varname> divide a <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>Calcular la función phi de Euler para <varname>n</varname>, que es el número de enteros
entre 1 y <varname>n</varname> primo relativo con <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/EulerPhifunction">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>Devuelve <userinput>n/d</userinput> pero solo si <varname>d</varname> es divisible entre
<varname>n</varname>. Si <varname>d</varname> no es divisible entre <varname>n</varname> entonces esta
función devuelve basura. Esto es mucho mas rápido para números muy grandes que la operación
<userinput>n/d</userinput>, pero sólo es útil si se sabe que la división es exacta.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>Devuelve la factorización de un número como una matriz. La primera fila son los números
primos en la factorización (incluido el 1) y la segunda fila son las potencias. Por ejemplo:
<screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>Devuelve todos los factores de <varname>n</varname> en un vector. Esto incluye todos los
factores no primos como buenos. Incluye 1 y el mismo número. Así por ejemplo, para imprimir todos los números
perfectos (aquellos que son sumas de sus factores) hasta el número 1000 (esto es muy ineficiente) haga
<programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,tries)</synopsis>
+ <para>Probar la factorización de Fermat de <varname>n</varname> en
<userinput>(t-s)*(t+s)</userinput>, devuelve <varname>t</varname> y <varname>s</varname> como un vector si es
posible, <constant>null</constant> de otra manera <varname>tries</varname> especifica el número de intentos
antes de abandonar </para>
+ <para>Es una buena factorización si su número es el producto de dos factores que están muy
cerca.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Encontrar el primer elemento primitivo en F<subscript>q</subscript>, en el grupo de orden
finito<varname>q</varname>. Por supuesto, <varname>q</varname> debe de ser primo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Encontrar un elemento primitivo aleatorio en F<subscript>q</subscript>, en el grupo de orden
finito <varname>q</varname> (q debe de ser primo)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Calcula la base del logaritmo discreto <varname>b</varname> de n en
F<subscript>q</subscript>, el grupo finito de orden <varname>q</varname> (<varname>q</varname> un primo),
utilizando el factor base <varname>S</varname>. <varname>S</varname> será una columna de números primos y una
segunda columna precalculada por <link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Ejecuta los pasos para los cálculos previos de <link
linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> para logaritmos de base
<varname>b</varname> en F<subscript>q</subscript>, del grupo finito de orden <varname>q</varname>
(<varname>q</varname> un primo), para el factor base <varname>S</varname> (donde <varname>S</varname> es una
columna de vector de primos). Los registros se calculan previamente y se devuelven en la segunda
columna.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Comprueba si un entero es par.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>Comprueba si un entero positivo <varname>p</varname> es un exponente primo de Mersenne. Esto
es si 2<superscript>p</superscript>-1 es un primo. Esto lo hace mirando en una tabla de valores conocidos que
es relativamente corta. Vea también <link
linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> y <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>Comprueba si un número racional <varname>m</varname> es una potencia
<varname>n</varname>-ésima perfecta. Consulte <link
linkend="gel-function-IsPerfectPower">IsPerfectPower</link> y <link
linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Comprueba su un entero es impar.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Comprobar si un entero es una potencia perfecta, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>
+ Check an integer for being a perfect square of an integer. The number must
+ be an integer. Negative integers are of course never perfect
+ squares of integers.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>Comprueba si dos números enteros son primos, para números menores que 2.5e10 la respuesta es
determinista (si la hipótesis de Riemann es verdadera). Para números más grandes, la probabilidad de un falso
positivo depende de <link
linkend="gel-function-IsPrimeMillerRabinReps"><function>IsPrimeMillerRabinReps</function></link>. Significa
que la probabilidad de un falso positivo es 1/4 de la potencia <function>IsPrimeMillerRabinReps</function>.
De manera predeterminada el valor de 22 produce una probabilidad entorno a 5.7e-14.</para>
+ <para>Si se devuelve <constant>false</constant>, puede estar seguro de que el número es un
compuesto. Si quiere estar totalmente seguro de que tiene un número primo use <link
linkend="gel-function-MillerRabinTestSure"><function>MillerRabinTestSure</function></link> pero esto le puede
llevar mucho más tiempo.</para>
+ <para>Consulte <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Comprobar si <varname>g</varname> es primario en F<subscript>q</subscript>, el grupo finito
de orden <varname>q</varname>, donde <varname>q</varname> es un primo. Si <varname>q</varname> no es un primo
los resultados son falsos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Comprobar si <varname>g</varname> es primario en F<subscript>q</subscript>, el grupo finito
de orden <varname>q</varname>, donde <varname>q</varname> es un primo y <varname>f</varname> es un vector de
factores primos de <varname>q</varname>-1. Si <varname>q</varname> no es primo los resultados son
falsos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>Si <varname>n</varname> es pseudo-primo en base <varname>b</varname> pero no un primo, esto
es si <userinput>b^(n-1) == 1 mod n</userinput>. Esto llama a <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Compruebe si <varname>n</varname> es un pseudo-primo fuerte en base <varname>b</varname>
pero no un primo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Alias: <function>JacobiSymbol</function></para>
+ <para>Calcular el símbolo de Jacobi (a/b) (b debe ser impar).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Alias: <function>JacobiKroneckerSymbol</function></para>
+ <para>Calcular el símbolo de Jacobi (a/b) con extensión de Kronecker (a/2)=(2/a) cuando sea
impar, o (a/2)=0 cuando sea par.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Devuelve el resto de <varname>a</varname> mod <varname>n</varname> con el último valor
absoluto (en el intervalo -n/2 to n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Alias: <function>LegendreSymbol</function></para>
+ <para>Calcular el símbolo de Legendre (a/p).</para>
+ <para>Consulte <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Compruebe si 2<superscript>p</superscript>-1 es un primo de Mersenne utilizando la prueba de
Lucas-Lehmer. Consulte también <link
linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> y <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Devuelve el <varname>n</varname>-ésimo número de Lucas.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasNumbers">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Devuelve todos los factores primos de un número.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>Un vector de Mersenne de exponentes primos conocidos, esto es una lista de enteros positivos
<varname>p</varname> tal que 2<superscript>p</superscript>-1 es un primo. Consulte también <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link> y <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>Utiliza la prueba de números primarios Miller-Rabin de <varname>n</varname>,
<varname>reps</varname> número de veces. La probabilidad de falso positivo es
<userinput>(1/4)^reps</userinput>. Probablemente es mejor usar <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link> ya que es más rápido y mejor sobre enteros
más pequeños.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>
or
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>Utiliza la prueba Miller-Rabin de números primos de <varname>n</varname> con las bases
suficientes que asuman la hipótesis generalizada de Reimann, el resultado es determinista.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink>, or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Devuelve el inverso de n módulo m.</para>
+ <para>Consulte <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink>
para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>Devuelve la función de Moebius «mu» de <varname>n</varname>. Esto es, devuelve 0 si
<varname>n</varname> no es un producto entre primos distintos y <userinput>(-1)^k</userinput> si es un
producto de <varname>k</varname> primos distintos.</para>
+ <para>Consulte <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>Devuelve el primo menor más grande que <varname>n</varname>. Los primos negativos se
consideran primos y así para obtener el primo anterior, puede usar
<userinput>-NextPrime(-n)</userinput>.</para>
+ <para>Esta función utiliza las GMP <function>mpz_nextprime</function> la cual vuelve a utilizar la
prueba probabilística de Miller-Rabin (consulte también <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>). La probabilidad de un
falso positivo no se da, pero es lo suficientemente baja para prácticamente todos los propósitos.</para>
+ <para>Consulte <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Devuelve la evaluación del número «p-adic» (número de ceros que va dejando en base
<varname>p</varname>).</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> o
<ulink url="http://planetmath.org/PAdicValuation">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>Calcula <userinput>a^b mod m</userinput>. La potencia <varname>b</varname> de
<varname>a</varname> módulo <varname>m</varname>. No es necesario utilizar esta función ya que se utiliza
automáticamente en modo módulo. Por lo tanto <userinput>a^b mod m</userinput> es igual de rápido.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Alias: <function>prime</function></para>
+ <para>Devuelve el <varname>n</varname>-ésimo primo (hasta un límite).</para>
+ <para>Consulte <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Devuelve todos los factores primos de un número como un vector.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> o
<ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Prueba de pseudo-primo, devuelve <constant>true</constant> sólo si <userinput>b^(n-1) == 1
mod n</userinput></para>
+ <para>Consulte <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Elimina todas las instancias del factor <varname>m</varname> desde el número
<varname>n</varname>. Esto es, lo divide por la potencia mas grande de <varname>m</varname>, que divide
<varname>n</varname>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Buscar el logaritmo sencillo de <varname>n</varname> base <varname>b</varname> en
F<subscript>q</subscript>, de grupo de orden finito <varname>q</varname>, donde <varname>q</varname> es un
primo que utiliza el algoritmo de Silver-Pohlig-Hellman, dado <varname>f</varname> es la factorización de
<varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Buscar la raíz cuadrada de <varname>n</varname> módulo <varname>p</varname> (donde
<varname>p</varname> es un primo). Se devuelve «null» si el resto no es cuadrático.</para>
+ <para>Consulte <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Ejecutar la prueba del pseudo-primo fuerte en base <varname>b</varname> de
<varname>n</varname>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>,
<ulink url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink>, o <ulink
url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,args...)</synopsis>
+ <para>Alias: <function>GCD</function></para>
+ <para>Máximo común divisor de enteros. Puede introducir tantos enteros en la lista de argumentos,
o puede introducir un vector o una matriz de enteros. Si introduce más de una matriz del mismo tamaño,
entonces el máximo común divisor se realiza elemento a elemento.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>, <ulink
url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink>, o <ulink
url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,args...)</synopsis>
+ <para>Alias: <function>LCM</function></para>
+ <para>Mínimo común múltiplo de enteros. Puede introducir tantos enteros en la lista de argumentos,
o introducir un vector o matriz de enteros. Si introduce mas de una matriz del mismo tamaño, entonces el
mínimo común múltiplo se realiza elemento a elemento.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>, <ulink
url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink>, o <ulink
url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Manipulación de matrices</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,func)</synopsis>
+ <para>Aplicar una función sobre todos los elementos de una matriz y devolver una matriz con los
resultados.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,func)</synopsis>
+ <para>Aplicar una función sobre todos los elementos de dos matrices (o un valor y una matriz) y
devolver una matriz con los resultados.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Obtener las columnas de una matriz como un vector horizontal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Eliminar filas y columnas de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Calcular la k-ésima matriz compuesta de A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>
+ Count the number of zero columns in a matrix. For example,
+ once you column-reduce a matrix, you can use this to find
+ the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
+ and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,col)</synopsis>
+ <para>Eliminar una columna de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,row)</synopsis>
+ <para>Eliminar una fila de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Obtener las entradas diagonales de una matriz como un vector columna.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Obtener el producto escalar de dos vectores. Los vectores serán del mismo tamaño. Se toman no
conjugados por lo que tendrá forma bilineal incluso si se trabaja con números complejos. Esto es el producto
escalar bilineal, no el producto escalar sesquilienal. Consulte <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> para el producto interno estándar
sesquilinear.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> o
<ulink url="http://planetmath.org/DotProduct">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>Expandir una matriz de la misma manera que hacemos con la entrada sin comillas de la matriz.
Esto es, se expande cualquier matriz interna como bloques. Esto es una manera de construir matrices fuera de
las mas pequeñas y se hace de manera automática en la entrada a menos que la matriz se entrecomille.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Alias: <function>InnerProduct</function></para>
+ <para>Obtener el producto de Hermitian de dos vectores. Los vectores serán del mismo tamaño. Esto
es una forma «sesquilinear» para utilizar la identidad de la matriz.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> o
<ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Alias: <function>eye</function></para>
+ <para>Devolver una matriz identidad del tamaño dado, es decir, de <varname>n</varname> por
<varname>n</varname>. Si <varname>n</varname> es cero, devuelve <constant>null</constant>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> o
<ulink url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vec,msize)</synopsis>
+ <para>Devuelve el complemento índice de un vector de índices. Todo en base a uno. Por ejemplo para
el vector <userinput>[2,3]</userinput> y tamaño <userinput>5</userinput>, devolverá
<userinput>[1,4,5]</userinput>. Si <varname>msize</varname> es 0, siempre devolverá
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Es una matriz diagonal.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Comprobar si una matriz es la matriz de identidad. Automáticamente devuelve
<constant>false</constant> si la matriz no es cuadrada. También trabaja con números, en cualquier caso este
es equivalente a <userinput>x==1</userinput>. Cuando <varname>x</varname> es <constant>null</constant>
(imaginemos que es como una matriz de 0 por 0), no se genera error y se devuelve
<constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Es una matriz triangular inferior. Esto es, todas las entradas están por encima de la
diagonal cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Comprobar si una matriz es una matriz de enteros (no compleja).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Comprobar si una matriz no es negativa, es decir, si cada elemento no es negativo. No
confunda matrices positivas con matrices semidefinidas positivas.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Comprobar si una matriz es positiva, es decir, si cada elemento es positivo (y por lo tanto
real). Individualmente, ningún elemento es 0. No confunda matrices positivas con matrices definidas
positivas.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Comprobar si el argumento es una matriz de números racionales (no complejos)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Comprobar si el argumento es una matriz de números reales (no complejos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>Comprobar si una matriz es cuadrada, es decir, si su altura es igual a su anchura.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>¿Es una matriz triangular superior?. Esto se cumple si todas las entradas por debajo de la
diagonal son cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Comprobar si una matriz es una matriz de sólo números. Muchas funciones internas hacen esta
comprobación. Los valores pueden ser cualquier número, incluyendo números complejos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>Indica si el argumento de un vector es horizontal o vertical. Genius no distingue entre una
matriz y un vector, y un vector es justo una matriz 1 por <varname>n</varname> o <varname>n</varname> por
1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Comprobar si una matriz está compuesta toda por ceros. También trabaja con números, en
cualquier caso esto es equivalente a <userinput>x==0</userinput>. Cuando <varname>x</varname> es
<constant>null</constant> (imagine que es una matriz de 0 por 0), no se genera ningún error y devuelve
<constant>true</constant> que indica que la matriz está compuesta de ceros.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Devuelve una copia de la matriz <varname>M</varname> con todas las entradas por encima de la
diagonal establecidas a cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,arg...)</synopsis>
+ <para>Alias: <function>diag</function></para>
+ <para>Hacer una matriz diagonal desde un vector. Alternativamente puede pasarle los valores como
argumentos para la diagonal. Así <userinput>MakeDiagonal([1,2,3])</userinput> es lo mismo que
<userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Hacer un vector columna fuera de la matriz colocando columnas una encima de la otra.
Devuelve <constant>null</constant> cuando se introduce <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>Calcular el producto de todos los elementos en una matriz o vector. Es decir, multiplicar
todos los elementos y devolver un número que es el producto de todos los elementos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>Calcular la suma de todos los elementos en una matriz o vector. Es decir, sumar todos los
elementos y devolver un número que es el resultado de la suma de todos los elementos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Calcular la suma de los cuadrados de todos los elementos en una matriz o vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Devuelve una fila vector de índices de columnas distintas de cero en la matriz
<varname>M</varname>.</para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Devuelve una fila vector de índices de elementos distintos de cero en el vector
<varname>v</varname>.</para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Obtener el producto externo de dos vectores. Esto es, suponga que <varname>u</varname> y
<varname>v</varname> son vectores verticales, entonces el producto externo es <userinput>v *
u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Invierte el orden de los elementos de un vector (devuelve <constant>null</constant> si se le
pasa <constant>null</constant>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Calcula la suma de cada fila de una matriz y devuelve el resultado en un vector vertical con
el resultado</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Calcular la suma de los cuadrados de cada fila de una matriz y devolver una matriz columna
con los resultados.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Obtiene las filas de una matriz como un vector vertical. Cada elemento del vector es un
vector horizontal que se corresponde con la fila de <varname>M</varname>. Esta función es útil si se quiere
recorrer las filas de una matriz. Por ejemplo, como en <userinput>for r in RowsOf(M) do
+something(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,filas,columnas)</synopsis>
+ <para>Hacer una nueva matriz del mismo tamaño que otra. Es decir, devolverá una nueva matriz con
la copia de otra. Las entradas que no caben, se recortan y el espacio adicional se rellena con ceros. Si
<varname>rows</varname> o <varname>columns</varname> son cero, entonces se
devuelve<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Mezcla los elementos en un vector. Devuelve <constant>null</constant> si se le pasa
<constant>null</constant>.</para>
+ <para>Desde la versión 1.0.13 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Ordenar los elementos del vector en orden ascendente.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Quita todas las columnas de ceros de <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Quita todas las filas de ceros de <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Devolver columnas y filas desde una matriz. Esto es equivalente a
<userinput>m@(r,c)</userinput>. <varname>r</varname> y <varname>c</varname> serán vectores de filas y
columnas (o números sencillos si sólo se necesita una fila o columna).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,fila1,fila2)</synopsis>
+ <para>Intercambiar dos columnas de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Devuelve una copia de la matriz <varname>M</varname> con todas las entradas por debajo de la
diagonal establecidas a cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Obtener el número de columnas de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Obtener el número total de elementos de una matriz. Es decir, el número de columnas por el
número de filas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (filas,columnas...)</synopsis>
+ <para>Hacer una matriz rellena de unos (o un vector fila si sólo se introduce un argumento).
Devuelve <constant>null</constant> si cualquier fila o columna es cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Obtener el número de filas de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (filas,columnas...)</synopsis>
+ <para>Hacer una matriz llena de ceros (o un vector fila si se introduce sólo un argumento).
Devuelve <constant>null</constant> si cualquier fila o columna es cero.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Álgebra lineal</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Obtener la matriz auxiliar de tamaño <varname>n</varname>. Esto es una matriz cuadrada que
es toda ceros excepto la superdiagonal, que son todos unos. Es la matriz de bloques de Jordan de un cero como
valor propio.</para>
+ <para>Consulte <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> o
<ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> para obtener más información
sobre la forma canónica de Jordan.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Evaluar (v,w) con respecto a la forma bilineal dada por la matriz A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Devolver una función que evalúa dos vectores con respecto a la forma bilineal dada por
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Alias: <function>CharPoly</function></para>
+ <para>Obtener el polinomio característico como un vector. Es decir, devuelve los coeficientes del
polinomio empezando por el término constante. Este polinomio se define por <userinput>det(M-xI)</userinput>.
Las raíces de este polinomio tienen como valor propio a <varname>M</varname>. Consulte <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> o <ulink
url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Obtener el polinomio característico como una función. Es decir, el polinomio se define por
<userinput>det(M-xI)</userinput>. Las raíces de este polinomio tienen un valor propio de
<varname>M</varname>. Consulte <link
linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> o <ulink
url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Obtener una matriz base para el espacio de la columna de una matriz. Es decir, devuelve una
matriz la cual las columnas son las bases para el espacio de la columna <varname>M</varname>. Esto es el
espacio generado por las columnas de <varname>M</varname>.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Devolver la matriz de conmutación <userinput>K(m,n)</userinput> que es la única matriz
<userinput>m*n</userinput> por <userinput>m*n</userinput> tal que <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> para todas las matrices <varname>A</varname> <varname>m</varname> por
<varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Matriz acompañante de un polinomio (como vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Conjugada traspuesta de una matriz (adjunta). Es lo mismo que el operador
<userinput>'</userinput>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink>
o <ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Alias: <function>convol</function></para>
+ <para>Calcular la convolución de dos vectores horizontales.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Calcular la convolución de dos vectores horizontales. Devuelve el resultado como un vector y
no se suman.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>Producto cruzado de dos vectores en R<superscript>3</superscript> como un vector
columna.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Obtiene determinantes divisores de una matriz de enteros.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Suma directa de matrices.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Suma directa de un vector de matrices.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Alias: <function>eig</function></para>
+ <para>Obtener los valores propios de una matriz cuadrada. En la actualidad solo funciona con
matrices de tamaño 4 por 4 como máximo, o para matrices triangulares (cuyo valores propios están en la
diagonal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvalue">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues, &multiplicities)</synopsis>
+ <para>Obtener los autovectores de una matriz cuadrada. Opcionalmente, obtener los autovalores y su
multiplicidad algebraica. Actualmente funciona sólo para matrices de hasta 2x2.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvector">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Aplicar el proceso de Gram-Schmidt (a las columnas) con respecto al propio producto dado por
<varname>B</varname>. Si <varname>B</varname> no se da, entonces se utiliza el producto Hermitiano estándar.
<varname>B</varname> también puede ser una función sesquilineal de dos argumentos o puede ser una matriz que
devuelve una forma sesquilineal. Los vectores serán ortonormales con respecto a <varname>B</varname>.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink> o <ulink
url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>La matriz de Hankel es una matriz cuyas diagonales (de izquierda a derecha) son constantes.
La primera fila es <varname>c</varname> y la última colúmna es <varname>r</varname>. Se considera que ambos
argumentos son vectores y que el último elemento de la fila <varname>c</varname> es el mismo que el primer
elemento de la columna <varname>r</varname>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Matriz de Hilbert de orden <varname>n</varname>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> o
<ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Obtener la imagen (espacio columna) de una transformación lineal.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Obtener el operador norma de un vector, a veces también se denomina norma suprema o norma
máxima.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Obtiene los factores invariantes de una matriz cuadrada de enteros.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Matriz inversa de Hilbert de orden <varname>n</varname>.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> o
<ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Es una matriz Hermitian. Es decir, es igual a su traspuesta conjugada.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> o
<ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Comprueba si un vector está en un subespacio.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Es una matriz (o número) invertible (La matriz de enteros es invertible si, y sólo si esta
es invertible sobre los enteros).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Es una matriz (o un número) inversible sobre un campo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Indica que <varname>M</varname> es una matriz normal. Es decir, realiza <userinput>M*M' ==
M'*M</userinput>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Indica que <varname>M</varname> es una matriz definida positiva Hermitiana. Esto es si
<userinput>HermitianProduct(M*v,v)</userinput> es siempre estrictamente positivo para cualquier vector
<varname>v</varname>. <varname>M</varname> será cuadrada y Hermitiana para ser definida positiva. La
comprobación de que se lleva a cabo es que cada submatriz principal tiene un determinante no negativo.
(Consulte <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Tenga en cuenta que algunos autores (por ejemplo Mathworld) no requieren que
<varname>M</varname> sea Hermitiana, y entonces la condición está en la parte real del propio producto, pero
aquí no se compartirá este punto de vista. Si quiere comprobarlo, hacer sólo la parte Hermitiana de la matriz
<varname>M</varname> como sigue: <userinput>IsPositiveDefinite(M+M')</userinput>.</para>
+ <para>Consulte la <ulink
url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>, <ulink
url="http://planetmath.org/PositiveDefinite">Planetmath</ulink>, o <ulink
url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Indica si <varname>M</varname> es una matriz semidefinida positiva Hermitiana. Esto es si
<userinput>HermitianProduct(M*v,v)</userinput> es siempre no negativo para cualquier vector
<varname>v</varname>. <varname>M</varname> será cuadrada y Hermitiana para ser semidefinida positiva. La
comprobación que se lleva a cabo es que cada submatriz principal tenga un determinante no negativo. (Consulte
<link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Tenga en cuenta que algunos autores no requieren que <varname>M</varname> sea Hermitiana, y
entonces la condición está en la parte real del propio producto, pero aquí no se compartirá este punto de
vista. Si quiere comprobarlo, hacer sólo la parte Hermitiana de la matriz <varname>M</varname> como sigue:
<userinput>IsPositiveSemidefinite(M+M')</userinput>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> o <ulink
url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Es matriz antihermítica. Esto es, la transposición conjugada es igual al negativo de la
matriz.</para>
+ <para>Consulte <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>¿Es una matriz unitaria?. Esto es, hacer <userinput>M'*M</userinput> y
<userinput>M*M'</userinput> igual a la identidad.</para>
+ <para>Consulte <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> o
<ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Alias: <function>J</function></para>
+ <para>Obtener el bloque de Jordan correspondiente al valor propio <varname>lambda</varname> con
multiplicidad <varname>n</varname>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> o
<ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Obtener el núcleo (espacio nulo) de una trasformación lineal.</para>
+ <para>(Consulte <link linkend="gel-function-NullSpace">NullSpace</link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Alias: <function>TensorProduct</function></para>
+ <para>Calcula el producto de Kronecker (producto tensorial en base estándar) de dos matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>Obtener la descomposición de LU de <varname>A</varname> es decir, encontrar una matriz
triangular inferior y la matriz triangular superior cuyo producto es <varname>A</varname>. Guarda el
resultado en <varname>L</varname> y <varname>U</varname> que son referencias. Devuelve
<constant>true</constant> si se completó con éxito. Por ejemplo, suponga que «A» es una matriz cuadrada,
entonces después ejecute: <screen><prompt>genius></prompt>
<userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen> tendrá la matriz inferior guardada en una variable llamada <varname>L</varname> y la matriz
superior en una variable llamada <varname>U</varname>.</para>
+ <para>Esto es la descomposición de LU de una matriz también conocido como Crout y/o reducción de
Cholesky. (ISBN 0-201-11577-8 pp.99-103) La matriz triangular superior cuenta con una diagonal de valores 1
(uno). Esto no es el método de Doolittle en las que los unos de la diagonal están sobre la matriz
inferior.</para>
+ <para>No todas las matrices tienen la descomposición de LU, por ejemplo
<userinput>[0,1;1,0]</userinput> no lo hace y esta función devuelve <constant>false</constant> en este caso,
y establece <varname>L</varname> y <varname>U</varname> a <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LUDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Obtener el menor <varname>i</varname>-<varname>j</varname> de una matriz.</para>
+ <para>Consulte <ulink url="http://planetmath.org/Minor">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Devolver las columnas que no son las columnas pivotes de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Alias: <function>norm</function></para>
+ <para>Obtener la norma p (o 2 normas si no se suministra p) de un vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Obtener el espacio nulo de una matriz. Ese es el núcleo de la aplicación lineal que
representa la matriz. Esto se devuelve como una matriz cuyo espacio de columna es el espacio nulo de
<varname>T</varname>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Alias: <function>nullity</function></para>
+ <para>Obtener la nulidad de una matriz. Es decir, devuelve la dimensión del espacio nulo; la
dimensión del núcleo de <varname>M</varname>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Obtener el complemento ortogonal del espacio de columnas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Devuelve las columnas pivote de una matriz, que son columnas que tienen un 1 en la fila
forma reducida. También devuelve la fila en la que se producen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Proyección del vector <varname>v</varname> sobre el sub-espacio <varname>W</varname> con
respecto al propio producto dado por <varname>B</varname>. Si <varname>B</varname> no se da, entonces se usa
el producto estándar Hermitiano. <varname>B</varname> puede también ser una función sesquilineal de dos
argumentos o puede ser una matriz que devuelve una forma sesquilineal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>Obtener la descomposición QR de una matriz cuadrada <varname>A</varname>, devuelve la matriz
triangular superior <varname>R</varname> y establece <varname>Q</varname> a la matriz ortogonal (unitaria).
<varname>Q</varname> será una referencia o <constant>null</constant> si no quiere que se devuelva ningún
valor. Por ejemplo: <screen><prompt>genius></prompt> <userinput>R = QRDecomposition(A,&Q)</userinput>
+</screen> tendrá la matriz triangular superior guardada en una variable llamada <varname>R</varname> y la
matriz ortogonal (unitaria) guardada en <varname>Q</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Devuelve el cociente de Rayleigh (también llamado el cociente de Rayleigh-Ritz o ratio) de
una matriz y un vector.</para>
+ <para>Consulte <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Buscar valores propios de <varname>A</varname> utilizando el método de iteración de cociente
de Rayleigh. <varname>x</varname> es una conjetura en un vector propio que será aleatoria. Esto tendrá una
parte imaginaria no nula si es posible encontrar valores propios complejos. El código ejecutará en la mayoría
de las interacciones <varname>maxiter</varname> y devuelve <constant>null</constant> si no se puede obtener
un error de <varname>epsilon</varname>. <varname>vecref</varname> será o bién un <constant>null</constant> o
una referencia a una variable donde se guarde el vector propio.</para>
+ <para>Conuslte <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> para obtener
más información sobre el cociente de Rayleigh.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Alias: <function>rank</function></para>
+ <para>Obtener el rango de una matriz.</para>
+ <para>Consulte <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Devolver la matriz de Rosser, que es un problemático y clásico test simétrico de valores
propios.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (ángulo)</synopsis>
+ <para>Alias: <function>RotationMatrix</function></para>
+ <para>Devolver la matriz correspondiente a la rotación alrededor del origen en
R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (ángulo)</synopsis>
+ <para>Devuelve la matriz correspondiente a la rotación alrededor del origen en
R<superscript>3</superscript> sobre el eje x.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (ángulo)</synopsis>
+ <para>Devolver la matriz correspondiente a la rotación alrededor del origen en
R<superscript>3</superscript> sobre el eje Y.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (ángulo)</synopsis>
+ <para>Devolver la matriz correspondiente a la rotación alrededor del origen en
R<superscript>3</superscript> sobre el eje Z.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Obtener una matriz base para el espacio de filas de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Evaluar (v,w) con respecto a la forma sesquilineal dada por la matriz A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Devolver una función que evalúa dos vectores con respecto a la forma sesquilineal dada por
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Devuelve la forma normal de Smith de una matriz sobre los campos (terminará con unos en la
diagonal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Devuelve la forma normal de Smith para matrices cuadradas sobre enteros.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,args...)</synopsis>
+ <para>Resuelve el sistema lineal Mx=V, devuelve la solución V si hay una única solución y
<constant>null</constant> en cualquier otro caso. Opcionalmente, se pueden usar dos parámetros de referencia
para obtener M y V reducidos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (c, r...)</synopsis>
+ <para>Devuelve la matriz de Toeplitz que se construye con la primera columna «c» y (opcionalmente)
la primera fila «r». Si sólo se da la columna «c», entonces esta es conjugada y la versión no conjugada la
utiliza la primera fila para dar una matriz Hermitiana (si el primer elemento es real).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Alias: <function>trace</function></para>
+ <para>Calcular la traza de una matriz. Esto es la suma de sus elementos diagonales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Trace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Traspuesta de una matriz. Es lo mismo que el operador <userinput>.'</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Transpose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Alias: <function>vander</function></para>
+ <para>Devuelve la matriz de Vandermonde.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>El ángulo de dos vectores con respecto al propio producto viene dado por
<varname>B</varname>. Si no se da <varname>B</varname>, entonces se usará el producto estándar Hermitiano.
<varname>B</varname> puede ser una función sesquilineal de dos argumentos o bien, una matriz que devuelve una
forma sesquilineal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>Suma directa de los espacios vectoriales M y N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Intersección de subespacios dados por M y N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>La suma de los espacios vectoriales M y N, esto es {w | w=m+n, m en M, n en N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Alias: <function>Adjugate</function></para>
+ <para>Obtener el adjunto clásico de una matriz.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Alias: <function>CREF</function><function>ColumnReducedEchelonForm</function></para>
+ <para>Calcular la forma en escalón reducida por columnas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Alias: <function>Determinant</function></para>
+ <para>Obtener el determinante de una matriz.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Determinant2">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Alias: <function>REF</function><function>RowEchelonForm</function></para>
+ <para>Obtener la matriz escalonada por fila. Es decir, aplicar la eliminación gausiana pero no
hacer la reducción a <varname>M</varname>. Las filas pivote están divididas para que todos los pivotes sean
1.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Alias: <function>RREF</function><function>ReducedRowEchelonForm</function></para>
+ <para>Obtener la matriz escalonada reducida por filas. Es decir, aplicar la eliminación gausiana
junto con la reducción a <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Combinatoria</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Obtener el <varname>n</varname>-ésimo número de Catalan.</para>
+ <para>Consulte <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Obtener todas las combinaciones de «k» números desde 1 a «n» como un vector de vectores.
(Consulte <link linkend="gel-function-NextCombination">NextCombination</link>)</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Doble factorial: <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>Consulte <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Factorial: <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>Consulte <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Factorial descendente: <userinput>(n)_k = n(n-1)...(n-(k-1))</userinput></para>
+ <para>Consulte la <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Alias: <function>fib</function></para>
+ <para>Calcular el <varname>n</varname>-ésimo número de Fibonacci. El número se define
recursivamente por <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> y
<userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>
+ Calculate the Frobenius number. That is calculate largest
+ number that cannot be given as a non-negative integer linear
+ combination of a given vector of non-negative integers.
+ The vector can be given as separate numbers or a single vector.
+ All the numbers given should have GCD of 1.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (regla_de_combinación)</synopsis>
+ <para>Matriz de Galois dada una regla de combinación lineal (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>Buscar el vector <varname>c</varname> de enteros no negativos de tal manera que al realizar
el producto escalar con <varname>v</varname> es igual a n. Si no es posible, se devuelve
<constant>null</constant>. <varname>v</varname> estará ordenada de forma incremental y estará constituida de
enteros no negativos.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Alias: <function>HarmonicH</function></para>
+ <para>Harmonic Number, the <varname>n</varname>th harmonic number of order <varname>r</varname>.
+ That is, it is the sum of <userinput>1/k^r</userinput> for <varname>k</varname>
+ from 1 to n. Equivalent to <userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Función q(n) de Hofstadter definida por q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> for more
information.
+ The sequence is <ulink url="https://oeis.org/A005185">A005185 in OEIS</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (seed_values,combining_rule,n)</synopsis>
+ <para>Calcular la sucesión lineal recursiva utilizando el escalamiento de Galois.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Calcular los coeficientes multinomiales. Toma un vector de <varname>k</varname> enteros no
negativos y calcula el coeficiente multinomial. Esto corresponde al coeficiente en el polinomio homogéneo en
<varname>k</varname> variables con las correspondientes potencias.</para>
+ <para>La fórmula para <userinput>Multinomial(a,b,c)</userinput> se puede escribir como:
<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting>. En otras palabras, si sólo hay dos elementos, entonces
<userinput>Multinomial(a,b)</userinput> es lo mismo que <userinput>Binomial(a+b,a)</userinput> o
<userinput>Binomial(a+b,b)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Obtener las combinaciones que v devolverá después de su ejecución. La primera combinación
será <userinput>[1:k]</userinput>. Esta función es útil si tiene muchas combinaciones que pasar y no quiere
olvidarse de guardarlas todas.</para>
+ <para>Por ejemplo, con «Combinations» normalmente escribiría un bucle como sigue:
<screen><userinput>for n in Combinations (4,6) do (
+ AlgunaFuncion (n)
+);</userinput>
+</screen> Pero con «NextCombination» escribiría algo como lo siguiente: <screen><userinput>n:=[1:4];
+do (
+ AlgunaFuncion (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen> Consulte también <link linkend="gel-function-Combinations">Combinations</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Obtener el triángulo de Pascal como una matriz. Esto devolverá una <varname>i</varname>+1
por <varname>i</varname>+1 la diagonal inferior de la matriz que es el triángulo de Pascal después de
<varname>i</varname> iteraciones.</para>
+ <para>Consulte <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Obtener todas las permutaciones de <varname>k</varname> números desde el 1 al
<varname>n</varname> como un vector de vectores.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Alias: <function>Pochhammer</function></para>
+ <para>(Puchhammer) factorial creciente: (n)_k = n(n+1)...(n+(k-1)).</para>
+ <para>Consulte <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Alias: <function>StirlingS1</function></para>
+ <para>Número de Stirling de primera clase.</para>
+ <para>Consulte <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink>
o <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Alias: <function>StirlingS2</function></para>
+ <para>Número de Stirling de segunda clase.</para>
+ <para>Consulte <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> o
<ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink> para obtener
más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (nth)</synopsis>
+ <para>Calcular el <varname>n</varname>-ésimo número triangular.</para>
+ <para>Consulte <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink>> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Alias: <function>Binomial</function></para>
+ <para>Calcular combinaciones, es decir, el coeficiente del binomio. <varname>n</varname> puede ser
cualquier número real.</para>
+ <para>Consulte <ulink url="http://planetmath.org/Choose">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Calcular el número de permutaciones de tamaño <varname>r</varname> de números desde el 1 al
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Cálculo</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Integrar f usando la Regla Compuesta de Simpson en el intervalo [a,b] con n subintervalos y
un error de max(f'''')*h^4*(b-a)/180, n debe ser entero.</para>
+ <para>Consulte <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
+ <para>Integración de F por la Regla compuesta de Simpson en el intervalo [a,b] con el número de
pasos calculado por la cuarta derivada y la tolerancia deseada.</para>
+ <para>Consulte <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Intentar calcular la derivada, primero simbólicamente y después numéricamente.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Devolver una función que es una extensión periódica par de <function>f</function> con medio
periodo <varname>L</varname>. Esto es una función que se define en el intervalo <userinput>[0,L]</userinput>
extendido para ser par en <userinput>[-L,L]</userinput> y entonces extendido para ser periódico con periodo
<userinput>2*L</userinput>.</para>
+ <para>Consulte <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> y
<link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Devuelve una función que es una serie de Fourier con coeficientes devueltos por los vectores
<varname>a</varname> (senos) y <varname>b</varname> (cosenos). Tenga en cuenta que
<userinput>a@(1)</userinput> es el coeficiente constante. Es decir, <userinput>a@(n)</userinput> se refiere
al término <userinput>cos(x*(n-1)*pi/L)</userinput>, mientras que <userinput>b@(n)</userinput> se refiere al
término <userinput>sin(x*n*pi/L)</userinput>. Tanto <varname>a</varname> o <varname>b</varname> puede ser
<constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (func,inicio,inc)</synopsis>
+ <para>Intenta calcular un producto infinito para una función de un sólo parámetro.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (func,arg,inicio,inc)</synopsis>
+ <para>Intenta calcular un producto infinito para una función de dos parámetros con
func(arg,n)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (func,inicio,inc)</synopsis>
+ <para>Intentar calcular una suma infinita para una función de un sólo parámetro.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (func,arg,inicio,inc)</synopsis>
+ <para>Intenta calcular una suma infinita para una función de dos parámetros con
func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Comprueba si una función real es continua en x0 calculando el límite en ese punto.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Comprobar la diferenciabilidad aproximando los límites izquierdo y derecho y
comparándolos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Calcular el límite por la izquierda de una función real en x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Calcular el límite de una función real en x0. Intenta calcular tanto el límite por la
derecha como por la izquierda.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Integración por la regla del punto medio.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Alias: <function>NDerivative</function></para>
+ <para>Intentar calcular la derivada numérica.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Devuelve un vector de vectores <userinput>[a,b]</userinput> donde <varname>a</varname> son
los coeficientes cosenos y <varname>b</varname> son los coeficientes senos de la serie de Fourier de
<function>f</function> con medio periodo <varname>L</varname> (esto se define en
<userinput>[-L,L]</userinput> y extendido periódicamente) con coeficientes hasta <varname>N</varname>-ésimo
harmónico calculado numéricamente. Los coeficientes se calculan por la integración numérica al usar <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Devuelve una función que es la serie de Fourier de <function>f</function> con medio periodo
<varname>L</varname> (esto se define en <userinput>[-L,L]</userinput> y extendido periódicamente) con
coeficientes hasta <varname>N</varname>-ésimo harmónico calculado numéricamente. Esto es, la serie
trigonométrica real compuesta de senos y cosenos. Los coeficientes se calculan por la integración numérica al
utilizar <link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Devuelve un vector de coeficientes de coseno de la serie de Fourier de <function>f</function>
con medio periodo <varname>L</varname>. Es decir, se toma <function>f</function> definida en
<userinput>[0,L]</userinput> toma la extensión periódica par y calcula la serie de Fourier, que sólo tiene
cosenos como términos. La serie se calcula hasta la <varname>N</varname>-ésima harmónica. Los coeficientes se
calculan por la integración numérica al utilizar <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>. Tenga en cuenta que
<userinput>a@(1)</userinput> es el coeficiente constante. Es decir, <userinput>a@(n)</userinput> se refiere a
el término <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Devuelve una función que es el coseno de la serie de Fourier de <function>f</function> con
medio periodo <varname>L</varname>. Es decir, se toma <function>f</function> definida en
<userinput>[0,L]</userinput> toma la extensión periódica par y calcula la serie de Fourier, que sólo tiene
coseno como términos. La serie se calcula hasta la <varname>N</varname>-ésima harmónica. Los coeficientes se
calculan por la integración numérica al utilizar <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Devuelve un vector de coeficientes de senos de la serie de Fourier de <function>f</function>
con medio periodo <varname>L</varname>. Es decir, se toma <function>f</function> definido en
<userinput>[0,L]</userinput> toma la extensión periódica impar y calcula la serie de Fourier, que sólo tiene
senos como términos. La serie se calcula hasta el <varname>N</varname>-ésimo harmónico. Los coeficientes se
calculan por la integración numérica al utilizar <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Devuelve una función que es el seno de la serie de Fourier de <function>f</function> con
medio periodo <varname>L</varname>. Es decir, se toma <function>f</function> definida en
<userinput>[0,L]</userinput> toma la extensión periódica impar y calcula ls series de Fourier, que sólo tiene
seno como términos. La serie se calcula hasta la <varname>N</varname>-ésima harmónica. Los coeficientes se
calculan por la integración numérica al utilizar <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Integración por el conjunto de reglas en NumericalIntegralFunction de f desde «a» a «b»
usando NumericalIntegralSteps pasos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Intentar calcular la derivada numérica por la izquierda.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
+ <para>Intentar calcular el límite de f(step_fun(i)), para i desde 1 hasta N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Intentar calcular la derivada numérica por la derecha.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Devuelve una función que es la extensión periódica impar de <function>f</function> con medio
periodo <varname>L</varname>. Esto es una función definida en el intervalo <userinput>[0,L]</userinput>
extendida para ser impar en <userinput>[-L,L]</userinput> y entonces extendida para ser periódica con periodo
<userinput>2*L</userinput>.</para>
+ <para>Consulte también <link
linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link> y <link
linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Calcular la derivada de un lado usando una fórmula de 5 puntos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Calcular la derivada de un lado usando una fórmula de tres puntos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Devuelve una función que es la extensión periódica de <function>f</function> que se define en
el intervalo <userinput>[a,b]</userinput> y tiene un periodo <userinput>b-a</userinput>.</para>
+ <para>Consulte también <link
linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> y <link
linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.</para>
+ <para>Desde la versión 1.0.7 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Calcular el límite por la derecha de una función real en x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Calcular la derivada de dos lados usando una fórmula de cinco puntos.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Calcular la derivada de dos lados usando una fórmula de tres puntos.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Funciones</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Alias: <function>Arg</function><function>arg</function></para>
+ <para>argumento (ángulo) de un número complejo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Función de Bessel de primer tipo de orden 0. Implementada solo para números reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Función de Bessel de primer tipo de orden 1. Implementada solo para números reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Función de Bessel de primer tipo de orden <varname>n</varname>. Implementada solo para
números reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Función de Bessel de segundo tipo de orden 0. Implementada solo para números reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Función de Bessel de segunto tipo de orden 1. Implementada solo para números reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Función de Bessel de segundo tipo de orden <varname>n</varname>. Implementada solo para
números reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Núcleo de Dirichlet de orden <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Devuelve 1 si y sólo si todos los elementos son cero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Alias: <function>erf</function></para>
+ <para>La función de error, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> o
<ulink url="http://planetmath.org/ErrorFunction">Planetmath</ulink> para obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Núcleo de Fejer de orden <varname>n</varname> evaluado en <varname>t</varname></para>
+ <para>Consulte <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> para obtener más
información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Alias: <function>Gamma</function></para>
+ <para>La función «Gamma». Actualmente sólo implementada para valores reales.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Devuelve 1 si y sólo si todos los elementos son iguales.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>La rama principal de la función de Lambert W calculada sólo para los valores reales más
grandes o iguales que <userinput>-1/e</userinput>. Es decir, que la función <function>LambertW</function> es
la inversa de la expresión <userinput>x*e^x</userinput>. Incluso para una variable real <varname>x</varname>
esta expresión no es uno a uno y por lo tanto tiene dos ramas más <userinput>[-1/e,0)</userinput>. Consulte
<link linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> para otras ramas reales.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>La rama menos uno «-1» de la función de Lambert W calculada sólo para valores reales más
grandes o igual a <userinput>-1/e</userinput> y menor que 0. Es decir, <function>LambertWm1</function> es la
segunda rama de la inversa de <userinput>x*e^x</userinput>. Consulte <link
linkend="gel-function-LambertW"><function>LambertW</function></link> para la rama principal.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (func,x,incr)</synopsis>
+ <para>Buscar el primer valor donde f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Mapa de Moebius del disco a sí mismo mapeando a 0.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Mapa de Moebius usando el radio cruzado z2,z3,z4 a 1,0 e infinito respectivamente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Mapa de Moebius usando el radio cruzado tomando infinito a infinito y z2,z3 a 1 y 0
respectivamente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Mapa de Moebius usando la relación cruzada tomando de infinito a 1 y z3,z4 a 0 e infinito
respectivamente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Mapa de Moebius usando la relación cruzada tomando de infinito a 0 y z2,z4 a 1 e infinito
respectivamente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>El núcleo de Poisson en D(0,1) (no normalizado a 1, esto es, su integral es 2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>El núcleo de Poisson en D(0,R) (no normalizado a 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Alias: <function>zeta</function></para>
+ <para>La función «zeta de Riemann». Actualmente sólo implementada para valores reales.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>La función escalón unitario es 0 para x<0, 1 si no. Es la integral de la función delta de
Dirac. También llamada función de Heaviside.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>La función <function>cis</function> es la misma que
<userinput>cos(x)+1i*sin(x)</userinput></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Convertir grados a radianes.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Convertir radianes a grados.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Calcular la función sinc no normalizada, esto es <userinput>sin(x)/x</userinput>. Si quiere
normalizar la función utilice <userinput>sinc(pi*x)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
+ </para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Resolución de ecuaciones</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>Calcular las raíces de un polinomio cúbico (de grado 3) utilizando la fórmula cúbica. El
polinomio se dará como un vector de coeficientes. Esto es <userinput>4*x^3 + 2*x + 1</userinput> que
corresponde al vector <userinput>[1,2,0,4]</userinput>. Devuelve un vector columna de tres soluciones. La
primera solución siempre es la real como un cúbico siempre tiene una solución real.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>Utilizar el método clásico de Euler para resolver numéricamente y'=f(x,y) de forma inicial
<varname>x0</varname>, <varname>y0</varname> pasan a <varname>x1</varname> con <varname>n</varname>
incrementos, devuelve <varname>y</varname> junto con <varname>x1</varname>. Excepto que especifique
explícitamente que quiere utilizar el método clásico de Euler, piense en utilizar <link
linkend="gel-function-RungeKutta">RungeKutta</link> para resolver ODE.</para>
+ <para>Los sistemas se pueden resolver teniendo a <varname>y</varname> como un vector (columna) en
cualquier parte. Es decir, <varname>y0</varname> puede ser un vector en cuyo caso <varname>f</varname> será
un número <varname>x</varname> y un vector del mismo tamaño para el segundo argumento y devolverá un vector
del mismo tamaño.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link>
+ for solving ODE.
+ Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>Ejemplo: <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen></para>
+ <para>Los sistemas se pueden resolver teniendo a <varname>y</varname> como un vector (columna) en
cualquier parte. Es decir, <varname>y0</varname> puede ser un vector en cuyo caso <varname>f</varname> será
un número <varname>x</varname> y un vector del mismo tamaño para el segundo argumento y devolverá un vector
del mismo tamaño.</para>
+ <para>La salida para un sistema es todavía una matriz de n por 2 siendo la segunda entrada un
vector. Si quiere dibujar la línea, asegúrese de utilizar fila de vectores, y aplanar la matriz con <link
linkend="gel-function-ExpandMatrix">ExpandMatrix</link>, y pulse sobre las columnas de la derecha. Ejemplo:
<screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Buscar la raíz de una función utilizando el método de la bisección. <varname>a</varname> y
<varname>b</varname> son los límites iniciales del intervalo, <userinput>f(a)</userinput> y
<userinput>f(b)</userinput> deben tener signos opuestos. <varname>TOL</varname> es la tolerancia deseada y
<varname>N</varname> es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función
devuelve un vector <userinput>[success,value,iteration]</userinput>, donde <varname>success</varname> un
booleano que indica el éxito, <varname>value</varname> es el último valor calculado, e
<varname>iteration</varname> es el número de iteraciones realizadas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Buscar la raíz de una función utilizando el método de la posición falsa.
<varname>a</varname> y <varname>b</varname> son los valores iniciales del intervalo,
<userinput>f(a)</userinput> y <userinput>f(b)</userinput> deben tener signos opuestos. <varname>TOL</varname>
es la tolerancia deseada y <varname>N</varname> es el límite del número de iteraciones a ejecutar, 0 indica
sin límites. La función devuelve un vector <userinput>[success,value,iteration]</userinput>, donde
<varname>success</varname> es un booleano que indica el éxito, <varname>value</varname> es el último valor
calculado, e <varname>iteration</varname> es el número de iteraciones realizadas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Buscar la raíz de una función utilizando el método de Muller. <varname>TOL</varname> es la
tolerancia deseada y <varname>N</varname> es el límite del número de iteraciones a ejecutar, 0 indica sin
límites. La función devuelve un vector <userinput>[success,value,iteration]</userinput>, donde
<varname>success</varname> un booleano que indica el éxito, <varname>value</varname> es el último valor
calculado, e <varname>iteration</varname> es el número de iteraciones realizadas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Buscar la raíz de una función utilizando el método de la secante. <varname>a</varname> y
<varname>b</varname> son los límites iniciales del intervalo, <userinput>f(a)</userinput> y
<userinput>f(b)</userinput> deben tener signos opuestos. <varname>TOL</varname> es la tolerancia deseada y
<varname>N</varname> es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función
devuelve un vector <userinput>[success,value,iteration]</userinput>, donde <varname>success</varname> es un
booleano que indica el éxito, <varname>value</varname> es el último valor calculado, e
<varname>iteration</varname> es el número de iteraciones realizadas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,guess,epsilon,maxn)</synopsis>
+ <para>Encontrar ceros utilizando el método de Halleys. Siendo <varname>f</varname> la función,
<varname>df</varname> es la derivada de <varname>f</varname>, y <varname>ddf</varname> es la segunda derivada
de <varname>f</varname>. La variable <varname>guess</varname> es la aproximación inicial. La función devuelve
después dos valores sucesivos que están dentro de los límites que marca <varname>epsilon</varname> o después
de <varname>maxn</varname> iteraciones en cuyo caso devuelve <constant>null</constant> indicando un
fallo.</para>
+ <para>Consulte también <link
linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link> y <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Ejemplo para encontrar la raíz cuadrada de 10: <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,guess,epsilon,maxn)</synopsis>
+ <para>Encontrar ceros utilizando el método de Newton. La variable <varname>f</varname> es la
función y <varname>df</varname> es la derivada de <varname>f</varname>. La variable <varname>guess</varname>
el supuesto inicial. La función devuelve después dos valores sucesivos que están dentro de los límites que
marca <varname>epsilon</varname> o después de <varname>maxn</varname> iteraciones en cuyo caso devuelve
<constant>null</constant> indicando un fallo.</para>
+ <para>Consulte también <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> y <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Ejemplo para encontrar la raíz cuadrade de 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>Calcular las raíces de un polinomio (de grado 1 a 4) utilizando una de las fórmulas para
cada polinomio. El polinomio entregará un vector de coeficientes. Esto es <userinput>4*x^3 + 2*x +
1</userinput> que corresponde al vector <userinput>[1,2,0,4]</userinput>. Devuelve un vector columna de las
soluciones.</para>
+ <para>La función llama a <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>,
<link linkend="gel-function-CubicFormula">CubicFormula</link>, y a <link
linkend="gel-function-QuarticFormula">QuarticFormula</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>Calcular las raíces de una polinomio cuadrático (de grado 2) utilizando la fórmula
cuadrática. El polinomio será un vector de coeficientes. Es es <userinput>3*x^2 + 2*x + 1</userinput> que
corresponde con el vector <userinput>[1,2,3]</userinput>. Devuelve un vector columna de las dos
soluciones.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>Calcular las raíces de un polinomio cuadrático (de grado 4) utilizando la fórmula
cuadrática. El polinomio será un vector de coeficientes. Esto es <userinput>5*x^4 + 2*x + 1</userinput> que
corresponde con el vector <userinput>[1,2,0,0,5]</userinput>. Devuelve un vector columna de las cuatro
soluciones.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>Utilizar el método clásico no adaptativo de cuarto orden Runge-Kutta para resolver
numéricamente y'=f(x,y) que de forma inicial <varname>x0</varname>, <varname>y0</varname> tienden a
<varname>x1</varname> con <varname>n</varname> incrementos, devuelve <varname>y</varname> en
<varname>x1</varname>.</para>
+ <para>Los sistemas se pueden resolver teniendo a <varname>y</varname> como un vector (columna) en
cualquier parte. Es decir, <varname>y0</varname> puede ser un vector en cuyo caso <varname>f</varname> será
un número <varname>x</varname> y un vector del mismo tamaño para el segundo argumento y devolverá un vector
del mismo tamaño.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values. Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>Example: <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen></para>
+ <para>Los sistemas se pueden resolver teniendo a <varname>y</varname> como un vector (columna) en
cualquier parte. Es decir, <varname>y0</varname> puede ser un vector en cuyo caso <varname>f</varname> será
un número <varname>x</varname> y un vector del mismo tamaño para el segundo argumento y devolverá un vector
del mismo tamaño.</para>
+ <para>La salida de un sistema todavía es una matriz de n por 2 siendo la segunda entrada un vector.
Si quiere dibujar la línea, asegúrese de utilizar filas de vectores, y aplane la matriz con <link
linkend="gel-function-ExpandMatrix">ExpandMatrix</link>, y pulse a la derecha de las columnas. Ejemplo:
<screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Desde la versión 1.0.10 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Estadísticas</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Alias: <function>average</function><function>Mean</function><function>mean</function></para>
+ <para>Calculate average (the arithmetic mean) of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Integral de la función de Gauss desde 0 a <varname>x</varname> (área debajo de la curva
normal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>La función de distribución Gausiana normalizada (la curva normal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Alias: <function>median</function></para>
+ <para>Calcular la mediana de una matriz entera.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Alias: <function>stdevp</function></para>
+ <para>Calcular la desviación de población típica de una matriz completa.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Alias: <function>RowMean</function></para>
+ <para>Calculate average of each row in a matrix. That is, compute the
+ arithmetic mean.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Calcular la mediana de cada fila en una matriz y devolver una vector columna de las
medianas.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Alias: <function>rowstdevp</function></para>
+ <para>Calcular la desviación típica de las columnas de una matriz y devuelve una matriz
columna.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Alias: <function>rowstdev</function></para>
+ <para>Calcular la desviación estándar de las filas de una matriz y devuelve una matriz
columna.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Alias: <function>stdev</function></para>
+ <para>Calcular la desviación estándar de una matriz entera.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Polinomios</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Suma dos polinomios (vectores).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Dividir dos polinomios (como vectores) utilizando la división larga. Devuelve el cociente de
los dos polinomios. El argumento opcional <varname>r</varname> se utiliza para devolver el residuo. El
residuo tendrá el grado más bajo que <varname>q</varname>.</para>
+ <para>Consulte <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Comprobar si un vector se puede usar como un polinomio.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Multiplica dos polinomios (como vectores).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,guess,epsilon,maxn)</synopsis>
+ <para>Encontrar una raíz de un polinomio utilizando el método de Newton. La variable
<varname>poly</varname> es el polinomio en forma vectorial y <varname>guess</varname> es la suposición
inicial. La función devuelve después dos valores sucesivos que están dentro de los límites que marca
<varname>epsilon</varname> o después de <varname>maxn</varname> iteraciones en cuyo caso devuelve
<constant>null</constant> indicando un fallo.</para>
+ <para>Consulte también <link
linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.</para>
+ <para>Ejemplo para encontrar la raíz cuadrada de 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Tomar la derivada segunda (como vector) polinómico.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Tomar la derivada (como vector) polinómico.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Extraer una función de un polinomio (como vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Extraer una cadena de un polinomio (como vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Restar dos polinomios (como vectores).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Eliminar ceros de un polinomio (como vector).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Teoría de conjuntos</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Devuelve la intersección de X e Y (X e Y son vectores que se tratan como conjuntos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Devuelve <constant>true</constant> si <literal>X</literal> es un subconjunto de
<literal>Y</literal> (<literal>X</literal> e <literal>Y</literal> son vectores que se tratan como
conjuntos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Devuelve <constant>true</constant> si <literal>X</literal> es un subconjunto de
<literal>Y</literal> (<literal>X</literal> e <literal>Y</literal> son vectores que se tratan como
conjuntos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Devuelve un vector donde cada elemento de X aparece una sola vez.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Devuelve un conjunto teorético de diferencia X-Y (X e Y son vectores que pretender ser
conjuntos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Devuelve la unión de X e Y (X e Y son vectores que se tratan como conjuntos).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Álgebra conmutativa</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>Para una función de Hilbert que es c de grado d, dada la función de Macaulay obligado por la
función de Hilbert de grado d+1 (el c^<d> operador de la prueba de Green).</para>
+ <para>Desde la versión 1.0.15 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>El operador c_<d> de la prueba de Green del teorema de Macaulay.</para>
+ <para>Desde la versión 1.0.15 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Devolver la representación dth de Macaulay de un entero positivo c.</para>
+ <para>Desde la versión 1.0.15 en adelante.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Miscelánea</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vec)</synopsis>
+ <para>Convert a vector of ASCII values to a string.
+ See also
+ <link linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vec,alfabeto)</synopsis>
+ <para>Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string.
A <constant>null</constant> vector results in an empty string.
+ See also
+ <link linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (cad)</synopsis>
+ <para>Convert a string to a (row) vector of ASCII values.
+ See also
+ <link linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (str,alfabeto)</synopsis>
+ <para>Convert a string to a (row) vector of 0-based alphabet values
+ (positions in the alphabet string), -1's for unknown letters.
+ An empty string results in a <constant>null</constant>.
+ See also
+ <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Operaciones simbólicas</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Intentar diferenciar simbólicamente la función «f», donde «f» es una función de una
variable.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen></para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Intentar diferenciar simbólicamente la función f, donde f es una función de una variable,
devuelve <constant>null</constant> si no es satisfactoria pero es silenciosa. (Consulte <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Intentar diferenciar simbólicamente una función n veces. (Consulte <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Intentar diferenciar simbólicamente una función n veces de manera silenciosa y devolver
<constant>null</constant> en caso de fallo. (Consulte <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)</para>
+ <para>Consulte la <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> para
obtener más información.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Intenta construir la aproximación de Taylor alrededor de x0 hasta grado n. (Consulte <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Dibujar</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (archivo,tipo)</synopsis>
+ <synopsis>ExportPlot (archivo)</synopsis>
+ <para>Exportar el contenido de la ventana de dibujado a un archivo. El tipo es una cadena que
especifica el tipo de archivo que usar, «png», «eps» o «ps». Si no se especifica el tipo, se toma a partir de
la extensión, en cuyo caso debe ser«.png», «.eps» o «.ps».</para>
+ <para>Tenga en cuneta que los archivos se sobreescriben sin preguntar.</para>
+ <para>Al exportar correctamente, se devuelve. Si falla algo, se muestra un error y se eleva una
excepción.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>ExportPlot("archivo.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/carpeta/archivo","eps")</userinput>
+</screen></para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (func1,func2,func3,...)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
+ <para>Dibujar una función (o varias funciones) con una línea. Los 10 primeros argumentos son
funciones, entonces opcionalmente puede especificar los límites de las gráficas como <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Si no se especifican los límites,
entonces se aplican los límites actuales (Consulte <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Si no se especifican los
límites de y, las funciones se calculan y se usan las áreas máxima y mínima.</para>
+ <para>El parámetro <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> controla el
dibujado de la leyenda.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>Muestra la ventana de dibujo lineal y limpia las funciones y otras líneas que se hubiesen
dibujado.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (func,...)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>Dibujar una función valorada paramétrica compleja con una línea. Primero vienen las
funciones que devuelven <computeroutput>x+iy</computeroutput>, luego, opcionalmente, los <varname>t</varname>
límites como <userinput>t1,t2,tinc</userinput>, y límites como <userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Si los límites no se especifican, entonces se aplican las configuraciones actuales (Consulte
<link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Si en lugar de la
cadena se da el valor «fit» para los límites x e y, los límites son la medida máxima de la gráfica.</para>
+ <para>El parámetro <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> controla el
dibujado de la leyenda.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>Dibuja una línea desde <varname>x1</varname>,<varname>y1</varname> a
<varname>x2</varname>,<varname>y2</varname>. Es posible reemplazar
<varname>x1</varname>,<varname>y1</varname>, <varname>x2</varname>,<varname>y2</varname> por una matriz de
<varname>n</varname> por 2 para obtener una curva poligonal de mayor longitud. También el vector
<varname>v</varname> puede ser un vector columna de números complejos, esto es una matriz
<varname>n</varname> por 1 y cada número complejo se considera un punto en el plano.</para>
+ <para>Se pueden añadir parámetros adicionales para especificar el color de la línea, ancho,
flechas, ventanas de dibujado o leyendas. Puede modificarlo añadiendo un valor a
<userinput>«color»</userinput>, <userinput>«ancho»</userinput>, <userinput>«ventana»</userinput>,
<userinput>«flecha»</userinput>, o <userinput>«leyenda»</userinput>, y después especificar su color, la
anchura, la ventana como 4 vectores, tipo de flecha, o la leyenda. (Flecha y ventana están desde la versión
1.0.6 y posteriores.)</para>
+ <para>Si la línea se considera como un polígono relleno, relleno con el color dado, se puede
especificar el argumento <userinput>«llenado»</userinput>. Desde la versión 1.0.22 en adelante.</para>
+ <para>La denominación del color debe ser una cadena que identifique al color según el diccionario
inglés que GTK reconocerá como <userinput>«red»</userinput>, <userinput>«blue»</userinput>,
<userinput>«yellow»</userinput>, etc... De forma alternativa el color se puede especificar en formato RGB
como por ejemplo <userinput>«#rgb»</userinput>, <userinput>«#rrggbb»</userinput>, o
<userinput>«#rrrrggggbbbb»</userinput>, donde r, g, o b son dígitos hexadecimales de los colores rojo, verde
y azul (red, green, blue) . Finalmente, desde la versión 1.0.18, los colores se pueden especificar como
vectores siendo el rojo, verde y azul componentes con valores que solo pueden ser 0 o 1. Por ejemplo:
<userinput>[1.0,0.5,0.1]</userinput>.</para>
+ <para>Los valores de entrada de la ventana deben ser del tipo <userinput>[x1,x2,y1,y2]</userinput>,
o bien, pueden ser una cadena <userinput>«ajuste»</userinput>, en cualquier caso, el rango de x se
establecerá con precisión y el rango y se puede ajustar con cinco por ciento alrededor del borde de la
línea.</para>
+ <para>La especificación para la flecha debería ser <userinput>«origen»</userinput>,
<userinput>«fin»</userinput>, <userinput>«ambos»</userinput>, o <userinput>«ninguno»</userinput>.</para>
+ <para>Finalmente, la leyenda debería ser una cadena que se pueda utilizar como leyenda en un
gráfico. Es decir, si se imprimen las leyendas.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen>
+ </para>
+ <para>A diferencia de muchas otras funciones que no les importa si toman una columna o un vector
fila, si se especifican puntos como un vector de valores complejos, debido a las posibles ambigüedades, es
preferible que sea un vector columna.</para>
+ <para>La especificación de <varname>v</varname> como un vector columna de números complejos, se
implementa desde la versión 1.0.22 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>Dibuja un punto en <varname>x</varname>,<varname>y</varname>. La entrada puede ser una
matriz <varname>n</varname> por 2 para <varname>n</varname> puntos diferentes. Esta función es esencialmente
la misma entrada que <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>. De forma
alternativa, el vector <varname>v</varname> puede ser un vector columna de números complejos, esto es una
matriz <varname>n</varname> por 1 y cada número complejo se considera un punto en el plano.</para>
+ <para>Se pueden añadir parámetros adicionales para especificar el color, ancho, ventanas de
dibujado o leyendas. Puede modificarlo añadiendo la palabra <userinput>«color»</userinput>,
<userinput>«ancho»</userinput>, <userinput>«ventana»</userinput>, o <userinput>«leyenda»</userinput>, y
después especificar su color, la anchura, la ventana como 4 vectores, o la leyenda.</para>
+ <para>La denominación del color debe ser una cadena que identifique al color según el diccionario
inglés que GTK reconocerá como <userinput>«red»</userinput>, <userinput>«blue»</userinput>,
<userinput>«yellow»</userinput>, etc... De forma alternativa el color se puede especificar en formato RGB
como por ejemplo <userinput>«#rgb»</userinput>, <userinput>«#rrggbb»</userinput>, o
<userinput>«#rrrrggggbbbb»</userinput>, donde r, g, o b son dígitos hexadecimales de los colores rojo, verde
y azul (red, green, blue) . Finalmente los colores se pueden especificar como vectores siendo el rojo, verde
y azul componentes con valores que solo pueden ser 0 o 1.</para>
+ <para>Los valores de entrada de la ventana deben ser del tipo <userinput>[x1,x2,y1,y2]</userinput>,
o bien, pueden ser una cadena <userinput>«ajuste»</userinput>, en cualquier caso, el rango de x se
establecerá con precisión y el rango y se puede ajustar con cinco por ciento alrededor del borde de la
línea.</para>
+ <para>Finalmente, la leyenda debería ser una cadena que se pueda utilizar como leyenda en un
gráfico. Es decir, si se imprimen las leyendas.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th
roots of unity")</userinput>
+</screen>
+ </para>
+ <para>A diferencia de muchas otras funciones que no les importa si toman una columna o un vector
fila, si se especifica los puntos como un vector de valores complejos, debido a las posibles ambigüedades,
siempre debe ser suministrado como un vector columna. Por lo tanto, la notificación en el último ejemplo la
transpuesta del vector <userinput>0:6</userinput> para convertirlo en un vector columna.</para>
+ <para>Disponible desde la versión 1.0.18 en adelante. La especificación de <varname>v</varname>
como un vector columna de números complejos, se implementa desde la versión 1.0.22 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>Devuelve un vector fila de un punto de la línea de la pantalla de dibujado correspondiente a
la ubicación actual del ratón. Si la trama de línea no es visible, entonces imprime un error y devuelve
<constant> null </constant>. En este caso se debe ejecutar <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> o <link
linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link> para poner la ventana en el
modo de dibujado de lineas. Consulte también <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfunc,yfunc,...)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
+ <para>Dibujar una función paramétrica con una línea. Primero vienen las funciones para
<varname>x</varname> e <varname>y</varname> luego opcionalmente los <varname>t</varname> límites como
<userinput>t1,t2,tinc</userinput>, y luego, opcionalmente, los límites como
<userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Si no se especifican los límites x e y, entonces se aplican las configuraciones actuales
(Consulte <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Si en
lugar de la cadena se da el valor «fit» para los límites x e y, los límites son la medida máxima de la
gráfica.</para>
+ <para>El parámetro <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> controla el
dibujado de la leyenda.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>Si está en el modo de dibujado de lineas, espera por un clic en la ventana de dibujado de
lineas y devuelve la ubicación del clic como un vector fila. Si se cierra la ventana de la función devuelve
inmediatamente con <constant>null</constant>. Si la ventana no está en modo de dibujado de lineas, esta se
pone de forma automática. Consulte también <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>Congela el dibujo en el lienzo de dibujado de forma temporal. Esto es útil si necesita
dibujar un grupo de elementos y quiere demorar el dibujado para no permitir el parpadeo de una animación.
Después de terminar con el dibujo debería descongelar el lienzo de dibujado llamando a la función <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.</para>
+ <para>El lienzo está siempre desbloqueado hasta el final de cualquier proceso, así que nunca
permanece bloqueado. El momento en que se muestra una nueva línea de comandos, por ejemplo, el lienzo de
dibujado se descongela automáticamente. También tenga en cuenta que las llamadas a congelar y descongelar
puede anidarse de manera segura.</para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>Descongela el lienzo de dibujado congelado por la función <link
linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link> y volver a dibujar el
lienzo inmediatamente. El lienzo también se descongelará al finalizar la ejecución de cualquier
programa.</para>
+ <para>Desde la versión 1.0.18 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>Muestra y eleva la ventana de dibujo, creándola si es necesario. Normalmente, la ventana se
crea cuando se invoca a una de las funciones de dibujo, pero no siempre la eleva si está debajo de otra
ventana. Esta función es buena para utilizar en un archivo de órdenes llamado «script» en inglés, donde la
ventana de dibujo ha sido creada anteriormente, y por ahora, oculta detrás de la consola u otras
ventanas.</para>
+ <para>Desde la versión 1.0.19 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>Borra las soluciones elaboradas por la función <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>Cuando un campo de dibujo de gráficas está activo, dibuja una solución con las condiciones
iniciales especificas. El método estándar de Runge-Kutta se usa con incremento <varname>dx</varname>. Las
soluciones permanecen en la gráfica hasta que se muestre un dibujo diferente o se llame a <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>. También
puede utilizar la interfaz gráfica para dibujar soluciones y especificar las condiciones iniciales con el
ratón.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (func)</synopsis>
+ <synopsis>SlopefieldPlot (func,x1,x2,y1,y2)</synopsis>
+ <para>Dibujar un campo inclinado. La función <varname>func</varname> tomará dos números reales
<varname>x</varname> e <varname>y</varname>, o un número complejo. De manera opcional se especificarán los
límites de la ventana de dibujo con <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>,
<varname>y2</varname>. Si no se especifica ningún límite, se aplicarán los que estén configurados actualmente
(Consulte <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>El parámetro <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> controla el
dibujado de la leyenda.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (func)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
+ <para>Dibujar una función superficial que tome entre dos argumentos o un número complejo. Primero
vienen las funciones que las limitan de forma opcional <varname>x1</varname>, <varname>x2</varname>,
<varname>y1</varname>, <varname>y2</varname>, <varname>z1</varname>, <varname>z2</varname>. Si no se
especifican los límites, entonces las configuraciones actuales se aplicarán (Consulte <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>). Genius sólo puede
dibujar una función superficial sencilla por el momento.</para>
+ <para>Si no se especifican los límites de z, se usan los valores máximo y mínimo de la
función.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>Muestra la ventana de dibujo lineal y limpia las funciones y otras líneas que se hubiesen
dibujado.</para>
+ <para>Disponible en la versión 1.0.19 y posteriores.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (datos)</synopsis>
+ <synopsis>SurfacePlotData (datos,etiqueta)</synopsis>
+ <synopsis>SurfacePlotData (datos,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (datos,etiqueta,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (datos,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (datos,etiqueta,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>Dibujar una superficie a partir de los datos. Los datos son una matriz de n x 3 cuyas filas
son las coordenadas x, y, z. Los datos pueden ser un vector cuya longitud sea múltiplo de 3 y que contenga
los triples de x, y z. Los datos deben contener al menos 3 puntos.</para>
+ <para>Opcionalmente, se pueden indicar una etiqueta y los límites. Si no se indican los límites,
se calculan a partir de los datos, no se usa <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link> pero, si quiere
usarla, debe pasarla explícitamente. Si no se indica una etiqueta, se usa una etiqueta vacía.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(datos,"Mis datos")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(datos,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(datos,SurfacePlotWindow)</userinput>
+</screen></para>
+ <para>Esto es un ejemplo de cómo dibujar con coordenadas polares, en particular, cómo dibujar la
función <userinput>-r^2 * theta</userinput>: <screen><prompt>genius></prompt> <userinput>d:=null; for r=0
to 1 by 0.1 do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen></para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (datos,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (datos,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (datos,[x1,x2,y1,y2],etiqueta)</synopsis>
+ <synopsis>SurfacePlotDataGrid (datos,[x1,x2,y1,y2,z1,z2],etiqueta)</synopsis>
+ <para>Dibujar una superficie a partir de datos rectangulares regulares. Los datos se dan en una
matriz matriz de n x m donde las filas son la coordenada x y las columnas son la coordenada y. La coordenada
x se divide en n-1 subintervalos iguales y la coordenada y se divide en m-1 subintervalos iguales. Los
límites <varname>x1</varname> y <varname>x2</varname> dan el intervalo en el eje x usado y los límites
<varname>y1</varname> e <varname>y2</varname> dan el intervalo en el eje y usado. Si los límites
<varname>z1</varname> y <varname>z2</varname> no se indican, se calculan a partir de los datos (para obtener
valores extremos de los datos).</para>
+ <para>Opcionalmente se puede indicar la etiqueta; si no se indica ninguna, se unas una etiqueta
vacía.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
+</screen></para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>Dibuja una línea desde <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>
hasta <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
<varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
<varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> se puede reemplazar por una matriz de
<varname>n</varname> por 3 para obtener una curva poligonal de mayor longitud.</para>
+ <para>Se pueden añadir parámetros adicionales para especificar el color de la línea, ancho,
ventanas de dibujado o leyendas. Puede modificarlo añadiendo un valor a <userinput>«color»</userinput>,
<userinput>«ancho»</userinput>, <userinput>«ventana»</userinput>,o <userinput>«leyenda»</userinput>, y
después especificar su color, la anchura, la ventana como 6 vectores, o la leyenda.</para>
+ <para>La denominación del color debe ser una cadena que identifique al color según el diccionario
inglés que GTK reconocerá como <userinput>«red»</userinput>, <userinput>«blue»</userinput>,
<userinput>«yellow»</userinput>, etc... De forma alternativa el color se puede especificar en formato RGB
como por ejemplo <userinput>«#rgb»</userinput>, <userinput>«#rrggbb»</userinput>, o
<userinput>«#rrrrggggbbbb»</userinput>, donde r, g, o b son dígitos hexadecimales de los colores rojo, verde
y azul (red, green, blue) . Finalmente, desde la versión 1.0.18, los colores se pueden especificar como
vectores siendo el rojo, verde y azul componentes con valores que solo pueden ser 0 o 1. Por ejemplo:
<userinput>[1.0,0.5,0.1]</userinput>.</para>
+ <para>Los valores de entrada de la ventana deben ser del tipo
<userinput>[x1,x2,y1,y2,z1,z2]</userinput>, o bien, pueden ser una cadena <userinput>«ajuste»</userinput>, en
cualquier caso, el rango de x se establecerá con precisión y el rango y se puede ajustar con cinco por ciento
alrededor del borde de la línea.</para>
+ <para>Finalmente, la leyenda debería ser una cadena que se pueda utilizar como leyenda en un
gráfico. Es decir, si se imprimen las leyendas.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen></para>
+ <para>Disponible desde la versión 1.0.19 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>Dibuja un punto en <varname>x</varname>,<varname>y</varname>,<varname>z</varname>. La
entrada puede ser una <varname>n</varname> por 3 matriz para <varname>n</varname> puntos diferentes. Esta
función es esencialmente la misma entrada que <link
linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.</para>
+ <para>Se pueden añadir parámetros adicionales para especificar el color de la línea, ancho,
ventanas de dibujado o leyendas. Puede modificarlo añadiendo un valor a <userinput>«color»</userinput>,
<userinput>«ancho»</userinput>, <userinput>«ventana»</userinput>,o <userinput>«leyenda»</userinput>, y
después especificar su color, la anchura, la ventana como 6 vectores, o la leyenda.</para>
+ <para>La denominación del color debe ser una cadena que identifique al color según el diccionario
inglés que GTK reconocerá como <userinput>«red»</userinput>, <userinput>«blue»</userinput>,
<userinput>«yellow»</userinput>, etc... De forma alternativa el color se puede especificar en formato RGB
como por ejemplo <userinput>«#rgb»</userinput>, <userinput>«#rrggbb»</userinput>, o
<userinput>«#rrrrggggbbbb»</userinput>, donde r, g, o b son dígitos hexadecimales de los colores rojo, verde
y azul (red, green, blue) . Finalmente los colores se pueden especificar como vectores siendo el rojo, verde
y azul componentes con valores que solo pueden ser 0 o 1.</para>
+ <para>Los valores de entrada de la ventana deben ser del tipo
<userinput>[x1,x2,y1,y2,z1,z2]</userinput>, o bien, pueden ser una cadena <userinput>«ajuste»</userinput>, en
cualquier caso, el rango de x se establecerá con precisión y el rango y se puede ajustar con cinco por ciento
alrededor del borde de la línea.</para>
+ <para>Finalmente, la leyenda debería ser una cadena que se pueda utilizar como leyenda en un
gráfico. Es decir, si se imprimen las leyendas.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen></para>
+ <para>Disponible desde la versión 1.0.19 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>Limpia las soluciones realizadas por la función <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>.</para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
+ <para>Cuando un campo de dibujo vectorial está activo, dibuja una solución con las condición
específica inicial. El método estándar de Runge-Kutta se utiliza con incremento <varname>dt</varname> para un
intervalo de longitud <varname>tlen</varname>. Las soluciones permanecen en la gráfica hasta que se muestra
un dibujo diferente o hasta que se llama a <link
linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>. Puede
también utilizar la gráfica para dibujar soluciones y especificar las condiciones iniciales con el
ratón.</para>
+ <para>Desde la versión 1.0.16 en adelante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (funcx, funcy)</synopsis>
+ <synopsis>VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)</synopsis>
+ <para>Dibujar un vector bidimensional. La función <varname>funcx</varname> será la dx/dt del campo
vectorial y la función <varname>funcy</varname> la dy/dt del campo vectorial. Las funciones tomarán dos
números reales <varname>x</varname> e <varname>y</varname>, o un simple número complejo. Cuando el parámetro
<link linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link> es
<constant>true</constant>, la magnitud de los vectores se normaliza. Es decir, sólo se muestra la dirección y
no la magnitud.</para>
+ <para>De manera opcional puede especificar los límites de la ventana de dibujo como
<varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Si no se
especifican los límites, entonces se aplicará los actuales (Consulte <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>El parámetro <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> controla el
dibujado de la leyenda.</para>
+ <para>Ejemplos: <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y,
`(x,y)=y^2-x, -1, 1, -1, 1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Programas de ejemplo en GEL</title>
+
+ <para>Esto es una función que calcula factoriales: <programlisting><![CDATA[function f(x) = if x <= 1
then 1 else (f(x-1)*x)
+]]></programlisting></para>
+ <para>Con sangría se convierte: <programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting></para>
+ <para>Esto es un puerto directo de la función factorial desde la página principal
<application>bc</application>. La sintaxis es similar a <application>bc</application>, pero diferente en que
en GEL, la última expresión es la única que se devuelve. Utilizar la función <literal>return</literal> en su
lugar, esto será: <programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting></para>
+
+ <para>Con mucho, la manera más fácil de definir una función factorial será usar el lazo del producto
como sigue. No es sólo la manera más corta y más rápida, sino probablemente la versión mas legible.
<programlisting>function f(x) = prod k=1 to x do k
+</programlisting></para>
+
+ <para>He aquí un ejemplo más extenso, esto básicamente redefine la función interna <link
linkend="gel-function-ref"><function>ref</function></link> para calcular la fila escalar de una matriz. La
función <function>ref</function> se construye de manera mucho más rápida, pero este ejemplo demuestra algunas
de las características más complejas de GEL. <programlisting><![CDATA[# Calculate the row-echelon form of a
matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting></para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Configuración</title>
+
+ <para>Para configurar la <application>herramienta matemática Genius</application>, elija
<menuchoice><guimenu>Configuración</guimenu><guimenuitem>Preferencias</guimenuitem></menuchoice>. Hay varios
parámetros básicos proporcionados por la calculadora además de los proporcionados por la biblioteca estándar.
Estos controlan cómo se comporta la calculadora.</para>
+
+ <note>
+ <title>Cambiar la configuración con GEL</title>
+ <para>Muchas de las configuraciones en Genius son simplemente variables globales, y que se pueden
evaluar y asignar de la misma manera que las variables normales. Consulte la <xref
linkend="genius-gel-variables"/> sobre evaluar y asignar a variables, y la <xref
linkend="genius-gel-function-parameters"/> para una lista de configuraciones que se pueden modificar por este
método.</para>
+ <para>Por ejemplo, puede establecer el número máximo de dígitos en un resultado a 12 escribiendo:
<programlisting>MaxDigits = 12
+</programlisting></para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Salida</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Número máximo de cifras que mostrar</guilabel>
+ </term>
+ <listitem>
+ <para>El número máximo de dígitos en un resultado (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Resultados como números de coma flotante</guilabel>
+ </term>
+ <listitem>
+ <para>Indica si los resultados se imprimirán siempre como números flotantes (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Números de coma flotante en notación científica</guilabel>
+ </term>
+ <listitem>
+ <para>Indica si los números flotantes están en notación científica (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Imprimir siempre expresiones completas</guilabel>
+ </term>
+ <listitem>
+ <para>Indica si se imprimen expresiones completas para valores de retorno no numéricos (más
largos que una línea) (<link
linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>))</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Usar fracciones mixtas</guilabel>
+ </term>
+ <listitem>
+ <para>Indica si se imprimen las fracciones como fracciones mixtas utilizando la forma «1
1/3» en vez de «4/3». (<link
linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Mostrar 0.0 cuando el número en coma flotante es menor que 10^-x (0=no truncar
nunca)</guilabel>
+ </term>
+ <listitem>
+ <para>Indica cómo cortar la salida. Pero sólo cuando otros números pueden ser muy grandes. Consulte
la documentación del parámetro <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Sólo truncar los números cuando otro número es mayor que 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>Indica cuándo se corta la salida. Esto lo configura el parámetro <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>. Consulte la
documentación del parámetro <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Recordar los ajustes de salida entre sesiones</guilabel>
+ </term>
+ <listitem>
+ <para>Indica si la configuración de la salida en el campo <guilabel>Opciones de salida de
número/expresión</guilabel> se recordarán para la próxima sesión. No se aplica al campo <guilabel>Opciones de
salida de error/información</guilabel>.</para>
+ <para>Si no está activada, se usará el valor predeterminado o cualquier configuración guardada
anteriormente cada vez que se inicie Genius. Tenga en cuenta que las configuraciones se guardan al final de
la sesión, así que si quiere cambiar los valores predeterminados, active esta casilla, reinicie
<application>herramienta matemática Genius</application> y entonces desactive la casilla de nuevo.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Mostrar los errores en una ventana de diálogo</guilabel>
+ </term>
+ <listitem>
+ <para>Si se activan, los errores se mostrarán en un diálogo separado, si no se activan, los errores
se imprimirán en la consola.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Mostrar los mensajes de información en un diálogo</guilabel>
+ </term>
+ <listitem>
+ <para>Si se activan los mensajes de información se mostraran en un diálogo separado, si no se
activan, los mensajes de información se imprimirán en la consola.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Máximo de errores que mostrar</guilabel>
+ </term>
+ <listitem>
+ <para>El número máximo de errores que devolver por una prueba (<link
linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). Si lo establece a 0, entonces todos
los errores se devolverán siempre . En general, si algún bucle causa muchos errores, entonces es poco
probable que se de cuenta nada más que de unos pocos fallos, y verá una larga lista de fallos no sirve de
mucha ayuda.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Además de estas preferencias, hay algunas preferencias que se pueden cambiar configurándolas en
el área de trabajo de la consola. Para otras que puedan afectar a la salida consulte la <xref
linkend="genius-gel-function-parameters"/>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>La base que se usará para mostrar enteros</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>Una cadena, puede ser <literal>"normal"</literal>, <literal>"latex"</literal>,
<literal>"mathml"</literal> o <literal>"troff"</literal> y afectará a cómo se imprimen las matrices (y quizás
otras cosas), útil para pegar en documentos. El estilo normal legible para los humanos,es el predeterminado
por <application>herramienta matemática Genius</application>. Los otros estilos son para las tipografías de
LaTeX, MathML (XML), o en Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Precisión</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Precisión en coma flotante</guilabel>
+ </term>
+ <listitem>
+ <para>Indica la precisión en bits de los números en coma flotante (<link
linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>). Tenga en cuenta que
cambiar esto, sólo afecta a las cantidades calculadas más recientes. Los valores antiguos almacenados en
variables, obviamente permanecerán en la precisión antigua y si quiere hacerlos más precisos, tendrá que
volver a calcularlos. La excepción a esto son las constantes como <link
linkend="gel-function-pi"><function>pi</function></link> o <link
linkend="gel-function-e"><function>e</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Recordar los ajustes de precisión entre sesiones</guilabel>
+ </term>
+ <listitem>
+ <para>Indicar si la configuración de la precisión se recordará para la próxima sesión. Si no está
activada, la configuración predeterminada o la configuración guardada anteriormente se utilizarán cada vez
que Genius se inicie. Tenga en cuenta que las configuraciones se guardan al final de la sesión, así que si
quiere cambiar la configuración por defecto, active esta casilla, reinicie Genius y luego vuelva a
desactivarla.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Terminal</title>
+
+ <para>«Terminal» se refiere a la consola en el área de trabajo.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Líneas de desplazamiento hacia atrás</guilabel>
+ </term>
+ <listitem>
+ <para>Líneas de desfile hacia atrás en la terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Tipografía</guilabel>
+ </term>
+ <listitem>
+ <para>La tipografía que usar en la terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Negro sobre blanco</guilabel>
+ </term>
+ <listitem>
+ <para>Si usar blanco sobre negro en la terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Cursor parpadeante</guilabel>
+ </term>
+ <listitem>
+ <para>Cuando la terminal tenga el foco, el cursor parpadeará en ella. Puede que a veces resulte
molesto y genere tráfico innecesario si ejecuta Genius remotamente.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Memoria</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Número máximo de nodos que asignar</guilabel>
+ </term>
+ <listitem>
+ <para>Internamente, todos los datos se ponen en pequeños nodos en la memoria. Esto da un límite
máximo de nodos reservados para el procesado. Esto evita que se quede sin memoria si comete algún error que
haga consumir al programa más memoria de lo normal, como podría ser una recursión sin fin. Esto podría
ralentizar su máquina y complicar incluso la interrupción del programa.</para>
+ <para>Una vez se ha alcanzado el límite, la <application>herramienta matemática Genius</application>
preguntará si desea interrumpir el proceso o si desea continuar. Si decide continuar, no se aplicará ningún
límite y será posible que su máquina se quede sin memoria. El límite se aplicará en la siguiente ocasión que
ejecuté un programa o una expresión en la consola sin importar la respuesta a la pregunta.</para>
+ <para>Establecer el límite a cero significa que no hay límite en la cantidad de memoria que usa
Genius.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>Acerca de la <application>herramienta matemática Genius</application></title>
+
+ <para>Jiří (George) Lebl (<email>jirka 5z com</email>) ha desarrollado la <application>Herramienta
matemática Genius</application>. La historia de la <application>herramienta matemática Genius</application>
se remonta a 1997. Fue el primer programa calculadora de Gnome, sin embargo evolucionó a algo más que una
calculadora de escritorio. Para más información acerca de la <application>herramienta matemática
Genius</application>, por favor, visite la <ulink url="http://www.jirka.org/genius.html" type="http">página
web de Genius</ulink>.</para>
+ <para>Para informar de un error o hacer una sugerencia sobre esta aplicación o sobre este manual, envíe
un correo al autor o publique un mensaje en la lista de correo (consulte la página web).</para>
+
+ <para>Este programa se distribuye bajo los términos de la Licencia Pública General GNU (GPL) tal y
como fue publicada por la Free Software Foundation, en la versión 3 ó (a su elección) cualquier versión
posterior. Una copia de esta licencia puede encontrarse en <ulink url="http://www.gnu.org/copyleft/gpl.html"
type="http">link</ulink>, o en el archivo COPYING incluido con el código fuente de este programa.</para>
+
+ <para>Jiří Lebl recibió apoyo parcial de la NSF grant DMS 0900885, DMS 1362337,y la Universidad de
Illinois en Urbana-Champaign, la Universidad de California en San Diego, la Universidad de Wisconsin-Madison,
y la Universidad del estado de Oklahoma durante el desarrollo del proyecto. El software se ha utilizado tanto
para docencia como para investigación.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/es/html/ch11s20.html b/help/es/html/ch11s20.html
index 43f9d17..2d4ed84 100644
--- a/help/es/html/ch11s20.html
+++ b/help/es/html/ch11s20.html
@@ -19,7 +19,7 @@
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The
7th roots of unity")</code></strong>
</pre><p>
- </p><p>A diferencia de muchas otras funciones que no les importa si toman una columna o un vector
fila, si se especifica los puntos como un vector de valores complejos, debido a las posibles ambigüedades,
siempre debe ser suministrado como un vector columna. Por lo tanto, la notificación en el último ejemplo la
transpuesta del vector <strong class="userinput"><code> 0: 6 userinput> para convertirlo en un vector
columna.</code></strong></p><p>Disponible desde la versión 1.0.18 en adelante. La especificación de <code
class="varname">v</code> como un vector columna de números complejos, se implementa desde la versión 1.0.22
en adelante.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotMouseLocation"></a>LinePlotMouseLocation</span></dt><dd><pre
class="synopsis">LinePlotMouseLocation ()</pre><p>Devuelve un vector fila de un punto de la línea de la
pantalla de dibujado correspondiente a la ubicación actual del ratón. Si la trama de línea no es
visible, entonces imprime un error y devuelve <code class="constant"> null constant>. En este caso se
debe ejecutar LinePlot o LinePlotClear LinePlotClear </code></p></dd><dt><span class="term"><a
name="gel-function-LinePlotParametric"></a>LinePlotParametric</span></dt><dd><pre
class="synopsis">LinePlotParametric (xfunc,yfunc,...)</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc)</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc,"fit")</pre><p>Dibujar una función paramétrica con una línea. Primero vienen las
funciones para <code class="varname">x</code> e <code class="varname">y</code> luego opcionalmente los <code
class="varname">t</code> límites como <strong class="userinput"><code>t1,t2,tinc</code></strong>, y luego,
opcionalmente, los límites como <strong cl
ass="userinput"><code>x1,x2,y1,y2</code></strong>.</p><p>Si no se especifican los límites x e y, entonces se
aplican las configuraciones actuales (Consulte <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Si en
lugar de la cadena se da el valor «fit» para los límites x e y, los límites son la medida máxima de la
gráfica.</p><p>El parámetro <a class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> controla el dibujado de la leyenda.</p></dd><dt><span
class="term"><a name="gel-function-LinePlotWaitForClick"></a>LinePlotWaitForClick</span></dt><dd><pre
class="synopsis">LinePlotWaitForClick ()</pre><p>Si está en el modo de dibujado de lineas, espera por un clic
en la ventana de dibujado de lineas y devuelve la ubicación del clic como un vector fila. Si se cierra la
ventana de la función devuelve inmediatamente con <code class="constant">nu
ll</code>. Si la ventana no está en modo de dibujado de lineas, esta se pone de forma automática. Consulte
también <a class="link" href="ch11s20.html#gel-function-LinePlotMouseLocation"><code
class="function">LinePlotMouseLocation</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasFreeze"></a>PlotCanvasFreeze</span></dt><dd><pre
class="synopsis">PlotCanvasFreeze ()</pre><p>Congela el dibujo en el lienzo de dibujado de forma temporal.
Esto es útil si necesita dibujar un grupo de elementos y quiere demorar el dibujado para no permitir el
parpadeo de una animación. Después de terminar con el dibujo debería descongelar el lienzo de dibujado
llamando a la función <a class="link" href="ch11s20.html#gel-function-PlotCanvasThaw"><code
class="function">PlotCanvasThaw</code></a>.</p><p>El lienzo está siempre desbloqueado hasta el final de
cualquier proceso, así que nunca permanece bloqueado. El momento en que se muestra una nueva línea de
comandos, p
or ejemplo, el lienzo de dibujado se descongela automáticamente. También tenga en cuenta que las llamadas a
congelar y descongelar puede anidarse de manera segura.</p><p>Desde la versión 1.0.18 en
adelante.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasThaw"></a>PlotCanvasThaw</span></dt><dd><pre class="synopsis">PlotCanvasThaw
()</pre><p>Descongela el lienzo de dibujado congelado por la función <a class="link"
href="ch11s20.html#gel-function-PlotCanvasFreeze"><code class="function">PlotCanvasFreeze</code></a> y volver
a dibujar el lienzo inmediatamente. El lienzo también se descongelará al finalizar la ejecución de cualquier
programa.</p><p>Desde la versión 1.0.18 en adelante.</p></dd><dt><span class="term"><a
name="gel-function-PlotWindowPresent"></a>PlotWindowPresent</span></dt><dd><pre
class="synopsis">PlotWindowPresent ()</pre><p>Muestra y eleva la ventana de dibujo, creándola si es
necesario. Normalmente, la ventana se crea cuando se invoca a
una de las funciones de dibujo, pero no siempre la eleva si está debajo de otra ventana. Esta función es
buena para utilizar en un archivo de órdenes llamado «script» en inglés, donde la ventana de dibujo ha sido
creada anteriormente, y por ahora, oculta detrás de la consola u otras ventanas.</p><p>Desde la versión
1.0.19 en adelante.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldClearSolutions"></a>SlopefieldClearSolutions</span></dt><dd><pre
class="synopsis">SlopefieldClearSolutions ()</pre><p>Borra las soluciones elaboradas por la función <a
class="link" href="ch11s20.html#gel-function-SlopefieldDrawSolution"><code
class="function">SlopefieldDrawSolution</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldDrawSolution"></a>SlopefieldDrawSolution</span></dt><dd><pre
class="synopsis">SlopefieldDrawSolution (x, y, dx)</pre><p>Cuando un campo de dibujo de gráficas está activo,
dibuja una solución con las condiciones iniciale
s especificas. El método estándar de Runge-Kutta se usa con incremento <code class="varname">dx</code>. Las
soluciones permanecen en la gráfica hasta que se muestre un dibujo diferente o se llame a <a class="link"
href="ch11s20.html#gel-function-SlopefieldClearSolutions"><code
class="function">SlopefieldClearSolutions</code></a>. También puede utilizar la interfaz gráfica para dibujar
soluciones y especificar las condiciones iniciales con el ratón.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldPlot"></a>SlopefieldPlot</span></dt><dd><pre class="synopsis">SlopefieldPlot
(func)</pre><pre class="synopsis">SlopefieldPlot (func,x1,x2,y1,y2)</pre><p>Dibujar un campo inclinado. La
función <code class="varname">func</code> tomará dos números reales <code class="varname">x</code> e <code
class="varname">y</code>, o un número complejo. De manera opcional se especificarán los límites de la ventana
de dibujo con <code class="varname">x1</code>, <code class="
varname">x2</code>, <code class="varname">y1</code>, <code class="varname">y2</code>. Si no se especifica
ningún límite, se aplicarán los que estén configurados actualmente (Consulte <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>).</p><p>El
parámetro <a class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> controla el dibujado de la leyenda.</p><p>Ejemplos: </p><pre
class="screen"><code class="prompt">genius></code> <strong
class="userinput"><code>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</code></strong>
+ </p><p>A diferencia de muchas otras funciones que no les importa si toman una columna o un vector
fila, si se especifica los puntos como un vector de valores complejos, debido a las posibles ambigüedades,
siempre debe ser suministrado como un vector columna. Por lo tanto, la notificación en el último ejemplo la
transpuesta del vector <strong class="userinput"><code>0:6</code></strong> para convertirlo en un vector
columna.</p><p>Disponible desde la versión 1.0.18 en adelante. La especificación de <code
class="varname">v</code> como un vector columna de números complejos, se implementa desde la versión 1.0.22
en adelante.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotMouseLocation"></a>LinePlotMouseLocation</span></dt><dd><pre
class="synopsis">LinePlotMouseLocation ()</pre><p>Devuelve un vector fila de un punto de la línea de la
pantalla de dibujado correspondiente a la ubicación actual del ratón. Si la trama de línea no es visible,
entonce
s imprime un error y devuelve <code class="constant"> null </code>. En este caso se debe ejecutar <a
class="link" href="ch11s20.html#gel-function-LinePlot"><code class="function">LinePlot</code></a> o <a
class="link" href="ch11s20.html#gel-function-LinePlotClear"><code class="function">LinePlotClear</code></a>
para poner la ventana en el modo de dibujado de lineas. Consulte también <a class="link"
href="ch11s20.html#gel-function-LinePlotWaitForClick"><code
class="function">LinePlotWaitForClick</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-LinePlotParametric"></a>LinePlotParametric</span></dt><dd><pre
class="synopsis">LinePlotParametric (xfunc,yfunc,...)</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc)</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</pre><pre class="synopsis">LinePlotParametric
(xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</pre><pre class="synopsis">LinePlotParametric (xfunc,yfunc,t1,t2,tin
c,"fit")</pre><p>Dibujar una función paramétrica con una línea. Primero vienen las funciones para <code
class="varname">x</code> e <code class="varname">y</code> luego opcionalmente los <code
class="varname">t</code> límites como <strong class="userinput"><code>t1,t2,tinc</code></strong>, y luego,
opcionalmente, los límites como <strong class="userinput"><code>x1,x2,y1,y2</code></strong>.</p><p>Si no se
especifican los límites x e y, entonces se aplican las configuraciones actuales (Consulte <a class="link"
href="ch11s03.html#gel-function-LinePlotWindow"><code class="function">LinePlotWindow</code></a>). Si en
lugar de la cadena se da el valor «fit» para los límites x e y, los límites son la medida máxima de la
gráfica.</p><p>El parámetro <a class="link" href="ch11s03.html#gel-function-LinePlotDrawLegends"><code
class="function">LinePlotDrawLegends</code></a> controla el dibujado de la leyenda.</p></dd><dt><span
class="term"><a name="gel-function-LinePlotWaitFor
Click"></a>LinePlotWaitForClick</span></dt><dd><pre class="synopsis">LinePlotWaitForClick ()</pre><p>Si está
en el modo de dibujado de lineas, espera por un clic en la ventana de dibujado de lineas y devuelve la
ubicación del clic como un vector fila. Si se cierra la ventana de la función devuelve inmediatamente con
<code class="constant">null</code>. Si la ventana no está en modo de dibujado de lineas, esta se pone de
forma automática. Consulte también <a class="link"
href="ch11s20.html#gel-function-LinePlotMouseLocation"><code
class="function">LinePlotMouseLocation</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasFreeze"></a>PlotCanvasFreeze</span></dt><dd><pre
class="synopsis">PlotCanvasFreeze ()</pre><p>Congela el dibujo en el lienzo de dibujado de forma temporal.
Esto es útil si necesita dibujar un grupo de elementos y quiere demorar el dibujado para no permitir el
parpadeo de una animación. Después de terminar con el dibujo debería d
escongelar el lienzo de dibujado llamando a la función <a class="link"
href="ch11s20.html#gel-function-PlotCanvasThaw"><code class="function">PlotCanvasThaw</code></a>.</p><p>El
lienzo está siempre desbloqueado hasta el final de cualquier proceso, así que nunca permanece bloqueado. El
momento en que se muestra una nueva línea de comandos, por ejemplo, el lienzo de dibujado se descongela
automáticamente. También tenga en cuenta que las llamadas a congelar y descongelar puede anidarse de manera
segura.</p><p>Desde la versión 1.0.18 en adelante.</p></dd><dt><span class="term"><a
name="gel-function-PlotCanvasThaw"></a>PlotCanvasThaw</span></dt><dd><pre class="synopsis">PlotCanvasThaw
()</pre><p>Descongela el lienzo de dibujado congelado por la función <a class="link"
href="ch11s20.html#gel-function-PlotCanvasFreeze"><code class="function">PlotCanvasFreeze</code></a> y volver
a dibujar el lienzo inmediatamente. El lienzo también se descongelará al finalizar la ejecució
n de cualquier programa.</p><p>Desde la versión 1.0.18 en adelante.</p></dd><dt><span class="term"><a
name="gel-function-PlotWindowPresent"></a>PlotWindowPresent</span></dt><dd><pre
class="synopsis">PlotWindowPresent ()</pre><p>Muestra y eleva la ventana de dibujo, creándola si es
necesario. Normalmente, la ventana se crea cuando se invoca a una de las funciones de dibujo, pero no siempre
la eleva si está debajo de otra ventana. Esta función es buena para utilizar en un archivo de órdenes llamado
«script» en inglés, donde la ventana de dibujo ha sido creada anteriormente, y por ahora, oculta detrás de la
consola u otras ventanas.</p><p>Desde la versión 1.0.19 en adelante.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldClearSolutions"></a>SlopefieldClearSolutions</span></dt><dd><pre
class="synopsis">SlopefieldClearSolutions ()</pre><p>Borra las soluciones elaboradas por la función <a
class="link" href="ch11s20.html#gel-function-SlopefieldDrawSolutio
n"><code class="function">SlopefieldDrawSolution</code></a>.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldDrawSolution"></a>SlopefieldDrawSolution</span></dt><dd><pre
class="synopsis">SlopefieldDrawSolution (x, y, dx)</pre><p>Cuando un campo de dibujo de gráficas está activo,
dibuja una solución con las condiciones iniciales especificas. El método estándar de Runge-Kutta se usa con
incremento <code class="varname">dx</code>. Las soluciones permanecen en la gráfica hasta que se muestre un
dibujo diferente o se llame a <a class="link" href="ch11s20.html#gel-function-SlopefieldClearSolutions"><code
class="function">SlopefieldClearSolutions</code></a>. También puede utilizar la interfaz gráfica para dibujar
soluciones y especificar las condiciones iniciales con el ratón.</p></dd><dt><span class="term"><a
name="gel-function-SlopefieldPlot"></a>SlopefieldPlot</span></dt><dd><pre class="synopsis">SlopefieldPlot
(func)</pre><pre class="synopsis">Slopefield
Plot (func,x1,x2,y1,y2)</pre><p>Dibujar un campo inclinado. La función <code class="varname">func</code>
tomará dos números reales <code class="varname">x</code> e <code class="varname">y</code>, o un número
complejo. De manera opcional se especificarán los límites de la ventana de dibujo con <code
class="varname">x1</code>, <code class="varname">x2</code>, <code class="varname">y1</code>, <code
class="varname">y2</code>. Si no se especifica ningún límite, se aplicarán los que estén configurados
actualmente (Consulte <a class="link" href="ch11s03.html#gel-function-LinePlotWindow"><code
class="function">LinePlotWindow</code></a>).</p><p>El parámetro <a class="link"
href="ch11s03.html#gel-function-LinePlotDrawLegends"><code class="function">LinePlotDrawLegends</code></a>
controla el dibujado de la leyenda.</p><p>Ejemplos: </p><pre class="screen"><code
class="prompt">genius></code> <strong
class="userinput"><code>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</code></s
trong>
</pre></dd><dt><span class="term"><a name="gel-function-SurfacePlot"></a>SurfacePlot</span></dt><dd><pre
class="synopsis">SurfacePlot (func)</pre><pre class="synopsis">SurfacePlot (func,x1,x2,y1,y2,z1,z2)</pre><pre
class="synopsis">SurfacePlot (func,x1,x2,y1,y2)</pre><pre class="synopsis">SurfacePlot
(func,[x1,x2,y1,y2,z1,z2])</pre><pre class="synopsis">SurfacePlot (func,[x1,x2,y1,y2])</pre><p>Dibujar una
función superficial que tome entre dos argumentos o un número complejo. Primero vienen las funciones que las
limitan de forma opcional <code class="varname">x1</code>, <code class="varname">x2</code>, <code
class="varname">y1</code>, <code class="varname">y2</code>, <code class="varname">z1</code>, <code
class="varname">z2</code>. Si no se especifican los límites, entonces las configuraciones actuales se
aplicarán (Consulte <a class="link" href="ch11s03.html#gel-function-SurfacePlotWindow"><code
class="function">SurfacePlotWindow</code></a>). Genius sólo puede dibujar
una función superficial sencilla por el momento.</p><p>Si no se especifican los límites de z, se usan los
valores máximo y mínimo de la función.</p><p>Ejemplos: </p><pre class="screen"><code
class="prompt">genius></code> <strong
class="userinput"><code>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</code></strong>
<code class="prompt">genius></code> <strong
class="userinput"><code>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</code></strong>
diff --git a/help/es/html/index.html b/help/es/html/index.html
index 7e8f8d1..7ec27df 100644
--- a/help/es/html/index.html
+++ b/help/es/html/index.html
@@ -1,3 +1,3 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Manual de
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Manual de la herramienta matemática Genius."><link rel="home" href="index.html" title="Manual de
Genius"><link rel="next" href="ch01.html" title="Capítulo 1. Introducción"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Manual de Genius</th></tr><tr><td width="20%"
align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n"
href="ch01.html">Siguiente</a></td></tr></table><hr></div><div lang="es" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Manual de Genius</h1></div><div><div
class="authorgroup"><div class="author"><h3 class="author"><sp
an class="firstname">Jiří</span> <span class="surname">Lebl</span></h3><div class="affiliation"><span
class="orgname">Universidad del estado de Oklahoma<br></span><div class="address"><p> <code
class="email"><<a class="email" href="mailto:jirka 5z com">jirka 5z com</a>></code>
</p></div></div></div><div class="author"><h3 class="author"><span class="firstname">Kai</span> <span
class="surname">Willadsen</span></h3><div class="affiliation"><span class="orgname">Universidad de
Queensland, Australia<br></span><div class="address"><p> <code class="email"><<a class="email"
href="mailto:kaiw itee uq edu au">kaiw itee uq edu au</a>></code>
</p></div></div></div></div></div><div><p class="releaseinfo">Este manual describe la versión 1.0.22 de
Genius.</p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2011 Daniel
Mustieles (d
aniel mustieles gmail com)</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>Se concede
permiso para copiar, distribuir o modificar este documento según las condiciones de la GNU Free
Documentation License (GFDL), Versión 1.1 o cualquier versión posterior publicada por la Free Software
Foundation sin Secciones invariantes, Textos de portada y Textos de contraportada. Encontrará una copia de
la GFDL en este <a class="ulink" href="ghelp:fdl" target="_top">enlace</a> o en el archivo COPYING-DOCS
distribuido con este manual.</p><p>Este manual es parte de la colección de manuales GNOME distribuidos bajo
la GFDL. Si quiere distribuir este manual separadamente de la colección, puede hacerlo añadiendo una copia
de la licencia al manual, tal como se describe en la sección 6 de la licencia.</p><p>Muchos de los nombres
usados por empresas para distinguir sus productos y servicios se mencionan como marcas comerciales. Donde
aparezcan dichos nombres en c
ualquier documentación GNOME, y para que los miembros del proyecto de documentación reconozcan dichas
marcas comerciales, dichos nombres se imprimen en mayúsculas o iniciales mayúsculas.</p><p>EL DOCUMENTO Y
LAS VERSIONES MODIFICADAS DEL MISMO SE PROPORCIONAN CON SUJECIÓN A LOS TÉRMINOS DE LA GFDL, QUEDANDO BIEN
ENTENDIDO, ADEMÁS, QUE: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li
class="listitem"><p>EL DOCUMENTO SE ENTREGA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, NI EXPLÍCITA NI
IMPLÍCITA INCLUYENDO, SIN LIMITACIÓN, GARANTÍA DE QUE EL DOCUMENTO O VERSIÓN MODIFICADA DE ÉSTE CAREZCA
DE DEFECTOS EN EL MOMENTO DE SU VENTA, SEA ADECUADO A UN FIN CONCRETO O INCUMPLA ALGUNA NORMATIVA. TODO EL
RIESGO RELATIVO A LA CALIDAD, PRECISIÓN Y UTILIDAD DEL DOCUMENTO O SU VERSIÓN MODIFICADA RECAE EN USTED. SI
CUALQUIER DOCUMENTO O VERSIÓN MODIFICADA DE AQUÉL RESULTARA DEFECTUOSO EN CUALQUIER ASPECTO, USTED (Y NO EL
REDACTOR INICIAL, A
UTOR O AUTOR DE APORTACIONES) ASUMIRÁ LOS COSTES DE TODA REPARACIÓN, MANTENIMIENTO O CORRECCIÓN
NECESARIOS. ESTA EXENCIÓN DE RESPONSABILIDAD SOBRE LA GARANTÍA ES UNA PARTE ESENCIAL DE ESTA LICENCIA. NO
SE AUTORIZA EL USO DE NINGÚN DOCUMENTO NI VERSIÓN MODIFICADA DE ÉSTE POR EL PRESENTE, SALVO DENTRO DEL
CUMPLIMIENTO DE LA EXENCIÓN DE RESPONSABILIDAD;Y</p></li><li class="listitem"><p>BAJO NINGUNA CIRCUNSTANCIA
NI BAJO NINGUNA TEORÍA LEGAL, SEA POR ERROR (INCLUYENDO NEGLIGENCIA), CONTRATO O DE ALGÚN OTRO MODO, EL
AUTOR, EL ESCRITOR INICIAL, CUALQUIER CONTRIBUIDOR, O CUALQUIER DISTRIBUIDOR DEL DOCUMENTO O VERSIÓN
MODIFICADA DEL DOCUMENTO, O CUALQUIER PROVEEDOR DE CUALQUIERA DE ESAS PARTES, SERÁ RESPONSABLE ANTE NINGUNA
PERSONA POR NINGÚN DAÑO DIRECTO, INDIRECTO, ESPECIAL, INCIDENTAL O DERIVADO DE NINGÚN TIPO, INCLUYENDO,
SIN LIMITACIÓN DAÑOS POR PÉRDIDA DE MERCANCÍAS, PARO TÉCNICO, FALLO INFORMÁTICO O MAL FUNCIONAMIENTO O
CUALQUIER OT
RO POSIBLE DAÑO O PÉRDIDAS DERIVADAS O RELACIONADAS CON EL USO DEL DOCUMENTO O SUS VERSIONES MODIFICADAS,
AUNQUE DICHA PARTE HAYA SIDO INFORMADA DE LA POSIBILIDAD DE QUE SE PRODUJESEN DICHOS
DAÑOS.</p></li></ol></div></div></div><div><div class="legalnotice"><a name="idm46229669502864"></a><p
class="legalnotice-title"><b>Comentarios</b></p><p>Para informar de un fallo, o hacer alguna sugerencia sobre
la aplicación <span class="application">herramienta matemática Genius</span>, o este manual, siga las
instrucciones en la <a class="ulink" href="http://www.jirka.org/genius.html" target="_top">página web de
Genius</a> o envíe un correo electrónico a <code class="email"><<a class="email" href="mailto:jirka 5z
com">jirka 5z com</a>></code>.</p></div></div><div><div class="revhistory"><table
style="border-style:solid; width:100%;" summary="Historial de revisiones"><tr><th align="left" valign="top"
colspan="2"><b>Historial de revisiones</b></th></tr><tr><td align="l
eft">Revisión 0.2</td><td align="left">Septiembre 2016</td></tr><tr><td align="left" colspan="2">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Manual de
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Manual de la herramienta matemática Genius."><link rel="home" href="index.html" title="Manual de
Genius"><link rel="next" href="ch01.html" title="Capítulo 1. Introducción"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Manual de Genius</th></tr><tr><td width="20%"
align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n"
href="ch01.html">Siguiente</a></td></tr></table><hr></div><div lang="es" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Manual de Genius</h1></div><div><div
class="authorgroup"><div class="author"><h3 class="author"><sp
an class="firstname">Jiří</span> <span class="surname">Lebl</span></h3><div class="affiliation"><span
class="orgname">Universidad del estado de Oklahoma<br></span><div class="address"><p> <code
class="email"><<a class="email" href="mailto:jirka 5z com">jirka 5z com</a>></code>
</p></div></div></div><div class="author"><h3 class="author"><span class="firstname">Kai</span> <span
class="surname">Willadsen</span></h3><div class="affiliation"><span class="orgname">Universidad de
Queensland, Australia<br></span><div class="address"><p> <code class="email"><<a class="email"
href="mailto:kaiw itee uq edu au">kaiw itee uq edu au</a>></code>
</p></div></div></div></div></div><div><p class="releaseinfo">Este manual describe la versión 1.0.22 de
Genius.</p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2011 Daniel
Mustieles (d
aniel mustieles gmail com)</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>Se concede
permiso para copiar, distribuir o modificar este documento según las condiciones de la GNU Free
Documentation License (GFDL), Versión 1.1 o cualquier versión posterior publicada por la Free Software
Foundation sin Secciones invariantes, Textos de portada y Textos de contraportada. Encontrará una copia de
la GFDL en este <a class="ulink" href="ghelp:fdl" target="_top">enlace</a> o en el archivo COPYING-DOCS
distribuido con este manual.</p><p>Este manual es parte de la colección de manuales GNOME distribuidos bajo
la GFDL. Si quiere distribuir este manual separadamente de la colección, puede hacerlo añadiendo una copia
de la licencia al manual, tal como se describe en la sección 6 de la licencia.</p><p>Muchos de los nombres
usados por empresas para distinguir sus productos y servicios se mencionan como marcas comerciales. Donde
aparezcan dichos nombres en c
ualquier documentación GNOME, y para que los miembros del proyecto de documentación reconozcan dichas
marcas comerciales, dichos nombres se imprimen en mayúsculas o iniciales mayúsculas.</p><p>EL DOCUMENTO Y
LAS VERSIONES MODIFICADAS DEL MISMO SE PROPORCIONAN CON SUJECIÓN A LOS TÉRMINOS DE LA GFDL, QUEDANDO BIEN
ENTENDIDO, ADEMÁS, QUE: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li
class="listitem"><p>EL DOCUMENTO SE ENTREGA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, NI EXPLÍCITA NI
IMPLÍCITA INCLUYENDO, SIN LIMITACIÓN, GARANTÍA DE QUE EL DOCUMENTO O VERSIÓN MODIFICADA DE ÉSTE CAREZCA
DE DEFECTOS EN EL MOMENTO DE SU VENTA, SEA ADECUADO A UN FIN CONCRETO O INCUMPLA ALGUNA NORMATIVA. TODO EL
RIESGO RELATIVO A LA CALIDAD, PRECISIÓN Y UTILIDAD DEL DOCUMENTO O SU VERSIÓN MODIFICADA RECAE EN USTED. SI
CUALQUIER DOCUMENTO O VERSIÓN MODIFICADA DE AQUÉL RESULTARA DEFECTUOSO EN CUALQUIER ASPECTO, USTED (Y NO EL
REDACTOR INICIAL, A
UTOR O AUTOR DE APORTACIONES) ASUMIRÁ LOS COSTES DE TODA REPARACIÓN, MANTENIMIENTO O CORRECCIÓN
NECESARIOS. ESTA EXENCIÓN DE RESPONSABILIDAD SOBRE LA GARANTÍA ES UNA PARTE ESENCIAL DE ESTA LICENCIA. NO
SE AUTORIZA EL USO DE NINGÚN DOCUMENTO NI VERSIÓN MODIFICADA DE ÉSTE POR EL PRESENTE, SALVO DENTRO DEL
CUMPLIMIENTO DE LA EXENCIÓN DE RESPONSABILIDAD;Y</p></li><li class="listitem"><p>BAJO NINGUNA CIRCUNSTANCIA
NI BAJO NINGUNA TEORÍA LEGAL, SEA POR ERROR (INCLUYENDO NEGLIGENCIA), CONTRATO O DE ALGÚN OTRO MODO, EL
AUTOR, EL ESCRITOR INICIAL, CUALQUIER CONTRIBUIDOR, O CUALQUIER DISTRIBUIDOR DEL DOCUMENTO O VERSIÓN
MODIFICADA DEL DOCUMENTO, O CUALQUIER PROVEEDOR DE CUALQUIERA DE ESAS PARTES, SERÁ RESPONSABLE ANTE NINGUNA
PERSONA POR NINGÚN DAÑO DIRECTO, INDIRECTO, ESPECIAL, INCIDENTAL O DERIVADO DE NINGÚN TIPO, INCLUYENDO,
SIN LIMITACIÓN DAÑOS POR PÉRDIDA DE MERCANCÍAS, PARO TÉCNICO, FALLO INFORMÁTICO O MAL FUNCIONAMIENTO O
CUALQUIER OT
RO POSIBLE DAÑO O PÉRDIDAS DERIVADAS O RELACIONADAS CON EL USO DEL DOCUMENTO O SUS VERSIONES MODIFICADAS,
AUNQUE DICHA PARTE HAYA SIDO INFORMADA DE LA POSIBILIDAD DE QUE SE PRODUJESEN DICHOS
DAÑOS.</p></li></ol></div></div></div><div><div class="legalnotice"><a name="idm51"></a><p
class="legalnotice-title"><b>Comentarios</b></p><p>Para informar de un fallo, o hacer alguna sugerencia sobre
la aplicación <span class="application">herramienta matemática Genius</span>, o este manual, siga las
instrucciones en la <a class="ulink" href="http://www.jirka.org/genius.html" target="_top">página web de
Genius</a> o envíe un correo electrónico a <code class="email"><<a class="email" href="mailto:jirka 5z
com">jirka 5z com</a>></code>.</p></div></div><div><div class="revhistory"><table
style="border-style:solid; width:100%;" summary="Historial de revisiones"><tr><th align="left" valign="top"
colspan="2"><b>Historial de revisiones</b></th></tr><tr><td align="left">Revisi�
�n 0.2</td><td align="left">Septiembre 2016</td></tr><tr><td align="left" colspan="2">
<p class="author">Jiri (George) Lebl <code class="email"><<a class="email"
href="mailto:jirka 5z com">jirka 5z com</a>></code></p>
</td></tr></table></div></div><div><div class="abstract"><p
class="title"><b>Resumen</b></p><p>Manual de la herramienta matemática
Genius.</p></div></div></div><hr></div><div class="toc"><p><b>Tabla de contenidos</b></p><dl
class="toc"><dt><span class="chapter"><a href="ch01.html">1. Introducción</a></span></dt><dt><span
class="chapter"><a href="ch02.html">2. Primeros pasos</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch02.html#genius-to-start">Para iniciar la <span class="application">herramienta matemática
Genius</span></a></span></dt><dt><span class="sect1"><a href="ch02s02.html">Al iniciar
Genius</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Uso
básico</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#genius-usage-workarea">Usar el área
de trabajo</a></span></dt><dt><span class="sect1"><a href="ch03s02.html">Crear un programa
nuevo</a></span></dt><dt><span class="sect1"><a href="ch03s03.html">Abrir y ejecuta
r un programa</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4.
Dibujar</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#genius-line-plots">Trazado de
líneas</a></span></dt><dt><span class="sect1"><a href="ch04s02.html">Gráficos
paramétricos</a></span></dt><dt><span class="sect1"><a href="ch04s03.html">Dibujos de campos de
inclinación</a></span></dt><dt><span class="sect1"><a href="ch04s04.html">Gráficos de campos de
vectores</a></span></dt><dt><span class="sect1"><a href="ch04s05.html">Gráficos de
superficie</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Conceptos de
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch05.html#genius-gel-values">Valores</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-numbers">Números</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-booleans">Booleanos</a></span></dt><dt><span class="sect2"><a hr
ef="ch05.html#genius-gel-values-strings">Cadenas</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-null">Nulo</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s02.html">Usar variables</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s02.html#genius-gel-variables-setting">Configurar variables</a></span></dt><dt><span
class="sect2"><a href="ch05s02.html#genius-gel-variables-built-in">Variables
integradas</a></span></dt><dt><span class="sect2"><a href="ch05s02.html#genius-gel-previous-result">Resultado
de la variable anterior</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch05s03.html">Usar
funciones</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-defining">Definir funciones</a></span></dt><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-variable-argument-lists">Listas de argumentos de
variables</a></span></dt><dt><span class="sect2"><a href="ch05s03.html#gen
ius-gel-functions-passing-functions">Pasar funciones a funciones</a></span></dt><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-operations">Operaciones con
funciones</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s04.html">Separador</a></span></dt><dt><span class="sect1"><a
href="ch05s05.html">Comentarios</a></span></dt><dt><span class="sect1"><a href="ch05s06.html">Evaluación
modular</a></span></dt><dt><span class="sect1"><a href="ch05s07.html">Lista de operadores
GEL</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Programar con
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch06.html#genius-gel-conditionals">Condicionales</a></span></dt><dt><span class="sect1"><a
href="ch06s02.html">Bucles</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-while">Bucles «while»</a></span></dt><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-for">Bucles «for»</a></s
pan></dt><dt><span class="sect2"><a href="ch06s02.html#genius-gel-loops-foreach">Bucles
«foreach»</a></span></dt><dt><span class="sect2"><a href="ch06s02.html#genius-gel-loops-break-continue">Parar
y continuar</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch06s03.html">Sumas y
productos</a></span></dt><dt><span class="sect1"><a href="ch06s04.html">Operadores de
comparación</a></span></dt><dt><span class="sect1"><a href="ch06s05.html">Variables globales y ámbito de
variables</a></span></dt><dt><span class="sect1"><a href="ch06s06.html">Variables de
parámetros</a></span></dt><dt><span class="sect1"><a href="ch06s07.html">Retorno</a></span></dt><dt><span
class="sect1"><a href="ch06s08.html">Referencias</a></span></dt><dt><span class="sect1"><a
href="ch06s09.html">Lvalues</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7.
Programación avanzada con GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch07.html#genius-gel-error-handl
ing">Control de errores</a></span></dt><dt><span class="sect1"><a href="ch07s02.html">Sintaxis de nivel
superior</a></span></dt><dt><span class="sect1"><a href="ch07s03.html">Devolver
funciones</a></span></dt><dt><span class="sect1"><a href="ch07s04.html">Variables locales
verdaderas</a></span></dt><dt><span class="sect1"><a href="ch07s05.html">Procedimiento de inicio de
GEL</a></span></dt><dt><span class="sect1"><a href="ch07s06.html">Cargar
programas</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. Matrices en
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch08.html#genius-gel-matrix-support">Introducir
matrices</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">Conjugada de la traspuesta y operador
de trasposición</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">Álgebra
lineal</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch09.html">9. Polinomios en
GEL</a></span></dt><dd><dl><dt><span class="s
ect1"><a href="ch09.html#genius-gel-polynomials-using">Usar polinomios</a></span></dt></dl></dd><dt><span
class="chapter"><a href="ch10.html">10. Teoría de conjuntos en GEL</a></span></dt><dd><dl><dt><span
class="sect1"><a href="ch10.html#genius-gel-sets-using">Usar conjuntos</a></span></dt></dl></dd><dt><span
class="chapter"><a href="ch11.html">11. Lista de funciones GEL</a></span></dt><dd><dl><dt><span
class="sect1"><a href="ch11.html#genius-gel-function-list-commands">Comandos</a></span></dt><dt><span
class="sect1"><a href="ch11s02.html">Básico</a></span></dt><dt><span class="sect1"><a
href="ch11s03.html">Parámetros</a></span></dt><dt><span class="sect1"><a
href="ch11s04.html">Constantes</a></span></dt><dt><span class="sect1"><a
href="ch11s05.html">Numérico</a></span></dt><dt><span class="sect1"><a
href="ch11s06.html">Trigonometría</a></span></dt><dt><span class="sect1"><a href="ch11s07.html">Teoría de
números</a></span></dt><dt><span class="sect1"><a href="c
h11s08.html">Manipulación de matrices</a></span></dt><dt><span class="sect1"><a
href="ch11s09.html">Álgebra lineal</a></span></dt><dt><span class="sect1"><a
href="ch11s10.html">Combinatoria</a></span></dt><dt><span class="sect1"><a
href="ch11s11.html">Cálculo</a></span></dt><dt><span class="sect1"><a
href="ch11s12.html">Funciones</a></span></dt><dt><span class="sect1"><a href="ch11s13.html">Resolución de
ecuaciones</a></span></dt><dt><span class="sect1"><a
href="ch11s14.html">Estadísticas</a></span></dt><dt><span class="sect1"><a
href="ch11s15.html">Polinomios</a></span></dt><dt><span class="sect1"><a href="ch11s16.html">Teoría de
conjuntos</a></span></dt><dt><span class="sect1"><a href="ch11s17.html">Álgebra
conmutativa</a></span></dt><dt><span class="sect1"><a href="ch11s18.html">Miscelánea</a></span></dt><dt><span
class="sect1"><a href="ch11s19.html">Operaciones simbólicas</a></span></dt><dt><span class="sect1"><a
href="ch11s20.html">Dibujar</a></span></dt
</dl></dd><dt><span class="chapter"><a href="ch12.html">12. Programas de ejemplo en
GEL</a></span></dt><dt><span class="chapter"><a href="ch13.html">13.
Configuración</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch13.html#genius-prefs-output">Salida</a></span></dt><dt><span class="sect1"><a
href="ch13s02.html">Precisión</a></span></dt><dt><span class="sect1"><a
href="ch13s03.html">Terminal</a></span></dt><dt><span class="sect1"><a
href="ch13s04.html">Memoria</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch14.html">14.
Acerca de la <span class="application">herramienta matemática Genius</span></a></span></dt></dl></div><div
class="list-of-figures"><p><b>Lista de figuras</b></p><dl><dt>2.1. <a
href="ch02s02.html#mainwindow-fig">Ventana de la <span class="application">herramienta matemática
Genius</span></a></dt><dt>4.1. <a href="ch04.html#lineplot-fig">Crear una ventana de
dibujo</a></dt><dt>4.2. <a href="ch04.html#lineplot2-fig">Ventana de dibu
jo</a></dt><dt>4.3. <a href="ch04s02.html#paramplot-fig">Pestaña dibujo paramétrico</a></dt><dt>4.4. <a
href="ch04s02.html#paramplot2-fig">Gráfico paramétrico</a></dt><dt>4.5. <a
href="ch04s05.html#surfaceplot-fig">Gráfico de superficie</a></dt></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">
</td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n"
href="ch01.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%"
align="center"> </td><td width="40%" align="right" valign="top"> Capítulo 1.
Introducción</td></tr></table></div></body></html>
diff --git a/help/fr/genius.xml b/help/fr/genius.xml
new file mode 100644
index 0000000..84ee220
--- /dev/null
+++ b/help/fr/genius.xml
@@ -0,0 +1,8530 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="fr">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Manuel de l'Outil de maths Genius.</para></abstract>
+ <title>Manuel de Genius</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2010-11</year><holder>Bruno Brouard (annoa b gmail
com)</holder></copyright><copyright><year>2011</year><holder>Luc Pionchon (pionchon luc gmail
com)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de
la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation
sans section inaltérable, sans texte de première page de couverture ni texte de dernière page de couverture.
Vous trouverez un exemplaire de cette licence en suivant ce <ulink type="help" url="ghelp:fdl">lien</ulink>
ou dans le fichier COPYING-DOCS fourni avec le présent manuel.</para>
+ <para>Ce manuel fait partie de la collection de manuels GNOME distribués selon les termes de la
licence de documentation libre GNU. Si vous souhaitez distribuer ce manuel indépendamment de la collection,
vous devez joindre un exemplaire de la licence au document, comme indiqué dans la section 6 de
celle-ci.</para>
+
+ <para>La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services
sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du
projet de Documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers,
soit leur première lettre est en majuscule.</para>
+
+ <para>LE PRÉSENT DOCUMENT ET SES VERSIONS MODIFIÉES SONT FOURNIS SELON LES TERMES DE LA LICENCE DE
DOCUMENTATION LIBRE GNU SACHANT QUE : <orderedlist>
+ <listitem>
+ <para>LE PRÉSENT DOCUMENT EST FOURNI « TEL QUEL », SANS AUCUNE GARANTIE, EXPRESSE OU
IMPLICITE, Y COMPRIS, ET SANS LIMITATION, LES GARANTIES DE MARCHANDABILITÉ, D'ADÉQUATION À UN OBJECTIF
PARTICULIER OU DE NON INFRACTION DU DOCUMENT OU DE SA VERSION MODIFIÉE. L'UTILISATEUR ASSUME TOUT RISQUE
RELATIF À LA QUALITÉ, À LA PERTINENCE ET À LA PERFORMANCE DU DOCUMENT OU DE SA VERSION DE MISE À JOUR. SI LE
DOCUMENT OU SA VERSION MODIFIÉE S'AVÉRAIT DÉFECTUEUSE, L'UTILISATEUR (ET NON LE RÉDACTEUR INITIAL, L'AUTEUR,
NI TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS DE TOUTE INTERVENTION, RÉPARATION OU CORRECTION NÉCESSAIRE.
CETTE DÉNÉGATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE CETTE LICENCE. AUCUNE UTILISATION DE
CE DOCUMENT OU DE SA VERSION MODIFIÉE N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD, EXCEPTÉ SOUS CETTE
DÉNÉGATION DE RESPONSABILITÉ ; </para>
+ </listitem>
+ <listitem>
+ <para>EN AUCUNE CIRCONSTANCE ET SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE D'UN
DÉLIT CIVIL (Y COMPRIS LA NÉGLIGENCE), CONTRACTUEL OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT
OU TOUT DISTRIBUTEUR DE CE DOCUMENT OU DE SA VERSION MODIFIÉE, OU TOUT FOURNISSEUR DE L'UNE DE CES PARTIES NE
POURRA ÊTRE TENU RESPONSABLE À L'ÉGARD DE QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER, OU
ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, À UN ARRÊT DE
TRAVAIL, À UNE DÉFAILLANCE OU UN MAUVAIS FONCTIONNEMENT INFORMATIQUE, OU À TOUT AUTRE DOMMAGE OU PERTE LIÉE À
L'UTILISATION DU DOCUMENT ET DE SES VERSIONS MODIFIÉES, MÊME SI LADITE PARTIE A ÉTÉ INFORMÉE DE L'ÉVENTUALITÉ
DE TELS DOMMAGES.</para>
+ </listitem>
+ </orderedlist></para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Oklahoma State University</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>Université de Queensland, Australie</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>September 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>This manual describes version 1.0.22 of Genius.
+ </releaseinfo>
+ <legalnotice>
+ <title>Votre avis</title>
+ <para>
+ To report a bug or make a suggestion regarding the <application>Genius Mathematics
Tool</application>
+ application or this manual, please visit the
+ <ulink url="http://www.jirka.org/genius.html" type="http">Genius
+ Web page</ulink>
+ or email me at <email>jirka 5z com</email>.
+ </para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Introduction</title>
+ <para>L'application <application>Outil de maths Genius</application> est un calculateur générique qui
peut être utilisé comme calculatrice de bureau, outil éducatif en mathématiques et peut même être utile pour
la recherche. Le langage utilisé dans l'<application>Outil de maths Genius</application> a été conçu pour
être « mathématique » dans le sens où il devrait être « what you mean is what you get » (« ce que vous pensez
est ce que vous obtenez »). C'est bien sûr un objectif pas complètement atteignable. L'<application>Outil de
maths Genius</application> peut utiliser des rationnels, des entiers de précision arbitraire et des nombres à
virgule flottante avec différentes précisions en utilisant la bibliothèque GMP. Il prend en charge les
nombres complexes en utilisant la notation cartésienne. Il sait comment manipuler correctement les vecteurs
et les matrices et prend en charge l'algèbre linéaire élémentaire. Le langage de program
mation autorise la définition de fonctions et de variables utilisateurs et la modification de certains
paramètres.</para>
+
+ <para>Il existe deux versions de l'<application>Outil de maths Genius</application>. L'une est la
version graphique de GNOME qui inclut une interface de style IDE et la possibilité de tracer des fonctions à
une ou deux variables. L'autre, la version en ligne de commande, n'a pas besoin de GNOME mais bien sûr, elle
n'implémente aucune fonctionnalité qui requiert l'interface graphique.</para>
+
+ <para>
+ Parts of this manual describe the graphical version of the calculator,
+ but the language is of course the same. The command line only version
+ lacks the graphing capabilities and all other capabilities that require
+ the graphical user interface.
+ </para>
+
+ <para>
+ Generally, when some feature of the language (function, operator, etc...)
+ is new in some version past 1.0.5, it is mentioned, but
+ below 1.0.5 you would have to look at the NEWS file.
+ </para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Premiers pas</title>
+
+ <sect1 id="genius-to-start">
+ <title>Lancement de l'<application>Outil de maths Genius</application></title>
+ <para>You can start <application>Genius Mathematics Tool</application> in the following ways:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Menu <guimenu>Applications</guimenu></term>
+ <listitem>
+ <para>En fonction de votre système d'exploitation et de sa version, l'élément de menu pour
l'<application>Outil de maths Genius</application> peut apparaître à différents endroits. Cela peut être dans
les sous-menus <guisubmenu>Éducation</guisubmenu>, <guisubmenu>Accessoires</guisubmenu>,
<guisubmenu>Bureautique</guisubmenu>, <guisubmenu>Science</guisubmenu> ou d'autres similaires en fonction de
vos réglages personnels. Le nom de l'entrée de menu que vous recherchez est <application>Outil de maths
Genius</application>. Une fois localisé, cliquez dessus pour démarrer l'<application>Outil de maths
Genius</application>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Boîte de dialogue <guilabel>Lancer une application</guilabel></term>
+ <listitem>
+ <para>Il se peut que l'entrée de menu ne soit pas accessible pour votre système d'exploitation.
Dans ce cas, vous pouvez ouvrir la boîte de dialogue <guilabel>Lancer une application</guilabel> et saisir
<command>gnome-genius</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ligne de commande</term>
+ <listitem>
+ <para>Pour démarrer la version GNOME de l'<application>Outil de maths Genius</application>,
saisissez <command>gnome-genius</command>.</para>
+ <para>Pour démarrer seulement la version en ligne de commande, exécutez la commande
<command>genius</command>. Cette version ne comprend pas d'environnement graphique et certaines
fonctionnalités comme le tracé de graphiques ne sont pas disponibles.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>Démarrage de Genius</title>
+ <para>Lorsque vous démarrez la version GNOME de l'<application>Outil de maths Genius</application>, la
fenêtre <xref linkend="mainwindow-fig"/> apparaît.</para>
+
+ <figure id="mainwindow-fig">
+ <title>Fenêtre de l'<application>Outil de maths Genius</application></title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows <application>Outil de maths Genius</application> main window. Contains titlebar,
menubar,
+toolbar and working area. Menubar contains <guilabel>Fichier</guilabel>,
+<guilabel>Édition</guilabel>, <guilabel>Calculatrice</guilabel>,
+<guilabel>Examples</guilabel>,
+<guilabel>Programs</guilabel>,
+<guilabel>Paramètres</guilabel>, and <guilabel>Aide</guilabel> menus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>La fenêtre de l'<application>Outil de maths Genius</application> contient les éléments suivants
:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Barre de menus</term>
+ <listitem>
+ <para>Les menus de la barre de menus contiennent toutes les commandes dont vous aurez besoin
pour travailler avec les fichiers dans l'<application>Outil de maths Genius</application>. Le menu
<guilabel>Fichier</guilabel> contient les éléments pour charger et enregistrer des éléments et créer de
nouveaux programmes. La commande <guilabel>Charger et exécuter...</guilabel> n'ouvre pas de nouvelle fenêtre
pour le programme mais exécute seulement le programme directement. Elle est équivalente à la commande
<command>load</command>.</para>
+ <para>
+ The <guilabel>Calculator</guilabel> menu controls the
+calculator engine. It allows you to run the currently selected program or to
+interrupt the current calculation. You can also look at the full expression of
+the last answer (useful if the last answer was too large to fit onto the
+console), or you can view a listing of the values of all user defined
+variables. You can also monitor user variables, which is especially useful
+while a long calculation is running, or to debug a certain program.
+ Finally the <guilabel>Calculator</guilabel> allows plotting functions using a user
friendly dialog box.
+ </para>
+ <para>
+ The <guilabel>Examples</guilabel> menu is a list of example
+ programs or demos. If you open the menu, it will load the
+ example into a new program, which you can run, edit, modify,
+ and save. These programs should be well documented
+ and generally demonstrate either some feature of <application>Genius Mathematics
Tool</application>
+ or some mathematical concept.
+ </para>
+ <para>
+ The <guilabel>Programs</guilabel> menu lists
+ the currently open programs and allows you to switch
+ between them.
+ </para>
+ <para>Les autres menus contiennent les mêmes fonctions classiques qui apparaissent dans d'autres
applications.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Barre d'outils</term>
+ <listitem>
+ <para>La barre d'outils contient un sous-ensemble des commandes accessibles à partir de la barre
de menus.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Zone de travail</term>
+ <listitem>
+ <para>La zone de travail est la principale méthode d'interaction avec l'application.</para>
+ <para>
+ The working area initially has just the <guilabel>Console</guilabel> tab, which is
+ the main way of interacting with the calculator. Here you
+ type expressions and the results are immediately returned
+ after you hit the Enter key.
+ </para>
+ <para>
+ Alternatively you can write longer programs and those can
+ appear in separate tabs. The programs are a set of commands or
+ functions that can be run all at once rather than entering them
+ at the command line. The programs can be saved in files for later
+ retrieval.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Utilisation de base</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Utilisation de la zone de travail</title>
+
+ <para>
+ Normally you interact with the calculator in the <guilabel>Console</guilabel> tab of the
+ work area. If you are running the text only version then the console
+ will be the only thing that is available to you. If you want to use
+ <application>Genius Mathematics Tool</application> as a calculator only, just type in your expression
in the console, it
+ will be evaluated, and the returned value will be printed.
+ </para>
+
+ <para>
+ To evaluate an expression, type it into the <guilabel>Console</guilabel> work area and press
enter.
+ Expressions are written in a
+language called GEL. The most simple GEL expressions just looks like
+mathematics. For example
+<screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen>
+(Last is the harmonic sum from 1 to 70)
+</para>
+<para>Pour obtenir une liste des fonctions et commandes, saisissez : <screen><prompt>genius>
</prompt><userinput>help</userinput>
+</screen> Si vous souhaitez obtenir plus d'aide sur une fonction précise, saisissez :
<screen><prompt>genius> </prompt><userinput>help NomDeLaFonction</userinput>
+</screen> Pour afficher ce manuel, saisissez : <screen><prompt>genius>
</prompt><userinput>manual</userinput>
+</screen></para>
+<para>
+Suppose you have previously saved some GEL commands as a program to a file and
+you now want to execute them.
+To load this program from the file <filename>path/to/program.gel</filename>,
+type
+<screen><prompt>genius> </prompt><userinput>load path/to/program.gel</userinput>
+</screen>
+<application>Genius Mathematics Tool</application> keeps track of the current directory.
+To list files in the current directory type <command>ls</command>, to change directory
+do <userinput>cd directory</userinput> as in the UNIX command shell.
+</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>Création d'un programme</title>
+ <para>
+ If you wish to enter several more complicated commands, or perhaps write a complicated
+ function using the <link linkend="genius-gel">GEL</link> language, you can create a new
+ program.
+ </para>
+ <para>
+To start writing a new program, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>New
+Program</guimenuitem></menuchoice>. A new tab will appear in the work area. You
+can write a <link linkend="genius-gel">GEL</link> program in this work area.
+Once you have written your program you can run it by
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice> (or
+the <guilabel>Run</guilabel> toolbar button).
+This will execute your program and will display any output on the <guilabel>Console</guilabel> tab.
+Executing a program is equivalent of taking the text of the program and
+typing it into the console. The only difference is that this input is done
+independent of the console and just the output goes onto the console.
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice>
+will always run the currently selected program even if you are on the <guilabel>Console</guilabel>
+tab. The currently selected program has its tab in bold type. To select a
+program, just click on its tab.
+ </para>
+ <para>
+To save the program you've just written, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Save
As...</guimenuitem></menuchoice>.
+Similarly as in other programs you can choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice> to save a program that
already has
+a filename attached to it. If you have many opened programs you have edited and wish to save you can also
choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save All Unsaved</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ Programs that have unsaved changes will have a "[+]" next to their filename. This way you can
see if the file
+ on disk and the currently opened tab differ in content. Programs which have not yet had a
filename associated
+ with them are always considered unsaved and no "[+]" is printed.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Ouverture et lancement d'un programme</title>
+ <para>Pour ouvrir un fichier, choisissez
<menuchoice><guimenu>Fichier</guimenu><guimenuitem>Ouvrir</guimenuitem></menuchoice>. Un nouvel onglet
contenant le fichier apparaît dans la zone de travail. Vous pouvez l'utiliser pour modifier le fichier.</para>
+ <para>Pour lancer un programme à partir d'un fichier, choisissez
<menuchoice><guimenu>Fichier</guimenu><guimenuitem>Charger et exécuter...</guimenuitem></menuchoice>. Le
programme est lancé sans être ouvert dans un onglet séparé. C'est équivalent à la commande
<command>load</command>.</para>
+ <para>
+ If you have made edits to a file you wish to throw away and want to reload to the version
that's on disk,
+ you can choose the
+ <menuchoice><guimenu>File</guimenu><guimenuitem>Reload from Disk</guimenuitem></menuchoice>
menuitem. This is useful for experimenting
+ with a program and making temporary edits, to run a program, but that you do not intend to keep.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Tracé de graphiques</title>
+
+ <para>Le tracé de graphiques n'est disponible que dans la version graphique GNOME. Tous les tracés
accessibles à partir de l'interface graphique sont disponibles à partir de la fenêtre <guilabel>Création de
graphiques</guilabel>. Vous pouvez accéder à cette fenêtre, soit en cliquant sur le bouton
<guilabel>Tracer</guilabel> de la barre d'outils ou en sélectionnant <guilabel>Tracer</guilabel> dans le menu
<guilabel>Calculateur</guilabel>. Vous pouvez également accéder aux fonctionnalités de tracer en utilisant
les <link linkend="genius-gel-function-list-plotting">fonctions de tracé</link> du langage GEL. Consultez
<xref linkend="genius-gel"/> pour apprendre comment saisir des expressions compréhensibles par Genius.</para>
+
+ <sect1 id="genius-line-plots">
+ <title>Tracé de lignes</title>
+ <para>Pour tracer des fonctions réelles d'une variable, ouvrez la fenêtre <guilabel>Création de
graphiques</guilabel>. Vous pouvez aussi utiliser la fonction <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> en ligne de commande (consultez sa
documentation).</para>
+ <para>Une fois que vous avez cliqué sur le bouton <guilabel>Tracer</guilabel>, une fenêtre contenant
des onglets apparaît. Vous devez être dans l'onglet <guilabel>Tracé de lignes</guilabel> et dans celui-ci,
vous devez être dans l'onglet <guilabel>Fonctions / Expressions</guilabel> (consultez <xref
linkend="lineplot-fig"/>).</para>
+
+ <figure id="lineplot-fig">
+ <title>Fenêtre Création de graphiques</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Affiche la fenêtre pour tracer des graphiques.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ Type expressions with <userinput>x</userinput> as
+ the independent variable into the textboxes. Alternatively you can give names of functions such as
+ <userinput>cos</userinput> rather then having to type <userinput>cos(x)</userinput>.
+ You can graph up to ten functions. If you make a mistake and Genius cannot
+ parse the input it will signify this with a warning icon on the right of the text
+ input box where the error occurred, as well as giving you an error dialog.
+ You can change the ranges of the dependent and independent variables in the bottom
+ part of the dialog.
+ The <varname>y</varname> (dependent) range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox.
+ The names of the variables can also be changed.
+ Pressing the <guilabel>Plot</guilabel> button produces the graph shown in <xref
linkend="lineplot2-fig"/>.
+ </para>
+ <para>
+ The variables can be renamed by clicking the <guilabel>Change variable names...</guilabel>
button, which is useful if you wish to print or save the figure and don't want to use the standard
+ names. Finally you can also avoid printing the legend and the axis labels completely,
+ which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="lineplot2-fig">
+ <title>Fenêtre contenant une courbe</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Le graphe produit.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>À partir de là, vous pouvez imprimer le graphe, créer une version postscript encapsulé ou PNG du
graphe ou modifier le zoom. Si l'axe dépendant n'a pas été configuré correctement, Genius peut l'avoir ajusté
en cherchant les extrema des fonctions tracées.</para>
+
+ <para>Pour tracer à partir de la ligne de commande, consultez la documentation de la fonction <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Courbes paramétriques</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Parametric</guilabel> notebook
+ tab to create two dimensional parametric plots. This way you can
+ plot a single parametric function. You can either specify the
+ points as <varname>x</varname> and <varname>y</varname>, or giving a single complex number
+ as a function of the variable <varname>t</varname>.
+ The range of the variable <varname>t</varname> is given explicitly, and the function is sampled
+ according to the given increment.
+ The <varname>x</varname> and <varname>y</varname> range can be set
+ automatically by turning on the <guilabel>Fit dependent axis</guilabel>
+ checkbox, or it can be specified explicitly.
+ See <xref linkend="paramplot-fig"/>.
+ </para>
+
+ <figure id="paramplot-fig">
+ <title>Onglet pour les courbes paramétriques</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Onglet pour tracer paramétrique dans la fenêtre <guilabel>Création de
graphiques</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ An example of a parametric plot is given in
+ <xref linkend="paramplot2-fig"/>.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> or
+ <link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>
function.
+ </para>
+
+ <figure id="paramplot2-fig">
+ <title>Courbe paramétrique</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Courbe paramétrique produite</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Champ de directions</title>
+ <para>Dans la fenêtre de création de graphiques, vous pouvez également sélectionner l'onglet
<guilabel>Champ de directions</guilabel> pour créer un graphique de champ de directions à deux dimensions.
Des opérations, similaires à celles qui peuvent être réalisées sur les tracés de lignes, peuvent être
réalisées sur des graphiques de ce type. Pour réaliser des graphiques en ligne de commande, consultez la
documentation de la fonction <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>.</para>
+
+ <para>Quand un champ de directions est actif, un menu supplémentaire <guilabel>Solveur</guilabel> est
disponible, il vous permet d'afficher la boîte de dialogue du solveur. Dans celle-ci, vous pouvez faire
tracer à Genius des solutions spécifiques pour les conditions initiales fournies. Vous pouvez soit indiquer
des conditions initiales spécifiques dans la boîte de dialogue ou cliquer sur le graphique directement pour
indiquer le point de départ. Tant que la boîte de dialogue du solveur est active, la fonction de zoom par
clic et déplacement ne fonctionne pas. Vous devez d'abord fermer la boîte de dialogue si vous voulez zoomer
avec votre souris.</para>
+
+ <para>Le solveur utilise la méthode standard de Runge-Kutta. Les graphiques restent sur l'écran
jusqu'à ce qu'ils soient effacés. Le solveur s'arrête à chaque fois qu'il atteint les limites de la fenêtre
du graphique. Le fait de zoomer ne modifie pas les limites ou paramètres des solutions, vous devez les
effacer et les redessiner avec les paramètres appropriés. Vous pouvez utiliser la fonction <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link> pour tracer
les solutions à partir de la ligne de commande ou dans des programmes.</para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Champ de vecteurs</title>
+ <para>Dans la fenêtre de création de graphiques, vous pouvez également sélectionner l'onglet
<guilabel>Champ de vecteurs</guilabel> pour créer un graphique de champ de vecteurs à deux dimensions. Des
opérations, similaires à celles qui peuvent être réalisées sur les tracés de lignes, peuvent être réalisées
sur des graphiques de ce type. Pour réaliser des graphiques en ligne de commande, consultez la documentation
de la fonction <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>.</para>
+
+ <para>Par défaut, la direction et l'amplitude du champ de vecteurs sont affichées. Pour n'afficher que
la direction, cochez la case appropriée pour normaliser la longueur des flèches.</para>
+
+ <para>Quand un champ de vecteurs est actif, un menu supplémentaire <guilabel>Solveur</guilabel> est
disponible, vous permettant d'afficher la boîte de dialogue du solveur. Dans celle-ci, vous pouvez faire
tracer à Genius des solutions spécifiques pour les conditions initiales fournies. Vous pouvez soit indiquer
des conditions initiales spécifiques dans la boîte de dialogue ou cliquer sur le graphique directement pour
indiquer le point de départ. Tant que la boîte de dialogue du solveur est active, la fonction de zoom par
clic et déplacement ne fonctionne pas. Vous devez d'abord fermer la boîte de dialogue si vous voulez zoomer
avec votre souris.</para>
+
+ <para>Le solveur utilise la méthode standard de Runge-Kutta. Les graphiques restent sur l'écran
jusqu'à ce qu'ils soient effacés. Le fait de zoomer ne modifie pas les limites ou paramètres des solutions,
vous devez effacer et les redessiner avec les paramètres appropriés. Vous pouvez utiliser la fonction <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> pour
tracer les solutions à partir de la ligne de commande ou dans des programmes.</para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Tracé de surfaces</title>
+ <para>
+ Genius can also plot surfaces. Select the <guilabel>Surface plot</guilabel> tab in the
+ main notebook of the <guilabel>Create Plot</guilabel> window. Here you can specify a single
+ expression that should use either <varname>x</varname> and <varname>y</varname> as real independent
variables
+ or <varname>z</varname> as a complex variable (where <varname>x</varname> is the real part of
<varname>z</varname> and <varname>y</varname> is the
+ imaginary part). For example to plot the modulus of the cosine
+ function for complex parameters,
+ you could enter <userinput>|cos(z)|</userinput>. This would be
+ equivalent to <userinput>|cos(x+1i*y)|</userinput>.
+ See <xref linkend="surfaceplot-fig"/>.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link> function.
+ </para>
+ <para>
+ The <varname>z</varname> range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox. The variables can be renamed by clicking the <guilabel>Change variable
names...</guilabel> button, which is useful if you wish to print or save the figure and don't want to use the
standard
+ names. Finally you can also avoid printing the legend, which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="surfaceplot-fig">
+ <title>Graphique de surface</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Module de la fonction cosinus complex.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ In surface mode, left and right arrow keys on your keyboard will rotate the
+ view along the z axis. Alternatively you can rotate along any axis by
+ selecting <guilabel>Rotate axis...</guilabel> in the <guilabel>View</guilabel>
+ menu. The <guilabel>View</guilabel> menu also has a top view mode which rotates the
+ graph so that the z axis is facing straight out, that is, we view the graph from the top
+ and get essentially just the colors that define the values of the function getting a
+ temperature plot of the function. Finally you should
+ try <guilabel>Start rotate animation</guilabel>, to start a continuous slow rotation.
+ This is especially good if using <application>Genius Mathematics Tool</application> to present
to an audience.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>Fondamentaux GEL</title>
+
+ <para>
+ GEL stands for Genius Extension Language. It is the language you use
+ to write programs in Genius. A program in GEL is simply an
+ expression that evaluates to a number, a matrix, or another object
+ in GEL.
+ <application>Genius Mathematics Tool</application> can be used as a simple calculator, or as a
+ powerful theoretical research tool. The syntax is meant to
+ have as shallow of a learning curve as possible, especially for use
+ as a calculator.
+ </para>
+
+ <sect1 id="genius-gel-values">
+ <title>Types de données</title>
+
+ <para>
+ Values in GEL can be <link linkend="genius-gel-values-numbers">numbers</link>, <link
linkend="genius-gel-values-booleans">Booleans</link>, or <link
linkend="genius-gel-values-strings">strings</link>. GEL also treats
+<link linkend="genius-gel-matrices">matrices</link> as values.
+ Values can be used in calculations, assigned to variables and returned from functions, among
other uses.
+ </para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Nombres</title>
+ <para>Les entiers sont les premiers types de nombres GEL. Les entiers s'écrivent de façon
habituelle. <programlisting>1234
+</programlisting> Les nombres hexadécimaux et octaux peuvent être écrit à la manière du langage C. Par
exemple : <programlisting>0x123ABC
+01234
+</programlisting> Vous pouvez aussi saisir des nombres dans n'importe quelle base en utilisant la notation
<literal><base>\<nombre></literal>. Les chiffres plus grands que 10 utilisent des lettres tout
comme pour l'hexadécimal. Par exemple, un nombre en base 23 pourrait s'écrire : <programlisting>23\1234ABCD
+</programlisting></para>
+
+ <para>Le deuxième type de nombres en GEL est celui des rationnels. Les rationnels sont simplement
obtenus en divisant deux entiers. Il serait donc possible d'écrire : <programlisting>3/4
+</programlisting> pour obtenir trois quarts. Les rationnels acceptent également la notation fractionnelle
mixte, donc afin d'obtenir un et trois dixièmes, vous pouvez écrire : <programlisting>1 3/10
+</programlisting></para>
+
+ <para>
+The next type of number is floating point. These are entered in a similar fashion to C notation. You can use
<literal>E</literal>, <literal>e</literal> or <literal>@</literal> as the exponent delimiter. Note that using
the exponent delimiter gives a float even if there is no decimal point in the number. Examples:
+<programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting>
+ When Genius prints a floating point number it will always append a
+ <computeroutput>.0</computeroutput> even if the number is whole. This is to indicate that
+ floating point numbers are taken as imprecise quantities. When a number is written in the
+ scientific notation, it is always a floating point number and thus Genius does not
+ print the <computeroutput>.0</computeroutput>.
+ </para>
+
+ <para>
+The final type of number in GEL is the complex numbers. You can enter a complex number as a sum of real and
imaginary parts. To add an imaginary part, append an <literal>i</literal>. Here are examples of entering
complex numbers:
+<programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting>
+ </para>
+
+ <important>
+ <para>Lorsque vous saisissez des nombres imaginaires, il doit y avoir un nombre devant le
<literal>i</literal>. Si vous utilisez <literal>i</literal> tout seul, Genius l'interprète comme une
référence à la variable <varname>i</varname>. Si vous avez besoin de faire référence à <literal>i</literal>
tout seul, utilisez <literal>1i</literal> à la place.</para>
+
+ <para>Afin de pouvoir utiliser la notation en fraction mixte avec des nombres imaginaires, vous
devez mettre la fraction mixte entre parenthèses (par exemple, <userinput>(1 2/5)i</userinput>).</para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Booléens</title>
+ <para>Genius prend également en charge nativement les données booléennes. Les deux constantes
booléennes sont <constant>true</constant> (vrai) et <constant>false</constant> (faux) ; ces identifiants
peuvent être utilisés comme n'importe quelle autre variable. Vous pouvez aussi utiliser les identifiants
<constant>True</constant>, <constant>TRUE</constant>, <constant>False</constant> et
<constant>FALSE</constant> comme alias de ces précédents.</para>
+ <para>Là où une expression booléenne est attendue, vous pouvez utiliser une grandeur booléenne ou
toute expression qui produit soit un nombre soit un booléen. Si Genius a besoin d'évaluer un nombre en tant
que booléen, il interprète 0 comme <constant>false</constant> et tout autre nombre comme
<constant>true</constant>.</para>
+ <para>Vous pouvez également faire des calculs avec des données booléennes. Par exemple :
<programlisting>( (1 + true) - false ) * true
+</programlisting> est identique à : <programlisting>( (true or true) or not false ) and true
+</programlisting> Seules l'addition, la soustraction et la multiplication sont prises en charge. Si vous
mélangez des nombres avec des booléens dans une expression alors les nombres sont convertis en booléens comme
indiqué ci-dessus. Cela signifie que, par exemple : <programlisting>1 == true
+</programlisting> vaut toujours <constant>true</constant> puisque 1 est converti en
<constant>true</constant> avant d'être comparé à <constant>true</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Chaînes de caractères</title>
+ <para>
+Like numbers and Booleans, strings in GEL can be stored as values inside variables and passed to functions.
You can also concatenate a string with another value using the plus operator. For example:
+<programlisting>a=2+3;"Le résultat est : "+a
+</programlisting>
+will create the string:
+<programlisting>Le résultat est : 5
+</programlisting>
+You can also use C-like escape sequences such as
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> and
<literal>\r</literal>. To get a <literal>\</literal> or <literal>"</literal> into the string you can quote it
with a <literal>\</literal>. For example:
+<programlisting>"Barre oblique : \\ Guillemets : \" Tabulations : \t1\t2\t3"
+</programlisting>
+will make a string:
+<programlisting>Barre oblique : \ Guillemets : " Tabulations : 1 2 3
+</programlisting>
+Do note however that when a string is returned from a function, escapes are
+quoted, so that the output can be used as input. If you wish to print the
+string as it is (without escapes), use the
+<link linkend="gel-function-print"><function>print</function></link>
+or
+<link linkend="gel-function-printn"><function>printn</function></link> functions.
+ </para>
+ <para>
+ In addition, you can use the library function <link
linkend="gel-function-string"><function>string</function></link> to convert anything to a string. For example:
+<programlisting>string(22)
+</programlisting>
+will return
+<programlisting>"22"
+</programlisting>
+Strings can also be compared with <literal>==</literal> (equal), <literal>!=</literal> (not equal) and
<literal><=></literal> (comparison) operators
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>
+There is a special value called
+<constant>null</constant>. No operations can be performed on
+it, and nothing is printed when it is returned. Therefore,
+<constant>null</constant> is useful when you do not want output from an
+expression. The value <constant>null</constant> can be obtained as an expression when you
+type <literal>.</literal>, the constant <constant>null</constant> or nothing.
+By nothing we mean that if you end an expression with
+a separator <literal>;</literal>, it is equivalent to ending it with a
+separator followed by a <constant>null</constant>.
+ </para>
+ <para>Exemple : <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>Certaines fonctions renvoient <constant>null</constant> quand aucune valeur ne peut être renvoyée ou
quand une erreur survient. La grandeur <constant>null</constant> est aussi utilisée comme vecteur ou matrice
vide ou comme une référence vide.</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Utilisation des variables</title>
+
+ <para>Syntaxe : <programlisting>NomDeVariable
+</programlisting> Exemple : <screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen></para>
+
+ <para>Pour évaluer une variable elle-même, il suffit de saisir le nom de la variable. Cela renvoie la
valeur de la variable. Vous pouvez utiliser une variable n'importe où, où vous utiliseriez normalement un
nombre ou une chaîne. De plus, les variables sont indispensables pour définir des fonctions qui possèdent des
arguments (consultez <xref linkend="genius-gel-functions-defining"/>).</para>
+
+ <tip>
+ <title>Utilisation de la complétion à l'aide de la touche Tab</title>
+ <para>Vous pouvez utiliser la complétion à l'aide de la touche Tab pour que Genius complète les noms
de variable pour vous. Essayez de saisir les premières lettres du nom et appuyez sur la touche
<userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Noms de variable sensibles à la casse</title>
+ <para>Les noms de variable sont sensibles à la casse. Cela signifie que les variables appelées
<varname>bonjour</varname>, <varname>BONJOUR</varname> et <varname>Bonjour</varname> sont toutes
différentes.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Attribution de variables</title>
+ <para>Syntaxe : <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Exemple: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>
+To assign a value to a variable, use the <literal>=</literal> or <literal>:=</literal> operators. These
operators set the value of the variable and return the value you set, so you can do things like
+<programlisting>a = b = 5
+</programlisting>
+This will set <varname>b</varname> to 5 and then also set <varname>a</varname> to 5.
+ </para>
+
+ <para>Les opérateurs <literal>=</literal> et <literal>:=</literal> peuvent tous les deux être
utilisés pour définir des variables. La différence entre les deux est que l'opérateur <literal>:=</literal>
agit toujours comme un opérateur d'attribution alors que l'opérateur <literal>=</literal> peut être
interprété comme une opération de test d'égalité lorsqu'il est utilisé dans un contexte où une expression
booléenne est attendue.</para>
+
+ <para>
+ For more information about the scope of variables, that is when are what variables visible, see
<xref linkend="genius-gel-variables-global"/>.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Variables internes</title>
+ <para>
+GEL has a number of built-in ‘variables’, such as
+<varname>e</varname>, <varname>pi</varname> or <varname>GoldenRatio</varname>. These are widely used
constants with a preset value, and
+they cannot be assigned new values.
+There are a number of other built-in variables.
+See <xref linkend="genius-gel-function-list-constants"/> for a full list. Note that <varname>i</varname> is
not by default
+the square root of negative one (the imaginary number), and is undefined to allow its use as a counter. If
you wish to write the imaginary number you need to
+use <userinput>1i</userinput>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Variable « Résultat précédent »</title>
+ <para>Les variables <varname>Ans</varname> et <varname>ans</varname> (answer : réponse) peuvent être
utilisées pour obtenir le résultat de la dernière expression. Par exemple, si vous avez fait un calcul, pour
ajouter 389 au résultat précédent vous pouvez saisir : <programlisting>Ans+389
+</programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Utilisation des fonctions</title>
+
+ <para>Syntaxe : <programlisting>NomDeLaFonction(argument1, argument2, ...)
+</programlisting> Exemple : <programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting> Pour évaluer une fonction, saisissez le nom de la fonction, suivi par les arguments de la
fonction (s'il y en a) entre parenthèses. Cela renvoie le résultat de l'application de la fonction avec ses
arguments. Le nombre d'arguments de la fonction peut, bien sûr, être différent pour chaque fonction.</para>
+
+ <para>
+ There are many built-in functions, such as <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> and <link
linkend="gel-function-tan"><function>tan</function></link>. You can use the <link
linkend="gel-command-help"><function>help</function></link> built-in command to get a list of available
functions, or see <xref linkend="genius-gel-function-list"/> for a full listing.
+ </para>
+
+ <tip>
+ <title>Utilisation de la complétion à l'aide de la touche Tab</title>
+ <para>Vous pouvez utiliser la fonction de complétion à l'aide de la touche Tab pour que Genius
complète les noms de fonction pour vous. Essayez de saisir les quelques premières lettres du nom et appuyez
sur <userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Noms de fonction sensibles à la casse</title>
+ <para>Les noms des fonctions sont sensibles à la casse. Cela signifie que les fonctions appelées
<function>fairecela</function>, <function>FAIRECELA</function> et <function>Fairecela</function> sont toutes
différentes.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Définition de fonctions</title>
+ <para>Syntaxe : <programlisting><![CDATA[function <identifier>(<comma separated arguments>) =
<function body>
+<identifier> = (`() = <function body>)
+]]></programlisting> Le caractère accent grave <literal>`</literal> indique une fonction anonyme. En
l'apposant à un nom de variable, en réalité vous définissez une fonction.</para>
+
+ <para>
+A function takes zero or more comma separated arguments, and returns the result of the function body.
Defining your own functions is primarily a matter of convenience; one possible use is to have sets of
functions defined in GEL files that Genius can load in order to make them available.
+Example:
+<programlisting>function addup(a,b,c) = a+b+c
+</programlisting>
+then <userinput>addup(1,4,9)</userinput> yields 14
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Liste d'arguments variable</title>
+ <para>Si vous ajoutez <literal>...</literal> après le dernier nom d'argument dans la déclaration de
fonction alors Genius permet la transmission d'un nombre quelconque d'arguments à la place de cet argument.
Si aucun argument n'est transmis alors cet argument est défini à <constant>null</constant>. Sinon, c'est un
vecteur ligne contenant tous les arguments. Par exemple, <programlisting>function f(a,b...) = b
+</programlisting> alors <userinput>f(1,2,3)</userinput> donne <computeroutput>[2,3]</computeroutput> tandis
que <userinput>f(1)</userinput> donne <constant>null</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Une fonction comme argument d'une autre fonction</title>
+
+ <para>Dans Genius, il est possible de transmettre une fonction comme argument d'une autre fonction.
Cela peut être fait en utilisant soit des « nœuds de fonction », soit des fonctions anonymes.</para>
+
+ <para>Si vous ne saisissez pas les parenthèses après un nom de fonction, la fonction est renvoyée
sous la forme d'un « nœud de fonction », au lieu d'être évaluée. Le nœud de fonction peut ensuite être
transmis à une autre fonction. Par exemple : <programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting></para>
+ <para>
+To pass functions that are not defined,
+you can use an anonymous function (see <xref linkend="genius-gel-functions-defining"/>). That is, you want
to pass a function without giving it a name.
+Syntax:
+<programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting>
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting>
+This will return 5.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Opérations sur les fonctions</title>
+ <para>
+ Some functions allow arithmetic operations, and some single argument functions such as <link
linkend="gel-function-exp"><function>exp</function></link> or <link
linkend="gel-function-ln"><function>ln</function></link>, to operate on the function. For example,
+<programlisting>exp(sin*cos+4)
+</programlisting>
+will return a function that takes <varname>x</varname> and returns
<userinput>exp(sin(x)*cos(x)+4)</userinput>. It is functionally equivalent
+to typing
+<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting>
+
+This operation can be useful when quickly defining functions. For example to create a function called
<varname>f</varname>
+to perform the above operation, you can just type:
+<programlisting>f = exp(sin*cos+4)
+</programlisting>
+It can also be used in plotting. For example, to plot sin squared you can enter:
+<programlisting>LinePlot(sin^2)
+</programlisting>
+ </para>
+
+ <warning>
+ <para>Toutes les fonctions ne peuvent pas être utilisées de cette façon. Par exemple, lorsque vous
utilisez une opération binaire, les fonctions doivent prendre le même nombre d'arguments.</para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Séparateur</title>
+ <para>
+ GEL is somewhat different from other languages in how it deals with multiple commands and
functions.
+ In GEL you must chain commands together with a separator operator.
+That is, if you want to type more than one expression you have to use
+the <literal>;</literal> operator in between the expressions. This is
+a way in which both expressions are evaluated and the result of the second one (or the last one
+if there is more than two expressions) is returned.
+Suppose you type the following:
+<programlisting>3 ; 5
+</programlisting>
+This expression will yield 5.
+ </para>
+ <para>
+This will require some parenthesizing to make it unambiguous sometimes,
+especially if the <literal>;</literal> is not the top most primitive. This slightly differs from
+other programming languages where the <literal>;</literal> is a terminator of statements, whereas
+in GEL it’s actually a binary operator. If you are familiar with pascal
+this should be second nature. However genius can let you pretend it is a
+terminator to some degree. If a <literal>;</literal> is found at the end of a parenthesis or a block,
+genius will append a null to it as if you would have written
+<userinput>;null</userinput>.
+This is useful in case you do not want to return a value from say a loop,
+or if you handle the return differently. Note that it will slightly slow down
+the code if it is executed too often as there is one more operator involved.
+ </para>
+ <para>
+ If you are typing expressions in a program you do not have to add a semicolon. In this case
+ genius will simply print the return value whenever it executes the expression. However, do
note that if you are defining a
+ function, the body of the function is a single expression.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Commentaires</title>
+ <para>
+ GEL is similar to other scripting languages in that <literal>#</literal> denotes
+ a comment, that is text that is not meant to be evaluated. Everything beyond the
+ pound sign till the end of line will just be ignored. For example,
+<programlisting># This is just a comment
+# every line in a comment must have its own pound sign
+# in the next line we set x to the value 123
+x=123;
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Évaluation modulaire</title>
+ <para>
+ Genius implements modular arithmetic.
+To use it you just add "mod <integer>" after
+the expression. Example:
+<userinput>2^(5!) * 3^(6!) mod 5</userinput>
+It could be possible to do modular arithmetic by computing with integers and then modding in the end with
+the <literal>%</literal> operator, which simply gives the remainder, but
+that may be time consuming if not impossible when working with larger numbers.
+For example, <userinput>10^(10^10) % 6</userinput> will simply not work (the exponent
+will be too large), while
+<userinput>10^(10^10) mod 6</userinput> is instantaneous. The first expression first tries to compute the
integer
+<userinput>10^(10^10)</userinput> and then find remainder after division by 6, while the second expression
evaluates
+everything modulo 6 to begin with.
+ </para>
+ <para>Vous pouvez calculer l'inverse de nombres modulo des entiers juste en utilisant des nombres
rationnels (bien sûr, l'inverse doit exister). Exemples : <programlisting>10^-1 mod 101
+1/10 mod 101</programlisting> Vous pouvez aussi faire de l'évaluation modulaire avec des matrices y compris
prendre l'inverse, mettre à la puissance ou multiplier. Exemple : <programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting> Cela doit donner la matrice identité car B est l'inverse de A modulo 5.</para>
+ <para>Certaines fonctions telles que <link
linkend="gel-function-sqrt"><function>sqrt</function></link> ou <link
linkend="gel-function-log"><function>log</function></link> fonctionnent différemment en mode modulaire. Elles
vont alors fonctionner comme leur version discrète travaillant avec l'ensemble des entiers que vous avez
sélectionnés, par exemple, <programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting>La fonction <function>sqrt</function> renvoie en fait toutes les racines carrées
possibles.</para>
+ <para>
+ Do not chain mod operators, simply place it at the end of the computation, all computations in
the expression on the left
+ will be carried out in mod arithmetic. If you place a mod inside
+ a mod, you will get unexpected results. If you simply want to
+ mod a single number and control exactly when remainders are
+ taken, best to use the <literal>%</literal> operator. When you
+ need to chain several expressions in modular arithmetic with
+ different divisors, it may be best to just split up the expression into several and use
+ temporary variables to avoid a mod inside a mod.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Liste des opérateurs GEL</title>
+
+ <para>
+ Everything in GEL is really just an expression. Expressions are stringed together with
+ different operators. As we have seen, even the separator is simply a binary operator
+ in GEL. Here is a list of the operators in GEL.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>C'est le séparateur, il évalue simplement à la fois <varname>a</varname> et
<varname>b</varname> mais ne renvoie que le résultat de <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>L'opérateur d'attribution. Il attribue <varname>b</varname> à <varname>a</varname>
(<varname>a</varname> doit être une <link linkend="genius-gel-lvalues">valeur à gauche</link> valide).
Remarquez que cet opérateur peut être transformé en <literal>==</literal> s'il est utilisé là où une
expression booléenne est attendue.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>L'opérateur d'attribution. Il attribue <varname>b</varname> à <varname>a</varname>
(<varname>a</varname> doit être une <link linkend="genius-gel-lvalues">valeur à gauche</link> valide). Il est
différent de <literal>=</literal> car il n'est jamais transformée en <literal>==</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>
+ Absolute value.
+ In case the expression is a complex number the result will be the modulus
+(distance from the origin). For example:
+<userinput>|3 * e^(1i*pi)|</userinput>
+returns 3.
+ </para>
+ <para>Consultez <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink>
pour plus d'informations.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>Exposant, met <varname>a</varname> à la puissance <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>Exposant élément par élément. Met chaque élément d'une matrice <varname>a</varname> à la
puissance <varname>b</varname>. Si <varname>b</varname> est une matrice de la même taille que
<varname>a</varname> alors l'opération se réalise élément par élément. Si <varname>a</varname> est un nombre
et <varname>b</varname> est une matrice alors cela crée une matrice de la même taille que
<varname>b</varname> contenant <varname>a</varname> mis à la puissance de chaque élément de
<varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>
+ Addition. Adds two numbers, matrices, functions or strings. If
+ you add a string to anything the result will just be a string. If one is
+ a square matrix and the other a number, then the number is multiplied by
+ the identity matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>Soustraction. Soustrait deux nombres, matrices ou fonctions.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>Multiplication. C'est la multiplication matricielle normale.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>Multiplication élément par élément si <varname>a</varname> et <varname>b</varname> sont des
matrices.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>
+ Division. When <varname>a</varname> and <varname>b</varname> are just numbers
+ this is the normal division. When they are matrices, then this is
+ equivalent to <userinput>a*b^-1</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>
+ Element by element division. Same as <userinput>a/b</userinput> for
+ numbers, but operates element by element on matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>Division arrière. C'est donc la même chose que <userinput>b/a</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>Division arrière élément par élément.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>
+ The mod operator. This does not turn on the <link
linkend="genius-gel-modular-evaluation">modular mode</link>, but
+ just returns the remainder of integer division
+ <userinput>a/b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>
+ Element by element mod operator. Returns the remainder
+ after element by element integer division
+ <userinput>a./b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>Opérateur d'évaluation modulaire. L'expression <varname>a</varname> est évaluée modulo
<varname>b</varname>. Consultez <xref linkend="genius-gel-modular-evaluation"/>. Certaines fonctions et
opérateurs se comportent différemment modulo un entier.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>Opérateur factoriel. Il s'agit de <userinput>1*...*(n-2)*(n-1)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>Opérateur double factoriel. Il s'agit de <userinput>1*...*(n-4)*(n-2)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>
+ Equality operator.
+ Returns <constant>true</constant> or <constant>false</constant>
+ depending on <varname>a</varname> and <varname>b</varname> being equal or not.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>Opérateur inégalité, renvoie <constant>true</constant> si <varname>a</varname> n'est pas
égal à <varname>b</varname> sinon renvoie <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>Autre opérateur inégalité, renvoie <constant>true</constant> si <varname>a</varname> n'est
pas égal à <varname>b</varname> sinon renvoie <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>
+ Less than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a <= b <= c</userinput> (can
+ also be combined with the less than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>
+ Greater than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a >= b >= c</userinput>
+ (and they can also be combined with the greater than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>
+ Less than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a < b < c</userinput>
+ (they can also be combined with the less than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>
+ Greater than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a > b > c</userinput>
+ (they can also be combined with the greater than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>Opérateur comparaison. Si <varname>a</varname> est égal à <varname>b</varname>, cela
renvoie 0, si <varname>a</varname> est inférieur à <varname>b</varname>, cela renvoie -1 et si <varname>a
</varname> est supérieur à <varname>b</varname>, cela renvoie 1.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>
+ Logical and. Returns true if both
+ <varname>a</varname> and <varname>b</varname> are true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>
+ Logical or.
+ Returns true if either
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>
+ Logical xor.
+ Returns true if exactly one of
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>
+ Logical not. Returns the logical negation of <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>
+ Negation operator. Returns the negative of a number or a matrix (works element-wise on a
matrix).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>
+ Variable referencing (to pass a reference to a variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Variable dereferencing (to access a referenced variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>
+ Matrix conjugate transpose. That is, rows and columns get swapped and we take complex
conjugate of all entries. That is
+ if the i,j element of <varname>a</varname> is x+iy, then the j,i element of
<userinput>a'</userinput> is x-iy.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>
+ Matrix transpose, does not conjugate the entries. That is,
+ the i,j element of <varname>a</varname> becomes the j,i element of <userinput>a.'</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>
+ Get element of a matrix in row <varname>b</varname> and column
+ <varname>c</varname>. If <varname>b</varname>,
+ <varname>c</varname> are vectors, then this gets the corresponding
+ rows, columns or submatrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>Renvoie une ligne de matrice (ou plusieurs lignes si <varname>b</varname> est un
vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>Comme ci-dessus.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>Renvoie une colonne de matrice (ou des colonnes si <varname>c</varname> est un
vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>Comme ci-dessus.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>Renvoie un élément d'une matrice en le traitant comme un vecteur. Cela parcourt la matrice
dans le sens des lignes.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>Construit un vecteur allant de <varname>a</varname> à <varname>b</varname> (ou indique une
région ligne, colonne pour l'opérateur <literal>@</literal>). Par exemple pour obtenir les lignes 2 à 4 de la
matrice <varname>A</varname>, nous pourrions faire <programlisting>A@(2:4,)
+ </programlisting> puisque <userinput>2:4</userinput> renvoie un vecteur
<userinput>[2,3,4]</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>Construit un vecteur allant de <varname>a</varname> à <varname>c</varname> avec un pas de
<varname>b</varname>. Ce qui donne par exemple <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting></para>
+ <para>
+ When the numbers involved are floating point numbers, for example
+ <userinput>1.0:0.4:3.0</userinput>, the output is what is expected
+ even though adding 0.4 to 1.0 five times is actually just slightly
+ more than 3.0 due to the way that floating point numbers are
+ stored in base 2 (there is no 0.4, the actual number stored is
+ just ever so slightly bigger). The way this is handled is the
+ same as in the for, sum, and prod loops. If the end is within
+ <userinput>2^-20</userinput> times the step size of the endpoint,
+ the endpoint is used and we assume there were roundoff errors.
+ This is not perfect, but it handles the majority of the cases.
+ This check is done only from version 1.0.18 onwards, so execution
+ of your code may differ on older versions. If you want to avoid
+ dealing with this issue, use actual rational numbers, possibly
+ using the <function>float</function> if you wish to get floating
+ point numbers in the end. For example
+ <userinput>1:2/5:3</userinput> does the right thing and
+ <userinput>float(1:2/5:3)</userinput> even gives you floating
+ point numbers and is ever so slightly more precise than
+ <userinput>1.0:0.4:3.0</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>
+ Make <varname>a</varname> into an imaginary number (multiply <varname>a</varname> by the
+ imaginary). Normally the imaginary number <varname>i</varname> is
+ written as <userinput>1i</userinput>. So the above is equal to
+ <programlisting>(a)*1i
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>Apostropher un identifiant afin qu'il ne soit pas évalué. Ou apostropher une matrice afin
qu'elle ne soit pas étendue.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>Échange la valeur de <varname>a</varname> par la valeur de <varname>b</varname>. Pour le
moment, ne fonctionne pas sur des ensembles d'éléments de matrice. Renvoie <constant>null</constant>.
Disponible à partir de la version 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>Incrémente la variable <varname>a</varname> de 1. Si <varname>a</varname> est une matrice
alors incrémente chaque élément. C'est équivalent à <userinput>a=a+1</userinput> mais est plus rapide.
Renvoie <constant>null</constant>. Disponible à partir de la version 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>Incrémente la variable <varname>a</varname> de <varname>b</varname>. Si
<varname>a</varname> est une matrice alors incrémente chaque élément. C'est équivalent à
<userinput>a=a+b</userinput> mais est plus rapide. Renvoie <constant>null</constant>. Disponible à partir de
la version 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>L'opérateur @() rend l'opérateur : très utile. Grâce à lui, vous pouvez indiquer des régions d'une
matrice. Ainsi a@(2:4,6) sont les lignes 2,3,4 de la colonne 6 ou a@(,1:2) vous renvoie les deux premières
colonnes d'une matrice. Vous pouvez également attribuer un opérateur @() tant que la valeur de droite est une
matrice qui correspond en taille à la région ou si c'est n'importe quel autre type de valeur.</para>
+</note>
+
+<note>
+<para>
+The comparison operators (except for the <=> operator, which behaves normally), are not strictly
binary operators, they can in fact be grouped in the normal mathematical way, e.g.: (1<x<=y<5) is a
legal boolean expression and means just what it should, that is (1<x and x≤y and y<5)
+</para>
+</note>
+
+<note>
+<para>L'opérateur unitaire « moins » agit de manière différente en fonction de l'endroit où il apparaît.
S'il apparaît devant un nombre, il est très prioritaire, s'il apparaît devant une expression, il est moins
prioritaire que les opérateurs puissance et factoriel. Par exemple, <userinput>-1^k</userinput> est bien
<userinput>(-1)^k</userinput>, mais <userinput>-foo(1)^k</userinput> est bien
<userinput>-(foo(1)^k)</userinput>. En conséquence, faites attention à son utilisation et, en cas de doute,
ajoutez des parenthèses.</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Programmation avec GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Tests</title>
+ <para>Syntaxe : <programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting> Si <literal>else</literal> est omis alors si l'<literal>expression1</literal> donne
<constant>false</constant> ou 0, <literal>NULL</literal> est renvoyé.</para>
+ <para>Exemples : <programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting> Notez que <literal>=</literal> est traduit en <literal>==</literal> s'il est utilisé à
l'intérieur de l'expression du <literal>if</literal>, donc <programlisting>if a=5 then a=a-1
+</programlisting> est interprété comme : <programlisting>if a==5 then a:=a-1
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Boucles</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>Boucles tant que (while) et jusqu'à (until)</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting>
+
+ These are similar to other languages. However, as in GEL it is simply an expression that must have
some return value, these
+ constructs will simply return the result of the last iteration or <literal>NULL</literal> if no
iteration was done. In the boolean expression, <literal>=</literal> is translated into <literal>==</literal>
just as for the <literal>if</literal> statement.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>Boucles pour (for)</title>
+ <para>Syntaxe : <programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting> Boucle où l'identifiant
(identifier) prend toutes les valeurs comprises entre <literal><from></literal> et
<literal><to></literal>, avec en option un incrément autre que 1. Elles sont plus rapides, plus simples
à utiliser et plus compactes que les boucles classiques ci-dessus mais moins flexibles. L'identifiant doit
être un identifiant et ne peut pas être un déréférencement. La valeur de l'identifiant est la dernière valeur
prise par l'identifiant ou <literal><from></literal> si le contenu (body) de la boucle n'a jamais été
évalué. Vous êtes sûr que la variable est initialisée après une boucle donc vous pouvez l'utiliser sans
risque. <literal><from></literal>, <literal><to></literal> et
<literal><increment></literal> ne doivent pas être complexes. Il n'est pas sûr que la valeur
<literal><to></literal> soit atteinte, mais elle n'est jamai
s dépassée. Par exemple, ce qui suit affiche les nombres impairs de 1 à 19 : <programlisting>for i = 1 to 20
by 2 do print(i)
+</programlisting></para>
+ <para>
+ When one of the values is a floating point number, then the
+ final check is done to within 2^-20 of the step size. That is,
+ even if we overshoot by 2^-20 times the "by" above, we still execute the last
+ iteration. This way
+<programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting>
+does the expected even though adding 0.1 ten times becomes just slightly more than 1.0 due to the way that
floating point numbers
+are stored in base 2 (there is no 0.1, the actual number stored is just ever so slightly bigger). This is
not perfect but it handles
+the majority of the cases. If you want to avoid dealing with this issue, use actual rational numbers for
example:
+<programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting>
+ This check is done only from version 1.0.16 onwards, so execution of your code may differ on
older versions.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Boucles pour chaque (foreach)</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
+
+ For each element in the matrix, going row by row from left to right we execute the
body
+ with the identifier set to the current element. To
+print numbers 1,2,3 and 4 in this order you could do:
+<programlisting>for n in [1,2:3,4] do print(n)
+</programlisting>
+If you wish to run through the rows and columns of a matrix, you can use
+the RowsOf and ColumnsOf functions, which return a vector of the rows or
+columns of the matrix. So,
+<programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
+</programlisting>
+will print out [1,2] and then [3,4].
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Instructions « break » et « continue »</title>
+ <para>Vous pouvez aussi utiliser les instructions <literal>break</literal> et
<literal>continue</literal> dans les boucles. L'instruction <literal>continue</literal> reprend la boucle à
sa prochaine itération alors que l'instruction <literal>break</literal> sort de la boucle actuelle.
<programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Sommes et produits</title>
+ <para>Syntaxe : <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting> Si vous remplacez <literal>for</literal> par
<literal>sum</literal> ou <literal>prod</literal> alors vous obtenez une somme ou un produit à la place d'une
boucle <literal>for</literal>. Au lieu de renvoyer la dernière valeur, cela renvoie la somme ou le produit
des valeurs respectivement.</para>
+ <para>Si aucun contenu (body) est exécuté (par exemple, <userinput>sum i=1 to 0 do ...</userinput>)
alors la convention standard est que <literal>sum</literal> renvoie 0 et <literal>prod</literal> renvoie
1.</para>
+ <para>
+ For floating point numbers the same roundoff error protection is done as in the for loop.
+ See <xref linkend="genius-gel-loops-for"/>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Opérateurs de comparaison</title>
+ <para>Les opérateurs de comparaison standard suivants sont pris en charge dans GEL et ont des
significations évidentes : <literal>==</literal>, <literal>>=</literal>, <literal><=</literal>,
<literal>!=</literal>, <literal><></literal>, <literal><</literal>, <literal>></literal>. Ils
renvoient <constant>true</constant> ou <constant>false</constant>. Les opérateurs <literal>!=</literal> et
<literal><></literal> sont les mêmes et signifient « n'est pas égal à ». GEL comprend également
l'opérateur <literal><=></literal> qui renvoie -1 si la partie de gauche est plus petite, 0 si les deux
parties sont égales, 1 si la partie de gauche est plus grande.</para>
+
+ <para>Normalement <literal>=</literal> est traduit en <literal>==</literal> partout où GEL s'attend à
une condition comme celle de la condition si (if). Par exemple, <programlisting>if a=b then c
+if a==b then c
+</programlisting> sont identiques en GEL. Cependant vous devriez vraiment utiliser <literal>==</literal> ou
<literal>:=</literal> lorsque vous voulez respectivement comparer ou attribuer si vous voulez éviter des
erreurs et que votre code soit facile à lire.</para>
+
+ <para>
+ All the comparison operators (except for the
+ <literal><=></literal> operator, which
+ behaves normally), are not strictly binary operators, they can in fact
+ be grouped in the normal mathematical way, e.g.:
+ (<literal>1<x<=y<5</literal>) is
+ a legal boolean expression and means just what it should, that is
+ (1<x and x≤y and y<5)
+ </para>
+ <para>Pour construire des expressions logiques, utilisez les mots <literal>not</literal>,
<literal>and</literal>, <literal>or</literal>, <literal>xor</literal>. Les opérateurs <literal>or</literal>
et <literal>and</literal> sont des entités spéciales car ils évaluent leurs arguments les uns après les
autres, donc les astuces classiques des évaluations conditionnelles fonctionnent. Par exemple : <literal>1 or
a=1</literal> n'effectue pas l'attribution <literal>a=1</literal> puisque le premier argument est vrai
(true).</para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Variables globales et portée des variables</title>
+ <para>
+ GEL is a
+ <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">
+ dynamically scoped language</ulink>. We will explain what this
+ means below. That is, normal variables and functions are dynamically
+ scoped. The exception are
+ <link linkend="genius-gel-parameters">parameter variables</link>,
+ which are always global.
+ </para>
+ <para>Comme la plupart des langages de programmation, GEL possède différents types de variables.
Normalement lorsqu'une variable est définie dans une fonction, elle est visible dans cette fonction et à
partir de toutes les fonctions qui sont appelées (tous les contextes supérieurs). Par exemple, supposons
qu'une fonction <function>f</function> définit une variable <varname>a</varname> puis appelle la fonction
<function>g</function>. Alors la fonction <function>g</function> peut faire référence à <varname>a</varname>.
Mais dès que la fonction <function>f</function> est quittée, la variable <varname>a</varname> disparaît de la
portée. Par exemple, le code suivant affiche 5. La fonction <function>g</function> ne peut pas être appelée à
partir du niveau supérieur (en dehors de <function>f</function> puisque <varname>a</varname> n'est pas
défini). <programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting></para>
+ <para>Si vous définissez une variable à l'intérieur d'une fonction, elle va supplanter toutes
variables définies dans les fonctions appelantes. Par exemple, si nous modifions le code ci-dessus et
écrivons : <programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting> Ce code affiche toujours 5. Mais si vous appelez <function>g</function> à l'extérieur de
<function>f</function> alors la valeur 10 s'affiche. Remarquez que le fait d'initialiser <varname>a</varname>
à 5 à l'intérieur de <function>f</function> ne modifie pas la valeur de <varname>a</varname> au niveau
(global) supérieur donc si vous contrôlez maintenant la valeur de <varname>a</varname>, elle sera toujours de
10.</para>
+ <para>Les arguments de fonction sont exactement comme les variables définies à l'intérieur de la
fonction sauf qu'ils sont initialisés à la valeur qui a été transmise à la fonction. En dehors de ce point,
ils sont traités exactement comme toutes les autres variables définies dans la fonction.</para>
+ <para>Les fonctions sont traitées exactement comme les variables. Par conséquent, vous pouvez
redéfinir localement les fonctions. Normalement (au niveau supérieur) vous ne pouvez pas redéfinir des
variables et fonctions protégées mais, vous pouvez le faire localement. Considérons la session suivante :
<screen><prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen></para>
+ <para>
+ Functions and variables defined at the top level are
+ considered global. They are visible from anywhere. As we
+ said the following function <function>f</function>
+ will not change the value of <varname>a</varname> to 5.
+<programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting>
+ Sometimes, however, it is necessary to set
+a global variable from inside a function. When this behavior is needed,
+use the
+<link linkend="gel-function-set"><function>set</function></link> function. Passing a string or a quoted
identifier to
+this function sets the variable globally (on the top level).
+For example, to set
+<varname>a</varname> to the value 3 you could call:
+<programlisting>set(`a,3)
+</programlisting>
+or:
+<programlisting>set("a",3)
+</programlisting>
+ </para>
+ <para>La fonction <function>set</function> définit toujours au niveau global supérieur. Il n'est pas
possible de définir une variable locale dans des fonctions à partir d'un sous-programme. Si c'est nécessaire,
vous devez utiliser la transmission par référence.</para>
+ <para>
+ See also the
+ <link linkend="gel-function-SetElement"><function>SetElement</function></link> and
+ <link linkend="gel-function-SetVElement"><function>SetVElement</function></link> functions.
+ </para>
+ <para>Donc pour récapituler dans un langage plus technique : genius opère avec différents contextes
numérotés. Le niveau supérieur est le contexte 0 (zéro). À chaque fois qu'une fonction est entrée, le
contexte est augmenté et lorsqu'une fonction est quittée, le contexte est diminué. Une fonction ou une
variable est toujours visible à partir de tous les contextes de numéro plus élevé. Si une variable a été
définie dans un contexte de numéro plus bas alors attribuer une valeur à cette variable a pour effet de créer
une nouvelle variable locale dans le numéro de contexte actuel et cette variable est maintenant visible de
tous les contextes de numéro plus élevé.</para>
+ <para>
+ There are also true local variables that are not seen from
+ anywhere but the current context. Also when returning functions
+ by value it may reference variables not visible from higher context
+ and this may be a problem. See the sections
+ <link linkend="genius-gel-true-local-variables">True
+ Local Variables</link> and
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Variables paramètres</title>
+ <para>Comme dit précédemment, il existe des variables spéciales appelées paramètres qui existent dans
toutes les portées. Pour déclarer un paramètre appelé <varname>foo</varname> et initialisé à 1, écrivez
<programlisting><![CDATA[parameter foo = 1
+]]></programlisting> À partir de cet instant, <varname>foo</varname> est une variable complètement globale.
Attribuer une valeur à <varname>foo</varname> à l'intérieur d'une fonction, modifie la variable dans tous les
contextes, ce qui signifie que les fonctions ne possèdent pas de copie privée des paramètres.</para>
+ <para>Si vous annulez la définition comme paramètre en utilisant la fonction <link
linkend="gel-function-undefine"><function>undefine</function></link>, la variable cesse d'être un
paramètre.</para>
+ <para>
+ Some parameters are built-in and modify the behavior of genius.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Sortie de fonction</title>
+ <para>Normalement une fonction est une ou plusieurs expressions séparées par un point virgule et la
valeur de la dernière expression est renvoyée. C'est suffisant pour les fonctions simples mais parfois vous
ne voulez pas qu'une fonction renvoie la dernière chose calculée. Il se peut que vous vouliez, par exemple,
quitter la fonction à partir du milieu de la fonction. Dans ce cas, vous pouvez utiliser le mot-clé
<literal>return</literal>. <literal>Return</literal> prend un seul argument qui est la valeur renvoyée.</para>
+ <para>Exemple : <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>Références</title>
+ <para>Il peut être nécessaire pour certaines fonctions de renvoyer plus d'une seule valeur. C'est
possible en renvoyant un vecteur de valeurs mais souvent il est pratique d'utiliser le passage d'une
référence à une variable. Vous transmettez une référence vers une variable à une fonction et la fonction
attribue des valeurs à la variable pour vous en utilisant un déréférencement. Ce n'est pas le seul usage que
vous pouvez faire du passage par référence mais c'est son utilisation principale.</para>
+ <para>Lorsque vous utilisez des fonctions qui renvoient des valeurs à travers des références dans sa
liste d'argument, il suffit de transmettre le nom de la variable précédée d'une esperluette. Par exemple, le
code suivant calcule une valeur propre d'une matrice <varname>A</varname> avec un vecteur propre initial
pressenti <varname>x</varname> et enregistre le vecteur propre calculé dans la variable appelée
<varname>v</varname> : <programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
+]]></programlisting></para>
+ <para>Les détails concernant le fonctionnement des références et leur syntaxe sont similaires à ceux
du langage C. L'opérateur <literal>&</literal> référence une variable et <literal>*</literal> la
déréférence. Les deux ne peuvent s'appliquer que sur un identifiant, par conséquent <literal>**a</literal>
n'est pas une expression légale en GEL.</para>
+ <para>Les références s'expliquent mieux par un exemple : <programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting> Maintenant <varname>a</varname> contient 2. Vous pouvez également référencer des
fonctions : <programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting> donne 4.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Valeurs à gauche (lvalues)</title>
+ <para>Une valeur à gauche est la partie à gauche d'une attribution. En d'autres mots, une valeur à
gauche est la chose dans laquelle vous attribuez quelque chose. Des valeurs à gauche valides sont :
<variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>Identifiant. Ici nous attribuons une valeur à la variable de nom <varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Déréférence un identifiant. Cela attribue une valeur à ce que vers quoi la variable
<varname>a</varname> pointe.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<région>)</userinput></term>
+ <listitem>
+ <para>Une région d'une matrice. Ici la région est indiquée normalement comme avec l'opérateur habituel
@() et peut être une entrée unique ou une région entière de la matrice.</para>
+ </listitem>
+ </varlistentry>
+</variablelist></para>
+ <para>
+Examples:
+<programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting>
+Note that both <literal>:=</literal> and <literal>=</literal> can be used
+interchangeably. Except if the assignment appears in a condition.
+It is thus always safer to just use
+<literal>:=</literal> when you mean assignment, and <literal>==</literal>
+when you mean comparison.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Programmation avancée avec GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Gestion des erreurs</title>
+ <para>Si vous détectez une erreur dans votre fonction, vous pouvez la quitter rapidement (« to bail
out of »). Pour les erreurs normales, telles que les mauvais types d'arguments, vous pouvez éviter de
calculer la fonction en ajoutant l'instruction <literal>bailout</literal>. Si quelque chose se passe vraiment
mal et que vous voulez interrompre complètement le calcul actuel, vous pouvez utiliser l'instruction
<literal>exception</literal>.</para>
+ <para>Par exemple, si vous voulez vérifier les arguments de votre fonction. Vous pouvez utiliser le
code suivant. <programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M n'est pas une matrice !");
+ bailout
+ );
+ ...
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Syntaxe de haut-niveau</title>
+ <para>
+ The syntax is slightly different if you enter statements on
+ the top level versus when they are inside parentheses or
+ inside functions. On the top level, enter acts the same as if
+ you press return on the command line. Therefore think of programs
+ as just a sequence of lines as if they were entered on the command line.
+ In particular, you do not need to enter the separator at the end of the
+ line (unless it is of course part of several statements inside
+ parentheses). When a statement does not end with a separator on the
+ top level, the result is printed after being executed.
+ </para>
+ <para>
+ For example,
+ <programlisting>function f(x)=x^2
+f(3)
+</programlisting>
+ will print first the result of setting a function (a representation of
+ the function, in this case <computeroutput>(`(x)=(x^2))</computeroutput>)
+ and then the expected 9. To avoid this, enter a separator
+ after the function definition.
+ <programlisting>function f(x)=x^2;
+f(3)
+</programlisting>
+ If you need to put a separator into your function then you have to surround with
+ parenthesis. For example:
+<programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting>
+ </para>
+ <para>Le code suivant provoque une erreur lorsqu'il est saisi au niveau supérieur d'un programme alors
qu'il fonctionne très bien dans une fonction. <programlisting>if QuelqueChose() then
+ FaireQuelqueChose()
+else
+ FaireAutreChose()
+</programlisting></para>
+ <para>Le problème est que lorsque l'<application>Outil de maths Genius</application> rencontre la fin
de la ligne après la seconde ligne, il décide que l'instruction est complète et il l'exécute. Après
l'exécution l'<application>Outil de maths Genius</application> se rend à la ligne suivante, voit
l'instruction <literal>else</literal> et affiche une erreur de syntaxe. Pour régler ce problème, utilisez des
parenthèses. L'<application>Outil de maths Genius</application> ne sera pas satisfait tant qu'il n'aura pas
trouvé que toutes les parenthèses sont fermées. <programlisting>if QuelqueChose() then(
+ FaireQuelqueChose()
+) else (
+ FaireAutreChose()
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Renvoi de fonction</title>
+ <para>Il est possible de renvoyer des fonctions en tant que donnée. De cette manière, vous pouvez
écrire une fonction qui construit des fonctions dans un but précis en fonction de certains paramètres. Le
point délicat est de savoir quelles variables sont visibles par la fonction construite. La façon dont cela
fonctionne dans GEL est que, lorsqu'une fonction renvoie une autre fonction, tous les identifiants qui
étaient référencés dans le corps de la fonction mère, et qui deviendraient hors de portée, sont en fait
ajoutés dans un dictionnaire privé de la fonction renvoyée. Ainsi la fonction voit toutes les variables qui
étaient à sa portée au moment où elle a été définie. Par exemple, nous pouvons définir ainsi une fonction qui
renvoie une fonction qui ajoute 5 à son argument : <programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting> Notez que la fonction ajoute <varname>k</varname> à <varname>x</varname>. Vous pouvez
l'utiliser ainsi. <programlisting>g = f();
+g(5)
+</programlisting> et <userinput>g(5)</userinput> doit renvoyer 10.</para>
+ <para>Une chose à noter est que la valeur de <varname>k</varname> utilisée est celle qui est en cours
lorsque la fonction <function>f</function> a terminé son exécution. Par exemple : <programlisting>function
f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting> renvoie une fonction qui ajoute 10 à son argument plutôt que 5. La raison est que le
dictionnaire supplémentaire est créé uniquement lorsque le contexte dans lequel la fonction a été définie, se
termine, c'est-à-dire lorsque la fonction <function>f</function> renvoie. C'est cohérent avec la manière dont
on s'attend à ce que la fonction <function>r</function> fonctionne à l'intérieur de la fonction
<function>f</function> d'après les règles sur la portée des variables dans GEL. Les seules variables ajoutées
au dictionnaire supplémentaire sont celles qui sont présentes dans le contexte qui se termine et n'existe
plus. Les variables utilisées dans la fonction, qui sont toujours dans des contextes valides, fonctionnent
comme d'habitude, en utilisant la valeur actuelle de la variable. La seule différence, c'est pour les
variables et les fonctions globales. Tous les identifiants qui référencent des variables globales au moment
de la défini
tion de la fonction ne sont pas ajoutés au dictionnaire privé. C'est pour éviter beaucoup de travail non
nécessaire lors du renvoi de fonctions et cela ne pose que rarement problème. Par exemple, supposons que vous
supprimiez le « k= 5 » de la fonction <function>f</function> et qu'au niveau supérieur vous définissiez
<varname>k</varname> à 5 par exemple. Alors lorsque vous exécutez <function>f</function>, la fonction
<function>r</function> ne met pas <varname>k</varname> dans le dictionnaire privé parce qu'il était global
(au niveau supérieur) au moment de la définition de <function>r</function>.</para>
+ <para>Parfois il est préférable d'avoir un meilleur contrôle sur la façon dont les variables sont
copiées dans le dictionnaire privé. Depuis la version 1.0.7, vous pouvez spécifier quelles variables sont
copiées dans le dictionnaire privée en mettant des crochets carrés supplémentaires après les arguments
contenant la liste des variables qui seront copiées, séparées par des virgules. Si vous faites cela alors les
variables sont copiées dans le dictionnaire privé au moment de la définition de la fonction et le
dictionnaire privé n'est pas modifié ensuite. Par exemple, <programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting> renvoie une fonction qui, lorsqu'elle est appelée, ajoute 5 à ses arguments. La copie
locale de <varname>k</varname> a été créée lorsque la fonction a été définie.</para>
+ <para>
+ When you want the function to not have any private dictionary
+ then put empty square brackets after the argument list. Then
+ no private dictionary will be created at all. Doing this is
+ good to increase efficiency when a private dictionary is not
+ needed or when you want the function to lookup all variables
+ as it sees them when called. For example suppose you want
+ the function returned from <function>f</function> to see
+ the value of <varname>k</varname> from the toplevel despite
+ there being a local variable of the same name during definition.
+ So the code
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting>
+ will return 20 and not 15, which would happen if
+ <varname>k</varname> with a value of 5 was added to the private
+ dictionary.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>Variables locales vraies</title>
+ <para>Lors de la transmission de fonctions dans d'autres fonctions, la portée normale des variables
peut être indésirable. Par exemple : <programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting> vous souhaitez probablement que la fonction <function>r</function> lorsqu'elle est
transmise à <function>g</function> dans <function>f</function>, puisse voir <varname>k</varname> comme 10
plutôt que 5 afin que le code renvoie 11 et pas 6. Cependant, tel que c'est écrit, la fonction lorsqu'elle
est exécutée voit la variable <varname>k</varname> qui est égale à 5. Il y a deux façons de résoudre cela.
L'une est que la fonction <function>r</function> obtienne <varname>k</varname> dans un dictionnaire privé en
utilisant la notation crochet carré de la section <link linkend="genius-gel-returning-functions">Renvoi de
fonctions</link>.</para>
+ <para>
+ But there is another solution. Since version 1.0.7 there are
+ true local variables. These are variables that are visible only
+ from the current context and not from any called functions.
+ We could define <varname>k</varname> as a local variable in the
+ function <function>f</function>. To do this add a
+ <command>local</command> statement as the first statement in the
+ function (it must always be the first statement in the function).
+ You can also make any arguments be local variables as well.
+ That is,
+<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ Then the code will work as expected and prints out 11.
+ Note that the <command>local</command> statement initializes
+ all the referenced variables (except for function arguments) to
+ a <constant>null</constant>.
+ </para>
+ <para>
+ If all variables are to be created as locals you can just pass an
+ asterisk instead of a list of variables. In this case the variables
+ will not be initialized until they are actually set of course.
+ So the following definition of <function>f</function>
+ will also work:
+<programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ </para>
+ <para>C'est une bonne pratique que toutes les fonctions qui prennent d'autres fonctions comme
argument, utilisent des variables locales. De cette manière, la fonction transmise ne voit pas les détails de
l'implémentation et n'est pas perturbée.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>Procédure de démarrage de GEL</title>
+ <para>Dans un premier temps, le programme recherche dans le répertoire d'installation les fichiers de
la bibliothèque installés (la version compilée <filename>lib.cgel</filename>), puis il recherche dans le
répertoire actuel, puis il essaye de charger un fichier non compilé appelé
<filename>~/.geniusinit</filename>.</para>
+ <para>
+If you ever change the library in its installed place, you’ll have to
+first compile it with <command>genius --compile loader.gel > lib.cgel</command>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Chargement de programmes</title>
+ <para>
+Sometimes you have a larger program you wrote into a file and want to read that file into
<application>Genius Mathematics Tool</application>. In these situations, you have two options. You can keep
the functions you use most inside the <filename>~/.geniusinit</filename> file. Or if you want to load up a
file in a middle of a session (or from within another file), you can type <command>load <list of
filenames></command> at the prompt. This has to be done on the top level and not inside any function or
whatnot, and it cannot be part of any expression. It also has a slightly different syntax than the rest of
genius, more similar to a shell. You can enter the file in quotes. If you use the '' quotes, you will get
exactly the string that you typed, if you use the "" quotes, special characters will be unescaped as they are
for strings. Example:
+<programlisting>load programme1.gel programme2.gel
+load "Etrange nom de fichier avec des ESPACES.gel"
+</programlisting>
+There are also <command>cd</command>, <command>pwd</command> and <command>ls</command> commands built in.
<command>cd</command> will take one argument, <command>ls</command> will take an argument that is like the
glob in the UNIX shell (i.e., you can use wildcards). <command>pwd</command> takes no arguments. For example:
+<programlisting>cd repertoire_contenant_des_programmes_gel
+ls *.gel
+</programlisting>
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Matrices en GEL</title>
+
+ <para>
+ Genius has support for vectors and matrices and possesses a sizable library of
+ matrix manipulation and linear algebra functions.
+ </para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Saisie de matrices</title>
+ <para>
+To enter matrices, you can use one of the following two syntaxes. You can either enter
+the matrix on one line, separating values by commas and rows by semicolons. Or you
+can enter each row on one line, separating
+values by commas.
+You can also just combine the two methods.
+So to enter a 3x3 matrix
+of numbers 1-9 you could do
+<programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting>
+or
+<programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting>
+Do not use both ';' and return at once on the same line though.
+ </para>
+
+ <para>
+You can also use the matrix expansion functionality to enter matrices.
+For example you can do:
+<programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting>
+and you should get
+<programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting>
+similarly you can build matrices out of vectors and other stuff like that.
+ </para>
+
+ <para>Notez que les éléments non spécifiés sont initialisés à 0, donc <programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting> donne au final <programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting></para>
+
+ <para>
+ When matrices are evaluated, they are evaluated and traversed row-wise. This is just
+ like the <literal>M@(j)</literal> operator, which traverses the matrix row-wise.
+ </para>
+
+ <note>
+ <para>Faites attention lorsque vous utilisez des retours à la ligne à l'intérieur des crochets
<literal>[ ]</literal> car ils ont une signification légèrement différente dans ce cas. Vous commencez une
nouvelle ligne.</para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Opérateur de transposition conjuguée et de transposition</title>
+ <para>Vous pouvez obtenir la matrice transposée conjuguée grâce à l'opérateur <literal>'</literal>.
Cela signifie que la valeur dans la <varname>i</varname>ième colonne et la <varname>j</varname>ième ligne est
le complexe conjugué de la valeur dans la <varname>j</varname>ième colonne et la <varname>i</varname>ième
ligne de la matrice d'origine. Dans l'exemple : <programlisting>[1,2,3]*[4,5,6]'
+</programlisting> il faut transposer la deuxième matrice pour permettre la multiplication des matrices. Si
vous voulez juste transposer une matrice sans la conjuguer, vous devez utiliser l'opérateur
<literal>.'</literal>. Par exemple : <programlisting>[1,2,3]*[4,5,6i].'
+</programlisting></para>
+ <para>Remarquez que la transposée normale, c'est-à-dire l'opérateur <literal>.'</literal>, est
beaucoup plus rapide et ne crée pas une nouvelle copie de la matrice en mémoire. La transposition conjuguée
crée hélas une nouvelle copie. Il est recommandé de toujours utiliser l'opérateur <literal>.'</literal>
lorsque vous travaillez avec des matrices et des vecteurs non complexes.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Algèbre linéaire</title>
+ <para>Genius implémente beaucoup de routines utiles d'algèbre linéraire et de manipulation de matrice.
Consultez les sections <link linkend="genius-gel-function-list-linear-algebra">Algèbre linéaire</link> et
<link linkend="genius-gel-function-list-matrix">Manipulation de matrice</link> dans la liste des fonctions
GEL.</para>
+ <para>Les routines d'algèbre linéaire implémentées en GEL ne proviennent pas actuellement d'un paquet
numérique bien testé et ne doivent donc pas être utilisées pour des calculs numériques critiques. D'un autre
côté, Genius implémente très bien les nombreuses opérations d'algèbre linéaire avec des coefficients
rationnels et entiers. Elles sont par nature exactes et en fait vous donnent de bien meilleurs résultats que
les routines en double précision usuelles pour l'algèbre linéaire.</para>
+ <para>Par exemple, il est vain de calculer le rang et le noyau d'une matrice réelle puisque dans tous
les cas pratiques, il faut considérer que la matrice contienne de légères erreurs. Il est possible que vous
obteniez un résultat différent de ce que vous attendiez. Le problème est qu'en faisant une légère
perturbation toute matrice est de rang complet et inversible. Cependant si la matrice est composée de nombres
rationnels alors le rang et le noyau sont toujours exactes.</para>
+ <para>
+ In general when Genius computes the basis of a certain vectorspace
+ (for example with the <link linkend="gel-function-NullSpace"><function>NullSpace</function></link>)
it will give the basis as
+a matrix, in which the columns are the vectors of the basis. That is, when
+Genius talks of a linear subspace it means a matrix whose column space is
+the given linear subspace.
+ </para>
+ <para>
+ It should be noted that Genius can remember certain properties of a
+matrix. For example, it will remember that a matrix is in row reduced form.
+If many calls are made to functions that internally use row reduced form of
+the matrix, we can just row reduce the matrix beforehand once. Successive
+calls to <link linkend="gel-function-rref"><function>rref</function></link> will be very fast.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Polynômes en GEL</title>
+
+ <para>Actuellement Genius peut prendre en charge des polynômes à une variable écrits sous la forme de
vecteurs et réaliser des opérations élémentaires avec eux. Il est prévu d'étendre cette prise en
charge.</para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Utilisation des polynômes</title>
+ <para>Actuellement les polynômes à une variable sont juste des vecteurs lignes dont les valeurs sont
les coefficients. La puissance du terme est la position dans le vecteur, la première étant 0. Ainsi,
<programlisting>[1,2,3]
+</programlisting> représente le polynôme <programlisting>1 + 2*x + 3*x^2
+</programlisting></para>
+ <para>Vous pouvez ajouter, soustraire et multiplier des polynômes en utilisant respectivement les
fonctions <link linkend="gel-function-AddPoly"><function>AddPoly</function></link>, <link
linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link> et <link
linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link>. Vous pouvez afficher un
polynôme en utilisant la fonction <link
linkend="gel-function-PolyToString"><function>PolyToString</function></link>. Par exemple,
<programlisting>PolyToString([1,2,3],"y")
+</programlisting> donne <programlisting>3*y^2 + 2*y + 1
+</programlisting> Vous pouvez également obtenir une représentation fonctionnelle du polynôme afin de pouvoir
l'évaluer. Pour cela, utilisez <link
linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link> qui renvoie une fonction
anonyme. <programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting></para>
+ <para>Il est aussi possible de trouver les racines des polynômes de degré 1 à 4 en utilisant la
fonction <link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link> qui appelle
la formule appropriée. Les polynômes de degré supérieur doit être convertis en fonctions et résolus
numériquement en utilisant une fonction telle que <link
linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>, <link
linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>, <link
linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link> ou <link
linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.</para>
+ <para>Consultez <xref linkend="genius-gel-function-list-polynomials"/> dans la liste des fonctions
pour le reste des fonctions agissant sur les polynômes.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Théorie des ensembles en GEL</title>
+
+ <para>Genius possède des fonctionnalités intégrées basiques concernant la théorie des ensembles.
Actuellement un ensemble est juste un vecteur (ou une matrice). Chaque objet distinct est traité comme un
élément différent.</para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Utilisation des ensembles</title>
+ <para>Tout comme les vecteurs, les objets dans les ensembles peuvent comprendre des nombres, des
chaînes de caractères, <constant>null</constant>, des matrices et des vecteurs. Il est prévu dans le futur
d'avoir un type dédié pour les ensembles plutôt que d'utiliser des vecteurs. Notez que les nombres flottants
sont différents des entiers, même s'ils semblent être les mêmes. Cela signifie que Genius traite
<constant>0</constant> et <constant>0.0</constant> comme deux éléments différents. La constante
<constant>null</constant> est traitée comme un ensemble vide.</para>
+ <para>Pour construire un ensemble à partir d'un vecteur, utilisez la fonction <link
linkend="gel-function-MakeSet"><function>MakeSet</function></link>. Actuellement, cela renvoie juste un
nouveau vecteur où chaque élément est unique. <screen><prompt>genius>
</prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen></para>
+
+ <para>De manière similaire, il existe des fonctions <link
linkend="gel-function-Union"><function>Union</function></link>, <link
linkend="gel-function-Intersection"><function>Intersection</function></link>, <link
linkend="gel-function-SetMinus"><function>SetMinus</function></link> dont le but est assez intuitif. Par
exemple : <screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen> Notez qu'aucun ordre n'est garanti pour les valeurs renvoyées. Si vous souhaitez trier le vecteur,
vous devez utiliser la fonction <link
linkend="gel-function-SortVector"><function>SortVector</function></link>.</para>
+
+ <para>Pour tester l'appartenance, il existe les fonctions <link
linkend="gel-function-IsIn"><function>IsIn</function></link> et <link
linkend="gel-function-IsSubset"><function>IsSubset</function></link> qui renvoient une valeur booléenne. Par
exemple, <screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen> La syntaxe <userinput>IsIn(x,X)</userinput> est bien sûr équivalente à
<userinput>IsSubset([x],X)</userinput>. Notez que puisque l'ensemble vide est un sous-ensemble de tous les
ensembles, <userinput>IsSubset(null,X)</userinput> est toujours vrai.</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Liste des fonctions GEL</title>
+
+ <!--&gel-function-list;-->
+
+ <para>Pour obtenir de l'aide sur une fonction spécifique à partir de la console, saisissez :
<programlisting>help NomDeLaFonction
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Commandes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>help NomDeLaFonction</synopsis>
+ <para>Affiche l'aide (ou l'aide d'une fonction/commande).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "fichier.gel"</synopsis>
+ <para>Load a file into the interpreter. The file will execute
+as if it were typed onto the command line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /nom/de/repertoire</synopsis>
+ <para>Change le répertoire de travail en <filename>/nom/de/repertoire</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Affiche le répertoire de travail.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Affiche les fichiers dans le répertoire.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin nom_du_greffon</synopsis>
+ <para>Charge un greffon. Le greffon portant ce nom doit être installé sur votre système dans le
répertoire correct.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Basique</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (requête)</synopsis>
+ <synopsis>AskButtons (requête, bouton1, ...)</synopsis>
+ <para>Pose une question et présente une liste de boutons à l'utilisateur (ou un menu d'options en
mode texte). Renvoie l'indice du bouton enfoncé, commençant à 1, c'est-à-dire renvoie 1 si le premier bouton
est enfoncé, 2 si le second bouton est enfoncé, etc. Si l'utilisateur ferme la fenêtre (ou appui sur Entrée
en mode texte) alors <constant>null</constant> est renvoyé. L'exécution du programme est bloqué jusqu'à ce
que l'utilisateur réponde.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (requête)</synopsis>
+ <synopsis>AskString (requête, défaut)</synopsis>
+ <para>Asks a question and lets the user enter a string, which
+it then returns. If the user cancels or closes the window, then
+<constant>null</constant> is returned. The execution of the program
+is blocked until the user responds. If <varname>default</varname> is given, then it is pre-typed in for the
user to just press enter on (version 1.0.6 onwards).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Compose deux fonctions et renvoie une fonction qui est la composition de
<function>f</function> par <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Compose et exécute une fonction avec elle-même <varname>n</varname> fois en transmettant
l'argument <varname>x</varname>. Cela renvoie <varname>x</varname> si <varname>n</varname> vaut 0. Exemple :
<screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (chaîne)</synopsis>
+ <para>Analyse et évalue une chaîne.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Obtient le modulo actuel à partir du contexte extérieur à la fonction. C'est-à-dire, si
l'extérieur de la fonction a été exécuté en mode modulo (en utilisant <literal>mod</literal>) alors cela
renvoie cette valeur de modulo. Normalement le corps d'une fonction appelée n'est pas exécutée en
arithmétique modulaire et cette fonction intégrée donne la possibilité aux fonctions GEL de prendre
connaissance de l'arithmétique modulaire en cours.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Identity function, returns its argument. It is equivalent to <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (val_bool)</synopsis>
+ <para>Crée un entier (0 pour <constant>false</constant> ou 1 pour <constant>true</constant>) à
partir d'une valeur booléenne. <varname>val_bool</varname> peut également être un nombre et dans ce cas une
valeur non nulle est interprétée comme <constant>true</constant> et zéro est interprété comme
<constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (param)</synopsis>
+ <para>Vérifie que l'argument est un booléen (et pas un nombre).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Vérifie qu'un identifiant est défini. Vous devez transmettre une chaîne de caractères ou un
identifiant. Si vous transmettez une matrice, chaque entrée est évaluée séparément et la matrice doit
contenir des chaînes ou des identifiants.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (param)</synopsis>
+ <para>Vérifie que l'argument est une fonction.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (param)</synopsis>
+ <para>Vérifie que l'argument est une fonction ou un identificateur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (param)</synopsis>
+ <para>Vérifie que l'argument est une référence de fonction. Cela inclut les références de
variable.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (param)</synopsis>
+ <para>Vérifie que l'argument est une matrice. Même si <constant>null</constant> est parfois
considéré comme une matrice vide, la fonction <function>IsMatrix</function> ne considère pas
<constant>null</constant> comme une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (param)</synopsis>
+ <para>Vérifie que l'argument est <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (param)</synopsis>
+ <para>Vérifie que l'argument est une chaîne de caractères.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (param)</synopsis>
+ <para>Vérifie que l'argument est un nombre.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (chaîne)</synopsis>
+ <para>Analyse mais n'évalue pas une chaîne de caractères. Notez que certains pré-calculs sont
effectués pendant l'étape d'évaluation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,drapeau...)</synopsis>
+ <para>Définit des drapeaux pour une fonction, actuellement <literal>« PropagateMod »</literal> et
<literal>« NoModuloArguments »</literal>. Si <literal>« PropagateMod »</literal> est défini alors le corps de
la fonction est évalué en arithmétique modulaire lorsque la fonction est appelée à l'intérieur d'un bloc qui
est évalué en utilisant l'arithmétique modulaire (en utilisant <literal>mod</literal>). Si <literal>«
NoModuloArguments »</literal> est défini alors les arguments de la fonction ne sont jamais évalués en
arithmétique modulaire.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,categorie,desc)</synopsis>
+ <para>Définit une catégorie et une ligne de description d'aide pour une fonction.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Met en place un pseudonyme pour l'aide.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (rep)</synopsis>
+ <para>Change le répertoire actuel, tout comme la commande <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Renvoie l'heure UNIX courante avec une précision de l'ordre de la microseconde sous forme
d'un nombre à virgule flottante, c'est-à-dire le nombre de secondes écoulées depuis le 1er janvier
1970.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (chaîne,expr)</synopsis>
+ <para>Affiche une chaîne de caractères et une expression séparées par deux points.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Display set of variables. The variables can be given as
+ strings or identifiers. For example:
+ <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting>
+ </para>
+ <para>
+ If called without arguments (must supply empty argument list) as
+ <programlisting>DisplayVariables()
+ </programlisting>
+ then all variables are printed including a stacktrace similar to
+ <guilabel>Show user variables</guilabel> in the graphical version.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (chaîne)</synopsis>
+ <para>Affiche une chaîne vers la sortie erreur (dans la console).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Alias : <function>quit</function></para>
+ <para>Quitte le programme.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Alias : <function>False</function>, <function>FALSE</function></para>
+ <para>La valeur booléenne <constant>false</constant> (faux).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Affiche le manuel utilisateur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (chaîne)</synopsis>
+ <para>Affiche une expression suivie d'un retour à la ligne. L'argument <varname>chaine</varname>
peut être n'importe quelle expression. Elle est transformée en chaîne avant d'être affichée.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (chaîne)</synopsis>
+ <para>Affiche une expression non suivie d'un retour à la ligne. L'argument
<varname>chaine</varname> peut être n'importe quelle expression. Elle est transformée en chaîne avant d'être
affichée.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Print a table of values for a function. The values are in the
+ vector <varname>v</varname>. You can use the vector
+ building notation as follows:
+ <programlisting>PrintTable (f,[0:10])
+ </programlisting>
+ If <varname>v</varname> is a positive integer, then the table of
+ integers from 1 up to and including v will be used.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Protège une variable de la modification. C'est utilisé dans les fonctions internes de GEL
pour leur éviter d'être accidentellement écrasées.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Protège toutes les variables, paramètres et fonctions actuellement définis de la
modification. C'est utilisé dans les fonctions internes de GEL pour leur éviter d'être accidentellement
écrasées. Normalement l'<application>Outil de maths Genius</application> considère que les variables non
protégées sont définies par l'utilisateur.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,val)</synopsis>
+ <para>Set a global variable. The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>set(`x,1)
+ </programlisting>
+ will set the global variable <varname>x</varname> to the value 1.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,row,col,val)</synopsis>
+ <para>Set an element of a global variable which is a matrix.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,3,1)
+ </programlisting>
+ will set the second row third column element of the global variable <varname>x</varname> to the
value 1. If no global variable of the name exists, or if it is set to something that's not a matrix, a new
zero matrix of appropriate size will be created.
+ </para>
+ <para>The <varname>row</varname> and <varname>col</varname> can also be ranges, and the semantics
are the same as for regular setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,val)</synopsis>
+ <para>Set an element of a global variable which is a vector.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,1)
+ </programlisting>
+ will set the second element of the global vector variable <varname>x</varname> to the value 1.
If no global variable of the name exists, or if it is set to something that's not a vector (matrix), a new
zero row vector of appropriate size will be created.
+ </para>
+ <para>The <varname>elt</varname> can also be a range, and the semantics are the same as for regular
setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Crée une chaîne de caractères à partir de n'importe quel argument.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Alias : <function>True</function>, <function>TRUE</function></para>
+ <para>La valeur booléenne <constant>true</constant> (vrai).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Alias : <function>Undefine</function></para>
+ <para>Annule la définition d'une variable, y compris les variables locales et globales, toutes les
valeurs dans tous les contextes sont effacées. Vous ne devriez vraiment pas utiliser cette fonction pour des
variables locales. Un vecteur d'identifiants peut également être transmis pour annuler la définition de
plusieurs variables.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Annule la définition de toutes les variables globales non protégées (y compris les fonctions
et les paramètres). Normalement l'<application>Outil de maths Genius</application> considère que les
variables protégées sont des variables et des fonctions définies par le système. Notez que
<function>UndefineAll</function> efface seulement la définition globale des symboles et pas les définitions
locales donc cela peut être utilisé à l'intérieur d'autres fonctions sans danger.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Annule la protection d'une variable contre sa modification.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Renvoie un vecteur d'identifiants des variables globales définies par l'utilisateur (non
protégées).</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (secs)</synopsis>
+ <para>Attend un nombre spécifié de secondes. <varname>secs</varname> ne doit pas être négatif.
Zéro est accepté et rien ne se passe dans ce cas mis à part, peut-être, le traitement d'évènements de
l'interface utilisateur.</para>
+ <para>Since version 1.0.18, <varname>secs</varname> can be a noninteger number, so
+ <userinput>wait(0.1)</userinput> will wait for one tenth of a second.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Renvoie la version de Genius sous la forme d'un vecteur horizontal à 3 valeurs : en premier
la version majeure, puis la version mineure et enfin le niveau de correction.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Renvoie les informations sur la garantie.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = nombre</synopsis>
+ <para>Tolérance pour la fonction <function>Chop</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = nombre</synopsis>
+ <para>Nombre d'itérations à essayer pour rechercher la continuité et les limites d'une
fonction.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = nombre</synopsis>
+ <para>Nombre d'étapes successives pour atteindre la tolérance pour le calcul de la
continuité.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = nombre</synopsis>
+ <para>Tolérance pour la continuité d'une fonction et pour le calcul de la limite.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = nombre</synopsis>
+ <para>Nombre d'itérations à essayer pour trouver la limite pour la dérivée.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = nombre</synopsis>
+ <para>Nombre d'étapes successives pour atteindre la tolérance pour le calcul de la dérivée.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = nombre</synopsis>
+ <para>Tolérance pour le calcul de la dérivée des fonctions.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = nombre</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = nombre</synopsis>
+ <para>Précision en virgule flottante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = booléen</synopsis>
+ <para>Affiche les expressions complètes, même celles de plus d'une ligne.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = nombre</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = nombre</synopsis>
+ <para>Base de sortie pour les entiers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = nombre</synopsis>
+ <para>Number of extra Miller-Rabin tests to run on a number before declaring it a prime in <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Indique à genius de tracer les légendes pour les <link
linkend="genius-gel-function-list-plotting">fonctions de tracé de graphiques</link> telles que <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Tells genius to draw the axis labels for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Indique à Genius les noms des variables utilisés pour les <link
linkend="genius-gel-function-list-plotting">fonctions de tracé de graphiques</link> telles que <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> et autres.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Définit les limites pour les <link linkend="genius-gel-function-list-plotting">fonctions de
tracé de graphiques</link> telles que <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = nombre</synopsis>
+ <para>Nombre maximum de chiffres à afficher.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = nombre</synopsis>
+ <para>Nombre maximum d'erreurs à afficher.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = booléen</synopsis>
+ <para>Si vrai, les fractions mixtes sont affichées.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = fonction</synopsis>
+ <para>The function used for numerical integration in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = nombre</synopsis>
+ <para>Steps to perform in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = nombre</synopsis>
+ <para>Lorsqu'un autre nombre dans l'objet qui est affiché (une matrice ou une valeur) est plus
grand que 10<superscript>-OutputChopWhenExponent</superscript> et que le nombre actuellement affiché est
inférieur à 10<superscript>-OutputChopExponent</superscript> alors afficher
<computeroutput>0.0</computeroutput> au lieu du nombre.</para>
+<para>La sortie n'est jamais tronquée si <function>OutputChopExponent</function> vaut zéro. Cela doit être
un nombre entier positif.</para>
+<para>Si vous voulez toujours que la sortie soit tronquée selon <function>OutputChopExponent</function>
alors définissez <function>OutputChopWhenExponent</function> à quelque chose de supérieur ou égal à
<function>OutputChopExponent</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = nombre</synopsis>
+ <para>Définit quand la sortie est tronquée. Consultez <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = chaîne</synopsis>
+ <para>Style des affichages, cela peut être <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> ou <literal>troff</literal>.</para>
+ <para>Cela affecte principalement la façon dont les matrices et les fractions sont affichées et est
utile pour le copier/coller vers des documents. Par exemple, vous pouvez définir ce paramètre à « latex » par
: <programlisting>OutputStyle = "latex"
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = booléen</synopsis>
+ <para>Convertit tous les résultats en nombres flottants avant de les afficher.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = booléen</synopsis>
+ <para>Utilise la notation scientifique.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [verticale,horizontale]</synopsis>
+ <para>Définit le nombre de petits traits verticaux et horizontaux dans un graphique de champ de
tangente (consultez <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = nombre</synopsis>
+ <para>How many iterations to try for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = nombre</synopsis>
+ <para>How many successive steps to be within tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = nombre</synopsis>
+ <para>Tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> such as <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> using <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ Note that the <varname>z</varname> does not refer to the dependent (vertical) axis, but to the
independent complex variable
+ <userinput>z=x+iy</userinput>.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Définit les limites pour les tracés de surface (consultez <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Indique si les longueurs de flèches du tracé de champ de vecteurs doivent être normalisées.
Si true (vrai), les tracés de champ de vecteurs n'affichent que la direction et pas l'amplitude (consultez
<link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [verticale,horizontale]</synopsis>
+ <para>Définit le nombre de petits traits verticaux et horizontaux dans un graphique de champ de
vecteurs (consultez <link
linkend="gel-function-SlopefieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Constantes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>Constante de Catalan, approximativement 0,915..., elle est définie comme la série des termes
<userinput>(-1^k)/((2*k+1)^2)</userinput> où <varname>k</varname> va de 0 à l'infini.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Alias : <function>gamma</function></para>
+ <para>
+ Euler's constant gamma. Sometimes called the
+ Euler-Mascheroni constant.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>Le nombre d'or.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GoldenRatio">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Free fall acceleration at sea level in meters per second squared. This is the standard
gravity constant 9.80665. The gravity
+ in your particular neck of the woods might be different due to different altitude and the
fact that the earth is not perfectly
+ round and uniform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>
+ The base of the natural logarithm. <userinput>e^x</userinput>
+ is the exponential function
+ <link linkend="gel-function-exp"><function>exp</function></link>. It is approximately
+ 2.71828182846... This number is sometimes called Euler's number, although there are
+ several numbers that are also called Euler's. An example is the gamma constant: <link
linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/E">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>Le nombre pi, c'est-à-dire le rapport de la circonférence d'un cercle sur son diamètre. Il
vaut approximativement 3.14159265359...</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Pi">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Nombres</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Alias : <function>abs</function></para>
+ <para>
+ Absolute value of a number and if <varname>x</varname> is
+ a complex value the modulus of <varname>x</varname>. I.e. this
+ the distance of <varname>x</varname> to the origin. This is equivalent
+ to <userinput>|x|</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/AbsoluteValue">Planetmath (absolute value)</ulink>,
+ <ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>,
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolute value)</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (complex modulus)</ulink>
+for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Remplace les très petits nombres par zéro.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Alias : <function>conj</function> <function>Conj</function></para>
+ <para>Calcule le conjugué du nombre complexe <varname>z</varname>. Si <varname>z</varname> est un
vecteur ou une matrice, tous les éléments sont conjugués.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Renvoie le dénominateur d'un nombre rationnel.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Renvoie la partie fractionnelle d'un nombre.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Alias : <function>ImaginaryPart</function></para>
+ <para>Get the imaginary part of a complex number. For example <userinput>Re(3+4i)</userinput>
yields 4.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Division sans reste.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (nbre)</synopsis>
+ <para>Check if argument is a complex (non-real) number. Do note that we really mean nonreal
number. That is,
+ <userinput>IsComplex(3)</userinput> yields false, while
+ <userinput>IsComplex(3-1i)</userinput> yields true.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (nbre)</synopsis>
+ <para>Vérifie si l'argument est potentiellement un nombre rationnel complexe. C'est-à-dire si la
partie réelle et la partie imaginaire sont fournies sous la forme de nombres rationnels. Bien sûr, rationnel
signifie simplement « non enregistré comme un nombre à virgule flottante ».</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (nbre)</synopsis>
+ <para>Check if argument is a real floating point number (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (nbre)</synopsis>
+ <para>Alias : <function>IsComplexInteger</function></para>
+ <para>Check if argument is a possibly complex integer. That is a complex integer is a number of
+ the form <userinput>n+1i*m</userinput> where <varname>n</varname> and <varname>m</varname>
+ are integers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (nbre)</synopsis>
+ <para>Vérifie si l'argument est un entier (non complexe).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (nbre)</synopsis>
+ <para>Check if argument is a non-negative real integer. That is, either a positive integer or
zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (nbre)</synopsis>
+ <para>Alias : <function>IsNaturalNumber</function></para>
+ <para>Vérifie si l'argument est un entier réel positif. Notez que par convention 0 n'est pas un
nombre naturel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (nbre)</synopsis>
+ <para>Vérifie si l'argument est un nombre rationnel (non complexe). Bien sûr, rationnel signifie
simplement « non enregistré comme un nombre à virgule flottante ».</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (nbre)</synopsis>
+ <para>Vérifie si l'argument est un nombre réel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Renvoie le numérateur d'un nombre rationnel.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Alias : <function>RealPart</function></para>
+ <para>Get the real part of a complex number. For example <userinput>Re(3+4i)</userinput> yields
3.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Alias : <function>sign</function></para>
+ <para>Renvoie le signe d'un nombre. C'est-à-dire renvoie <literal>-1</literal> si la valeur est
négative, <literal>0</literal> si la valeur est nulle et <literal>1</literal> si la valeur est positive. Si
<varname>x</varname> est une grandeur complexe alors <function>Sign</function> renvoie la direction ou
0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Alias : <function>Ceiling</function></para>
+ <para>Get the lowest integer more than or equal to <varname>n</varname>. Examples:
+ <screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen>
+ </para>
+ <para>Note that you should be careful and notice that floating point
+ numbers are stored in binary and so may not be what you
+ expect. For example <userinput>ceil(420/4.2)</userinput>
+ returns 101 instead of the expected 100. This is because
+ 4.2 is actually very slightly less than 4.2. Use rational
+ representation <userinput>42/10</userinput> if you want
+ exact arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>La fonction exponentielle. C'est la fonction <userinput>e^x</userinput> où
<varname>e</varname> est la <link linkend="gel-function-e">base du logarithme naturel</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Transforme le nombre en nombre à virgule flottante. C'est-à-dire la représentation à virgule
flottante du nombre <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Alias : <function>Floor</function></para>
+ <para>Renvoie le plus grand entier inférieur ou égal à <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>Le logarithme naturel, le logarithme de base <varname>e</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logarithm of <varname>x</varname> base <varname>b</varname> (calls <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> if in modulo mode), if base is not
given, <link linkend="gel-function-e"><varname>e</varname></link> is used.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Logarithme base 10 de <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Alias : <function>lg</function></para>
+ <para>Logarithme base 2 de <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,params...)</synopsis>
+ <para>Alias : <function>Max</function> <function>Maximum</function></para>
+ <para>Renvoie le maximum des arguments ou de la matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,params...)</synopsis>
+ <para>Alias : <function>Min</function> <function>Minimum</function></para>
+ <para>Renvoie le minimum des arguments ou de la matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (taille...)</synopsis>
+ <para>Génère aléatoirement des nombres flottants dans l'intervalle <literal>[0,1)</literal>. Si
taille est donnée alors une matrice (si deux nombres sont fournis) ou un vecteur (si un seul est fourni) de
la taille indiquée est renvoyé.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,taille...)</synopsis>
+ <para>Génère aléatoirement des entiers dans l'intervalle <literal>[0,max)</literal>. Si taille est
donné alors une matrice (si deux nombres sont fournis) ou un vecteur (si un seul est fourni) de la taille
indiquée est renvoyé. Par exemple, <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Alias : <function>Round</function></para>
+ <para>Arrondit un nombre.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Alias : <function>SquareRoot</function></para>
+ <para>La racine carrée. Au cours de calculs en mode modulaire, certains entiers renvoient soit
<constant>null</constant> ou un vecteur contenant les racines carrées. Exemples :
<screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/SquareRoot">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Alias : <function>Truncate</function><function>IntegerPart</function></para>
+ <para>Tronque le nombre à un entier (renvoie la partie entière).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Trigonométrie</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Alias : <function>arccos</function></para>
+ <para>Fonction arccos (arc cosinus).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Alias : <function>arccosh</function></para>
+ <para>Fonction arccosh (cosinus hyperbolique inverse).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Alias : <function>arccot</function></para>
+ <para>Fonction arccot (cotangente inverse).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Alias : <function>arccoth</function></para>
+ <para>Fonction arccoth (cotangente hyperbolique inverse).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Alias : <function>arccsc</function></para>
+ <para>Inverse de la fonction cosécante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Alias : <function>arccsch</function></para>
+ <para>Inverse de la fonction cosécante hyperbolique.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Alias : <function>arcsec</function></para>
+ <para>Inverse de la fonction sécante.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Alias : <function>arcsech</function></para>
+ <para>Inverse de la fontion sécante hyperbolique.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Alias : <function>arcsin</function></para>
+ <para>La fonction arcsin (sinus inverse).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Alias : <function>arcsinh</function></para>
+ <para>Fonction arcsinh (sinus hyperbolique inverse).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Alias : <function>arctan</function></para>
+ <para>Calcule la fonction arctangente (tangente inverse).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Alias : <function>arctanh</function></para>
+ <para>Fonction arctanh (tangente hyperbolique inverse).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Alias : <function>arctan2</function></para>
+ <para>Calculates the arctan2 function. If
+ <userinput>x>0</userinput> then it returns
+ <userinput>atan(y/x)</userinput>. If <userinput>x<0</userinput>
+ then it returns <userinput>sign(y) * (pi - atan(|y/x|)</userinput>.
+ When <userinput>x=0</userinput> it returns <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> returns 0
+ rather than failing.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Calcule la fonction cosinus.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Calcule la fonction cosinus hyperbolique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>Fonction cotangente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>Fonction cotangente hyperbolique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>Fonction cosécante.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>Fonction cosécante hyperbolique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>Fonction sécante.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>Fonction sécante hyperbolique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Calcule la fonction sinus.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Calcule la fonction sinus hyperbolique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Calcule la fonction tangente.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>Fonction tangente hyperbolique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Théorie des nombres</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>Si les entiers <varname>a</varname> et <varname>b</varname> sont premiers entre eux ?
Renvoie <constant>true</constant> (vrai) ou <constant>false</constant> (faux).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Renvoie le <varname>n</varname>-ième nombre de Bernoulli.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Alias : <function>CRT</function></para>
+ <para>Recherche <varname>x</varname> qui résout le système défini par le vecteur
<varname>a</varname> et modulo les éléments de <varname>m</varname>, en utilisant le théorème des restes
chinois.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Étant donné deux factorisations, donne la factorisation du produit.</para>
+ <para>Consultez <link linkend="gel-function-Factorize">Factorize</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Convertit un vecteur de valeurs indiquant les puissances de b en un nombre.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Convertit un nombre en un vecteur contenant les puissances des éléments dans la base
<varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Calcule le logarithme discret de <varname>n</varname> base <varname>b</varname> dans
F<subscript>q</subscript>, le corps fini d'ordre <varname>q</varname> où <varname>q</varname> est un nombre
premier, en utilisant l'algorithme de Silver-Pohlig-Hellman.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Vérifie la divisibilité (si <varname>m</varname> divise <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>Calcule la fonction d'Euler phi, c'est-à-dire le nombre d'entiers compris entre 1 et
<varname>n</varname> qui sont premiers avec <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/EulerPhifunction">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>Renvoie <userinput>n/d</userinput> mais seulement si <varname>d</varname> divise
<varname>n</varname>. Si <varname>d</varname> ne divise pas <varname>n</varname> alors cette fonction ne
renvoie rien d'utile. Cette fonction est beaucoup plus rapide pour les très grands nombres que l'opération
<userinput>n/d</userinput>, mais bien sûr utile seulement si vous savez que la division est exacte.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>Renvoie la factorisation d'un nombre sous la forme d'une matrice. La première ligne contient
les nombres premiers dans la factorisation (y compris 1) et la seconde ligne sont les puissances. Par exemple
: <screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>Renvoie tous les facteurs de <varname>n</varname> dans un vecteur. Cela inclut tous les
facteurs non premiers également mais aussi 1 et le nombre lui-même. Ainsi par exemple pour afficher tous les
nombres parfaits (ceux qui sont la somme de leurs facteurs) jusqu'au nombre 1000, vous pouvez écrire (ce
n'est bien sûr pas efficace) : <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,tentatives)</synopsis>
+ <para>
+ Attempt Fermat factorization of <varname>n</varname> into
+ <userinput>(t-s)*(t+s)</userinput>, returns <varname>t</varname>
+ and <varname>s</varname> as a vector if possible, <constant>null</constant> otherwise.
+ <varname>tries</varname> specifies the number of tries before
+ giving up.
+ </para>
+ <para>C'est une assez bonne factorisation si votre nombre est le produit de deux facteurs très
proches l'un de l'autre.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Cherche le premier élément primitif dans F<subscript>q</subscript>, le groupe fini d'ordre
<varname>q</varname>. Bien sûr, <varname>q</varname> doit être premier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Cherche un élément primitif au hasard dans F<subscript>q</subscript>, le groupe fini d'ordre
<varname>q</varname> (q doit être premier).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Compute discrete log base <varname>b</varname> of n in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (<varname>q</varname> a prime), using the
+factor base <varname>S</varname>. <varname>S</varname> should be a column of
+primes possibly with second column precalculated by
+<link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Run the precalculation step of
+ <link linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> for
logarithms base <varname>b</varname> in
+F<subscript>q</subscript>, the finite group of order <varname>q</varname>
+(<varname>q</varname> a prime), for the factor base <varname>S</varname> (where
+<varname>S</varname> is a column vector of primes). The logs will be
+precalculated and returned in the second column.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Teste si un entier est pair.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>
+ Tests if a positive integer <varname>p</varname> is a
+ Mersenne prime exponent. That is if
+ 2<superscript>p</superscript>-1 is a prime. It does this
+ by looking it up in a table of known values, which is relatively
+ short.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>Vérifie si un nombre rationnel <varname>m</varname> est une puissance
<varname>n</varname>-ième parfaite. Consultez aussi <link
linkend="gel-function-IsPerfectPower">IsPerfectPower</link> et <link
linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Teste si un entier est impair.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Check an integer for being any perfect power, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>
+ Check an integer for being a perfect square of an integer. The number must
+ be an integer. Negative integers are of course never perfect
+ squares of integers.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>Teste la primalité des entiers ; pour les nombres inférieurs à 2,5e10 la réponse est
déterministe (si l'hypothèse de Riemann est vérifiée). Pour des nombres plus grands, la probabilité d'une
erreur de détermination dépend du paramètre <link
linkend="gel-function-IsPrimeMillerRabinReps"><function>IsPrimeMillerRabinReps</function></link>.
C'est-à-dire la probabilité d'une erreur de détermination vaut 1/4 à la puissance
<function>IsPrimeMillerRabinReps</function>. La valeur par défaut de 22 mène à une probabilité d'environ
5.7e-14.</para>
+ <para>Si <constant>false</constant> (faux) est renvoyé, vous êtes sûr que le nombre est composé.
Si vous voulez être absolument certain d'avoir un nombre premier vous pouvez utiliser la fonction <link
linkend="gel-function-MillerRabinTestSure"><function>MillerRabinTestSure</function></link> mais cela peut
prendre beaucoup plus de temps.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Vérifie que <varname>g</varname> est primitif dans F<subscript>q</subscript>, le groupe fini
d'ordre <varname>q</varname>, où <varname>q</varname> est premier. Si <varname>q</varname> n'est pas premier,
les résultats sont erronés.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Vérifie que <varname>g</varname> est primitif dans F<subscript>q</subscript>, le groupe fini
d'ordre <varname>q</varname>, où <varname>q</varname> est premier et <varname>f</varname> est un vecteur de
facteurs premiers de <varname>q</varname>-1. Si <varname>q</varname> n'est pas premier, les résultats sont
erronés.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>If <varname>n</varname> is a pseudoprime base <varname>b</varname> but not a prime,
+ that is if <userinput>b^(n-1) == 1 mod n</userinput>. This calls the <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Teste si <varname>n</varname> est un nombre pseudopremier fort en base <varname>b</varname>
mais pas un nombre premier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Alias : <function>JacobiSymbol</function></para>
+ <para>Calcule le symbole de Jacobi (a/b) (b doit être impair).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Alias : <function>JacobiKroneckerSymbol</function></para>
+ <para>Calcule le symbole de Jacobi (a/b) avec l'extension de Kronecker (a/2)=(2/a) si impair, ou
(a/2)=0 si pair.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Renvoie le résidu de <varname>a</varname> modulo <varname>n</varname> avec la plus petite
valeur absolue (entre -n/2 et n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Alias : <function>LegendreSymbol</function></para>
+ <para>Calcule le symbole de Legendre (a/p).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Teste si 2<superscript>p</superscript>-1 est un nombre premier de Mersenne en utilisant le
test de Lucas-Lehmer. Consultez aussi <link
linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> et <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Renvoie le <varname>n</varname>-ième nombre de Lucas.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasNumbers">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Renvoie les puissances premières d'un nombre.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>Renvoie un vecteur de nombres premiers de Mersenne qui est une liste d'entiers positifs
<varname>p</varname> tels que 2<superscript>p</superscript>-1 est entier. Consultez aussi <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link> et <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>Utilise le test de primalité de Miller-Rabin sur <varname>n</varname>, en faisant
<varname>reps</varname> essais. La probabilité d'une erreur de détermination est
<userinput>(1/4)^reps</userinput>. Il est probablement préférable d'utiliser la fonction <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link> puisqu'elle est plus rapide et meilleure
pour les entiers les plus petits.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>
or
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname> with
+ enough bases that assuming the Generalized Riemann Hypothesis the
+ result is deterministic.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink>, or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Renvoie l'inverse de n mod m.</para>
+ <para>Consultez <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink>
pour plus d'informations.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>Renvoie la fonction mu de Moebius évaluée dans <varname>n</varname>. C'est-à-dire renvoie 0
si <varname>n</varname> n'est pas un produit de nombres premiers différents et <userinput>(-1)^k</userinput>
si c'est un produit de <varname>k</varname> nombres premiers différents.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>Renvoie le plus petit nombre premier supérieur à <varname>n</varname>. L'opposé d'un nombre
premier est considéré comme un nombre premier donc pour obtenir le nombre premier précédent, vous pouvez
utiliser <userinput>-NextPrime(-n)</userinput>.</para>
+ <para>
+ This function uses the GMPs <function>mpz_nextprime</function>,
+ which in turn uses the probabilistic Miller-Rabin test
+ (See also <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>).
+ The probability
+ of false positive is not tunable, but is low enough
+ for all practical purposes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Renvoie la valuation p-adic (nombre de zéros après la virgule en base
<varname>p</varname>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/PAdicValuation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>
+ Compute <userinput>a^b mod m</userinput>. The
+ <varname>b</varname>'s power of <varname>a</varname> modulo
+ <varname>m</varname>. It is not necessary to use this function
+ as it is automatically used in modulo mode. Hence
+ <userinput>a^b mod m</userinput> is just as fast.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Alias : <function>prime</function></para>
+ <para>Renvoie le <varname>n</varname>-ième nombre premier (jusqu'à une limite) .</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Renvoie tous les facteurs premiers d'un nombre sous la forme d'un vecteur.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Test de pseudoprimalité, renvoie <constant>true</constant> (vrai) si et seulement si
<userinput>b^(n-1) == 1 mod n</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Supprime toutes les instances du facteur <varname>m</varname> dans le nombre
<varname>n</varname>. C'est-à-dire divise par la plus grande puissance de <varname>m</varname> qui divise
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Calcule le logarithme discret de <varname>n</varname> base <varname>b</varname> dans
F<subscript>q</subscript>, le corps fini d'ordre <varname>q</varname> où <varname>q</varname> est un nombre
premier, en utilisant l'algorithme de Silver-Pohlig-Hellman, sachant que <varname>f</varname> est la
factorisation de <varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Cherche la racine carrée de <varname>n</varname> modulo <varname>p</varname> (où
<varname>p</varname> est premier). <constant>null</constant> est renvoyé si ce n'est pas un résidu
quadratique.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Lance le test de pseudo-primarité forte en base <varname>b</varname> sur
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,params...)</synopsis>
+ <para>Alias : <function>GCD</function></para>
+ <para>
+ Greatest common divisor of integers. You can enter as many
+ integers as you want in the argument list, or you can give
+ a vector or a matrix of integers. If you give more than
+ one matrix of the same size then GCD is done element by
+ element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,params...)</synopsis>
+ <para>Alias : <function>LCM</function></para>
+ <para>
+ Least common multiplier of integers. You can enter as many
+ integers as you want in the argument list, or you can give a
+ vector or a matrix of integers. If you give more than one
+ matrix of the same size then LCM is done element by element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Manipulation de matrices</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,fonc)</synopsis>
+ <para>Applique une fonction sur tous les éléments d'une matrice et renvoie une matrice de
résultats.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,fonc)</synopsis>
+ <para>Applique une fonction sur tous les éléments de 2 matrices (ou 1 valeur et 1 matrice) et
renvoie une matrice de résultats.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Extrait les colonnes de la matrice comme un vecteur horizontal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Supprime certaines lignes et colonnes d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Calcule la k-ième matrice composée de A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>
+ Count the number of zero columns in a matrix. For example,
+ once you column-reduce a matrix, you can use this to find
+ the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
+ and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,col)</synopsis>
+ <para>Supprime une colonne d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,row)</synopsis>
+ <para>Supprime une ligne d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Extrait la diagonale de la matrice comme un vecteur colonne.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Get the dot product of two vectors. The vectors must be of the
+ same size. No conjugates are taken so this is a bilinear form even if working over the
complex numbers; This is the bilinear scalar product not the sesquilinear scalar product. See <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> for the standard sesquilinear inner
product.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DotProduct">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>Développe une matrice exactement comme cela est fait lors de la saisie d'une matrice non
précédée d'une apostrophe. Cela signifie que toute matrice interne est développée sous la forme de blocs.
C'est une façon de construire des matrices à partir de matrices plus petites et c'est ce qui est effectué
normalement de manière automatique lors d'une saisie à moins que la matrice ne soit précédée d'une
apostrophe.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Alias : <function>InnerProduct</function></para>
+ <para>Renvoie le produit hermitienne de deux vecteurs. Les vecteurs doivent avoir la même taille.
C'est une forme sesquilinéaire utilisant la matrice identité.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Alias : <function>eye</function></para>
+ <para>Renvoie une matrice identité de la taille indiquée, soit une matrice de <varname>n</varname>
par <varname>n</varname>. Si <varname>n</varname> vaut zéro, renvoie <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vec,mtaille)</synopsis>
+ <para>Renvoie le complémentaire d'un vecteur d'indices. Le premier indice est toujours 1. Par
exemple pour le vecteur <userinput>[2,3]</userinput> et la taille <userinput>5</userinput>, cela renvoie
<userinput>[1,4,5]</userinput>. Si <varname>mtaille</varname> vaut 0, cela renvoie toujours
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Indique si la matrice est diagonale.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Vérifie qu'une matrice est la matrice identité. Renvoie automatiquement
<constant>false</constant> (faux) si la matrice n'est pas carrée. Fonctionne également avec les nombres et
dans ce cas, c'est équivalent à <userinput>x==1</userinput>. Lorsque <varname>x</varname> est
<constant>null</constant>, il est considéré comme une matrice 0 par 0, aucune erreur n'est générée et
<constant>false</constant> (faux) est renvoyé.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Indique si une matrice est triangulaire inférieure, c'est-à-dire que toutes les valeurs au
dessus de la diagonale sont nulles.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Check if a matrix is a matrix of integers (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Vérifie si une matrice est non négative, c'est-à-dire que chaque élément n'est pas négatif.
Ne pas confondre les matrices positives avec les matrices définies positives.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Vérifie si une matrice est positive, c'est-à-dire que chaque élément est positif (et par
conséquent réel), et en particulier qu'aucun élément n'est nul. Ne pas confondre les matrices positives avec
les matrices définies positives</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Vérifie si une matrice est constituée de nombres rationnels (non complexes).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Vérifie si une matrice est constituée de nombres réels (non complexes).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>Vérifie si une matrice est carrée, c'est-à-dire que sa largeur est égale à sa hauteur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Is a matrix upper triangular? That is, a matrix is upper triangular if all the entries
below the diagonal are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Vérifie si une matrice est une matrice de nombres seulement. Beaucoup de fonctions internes
contrôlent cela. Les valeurs peuvent être n'importe quels nombres y compris des complexes.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>Si l'argument est un vecteur horizontal ou vertical. Genius ne fait pas de distinction entre
une matrice et un vecteur, un vecteur est juste une matrice 1 par <varname>n</varname> ou
<varname>n</varname> par 1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Vérifie si une matrice est composée uniquement de zéros. Fonctionne également avec les
nombres et dans ce cas, c'est équivalent à <userinput>x==0</userinput>. Lorsque <varname>x</varname> est
<constant>null</constant>, il est considéré comme une matrice 0 par 0, aucune erreur n'est générée et
<constant>true</constant> (vrai) est renvoyé car la condition est vide.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Renvoie une copie de la matrice <varname>M</varname> avec tous les éléments au dessus de la
diagonale mis à zéro.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,param...)</synopsis>
+ <para>Alias : <function>diag</function></para>
+ <para>Make diagonal matrix from a vector. Alternatively you can pass
+ in the values to put on the diagonal as arguments. So
+ <userinput>MakeDiagonal([1,2,3])</userinput> is the same as
+ <userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Construit un vecteur colonne à partir d'une matrice en mettant les colonnes les unes au
dessus des autres. Renvoie <constant>null</constant> si <constant>null</constant> est fourni.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>Calcule et renvoie le produit de tous les éléments d'une matrice ou d'un vecteur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>Calcule et renvoie la somme de tous les éléments d'une matrice ou d'un vecteur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Calcule la somme du carré de tous les éléments d'une matrice ou d'un vecteur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Returns a row vector of the indices of nonzero columns in the matrix
<varname>M</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Returns a row vector of the indices of nonzero elements in the vector
<varname>v</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Retourne le produit tensoriel de deux vecteurs, c'est-à-dire que si on suppose que
<varname>u</varname> et <varname>v</varname> sont des vecteurs colonnes, alors le produit tensoriel est
<userinput>v * u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Inverse l'ordre des éléments d'un vecteur. Renvoie <constant>null</constant> si
<constant>null</constant> est fourni</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Calcule la somme pour chaque ligne d'une matrice et renvoie un vecteur colonne contenant le
résultat.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Calculate sum of squares of each row in a matrix and return a vertical vector with the
results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Gets the rows of a matrix as a vertical vector. Each element
+of the vector is a horizontal vector that is the corresponding row of
+<varname>M</varname>. This function is useful if you wish to loop over the
+rows of a matrix. For example, as <userinput>for r in RowsOf(M) do
+something(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,lignes,colonnes)</synopsis>
+ <para>Make new matrix of given size from old one. That is, a new
+ matrix will be returned to which the old one is copied. Entries that
+ don't fit are clipped and extra space is filled with zeros.
+ If <varname>rows</varname> or <varname>columns</varname> are zero
+ then <constant>null</constant> is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Shuffle elements in a vector. Return <constant>null</constant> if given
<constant>null</constant>.</para>
+ <para>Version 1.0.13 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Trie les éléments d'un vecteur en ordre croissant.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Élimine toutes les colonnes entièrement nulles de <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Élimine toutes les lignes entièrement nulles de <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Renvoie certaines colonnes et lignes d'une matrice. C'est équivalent à
<userinput>m@(r,c)</userinput>. <varname>r</varname> et <varname>c</varname> doivent être des vecteurs de
lignes et de colonnes (ou de simples nombres si vous avez besoin d'une seule ligne ou colonne).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,ligne1,ligne2)</synopsis>
+ <para>Échange deux lignes dans une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Renvoie une copie de la matrice <varname>M</varname> avec tous les éléments sous la
diagonale mis à zéro.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Renvoie le nombre de colonnes d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Renvoie le nombre total d'éléments d'une matrice. C'est le nombre de colonnes multiplié par
le nombre de lignes.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (lignes,colonnes...)</synopsis>
+ <para>Crée une matrice de 1 (ou un vecteur colonne si un seul argument est donné). Renvoie
<constant>null</constant> si ligne ou colonne est nul.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Renvoie le nombre de lignes d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (lignes,colonnes...)</synopsis>
+ <para>Crée une matrice de 0 (ou un vecteur colonne si un seul argument est donné). Renvoie
<constant>null</constant> si ligne ou colonne est nul.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Algèbre linéaire</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Get the auxiliary unit matrix of size <varname>n</varname>. This is a square matrix with
that is all zero except the
+superdiagonal being all ones. It is the Jordan block matrix of one zero eigenvalue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information
on Jordan Canonical Form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Évalue (v,w) par rapport à la forme bilinéaire donnée par la matrice A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Renvoie une fonction qui évalue deux vecteurs par rapport à la forme bilinéaire donnée par
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Alias : <function>CharPoly</function></para>
+ <para>Renvoie le polynôme caractéristique d'un vecteur. C'est-à-dire renvoie les coefficients du
polynôme en commençant par le terme constant. Ce polynôme est défini par <userinput>det(M-xI)</userinput>.
Les racines de ce polynôme sont les valeurs propres de <varname>M</varname>. Consultez également <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Renvoie le polynôme caractéristique d'un vecteur sous la forme d'une fonction. Ce polynôme
est défini par <userinput>det(M-xI)</userinput>. Les racines de ce polynôme sont les valeurs propres de
<varname>M</varname>. Consultez également <link
linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Renvoie une matrice de base pour le sous-espace vectoriel d'une matrice. C'est-à-dire renvoie
une matrice dont les colonnes forment une base pour le sous-espace vectoriel de <varname>M</varname>, donc
l'espace engendré par les colonnes de <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Return the commutation matrix <userinput>K(m,n)</userinput>, which is the unique
<userinput>m*n</userinput> by
+ <userinput>m*n</userinput> matrix such that <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> for all <varname>m</varname> by <varname>n</varname>
+ matrices <varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Matrice compagnon d'un polynôme (comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Transposée conjuguée d'une matrice (matrice adjointe). Identique à l'opérateur
<userinput>'</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Alias : <function>convol</function></para>
+ <para>Calcule la convolution de deux vecteurs horizontaux.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Calcule la convolution de deux vecteurs horizontaux. Renvoie le résultat sous la forme d'un
vecteur dont les composants ne sont pas additionnées ensemble.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>Produit vectoriel de deux vecteurs dans R<superscript>3</superscript> sous la forme d'un
vecteur colonne.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Get the determinantal divisors of an integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Somme directe de matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Somme directe d'un vecteur de matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Alias : <function>eig</function></para>
+ <para>Renvoie les valeurs propres d'une matrice carrée. Ne fonctionne actuellement que pour les
matrices de taille inférieure ou égale à 4 par 4 ou pour les matrices triangulaires (pour lesquelles les
valeurs propres sont sur la diagonale).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvalue">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &valeurspropres)</synopsis>
+ <synopsis>Eigenvectors (M, &valeurpropres, &multiplicités)</synopsis>
+ <para>Renvoie les vecteurs propres d'une matrice carrée. Il est possible en option d'obtenir les
valeurs propres ainsi que leur multiplicité algébrique. Ne fonctionne actuellement que pour les matrices
2x2.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvector">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Applique le procédé de Gram-Schmidt (aux colonnes) par rapport au produit scalaire donné par
<varname>B</varname>. Si <varname>B</varname> n'est pas fourni alors le produit hermitien standard est
utilisé. <varname>B</varname> peut être soit une forme sesquilinéaire à deux arguments soit une matrice
fournissant une forme sesquilinéaire. Les vecteurs seront orthogonaux par rapport à
<varname>B</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>Hankel matrix, a matrix whose skew-diagonals are constant. <varname>c</varname> is the first
row and <varname>r</varname> is the
+ last column. It is assumed that both arguments are vectors and the last element of
<varname>c</varname> is the same
+ as the first element of <varname>r</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Matrice de Hilbert d'ordre <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Renvoie l'image (espace vectoriel engendré par les colonnes) d'une transformation
linéaire.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Renvoie la norme « infini », appelée aussi norme sup, ou encore norme de la convergence
uniforme.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Get the invariant factors of a square integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Matrice inverse de Hilbert d'ordre <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Indique si une matrice est hermitienne. C'est-à-dire si elle est égale à sa transposée
conjuguée.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Teste si un vecteur appartient à un sous-espace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Is a matrix (or number) invertible (Integer matrix is invertible if and only if it is
invertible over the integers).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Indique si une matrice (ou un nombre) est inversible sur un corps.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Indique si <varname>M</varname> est une matrice normale, c'est-à-dire <userinput>M*M' ==
M'*M</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Indique si <varname>M</varname> est une matrice hermitienne définie positive. C'est-à-dire
si <userinput>HermitianProduct(M*v,v)</userinput> est toujours strictement positif pour tout vecteur
<varname>v</varname>. <varname>M</varname> doit être carré et hermitienne pour être définie positive. Le
contrôle effectué est que le déterminant de chaque sous-matrice principale n'est pas négatif (consultez <link
linkend="gel-function-HermitianProduct">HermitianProduct</link>).</para>
+ <para>Notez que certains auteurs (par exemple Mathworld) n'exigent pas que <varname>M</varname>
soit hermitienne, ainsi la condition porte sur la partie réelle du produit scalaire mais ce n'est pas le cas
de Genius. Si vous souhaitez réaliser ce type de contrôle, vérifiez seulement la partie hermitienne de la
matrice <varname>M</varname> comme ceci : <userinput>IsPositiveDefinite(M+M')</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/PositiveDefinite">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Indique si <varname>M</varname> est une matrice hermitienne semi-définie positive.
C'est-à-dire si <userinput>HermitianProduct(M*v,v)</userinput> est toujours non négatif pour tout vecteur
<varname>v</varname>. <varname>M</varname> doit être carré et hermitienne pour être semi-définie positive. Le
contrôle effectué est que le déterminant de chaque sous-matrice principale n'est pas négatif (consultez <link
linkend="gel-function-HermitianProduct">HermitianProduct</link>).</para>
+ <para>Notez que certains auteurs n'exigent pas que <varname>M</varname> soit hermitienne, ainsi la
condition porte sur la partie réelle du produit scalaire mais ce n'est pas le cas de Genius. Si vous
souhaitez réaliser ce type de contrôle, vérifiez seulement la partie hermitienne de la matrice
<varname>M</varname> comme ceci : <userinput>IsPositiveSemiDefinite(M+M')</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Indique si une matrice est anti-hermitienne. C'est-à-dire si sa transposée conjuguée est
égale à l'opposée de la matrice.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Indique si une matrice est unitaire. C'est-à-dire si <userinput>M'*M</userinput> et
<userinput>M*M'</userinput> sont égaux à l'identité.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Alias : <function>J</function></para>
+ <para>Renvoie le bloc de Jordan correspondant à la valeur propre <varname>lambda</varname> de
multiplicité <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Renvoie le noyau d'une transformation linéaire.</para>
+ <para>(consultez <link linkend="gel-function-NullSpace">NullSpace</link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Aliases: <function>TensorProduct</function></para>
+ <para>
+ Compute the Kronecker product (tensor product in standard basis)
+ of two matrices.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>
+ Get the LU decomposition of <varname>A</varname>, that is
+ find a lower triangular matrix and upper triangular
+ matrix whose product is <varname>A</varname>.
+ Store the result in the <varname>L</varname> and
+ <varname>U</varname>, which should be references. It returns <constant>true</constant>
+ if successful.
+ For example suppose that A is a square matrix, then after running:
+ <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen>
+ You will have the lower matrix stored in a variable called
+ <varname>L</varname> and the upper matrix in a variable called
+ <varname>U</varname>.
+ </para>
+ <para>
+ This is the LU decomposition of a matrix aka Crout and/or Cholesky
+ reduction.
+ (ISBN 0-201-11577-8 pp.99-103)
+ The upper triangular matrix features a diagonal
+ of values 1 (one). This is not Doolittle's Method, which features
+ the 1's diagonal on the lower matrix.
+ </para>
+ <para>Toutes les matrices ne possèdent pas de décomposition LU, par exemple
<userinput>[0,1;1,0]</userinput> n'en a pas. Dans ce cas, cette fonction renvoie <constant>false</constant>
(faux) et initialise <varname>L</varname> et <varname>U</varname> à <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LUDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Renvoie le mineur <varname>i</varname>-<varname>j</varname> d'une matrice.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Minor">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Renvoie les colonnes qui ne sont pas les colonnes pivot d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Alias : <function>norm</function></para>
+ <para>Renvoie la norme-p d'un vecteur (ou norme-2 si p n'est pas fourni).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Renvoie le noyau d'une matrice. C'est-à-dire le noyau de l'application linéaire que la
matrice représente sous la forme d'une matrice dont l'espace des colonnes est le noyau de
<varname>T</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Alias : <function>nullity</function></para>
+ <para>Renvoie la dimension du noyau de la matrice <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Renvoie le complément orthogonal de l'espace des colonnes.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Return pivot columns of a matrix, that is columns that have a leading 1 in row reduced form.
Also returns the row where they occur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Projection du vecteur <varname>v</varname> sur le sous-espace <varname>W</varname> par
rapport au produit scalaire donné par <varname>B</varname>. Si <varname>B</varname> n'est pas fourni alors le
produit hermitien standard est utilisé. <varname>B</varname> peut être soit une forme sesquilinéaire à deux
arguments soit une matrice fournissant une forme sesquilinéaire.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>Calcule la décomposition QR d'une matrice carrée <varname>A</varname>, renvoie la matrice
triangulaire supérieure <varname>R</varname> et définit <varname>Q</varname> comme la matrice orthogonale
(unitaire). <varname>Q</varname> doit être une référence. Si vous ne voulez pas qu'elle soit renvoyée,
utilisez <constant>null</constant>. Par exemple : <screen><prompt>genius></prompt> <userinput>R =
QRDecomposition(A,&Q)</userinput>
+</screen> Vous obtenez la matrice supérieure dans une variable appelée <varname>R</varname> et la matrice
orthogonale (unitaire) dans <varname>Q</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Renvoie le quotient de Rayleigh (aussi appelé le quotient ou rapport de Rayleigh-Ritz) d'une
matrice et d'un vecteur.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Cherche les valeurs propres de <varname>A</varname> en utilisant la méthode itérative du
quotient de Rayleigh. <varname>x</varname> est une valeur initiale estimée pour un vecteur propre et peut
être tirée au hasard. Si vous voulez avoir une chance de trouver des valeurs propres complexes, la partie
imaginaire ne doit pas être nulle. Le programme effectue au maximum <varname>maxiter</varname> itérations et
renvoie <constant>null</constant> s'il ne peut trouver une solution avec une précision inférieure à
<varname>epsilon</varname>. <varname>vecref</varname> doit être soit <constant>null</constant> ou une
référence à une variable dans laquelle le vecteur propre est enregistré.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information on
Rayleigh quotient.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Alias : <function>rank</function></para>
+ <para>Renvoie le rang d'une matrice.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Returns the Rosser matrix, which is a classic symmetric eigenvalue test problem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (angle)</synopsis>
+ <para>Alias : <function>RotationMatrix</function></para>
+ <para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans
R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (angle)</synopsis>
+ <para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans
R<superscript>3</superscript> autour de l'axe des x.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (angle)</synopsis>
+ <para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans
R<superscript>3</superscript> autour de l'axe des y.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (angle)</synopsis>
+ <para>Renvoie la matrice correspondant à la rotation centrée sur l'origine dans
R<superscript>3</superscript> autour de l'axe des z.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Renvoie une matrice de base pour l'espace vectoriel engendré par les lignes d'une
matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Évalue (v, w) par rapport à la forme sesquilinéaire donnée par la matrice A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Renvoie une fonction qui évalue deux vecteurs par rapport à la forme sesquilinéaire donnée
par A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Returns the Smith normal form of a matrix over fields (will end up with 1's on the
diagonal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Return the Smith normal form for square integer matrices over integers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,params...)</synopsis>
+ <para>Résout le système linéaire Mx=V, renvoie V s'il y a une solution unique ou
<constant>null</constant> sinon. Deux références d'arguments supplémentaires peuvent être utilisés pour
recevoir les réductions de M et V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (c, r...)</synopsis>
+ <para>Renvoie la matrice de Toeplitz construite à partir de la première colonne c et
(éventuellement) de la première ligne r. Si seule la colonne c est fournie alors elle est conjuguée et la
version non conjuguée est utilisée pour la première ligne pour fournir une matrice hermitienne (si le premier
élément est réel bien sûr).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Alias : <function>trace</function></para>
+ <para>Calcule la trace d'une matrice, c'est-à-dire la somme des éléments diagonaux.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Trace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Matrice transposée. C'est identique à l'opérateur <userinput>.'</userinput></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Transpose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Alias : <function>vander</function></para>
+ <para>Renvoie la matrice de Vandermonde.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>L'angle entre deux vecteurs par rapport au produit scalaire donné par <varname>B</varname>.
Si <varname>B</varname> n'est pas fourni alors le produit hermitien standard est utilisé.
<varname>B</varname> peut être soit une forme sesquilinéaire à deux arguments soit une matrice fournissant
une forme sesquilinéaire.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>Somme directe des espaces vectoriels M et N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Intersection des sous-espaces donnés par M et N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>Somme des espaces vectoriels M et N, c'est-à-dire {w | w=m+n, m dans M, n dans N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Alias : <function>Adjugate</function></para>
+ <para>Renvoie la matrice adjointe d'une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Alias : <function>CREF</function><function>ColumnReducedEchelonForm</function></para>
+ <para>Calcule la forme échelonnée réduite en colonnes.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Alias : <function>Determinant</function></para>
+ <para>Renvoie le déterminant d'une matrice.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Determinant2">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Alias : <function>REF</function><function>RowEchelonForm</function></para>
+ <para>Renvoie la matrice échelonnée en lignes (row echelon) d'une matrice. C'est-à-dire effectue
une élimination de Gauss de <varname>M</varname>. Les lignes de pivot sont divisées pour que tous les pivots
soient égaux à 1.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Alias : <function>RREF</function><function>ReducedRowEchelonForm</function></para>
+ <para>Renvoie la matrice échelonnée réduite en lignes (reduced row echelon) d'une matrice.
C'est-à-dire effectue une élimination de Gauss-Jordan de <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Combinatoire</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Renvoie le <varname>n</varname>-ième nombre catalan.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Renvoie toutes les combinaisons de k nombres de 1 à n comme un vecteur de vecteurs
(consultez aussi <link linkend="gel-function-NextCombination">NextCombination</link>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Double factorielle : <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Factorielle : <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Factorielle décroissante : <userinput>(n)_k·=·n(n-1)...(n-(k-1))</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Alias : <function>fib</function></para>
+ <para>Calcule le <varname>n</varname>-ième nombre de Fibonacci. C'est-à-dire le nombre défini de
manière récursive par <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> et
<userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,param...)</synopsis>
+ <para>
+ Calculate the Frobenius number. That is calculate largest
+ number that cannot be given as a non-negative integer linear
+ combination of a given vector of non-negative integers.
+ The vector can be given as separate numbers or a single vector.
+ All the numbers given should have GCD of 1.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (règle_de_combinaison)</synopsis>
+ <para>Galois matrix given a linear combining rule (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>Trouve le vecteur <varname>c</varname> d'entiers non négatifs tel que le produit scalaire
par <varname>v</varname> est égal à n. Si ce n'est pas possible, renvoie <constant>null</constant>.
<varname>v</varname> doit être fourni trié dans l'ordre croissant et doit être composé d'entier non
négatif.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Alias : <function>HarmonicH</function></para>
+ <para>Harmonic Number, the <varname>n</varname>th harmonic number of order <varname>r</varname>.
+ That is, it is the sum of <userinput>1/k^r</userinput> for <varname>k</varname>
+ from 1 to n. Equivalent to <userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Fonction de Hofstadter q(n) définie par q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> for more
information.
+ The sequence is <ulink url="https://oeis.org/A005185">A005185 in OEIS</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (valeurs_ensemencement,règle_de_combinaison,n)</synopsis>
+ <para>Calcule la relation de récurrence linéaire en utilisant l'algorithme de Galois.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,param...)</synopsis>
+ <para>Calcule les coefficients multinomiaux. Prend un vecteur de <varname>k</varname> entiers non
négatifs et calcule les coefficients multinomiaux. Cela correspond aux coefficients dans le polynôme homogène
à <varname>k</varname> variables avec les puissances correspondantes.</para>
+ <para>La formule pour <userinput>Multinomial(a,b,c)</userinput> peut s'écrire sous la forme
:<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting> En d'autres termes, si vous n'avez que deux éléments alors
<userinput>Multinomial(a,b)</userinput> est la même chose que <userinput>Binomial(a+b,a)</userinput> ou
<userinput>Binomial(a+b,b)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Calcule la combinaison qui apparaîtrait après v dans un appel à la fonction combinations, la
première combinaison devrait être <userinput>[1:k]</userinput>. Cette fonction est utile si vous devez
parcourir beaucoup de combinaisons et que vous ne voulez pas gaspiller de la mémoire pour les
enregistrer.</para>
+ <para>
+ For example with Combinations you would normally write a loop like:
+ <screen><userinput>for n in Combinations (4,6) do (
+ SomeFunction (n)
+);</userinput>
+</screen>
+ But with NextCombination you would write something like:
+ <screen><userinput>n:=[1:4];
+do (
+ SomeFunction (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen>
+ See also <link linkend="gel-function-Combinations">Combinations</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Get the Pascal's triangle as a matrix. This will return
+ an <varname>i</varname>+1 by <varname>i</varname>+1 lower diagonal
+ matrix that is the Pascal's triangle after <varname>i</varname>
+ iterations.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Renvoie toutes les permutations de <varname>k</varname> nombres de 1 à <varname>n</varname>
comme un vecteur de vecteurs.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Alias : <function>Pochhammer</function></para>
+ <para>Factorielle croissante (Pochhammer) : (n)_k = n(n+1)...(n+(k-1)).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Alias : <function>StirlingS1</function></para>
+ <para>Nombre de Stirling du premier type.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Alias : <function>StirlingS2</function></para>
+ <para>Nombre de Stirling du second type.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink>
for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (nième)</synopsis>
+ <para>Calcule le <varname>n</varname>-ième nombre triangulaire.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Alias : <function>Binomial</function></para>
+ <para>Calcule le nombre de combinaisons, c'est-à-dire le coefficient binomial.
<varname>n</varname> peut être n'importe quel nombre réel.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Choose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Calculate the number of permutations of size
+ <varname>r</varname> of numbers from 1 to <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Analyse</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Intégration de f par la méthode de Simpson composée sur l'intervalle [a,b] avec n
sous-intervalles avec une erreur de l'ordre max(f'''')*h^4*(b-a)/180, notez que n doit être pair.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
+ <para>Intégration de f par la méthode de Simpson composée sur l'intervalle [a,b] avec un nombre
d'étapes calculé à l'aide de la borne de la dérivée quatrième et la tolérance souhaitée.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Tente de calculer la dérivée en essayant d'abord une approche symbolique puis
numérique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the even periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be even on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>Consultez aussi <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
et <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Return a function that is a Fourier series with the
+coefficients given by the vectors <varname>a</varname> (sines) and
+<varname>b</varname> (cosines). Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>, while
+<userinput>b@(n)</userinput> refers to the term
+<userinput>sin(x*n*pi/L)</userinput>. Either <varname>a</varname>
+or <varname>b</varname> can be <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (fonc,début,inc)</synopsis>
+ <para>Essaie de calculer un produit infini pour une fonction à un seul argument.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (fonc,param,début,inc)</synopsis>
+ <para>Essaie de calculer un produit infini pour une fonction à double arguments avec
func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (fonc,début,inc)</synopsis>
+ <para>Essaie de calculer une somme infinie pour une fonction à un seul argument.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (fonc,param,début,inc)</synopsis>
+ <para>Essaie de calculer une somme infinie pour une fonction à double arguments avec
func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Essaie de voir si une fonction à valeur réelle est continue en x0 en calculant la limite en
ce point.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Teste de différentiabilité en approchant les limites gauche et droite et en les
comparant.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Calcule la limite gauche d'une fonction à valeurs réelles en x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Calcule la limite d'une fonction à valeur réelle en x0. Essaie de calculer les deux limites
à gauche et à droite.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Intégration par la méthode des rectangles.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Alias : <function>NDerivative</function></para>
+ <para>Essaie de calculer la dérivée par méthode numérique.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of vectors <userinput>[a,b]</userinput>
+where <varname>a</varname> are the cosine coefficients and
+<varname>b</varname> are the sine coefficients of
+the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. This is the
+trigonometric real series composed of sines and cosines. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.
+Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Intégration de f entre a et b, en suivant la règle définie par
<varname>NumericalIntegralFunction</varname> et en utilisant les <varname>NumericalIntegralSteps</varname>
pas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Essaie de calculer la dérivée à gauche par méthode numérique.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
+ <para>Essaie de calculer la limite de f (step_fun(i)) lorsque i va de 1 à N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Essaie de calculer la dérivée à droite par méthode numérique.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the odd periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be odd on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>Consultez aussi <link
linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link> et <link
linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Calcule la dérivée d'un côté en utilisant une formule à cinq points.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Calcule la dérivée d'un côté en utilisant une formule à trois points.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Return a function that is the periodic extension of
+<function>f</function> defined on the interval <userinput>[a,b]</userinput>
+and has period <userinput>b-a</userinput>.</para>
+ <para>Consultez également <link
linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> et <link
linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Calcule la limite à droite d'une fonction à valeurs réelles en x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Calcule la dérivée des deux côtés en utilisant une formule à cinq points.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Calcule la dérivée des deux côtés en utilisant une formule à trois points.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Fonctions</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Alias : <function>Arg</function> <function>arg</function></para>
+ <para>Renvoie l'argument (angle) d'un nombre complexe.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Bessel function of the first kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Bessel function of the first kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Bessel function of the first kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Bessel function of the second kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Bessel function of the second kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Bessel function of the second kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichlet kernel of order <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Renvoie 1 si et seulement si tous les éléments sont nuls.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Alias : <function>erf</function></para>
+ <para>Fonction erreur, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ErrorFunction">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Noyau Fejer d'ordre <varname>n</varname> évalué en <varname>t</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Alias : <function>Gamma</function></para>
+ <para>La fonction Gamma. Seules les valeurs réelles sont actuellement implémentées.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Renvoie 1 si et seulement si tous les éléments sont égaux.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>
+ The principal branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>.
+ That is, <function>LambertW</function> is the inverse of
+ the expression <userinput>x*e^x</userinput>. Even for
+ real <varname>x</varname> this expression is not one to one and
+ therefore has two branches over <userinput>[-1/e,0)</userinput>.
+ See <link linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> for the
other real branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>
+ The minus-one branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>
+ and less than 0.
+ That is, <function>LambertWm1</function> is the second
+ branch of the inverse of <userinput>x*e^x</userinput>.
+ See <link linkend="gel-function-LambertW"><function>LambertW</function></link> for the
principal branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (fonc,x,incr)</synopsis>
+ <para>Cherche la première valeur pour laquelle f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Transformation de Möbius du disque vers lui-même en faisant correspondre a à 0.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Transformation de Möbius utilisant le rapport croisé en prenant z2, z3, z4 à 1, 0 et
l'infini respectivement.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Transformation de Möbius utilisant le rapport croisé en prenant l'infini à l'infini et z2,
z3 à 1 et 0 respectivement.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Transformation de Möbius utilisant le rapport croisé en prenant l'infini à 1 et z3, z4 à 0
et l'infini respectivement.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Transformation de Möbius utilisant le rapport croisé en prenant l'infini à 0 et z2, z4 à 1
et l'infini respectivement.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Le noyau de Poisson sur D(0,1) (non normalisé à 1, donc son intégrale vaut 2 pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Le noyau de Poisson sur D(0,R) (non normalisé à 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Alias : <function>zeta</function></para>
+ <para>Fonction zeta de Riemann (seules les valeurs réelles sont actuellement implémentées).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>La fonction échelon vaut 0 pour x<0, 1 sinon. C'est l'intégrale de la fonction delta de
Dirac. Elle est aussi appelée fonction d'Heaviside.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>La fonction <function>cis</function> est la même que
<userinput>cos(x)+1i*sin(x)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Convertit les degrés en radians.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Convertit les radians en degrés.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Calculates the unnormalized sinc function, that is
+ <userinput>sin(x)/x</userinput>.
+ If you want the normalized function call <userinput>sinc(pi*x)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Résolution d'équations</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>Calcule les racines d'un polynôme cubique (de degré 3) en utilisant la formule cubique. Le
polynôme doit être fourni sous la forme d'un vecteur de coefficients. Par exemple <userinput>4*x^3 + 2*x +
1</userinput> correspond au vecteur <userinput>[1,2,0,4]</userinput>. Renvoie un vecteur colonne contenant
les trois solutions. La première solution est toujours celle qui est réelle puisqu'un polynôme cubique
possède toujours une solution réelle.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns <varname>y</varname> at <varname>x1</varname>.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKutta">RungeKutta</link>
+ for solving ODE.
+ </para>
+ <para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un
vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas
<varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme
deuxième argument et doit renvoyer un vecteur de la même taille.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link>
+ for solving ODE.
+ Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un
vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas
<varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme
deuxième argument et doit renvoyer un vecteur de la même taille.</para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the bisection method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the method of false position.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Cherche la racine d'une fonction en utilisant la méthode de Muller. <varname>TOL</varname>
est la tolérance permise et <varname>N</varname> est la limite du nombre d'itérations réalisées, 0 signifiant
pas de limite. La fonction renvoie un vecteur <userinput>[succes,valeur,itération]</userinput> dans lequel
<varname>succes</varname> est un booléen indiquant la réussite, <varname>valeur</varname> est la dernière
valeur calculée et <varname>itération</varname> est le nombre d'itérations réalisées.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the secant method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Halley's method. <varname>f</varname> is
+ the function, <varname>df</varname> is the derivative of
+ <varname>f</varname>, and <varname>ddf</varname> is the second derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link> and
<link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Newton's method. <varname>f</varname> is
+ the function and <varname>df</varname> is the derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> and <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>Calcule les racines d'un polynôme (de degré 1 à 4) en utilisant une des formules adaptée à
ce type de polynôme. Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. Par exemple
<userinput>4*x^3 + 2*x + 1</userinput> correspond au vecteur <userinput>[1,2,0,4]</userinput>. Renvoie un
vecteur colonne contenant les solutions.</para>
+ <para>La fonction appelle <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>,
<link linkend="gel-function-CubicFormula">CubicFormula</link> et <link
linkend="gel-function-QuarticFormula">QuarticFormula</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>Calcule les racines d'un polynôme quadratique (de degré 2) en utilisant la formule
quadratique. Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. <userinput>3*x^2 + 2*x
+ 1</userinput> correspond au vecteur <userinput>[1,2,3]</userinput>. Renvoie un vecteur colonne contenant
les deux solutions.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>Calcule les racines d'un polynôme quartique (de degré 4) en utilisant la formule quartique.
Le polynôme doit être fourni sous la forme d'un vecteur de coefficients. <userinput>5*x^4 + 2*x +
1</userinput> correspond au vecteur <userinput>[1,2,0,0,5]</userinput>. Renvoie un vecteur colonne contenant
les quatre solutions.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>Utilise la méthode classique non adaptative de Runge-Kutta du quatrième ordre pour résoudre
numériquement y'=f(x,y) avec les valeurs initiales <varname>x0</varname>, <varname>y0</varname> allant vers
<varname>x1</varname> avec <varname>n</varname> incréments, renvoie <varname>y</varname> en
<varname>x1</varname>.</para>
+ <para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un
vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas
<varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme
deuxième argument et doit renvoyer un vecteur de la même taille.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values. Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>Les systèmes peuvent être résolus en ayant uniquement <varname>y</varname> sous la forme d'un
vecteur (colonne) partout. C'est-à-dire <varname>y0</varname> peut être un vecteur et dans ce cas
<varname>f</varname> doit prendre un nombre <varname>x</varname> et un vecteur de la même taille comme
deuxième argument et doit renvoyer un vecteur de la même taille.</para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Statistiques</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Alias : <function>average</function><function>Mean</function><function>mean</function></para>
+ <para>Calculate average (the arithmetic mean) of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Intégrale de la fonction de Gauss de 0 à <varname>x</varname> (aire sous la courbe
normale).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>Fonction distribution de Gauss normalisée (courbe normale).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Alias : <function>median</function></para>
+ <para>Calcule la médiane de toute une matrice.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Alias : <function>stdevp</function></para>
+ <para>Calcule l'écart type de la population de toute une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Alias : <function>RowMean</function></para>
+ <para>Calculate average of each row in a matrix. That is, compute the
+ arithmetic mean.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Calcule la médiane de chaque ligne d'une matrice et renvoie un vecteur colonne.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Alias : <function>rowstdevp</function></para>
+ <para>Calcule l'écart type de la population des lignes d'une matrice et renvoie un vecteur
colonne.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Alias : <function>rowstdev</function></para>
+ <para>Calcule l'écart type des lignes d'une matrice et renvoie un vecteur colonne.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Alias : <function>stdev</function></para>
+ <para>Calcule l'écart type de toute une matrice.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Polynômes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Ajoute deux polynômes (vecteurs).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Divise deux polynômes (en tant que vecteurs) en utilisant la division longue. Renvoie le
quotient des deux polynômes. L'argument optionnel <varname>r</varname> est utilisé pour renvoyer le reste. Le
reste a un degré plus bas que <varname>q</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Vérifie qu'un vecteur est utilisable en tant que polynôme.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Multiplie deux polynômes (comme vecteurs).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,valeurinitiale,epsilon,maxn)</synopsis>
+ <para>Find a root of a polynomial using Newton's method. <varname>poly</varname> is
+ the polynomial as a vector and <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Renvoie la dérivée seconde du polynôme (comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Prend la dérivée du polynôme (comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Fabrique une fonction à partir d'un polynôme (comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Fabrique une chaîne à partir d'un polynôme (comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Soustrait deux polynômes (comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Tronque les zéros d'un polynôme (défini comme vecteur).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Théorie des ensembles</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Renvoie l'intersection, selon la théorie des ensembles, de X et Y (X et Y sont des vecteurs
supposés être des ensembles).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Renvoie <constant>true</constant> (vrai) si l'élément x fait partie de l'ensemble X (où X est
un vecteur supposé être un ensemble).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Renvoie <constant>true</constant> (vrai) si X est un sous-ensemble de Y (X et Y sont des
vecteurs supposés être des ensembles).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Renvoie un vecteur où chaque élément de X n'apparaît qu'une seule fois.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Renvoie la différence X-Y selon la théorie des ensembles (X et Y sont des vecteurs supposés
être des ensembles).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Renvoie l'union, selon la théorie des ensembles, de X et Y (X et Y sont des vecteurs
supposés être des ensembles).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Commutative Algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>For a Hilbert function that is c for degree d, given the Macaulay bound for the Hilbert
function of degree d+1 (The c^<d> operator from Green's proof).</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>The c_<d> operator from Green's proof of Macaulay's Theorem.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Return the dth Macaulay representation of a positive integer c.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Divers</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vec)</synopsis>
+ <para>Convert a vector of ASCII values to a string.
+ See also
+ <link linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vec,alphabet)</synopsis>
+ <para>Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string.
A <constant>null</constant> vector results in an empty string.
+ See also
+ <link linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (chaîne)</synopsis>
+ <para>Convert a string to a (row) vector of ASCII values.
+ See also
+ <link linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (chaîne,alphabet)</synopsis>
+ <para>Convert a string to a (row) vector of 0-based alphabet values
+ (positions in the alphabet string), -1's for unknown letters.
+ An empty string results in a <constant>null</constant>.
+ See also
+ <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Calcul symbolique</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Essaie de dériver symboliquement la fonction f, où f est une fonction à une variable.</para>
+ <para>Exemples : <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen></para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Essaie de dériver symboliquement la fonction f, où f est une fonction à une variable, renvoie
<constant>null</constant> en cas d'échec mais reste silencieux (consultez <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Essaie de dériver symboliquement une fonction n fois (consultez <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Essaie de dériver symboliquement une fonction n fois silencieusement et renvoie
<constant>null</constant> en cas d'échec (consultez <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Attempt to construct the Taylor approximation function around x0 to the nth degree.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Tracé de graphiques</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (file,type)</synopsis>
+ <synopsis>ExportPlot (file)</synopsis>
+ <para>
+ Export the contents of the plotting window to a file.
+ The type is a string that specifies the file type to
+ use, "png", "eps", or "ps". If the type is not
+ specified, then it is taken to be the extension, in
+ which case the extension must be ".png", ".eps", or ".ps".
+ </para>
+ <para>
+ Note that files are overwritten without asking.
+ </para>
+ <para>
+ On successful export, true is returned. Otherwise
+ error is printed and exception is raised.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>ExportPlot("file.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/directory/file","eps")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (fonc1,fonc2,fonc3,...)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
+ <synopsis>LinePlot (fonc1,fonc2,fonc3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a function (or several functions) with a line.
+ First (up to 10) arguments are functions, then optionally
+ you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>)
+ If the y limits are not specified, then the functions are computed and then the maxima and minima
+ are used.
+ </para>
+ <para>Le paramètre <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne
l'affichage de la légende.</para>
+ <para>Exemples : <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>Affiche la fenêtre d'affichage du tracé et efface les courbes déjà tracées.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (fonc,...)</synopsis>
+ <synopsis>LinePlotCParametric (fonc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (fonc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>Trace la courbe d'une fonction paramétrique à valeurs complexes. En premier vient la
fonction qui renvoie <computeroutput>x+iy</computeroutput> puis, en option, les limites de
<varname>t</varname> sous la forme <userinput>t1,t2,tinc</userinput> puis, en option, les limites de la
fenêtre de tracé sous la forme <userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>
+ If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>Le paramètre <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne
l'affichage de la légende.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,
+ <varname>x2</varname>,<varname>y2</varname> can be replaced by an
+ <varname>n</varname> by 2 matrix for a longer polyline.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ arrows, the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ <userinput>"arrow"</userinput>, or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, type of arrow, or the legend. (Arrow and window are from version 1.0.6 onwards.)
+ </para>
+ <para>
+ If the line is to be treated as a filled polygon, filled with the given color, you
+ can specify the argument <userinput>"filled"</userinput>. Since version 1.0.22 onwards.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Arrow specification should be
+ <userinput>"origin"</userinput>,
+ <userinput>"end"</userinput>,
+ <userinput>"both"</userinput>, or
+ <userinput>"none"</userinput>.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector.
+ </para>
+ <para>
+ Specifying <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>.
+ The input can be an <varname>n</varname> by 2 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th
roots of unity")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector. Therefore, notice in the
+ last example the transpose of the vector <userinput>0:6</userinput>
+ to make it into a column vector.
+ </para>
+ <para>
+ Available from version 1.0.18 onwards. Specifying
+ <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>
+ Returns a row vector of a point on the line plot corresponding to
+ the current mouse location. If the line plot is not visible,
+ then prints an error and returns <constant>null</constant>.
+ In this case you should run
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> or
+ <link linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link>
+ to put the graphing window into the line plot mode.
+ See also
+ <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfonc,yfonc,...)</synopsis>
+ <synopsis>LinePlotParametric (xfonc,yfonc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfonc,yfonc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
+ <para>Trace la courbe d'une fonction paramétrique. En premier viennent les fonctions de
<varname>x</varname> et <varname>y</varname> puis, en option, les limites de <varname>t</varname> sous la
forme <userinput>t1,t2,tinc</userinput> puis, en option, les limites de la fenêtre de tracé sous la forme
<userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>
+ If x and y limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>Le paramètre <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne
l'affichage de la légende.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>
+ If in line plot mode, waits for a click on the line plot window
+ and returns the location of the click as a row vector.
+ If the window is closed
+ the function returns immediately with <constant>null</constant>.
+ If the window is not in line plot mode, it is put in it and shown
+ if not shown.
+ See also
+ <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>
+ Freeze drawing of the canvas plot temporarily. Useful if you need to draw a bunch of
elements
+ and want to delay drawing everything to avoid flicker in an animation. After everything
+ has been drawn you should call <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.
+ </para>
+ <para>
+ The canvas is always thawed after end of any execution, so it will never remain frozen.
The moment
+ a new command line is shown for example the plot canvas is thawed automatically. Also note
that
+ calls to freeze and thaw may be safely nested.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>
+ Thaw the plot canvas frozen by
+ <link linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link>
+ and redraw the canvas immediately. The canvas is also always thawed after end of execution
+ of any program.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>
+ Show and raise the plot window, creating it if necessary.
+ Normally the window is created when one of the plotting
+ functions is called, but it is not always raised if it
+ happens to be below other windows. So this function is
+ good to call in scripts where the plot window might have
+ been created before, and by now is hidden behind the
+ console or other windows.
+ </para>
+ <para>Version 1.0.19 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>Efface les solutions tracées par la fonction <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>Lorsqu'un tracé de champ de directions est actif, dessine une solution avec les conditions
initiales spécifiées. La méthode standard de Runge-Kutta est utilisée avec l'incrément <varname>dx</varname>.
Les solutions restent affichées sur le graphe jusqu'à ce qu'un tracé différent soit affiché ou jusqu'à ce que
vous appeliez la fonction <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>. Vous
pouvez aussi utiliser l'interface graphique pour tracer des solutions et indiquer des conditions initiales
spécifiques avec la souris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (fonc)</synopsis>
+ <synopsis>SlopefieldPlot (fonc,x1,x2,y1,y2)</synopsis>
+ <para>Trace un champ de directions. La fonction <varname>fonc</varname> doit accepter deux nombres
réels <varname>x</varname> et <varname>y</varname> ou seulement un nombre complexe. En option, vous pouvez
indiquer les limites de la fenêtre de tracé comme <varname>x1</varname>, <varname>x2</varname>,
<varname>y1</varname>, <varname>y2</varname>. Si les limites ne sont pas indiquées alors les limites
actuellement utilisées s'appliquent (consultez <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Le paramètre <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne
l'affichage de la légende.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (fonc)</synopsis>
+ <synopsis>SurfacePlot (fonc,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a surface function that takes either two arguments or a complex number. First comes the
function then optionally limits as <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>,
+ <varname>z1</varname>, <varname>z2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>).
+ Genius can only plot a single surface function at this time.
+ </para>
+ <para>
+ If the z limits are not specified then the maxima and minima of the function are used.
+ </para>
+ <para>Exemples : <screen><prompt>genius></prompt>
<userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>
+ Show the surface plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ <para>
+ Available in version 1.0.19 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,label)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>
+ Plot a surface from data. The data is an n by 3 matrix whose
+ rows are the x, y and z coordinates. The data can also be
+ simply a vector whose length is a multiple of 3 and so
+ contains the triples of x, y, z. The data should contain at
+ least 3 points.
+ </para>
+ <para>
+ Optionally we can give the label and also optionally the
+ limits. If limits are not given, they are computed from
+ the data, <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>
+ is not used, if you want to use it, pass it in explicitly.
+ If label is not given then empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"My data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen>
+ </para>
+ <para>
+ Here's an example of how to plot in polar coordinates,
+ in particular how to plot the function
+ <userinput>-r^2 * theta</userinput>:
+ <screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi
by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)</synopsis>
+ <para>
+ Plot a surface from regular rectangular data.
+ The data is given in a n by m matrix where the rows are the
+ x coordinate and the columns are the y coordinate.
+ The x coordinate is divided into equal n-1 subintervals
+ and y coordinate is divided into equal m-1 subintervals.
+ The limits <varname>x1</varname> and <varname>x2</varname>
+ give the interval on the x-axis that we use, and
+ the limits <varname>y1</varname> and <varname>y2</varname>
+ give the interval on the y-axis that we use.
+ If the limits <varname>z1</varname> and <varname>z2</varname>
+ are not given they are computed from the data (to be
+ the extreme values from the data).
+ </para>
+ <para>
+ Optionally we can give the label, if label is not given then
+ empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> can be replaced by an
+ <varname>n</varname> by 3 matrix for a longer polyline.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>,<varname>z</varname>.
+ The input can be an <varname>n</varname> by 3 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>Efface les solutions dessinées par la fonction <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>.</para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlong)</synopsis>
+ <para>Lorsqu'un tracé de champ de vecteurs est actif, dessine une solution avec les conditions
initiales spécifiées. La méthode standard de Runge-Kutta est utilisée avec l'incrément <varname>dt</varname>
sur un intervalle de temps <varname>tlong</varname>. Les solutions restent affichées sur le graphe jusqu'à ce
qu'un tracé différent soit affiché ou jusqu'à ce que vous appeliez la fonction <link
linkend="gel-function-SlopefieldClearSolutions"><function>VectorfieldClearSolutions</function></link>. Vous
pouvez aussi utiliser l'interface graphique pour tracer des solutions et indiquer des conditions initiales
spécifiques avec la souris.</para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (foncx, foncy)</synopsis>
+ <synopsis>VectorfieldPlot (foncx, foncy, x1, x2, y1, y2)</synopsis>
+ <para>Trace un champ de vecteurs à deux dimensions. La fonction <varname>funcx</varname> doit être
la dérivée dx/dt du champ de vecteurs et la fonction <varname>funcy</varname> la dérivée dy/dt du champ de
vecteurs. Les fonctions doivent accepter deux nombres réels <varname>x</varname> et <varname>y</varname> ou
seulement un nombre complexe. Lorsque le paramètre <link
linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link> est
<constant>true</constant> (vrai) alors l'amplitude des vecteurs est normalisée. Seule la direction et non pas
l'amplitude est tracée.</para>
+ <para>Vous pouvez spécifier, en option, les limites de la fenêtre de tracé sous la forme
<varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>,
<varname>z1</varname>, <varname>z2</varname>. Si les limites ne sont pas indiquées alors les limites
actuellement utilisées s'appliquent (consultez <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Le paramètre <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> conditionne
l'affichage de la légende.</para>
+ <para>Exemples : <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y,
`(x,y)=y^2-x, -1, 1, -1, 1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Exemple de programmes en GEL</title>
+
+ <para>Voici une fonction qui calcule des factorielles : <programlisting><![CDATA[function f(x) = if x <=
1 then 1 else (f(x-1)*x)
+]]></programlisting></para>
+ <para>Avec des indentations, cela devient : <programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting></para>
+ <para>C'est un portage direct de la fonction factorielle de la page de manuel de
<application>bc</application>. La syntaxe semble similaire à celle de <application>bc</application> mais
différente par le fait que dans GEL, la dernière expression est celle qui est renvoyée. En utilisant la
fonction <literal>return</literal> à la place, cela donnerait : <programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting></para>
+
+ <para>La façon, de loin la plus facile, de définir une fonction factorielle serait d'utiliser la boucle
de produit de la manière suivante. Ce n'est pas seulement la plus courte et la plus rapide mais aussi
probablement la version la plus lisible. <programlisting>function f(x) = prod k=1 to x do k
+</programlisting></para>
+
+ <para>
+Here is a larger example, this basically redefines the internal
+<link linkend="gel-function-ref"><function>ref</function></link> function to calculate the row echelon form
of a
+matrix. The function <function>ref</function> is built in and much faster,
+but this example demonstrates some of the more complex features of GEL.
+<programlisting><![CDATA[# Calculate the row-echelon form of a matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting>
+ </para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Paramètres</title>
+
+ <para>Pour configurer l'<application>Outil de maths Genius</application>, choisissez
<menuchoice><guimenu>Paramètres</guimenu><guimenuitem>Préférences</guimenuitem></menuchoice>. Il y a
plusieurs paramètres de base fournis par le calculateur en plus de ceux fournis par la bibliothèque standard.
Ils contrôlent le comportement du calculateur.</para>
+
+ <note>
+ <title>Modifications des paramètres avec GEL</title>
+ <para>Beaucoup de paramètres dans Genius ne sont simplement que des variables globales qui peuvent
être évaluées et auxquelles on peut attribuer des valeurs de la même manière que pour des variables normales.
Consultez <xref linkend="genius-gel-variables"/> à propos de l'évaluation et <xref
linkend="genius-gel-function-parameters"/> pour une liste des réglages qui peuvent être modifiés de cette
façon.</para>
+ <para>Par exemple, vous pouvez paramétrer le nombre maximum de chiffres pour l'affichage d'un résultat
à 12 en saisissant : <programlisting>MaxDigits = 12
+</programlisting></para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Sortie</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Nombre maximum de chiffres à afficher</guilabel>
+ </term>
+ <listitem>
+ <para>The maximum digits in a result (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Résultats en nombres flottants</guilabel>
+ </term>
+ <listitem>
+ <para>If the results should be always printed as floats (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Nombres flottants en notation scientifique</guilabel>
+ </term>
+ <listitem>
+ <para>If floats should be in scientific notation (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Toujours afficher les expressions complètes</guilabel>
+ </term>
+ <listitem>
+ <para>Should we print out full expressions for non-numeric return values (longer than a
line) (<link linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Utiliser les fractions mixtes</guilabel>
+ </term>
+ <listitem>
+ <para>If fractions should be printed as mixed fractions such as "1 1/3" rather than "4/3".
(<link linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Afficher 0.0 lorsqu'un nombre flottant est inférieur à 10^-x (0=ne jamais
arrondir)</guilabel>
+ </term>
+ <listitem>
+ <para>How to chop output. But only when other numbers nearby are large.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Arrondir les nombres uniquement si un autre nombre est plus grand que 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>When to chop output. This is set by the parameter <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Se souvenir des paramètres de sortie d'une session à l'autre</guilabel>
+ </term>
+ <listitem>
+ <para>Si les réglages concernant la sortie dans le cadre <guilabel>Options pour la sortie des
nombres/expressions</guilabel> doivent être conservés pour la session suivante. Ne s'applique pas au cadre
<guilabel>Options pour la sortie erreurs/information</guilabel>.</para>
+ <para>Si ce n'est pas coché, les réglages précédemment enregistrés ou ceux par défaut sont
utilisés à chaque lancement de Genius. Notez que les paramètres sont enregistrés à la fin de la session donc
si vous souhaitez modifier la valeur par défaut, cochez cette case, redémarrez Genius puis décochez-la à
nouveau.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Afficher les erreurs dans une boîte de dialogue</guilabel>
+ </term>
+ <listitem>
+ <para>If set the errors will be displayed in a separate dialog, if
+ unset the errors will be printed on the console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Afficher les messages d'informations dans une boîte de dialogue</guilabel>
+ </term>
+ <listitem>
+ <para>If set the information messages will be displayed in a separate
+ dialog, if unset the information messages will be printed on the
+ console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Nombre maximum d'erreurs à afficher</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The maximum number of errors to return on one evaluation
+ (<link linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). If you set this to
0 then
+ all errors are always returned. Usually if some loop causes
+ many errors, then it is unlikely that you will be able to make
+ sense out of more than a few of these, so seeing a long list
+ of errors is usually not helpful.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>En plus de ces préférences, il existe d'autres préférences qui ne peuvent être modifiées qu'en
les paramétrant dans l'espace de la console. Pour celles qui peuvent affecter la sortie, consultez <xref
linkend="genius-gel-function-parameters"/>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>La base utilisée pour afficher les entiers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>A string, can be <literal>"normal"</literal>,
+<literal>"latex"</literal>, <literal>"mathml"</literal> or
+<literal>"troff"</literal> and it will affect how matrices (and perhaps other
+stuff) is printed, useful for pasting into documents. Normal style is the
+default human readable printing style of <application>Genius Mathematics Tool</application>. The other
styles are for
+typesetting in LaTeX, MathML (XML), or in Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Précision</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Précision des nombres en virgule flottante</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The floating point precision in bits
+ (<link linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>).
+ Note that changing this only affects newly computed quantities.
+ Old values stored in variables are obviously still in the old
+ precision and if you want to have them more precise you will have
+ to recompute them. Exceptions to this are the system constants
+ such as <link linkend="gel-function-pi"><function>pi</function></link> or
+ <link linkend="gel-function-e"><function>e</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Se souvenir de la précision choisie d'une session à l'autre</guilabel>
+ </term>
+ <listitem>
+ <para>Si le réglage de la précision doit être conservé pour la prochaine session. Si ce n'est pas
coché, le paramétrage précédemment enregistré ou celui par défaut est utilisé à chaque lancement de Genius.
Notez que les paramètres sont enregistrés à la fin de la session donc si vous souhaitez modifier la valeur
par défaut, cochez cette case, redémarrez genius puis décochez-la à nouveau.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Terminal</title>
+
+ <para>Le terminal se réfère à la console dans la zone de travail.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Lignes d'historique</guilabel>
+ </term>
+ <listitem>
+ <para>Nombre de lignes d'historique dans le terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Police</guilabel>
+ </term>
+ <listitem>
+ <para>La police à utiliser dans le terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Noir sur blanc</guilabel>
+ </term>
+ <listitem>
+ <para>Si vous utilisez du noir sur blanc dans le terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Curseur clignotant</guilabel>
+ </term>
+ <listitem>
+ <para>Si le curseur dans le terminal doit clignoter lorsque le terminal possède le focus. Cela peut
être parfois ennuyant et génère du trafic inutile si vous utilisez Genius à distance.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Mémoire</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Nombre maximum de nœuds à allouer</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Internally all data is put onto small nodes in memory. This gives
+ a limit on the maximum number of nodes to allocate for
+ computations. This limit avoids the problem of running out of memory
+ if you do something by mistake that uses too much memory, such
+ as a recursion without end. This could slow your computer and make
+ it hard to even interrupt the program.
+ </para>
+ <para>Une fois que la limite est atteinte, l'<application>Outil de maths Genius</application> vous
demande si vous voulez interrompre le calcul ou si vous souhaitez continuer. Si vous continuez, aucune limite
n'est appliquée et il est possible de saturer la mémoire de l'ordinateur. La limite s'applique à nouveau la
prochaine fois que vous exécuterez un programme ou une expression dans la console indépendamment de votre
réponse précédente.</para>
+ <para>Régler la limite à zéro signifie qu'il n'y a aucune limite sur la quantité de mémoire
utilisable par Genius.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>À propos de l'<application>Outil de maths Genius</application></title>
+
+ <para>L'<application>Outil de maths Genius</application> a été écrit par Jiří (George) Lebl
(<email>jirka 5z com</email>). L'historique de l'<application>Outil de maths Genius</application> commence à
la fin de l'année 1997. C'était la première calculatrice pour GNOME, mais il a grossi au point de devenir
bien plus qu'une simple calculatrice de bureau. Pour trouver plus d'informations à propos de
l'<application>Outil de maths Genius</application>, visitez la <ulink url="http://www.jirka.org/genius.html"
type="http">page Web de Genius</ulink>.</para>
+ <para>Pour rapporter une anomalie ou émettre une suggestion concernant cette application ou ce manuel,
envoyez un courriel à l'auteur ou à la liste de discussion (voir site Web).</para>
+
+ <para> This program is distributed under the terms of the GNU
+ General Public license as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option)
+ any later version. A copy of this license can be found at this
+ <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">link</ulink>, or in the file
+ COPYING included with the source code of this program. </para>
+
+ <para>Jiří Lebl was during various parts of the development
+ partially supported for the work by NSF grants DMS 0900885,
+ DMS 1362337,
+ the University of Illinois at Urbana-Champaign,
+ the University of California at San Diego,
+ the University of Wisconsin-Madison, and
+ Oklahoma State University. The software has
+ been used for both teaching and research.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/fr/html/index.html b/help/fr/html/index.html
index 313d6c3..9e9d3af 100644
--- a/help/fr/html/index.html
+++ b/help/fr/html/index.html
@@ -1,5 +1,5 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Manuel de
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Manuel de l'Outil de maths Genius."><link rel="home" href="index.html" title="Manuel de
Genius"><link rel="next" href="ch01.html" title="Chapitre 1. Introduction"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Manuel de Genius</th></tr><tr><td width="20%"
align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n"
href="ch01.html">Suivant</a></td></tr></table><hr></div><div lang="fr" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Manuel de Genius</h1></div><div><div
class="authorgroup"><div class="author"><h3 class="author"><span class="fir
stname">Jiří</span> <span class="surname">Lebl</span></h3><div class="affiliation"><span
class="orgname">Oklahoma State University<br></span><div class="address"><p> <code class="email"><<a
class="email" href="mailto:jirka 5z com">jirka 5z com</a>></code> </p></div></div></div><div
class="author"><h3 class="author"><span class="firstname">Kai</span> <span
class="surname">Willadsen</span></h3><div class="affiliation"><span class="orgname">Université de Queensland,
Australie<br></span><div class="address"><p> <code class="email"><<a class="email" href="mailto:kaiw itee
uq edu au">kaiw itee uq edu au</a>></code> </p></div></div></div></div></div><div><p
class="releaseinfo">This manual describes version 1.0.22 of Genius.
- </p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2010-11 Bruno
Brouard (annoa b gmail com)</p></div><div><p class="copyright">Copyright © 2011 Luc Pionchon (pionchon luc
gmail com)</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>Permission vous est donnée de
copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License,
Version 1.1 ou ultérieure publiée par la Free Software Foundation sans section inaltérable, sans texte de
première page de couverture ni texte de dernière page de couverture. Vous trouverez un exemplaire de cette
licence en suivant ce <a class="ulink" href="ghelp:fdl" target="_top">lien</a> ou dans le fichier
COPYING-DOCS fourni avec le présent manuel.</p><p>Ce manuel fait partie de la collection de manuels GNOME
distribués selon les term
es de la licence de documentation libre GNU. Si vous souhaitez distribuer ce manuel indépendamment de la
collection, vous devez joindre un exemplaire de la licence au document, comme indiqué dans la section 6 de
celle-ci.</p><p>La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services
sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du
projet de Documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers,
soit leur première lettre est en majuscule.</p><p>LE PRÉSENT DOCUMENT ET SES VERSIONS MODIFIÉES SONT FOURNIS
SELON LES TERMES DE LA LICENCE DE DOCUMENTATION LIBRE GNU SACHANT QUE : </p><div class="orderedlist"><ol
class="orderedlist" type="1"><li class="listitem"><p>LE PRÉSENT DOCUMENT EST FOURNI « TEL QUEL », SANS AUCUNE
GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS, ET SANS LIMITATION, LES GARANTIES DE MARCHANDABILITÉ,
D'ADÉQUATION �
� UN OBJECTIF PARTICULIER OU DE NON INFRACTION DU DOCUMENT OU DE SA VERSION MODIFIÉE. L'UTILISATEUR ASSUME
TOUT RISQUE RELATIF À LA QUALITÉ, À LA PERTINENCE ET À LA PERFORMANCE DU DOCUMENT OU DE SA VERSION DE MISE À
JOUR. SI LE DOCUMENT OU SA VERSION MODIFIÉE S'AVÉRAIT DÉFECTUEUSE, L'UTILISATEUR (ET NON LE RÉDACTEUR
INITIAL, L'AUTEUR, NI TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS DE TOUTE INTERVENTION, RÉPARATION OU
CORRECTION NÉCESSAIRE. CETTE DÉNÉGATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE CETTE LICENCE.
AUCUNE UTILISATION DE CE DOCUMENT OU DE SA VERSION MODIFIÉE N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD,
EXCEPTÉ SOUS CETTE DÉNÉGATION DE RESPONSABILITÉ ; </p></li><li class="listitem"><p>EN AUCUNE CIRCONSTANCE ET
SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE D'UN DÉLIT CIVIL (Y COMPRIS LA NÉGLIGENCE), CONTRACTUEL
OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT OU TOUT DISTRIBUTEUR DE CE DOCUMENT OU DE SA V
ERSION MODIFIÉE, OU TOUT FOURNISSEUR DE L'UNE DE CES PARTIES NE POURRA ÊTRE TENU RESPONSABLE À L'ÉGARD DE
QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER, OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS
LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, À UN ARRÊT DE TRAVAIL, À UNE DÉFAILLANCE OU UN MAUVAIS
FONCTIONNEMENT INFORMATIQUE, OU À TOUT AUTRE DOMMAGE OU PERTE LIÉE À L'UTILISATION DU DOCUMENT ET DE SES
VERSIONS MODIFIÉES, MÊME SI LADITE PARTIE A ÉTÉ INFORMÉE DE L'ÉVENTUALITÉ DE TELS
DOMMAGES.</p></li></ol></div></div></div><div><div class="legalnotice"><a name="idm45942141224496"></a><p
class="legalnotice-title"><b>Votre avis</b></p><p>
+ </p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2010-11 Bruno
Brouard (annoa b gmail com)</p></div><div><p class="copyright">Copyright © 2011 Luc Pionchon (pionchon luc
gmail com)</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>Permission vous est donnée de
copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License,
Version 1.1 ou ultérieure publiée par la Free Software Foundation sans section inaltérable, sans texte de
première page de couverture ni texte de dernière page de couverture. Vous trouverez un exemplaire de cette
licence en suivant ce <a class="ulink" href="ghelp:fdl" target="_top">lien</a> ou dans le fichier
COPYING-DOCS fourni avec le présent manuel.</p><p>Ce manuel fait partie de la collection de manuels GNOME
distribués selon les term
es de la licence de documentation libre GNU. Si vous souhaitez distribuer ce manuel indépendamment de la
collection, vous devez joindre un exemplaire de la licence au document, comme indiqué dans la section 6 de
celle-ci.</p><p>La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services
sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du
projet de Documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers,
soit leur première lettre est en majuscule.</p><p>LE PRÉSENT DOCUMENT ET SES VERSIONS MODIFIÉES SONT FOURNIS
SELON LES TERMES DE LA LICENCE DE DOCUMENTATION LIBRE GNU SACHANT QUE : </p><div class="orderedlist"><ol
class="orderedlist" type="1"><li class="listitem"><p>LE PRÉSENT DOCUMENT EST FOURNI « TEL QUEL », SANS AUCUNE
GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS, ET SANS LIMITATION, LES GARANTIES DE MARCHANDABILITÉ,
D'ADÉQUATION �
� UN OBJECTIF PARTICULIER OU DE NON INFRACTION DU DOCUMENT OU DE SA VERSION MODIFIÉE. L'UTILISATEUR ASSUME
TOUT RISQUE RELATIF À LA QUALITÉ, À LA PERTINENCE ET À LA PERFORMANCE DU DOCUMENT OU DE SA VERSION DE MISE À
JOUR. SI LE DOCUMENT OU SA VERSION MODIFIÉE S'AVÉRAIT DÉFECTUEUSE, L'UTILISATEUR (ET NON LE RÉDACTEUR
INITIAL, L'AUTEUR, NI TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS DE TOUTE INTERVENTION, RÉPARATION OU
CORRECTION NÉCESSAIRE. CETTE DÉNÉGATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE CETTE LICENCE.
AUCUNE UTILISATION DE CE DOCUMENT OU DE SA VERSION MODIFIÉE N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD,
EXCEPTÉ SOUS CETTE DÉNÉGATION DE RESPONSABILITÉ ; </p></li><li class="listitem"><p>EN AUCUNE CIRCONSTANCE ET
SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE D'UN DÉLIT CIVIL (Y COMPRIS LA NÉGLIGENCE), CONTRACTUEL
OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT OU TOUT DISTRIBUTEUR DE CE DOCUMENT OU DE SA V
ERSION MODIFIÉE, OU TOUT FOURNISSEUR DE L'UNE DE CES PARTIES NE POURRA ÊTRE TENU RESPONSABLE À L'ÉGARD DE
QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER, OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS
LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, À UN ARRÊT DE TRAVAIL, À UNE DÉFAILLANCE OU UN MAUVAIS
FONCTIONNEMENT INFORMATIQUE, OU À TOUT AUTRE DOMMAGE OU PERTE LIÉE À L'UTILISATION DU DOCUMENT ET DE SES
VERSIONS MODIFIÉES, MÊME SI LADITE PARTIE A ÉTÉ INFORMÉE DE L'ÉVENTUALITÉ DE TELS
DOMMAGES.</p></li></ol></div></div></div><div><div class="legalnotice"><a name="idm54"></a><p
class="legalnotice-title"><b>Votre avis</b></p><p>
To report a bug or make a suggestion regarding the <span class="application">Genius Mathematics
Tool</span>
application or this manual, please visit the
<a class="ulink" href="http://www.jirka.org/genius.html" target="_top">Genius
diff --git a/help/pt_BR/genius.xml b/help/pt_BR/genius.xml
new file mode 100644
index 0000000..1f32922
--- /dev/null
+++ b/help/pt_BR/genius.xml
@@ -0,0 +1,9968 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="pt_BR">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Manual da ferramenta matemática Genius</para></abstract>
+ <title>Manual do Genius</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2013.</year><holder>Enrico Nicoletto (liverig gmail
com)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da
Licença de Documentação Livre GNU (GNU Free Documentation License), Versão 1.1 ou qualquer versão mais
recente publicada pela Free Software Foundation; sem Seções Invariantes, Textos de Capa Frontal, e sem Textos
de Contracapa. Você pode encontrar uma cópia da licença GFDL neste <ulink type="help"
url="ghelp:fdl">link</ulink> ou no arquivo COPYING-DOCS distribuído com este manual.</para>
+ <para>Este manual é parte da coleção de manuais do GNOME distribuídos sob a GFDL. Se você quiser
distribuí-lo separadamente da coleção, você pode fazê-lo adicionando ao manual uma cópia da licença, como
descrito na seção 6 da licença.</para>
+
+ <para>Muitos dos nomes usados por empresas para distinguir seus produtos e serviços são reivindicados
como marcas registradas. Onde esses nomes aparecem em qualquer documentação do GNOME e os membros do Projeto
de Documentação do GNOME estiverem cientes dessas marcas registradas, os nomes aparecerão impressos em letras
maiúsculas ou com iniciais em maiúsculas.</para>
+
+ <para>O DOCUMENTO E VERSÕES MODIFICADAS DO DOCUMENTO SÃO FORNECIDOS SOB OS TERMOS DA GNU FREE
DOCUMENTATION LICENSE COM O ENTENDIMENTO ADICIONAL DE QUE: <orderedlist>
+ <listitem>
+ <para>O DOCUMENTO É FORNECIDO NA BASE "COMO ESTÁ", SEM GARANTIAS DE QUALQUER TIPO, TANTO
EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS DE QUE O DOCUMENTO OU VERSÃO MODIFICADA DO
DOCUMENTO SEJA COMERCIALIZÁVEL, LIVRE DE DEFEITOS, PRÓPRIO PARA UM PROPÓSITO ESPECÍFICO OU SEM INFRAÇÕES.
TODO O RISCO A RESPEITO DA QUALIDADE, EXATIDÃO, E DESEMPENHO DO DOCUMENTO OU VERSÕES MODIFICADAS DO DOCUMENTO
É DE SUA RESPONSABILIDADE. SE ALGUM DOCUMENTO OU VERSÃO MODIFICADA SE PROVAR DEFEITUOSO EM QUALQUER ASPECTO,
VOCÊ (NÃO O ESCRITOR INICIAL, AUTOR OU QUALQUER CONTRIBUIDOR) ASSUME O CUSTO DE QUALQUER SERVIÇO NECESSÁRIO,
REPARO OU CORREÇÃO. ESSA RENÚNCIA DE GARANTIAS CONSTITUI UMA PARTE ESSENCIAL DESTA LICENÇA. NENHUM USO DESTE
DOCUMENTO OU VERSÃO MODIFICADA DESTE DOCUMENTO É AUTORIZADO SE NÃO FOR SOB ESSA RENÚNCIA; E</para>
+ </listitem>
+ <listitem>
+ <para>SOB NENHUMA CIRCUNSTÂNCIA E SOB NENHUMA TEORIA LEGAL, TANTO EM DANO (INCLUINDO
NEGLIGÊNCIA), CONTRATO, OU OUTROS, DEVEM O AUTOR, ESCRITOR INICIAL, QUALQUER CONTRIBUIDOR, OU QUALQUER
DISTRIBUIDOR DO DOCUMENTO OU VERSÃO MODIFICADA DO DOCUMENTO, OU QUALQUER FORNECEDOR DE ALGUMA DESSAS PARTES,
SEREM CONSIDERADOS RESPONSÁVEIS A QUALQUER PESSOA POR QUALQUER DANO, SEJA DIRETO, INDIRETO, ESPECIAL,
ACIDENTAL OU DANOS DECORRENTES DE QUALQUER NATUREZA, INCLUINDO, MAS NÃO LIMITADO A, DANOS POR PERDA DE BOA
VONTADE, TRABALHO PARADO, FALHA OU MAU FUNCIONAMENTO DO COMPUTADOR, OU QUALQUER E TODOS OS OUTROS DANOS OU
PERDAS RESULTANTES OU RELACIONADOS AO USO DO DOCUMENTO E VERSÕES MODIFICADAS, MESMO QUE TAL PARTE TENHA SIDO
INFORMADA DA POSSIBILIDADE DE TAIS DANOS.</para>
+ </listitem>
+ </orderedlist></para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Universidade do Estado de Oklahoma</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>Universidade de Queensland, Austrália</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>September 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>This manual describes version 1.0.22 of Genius.
+ </releaseinfo>
+ <legalnotice>
+ <title>Comentários</title>
+ <para>
+ To report a bug or make a suggestion regarding the <application>Genius Mathematics
Tool</application>
+ application or this manual, please visit the
+ <ulink url="http://www.jirka.org/genius.html" type="http">Genius
+ Web page</ulink>
+ or email me at <email>jirka 5z com</email>.
+ </para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Introdução</title>
+ <para>
+ The <application>Genius Mathematics Tool</application> application is a general calculator for use as
a desktop
+ calculator, an educational tool in mathematics, and is useful even for
+ research. The language used in <application>Genius Mathematics Tool</application> is designed to be
+ ‘mathematical’ in the sense that it should be ‘what
+ you mean is what you get’. Of course that is not an
+ entirely attainable goal. <application>Genius Mathematics Tool</application> features rationals,
arbitrary
+ precision integers and multiple precision floats using the GMP library.
+ It handles complex numbers using cartesian notation. It has good
+ vector and matrix manipulation and can handle basic linear algebra.
+ The programming language allows user defined functions, variables and
+ modification of parameters.
+ </para>
+
+ <para>
+ <application>Genius Mathematics Tool</application> comes in two versions. One version is the
graphical GNOME
+ version, which features an IDE style interface and the ability
+ to plot functions of one or two variables.
+ The command line version does not require GNOME, but of course
+ does not implement any feature that requires the graphical interface.
+ </para>
+
+ <para>
+ Parts of this manual describe the graphical version of the calculator,
+ but the language is of course the same. The command line only version
+ lacks the graphing capabilities and all other capabilities that require
+ the graphical user interface.
+ </para>
+
+ <para>
+ Generally, when some feature of the language (function, operator, etc...)
+ is new in some version past 1.0.5, it is mentioned, but
+ below 1.0.5 you would have to look at the NEWS file.
+ </para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Primeiros passos</title>
+
+ <sect1 id="genius-to-start">
+ <title>To Start <application>Genius Mathematics Tool</application></title>
+ <para>You can start <application>Genius Mathematics Tool</application> in the following ways:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><guimenu>Applications</guimenu> menu</term>
+ <listitem>
+ <para>
+ Depending on your operating system and version, the
+ menu item for <application>Genius Mathematics Tool</application> could appear in a number of
different
+ places. It can be in the
+ <guisubmenu>Education</guisubmenu>,
+ <guisubmenu>Accessories</guisubmenu>,
+ <guisubmenu>Office</guisubmenu>,
+ <guisubmenu>Science</guisubmenu>, or
+ similar submenu, depending on your particular setup.
+ The menu item name you are looking for is
+ <guimenuitem>Genius Math Tool</guimenuitem>. Once you locate
+ this menu item click on it to start <application>Genius Mathematics Tool</application>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Run</guilabel> dialog</term>
+ <listitem>
+ <para>
+ Depending on your system installation the menu item
+ may not be available. If it is not, you can open the Run dialog
+ and execute <command>gnome-genius</command>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Linha de comando</term>
+ <listitem>
+ <para>
+ To start the GNOME version of <application>Genius Mathematics Tool</application> execute
+ <command>gnome-genius</command> from the command line.
+ </para>
+ <para>
+ To start the command line only version,
+ execute the following command: <command>genius</command>.
+ This version does not include the graphical environment
+ and some functionality such as plotting will not be available.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>When You Start Genius</title>
+ <para>When you start the GNOME edition of
+ <application>Genius Mathematics Tool</application>, the window pictured in <xref
linkend="mainwindow-fig"/> is displayed.</para>
+
+ <figure id="mainwindow-fig">
+ <title><application>Genius Mathematics Tool</application> Window</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows <application>Ferramenta matemática Genius</application> main window. Contains
titlebar, menubar,
+toolbar and working area. Menubar contains <guilabel>Arquivo</guilabel>,
+<guilabel>Editar</guilabel>, <guilabel>Calculadora</guilabel>,
+<guilabel>Examples</guilabel>,
+<guilabel>Programs</guilabel>,
+<guilabel>Preferências</guilabel>, and <guilabel>Ajuda</guilabel> menus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>The <application>Genius Mathematics Tool</application> window contains the following elements:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Menubar.</term>
+ <listitem>
+ <para>The menus on the menubar contain all of the commands that you need to work with files in
<application>Genius Mathematics Tool</application>.
+ The <guilabel>File</guilabel> menu contains items for loading and saving items and creating
+ new programs. The <guilabel>Load and Run...</guilabel> command does not open a new window for
+ the program, but just executes the program directly. It is equivalent to the
<command>load</command>
+ command.</para>
+ <para>
+ The <guilabel>Calculator</guilabel> menu controls the
+calculator engine. It allows you to run the currently selected program or to
+interrupt the current calculation. You can also look at the full expression of
+the last answer (useful if the last answer was too large to fit onto the
+console), or you can view a listing of the values of all user defined
+variables. You can also monitor user variables, which is especially useful
+while a long calculation is running, or to debug a certain program.
+ Finally the <guilabel>Calculator</guilabel> allows plotting functions using a user
friendly dialog box.
+ </para>
+ <para>
+ The <guilabel>Examples</guilabel> menu is a list of example
+ programs or demos. If you open the menu, it will load the
+ example into a new program, which you can run, edit, modify,
+ and save. These programs should be well documented
+ and generally demonstrate either some feature of <application>Genius Mathematics
Tool</application>
+ or some mathematical concept.
+ </para>
+ <para>
+ The <guilabel>Programs</guilabel> menu lists
+ the currently open programs and allows you to switch
+ between them.
+ </para>
+ <para>
+ The other menus have same familiar functions as in other applications.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Toolbar.</term>
+ <listitem>
+ <para>The toolbar contains a subset of the commands that you can access from the menubar.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Working area</term>
+ <listitem>
+ <para>
+ The working area is the primary method of interacting with
+ the application.
+ </para>
+ <para>
+ The working area initially has just the <guilabel>Console</guilabel> tab, which is
+ the main way of interacting with the calculator. Here you
+ type expressions and the results are immediately returned
+ after you hit the Enter key.
+ </para>
+ <para>
+ Alternatively you can write longer programs and those can
+ appear in separate tabs. The programs are a set of commands or
+ functions that can be run all at once rather than entering them
+ at the command line. The programs can be saved in files for later
+ retrieval.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Basic Usage</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Using the Work Area</title>
+
+ <para>
+ Normally you interact with the calculator in the <guilabel>Console</guilabel> tab of the
+ work area. If you are running the text only version then the console
+ will be the only thing that is available to you. If you want to use
+ <application>Genius Mathematics Tool</application> as a calculator only, just type in your expression
in the console, it
+ will be evaluated, and the returned value will be printed.
+ </para>
+
+ <para>
+ To evaluate an expression, type it into the <guilabel>Console</guilabel> work area and press
enter.
+ Expressions are written in a
+language called GEL. The most simple GEL expressions just looks like
+mathematics. For example
+<screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen>
+(Last is the harmonic sum from 1 to 70)
+</para>
+<para>
+To get a list of functions and commands, type:
+<screen><prompt>genius> </prompt><userinput>help</userinput>
+</screen>
+If you wish to get more help on a specific function, type:
+<screen><prompt>genius> </prompt><userinput>help FunctionName</userinput>
+</screen>
+To view this manual, type:
+<screen><prompt>genius> </prompt><userinput>manual</userinput>
+</screen>
+</para>
+<para>
+Suppose you have previously saved some GEL commands as a program to a file and
+you now want to execute them.
+To load this program from the file <filename>path/to/program.gel</filename>,
+type
+<screen><prompt>genius> </prompt><userinput>load path/to/program.gel</userinput>
+</screen>
+<application>Genius Mathematics Tool</application> keeps track of the current directory.
+To list files in the current directory type <command>ls</command>, to change directory
+do <userinput>cd directory</userinput> as in the UNIX command shell.
+</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>To Create a New Program </title>
+ <para>
+ If you wish to enter several more complicated commands, or perhaps write a complicated
+ function using the <link linkend="genius-gel">GEL</link> language, you can create a new
+ program.
+ </para>
+ <para>
+To start writing a new program, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>New
+Program</guimenuitem></menuchoice>. A new tab will appear in the work area. You
+can write a <link linkend="genius-gel">GEL</link> program in this work area.
+Once you have written your program you can run it by
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice> (or
+the <guilabel>Run</guilabel> toolbar button).
+This will execute your program and will display any output on the <guilabel>Console</guilabel> tab.
+Executing a program is equivalent of taking the text of the program and
+typing it into the console. The only difference is that this input is done
+independent of the console and just the output goes onto the console.
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice>
+will always run the currently selected program even if you are on the <guilabel>Console</guilabel>
+tab. The currently selected program has its tab in bold type. To select a
+program, just click on its tab.
+ </para>
+ <para>
+To save the program you've just written, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Save
As...</guimenuitem></menuchoice>.
+Similarly as in other programs you can choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice> to save a program that
already has
+a filename attached to it. If you have many opened programs you have edited and wish to save you can also
choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save All Unsaved</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ Programs that have unsaved changes will have a "[+]" next to their filename. This way you can
see if the file
+ on disk and the currently opened tab differ in content. Programs which have not yet had a
filename associated
+ with them are always considered unsaved and no "[+]" is printed.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>To Open and Run a Program </title>
+ <para>
+To open a file, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Open</guimenuitem></menuchoice>.
+A new tab containing the file will appear in the work area. You can use this to
+edit the file.
+ </para>
+ <para>
+To run a program from a file, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Load and
+Run...</guimenuitem></menuchoice>. This will run the program without opening it
+in a separate tab. This is equivalent to the <command>load</command> command.
+ </para>
+ <para>
+ If you have made edits to a file you wish to throw away and want to reload to the version
that's on disk,
+ you can choose the
+ <menuchoice><guimenu>File</guimenu><guimenuitem>Reload from Disk</guimenuitem></menuchoice>
menuitem. This is useful for experimenting
+ with a program and making temporary edits, to run a program, but that you do not intend to keep.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Plotagem</title>
+
+ <para>
+ Plotting support is only available in the graphical GNOME version.
+ All plotting accessible from the graphical interface is available from
+ the <guilabel>Create Plot</guilabel> window. You can access this window by either clicking
+ on the <guilabel>Plot</guilabel> button on the toolbar or selecting <guilabel>Plot</guilabel> from the
<guilabel>Calculator</guilabel>
+ menu. You can also access the plotting functionality by using the
+ <link linkend="genius-gel-function-list-plotting">plotting
+ functions</link> of the GEL language. See
+ <xref linkend="genius-gel"/> to find out how to
+ enter expressions that Genius understands.
+ </para>
+
+ <sect1 id="genius-line-plots">
+ <title>Line Plots</title>
+ <para>
+ To graph real valued functions of one variable open the <guilabel>Create Plot</guilabel>
+ window. You can also use the
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> function
+ on the command line (see its documentation).
+ </para>
+ <para>
+ Once you click the <guilabel>Plot</guilabel> button, a window opens up with some notebooks in it.
+ You want to be in the <guilabel>Function line plot</guilabel> notebook
+tab, and inside you want to be on the <guilabel>Functions / Expressions</guilabel> notebook tab.
+See <xref linkend="lineplot-fig"/>.
+ </para>
+
+ <figure id="lineplot-fig">
+ <title>Create Plot Window</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows the line plotting window.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ Type expressions with <userinput>x</userinput> as
+ the independent variable into the textboxes. Alternatively you can give names of functions such as
+ <userinput>cos</userinput> rather then having to type <userinput>cos(x)</userinput>.
+ You can graph up to ten functions. If you make a mistake and Genius cannot
+ parse the input it will signify this with a warning icon on the right of the text
+ input box where the error occurred, as well as giving you an error dialog.
+ You can change the ranges of the dependent and independent variables in the bottom
+ part of the dialog.
+ The <varname>y</varname> (dependent) range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox.
+ The names of the variables can also be changed.
+ Pressing the <guilabel>Plot</guilabel> button produces the graph shown in <xref
linkend="lineplot2-fig"/>.
+ </para>
+ <para>
+ The variables can be renamed by clicking the <guilabel>Change variable names...</guilabel>
button, which is useful if you wish to print or save the figure and don't want to use the standard
+ names. Finally you can also avoid printing the legend and the axis labels completely,
+ which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="lineplot2-fig">
+ <title>Janela de desenho</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>The graph produced.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ From here you can print out the plot, create encapsulated postscript
+ or a PNG version of the plot or change the zoom. If the dependent axis was
+ not set correctly you can have Genius fit it by finding out the extrema of
+ the graphed functions.
+ </para>
+
+ <para>
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> function.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Parametric Plots</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Parametric</guilabel> notebook
+ tab to create two dimensional parametric plots. This way you can
+ plot a single parametric function. You can either specify the
+ points as <varname>x</varname> and <varname>y</varname>, or giving a single complex number
+ as a function of the variable <varname>t</varname>.
+ The range of the variable <varname>t</varname> is given explicitly, and the function is sampled
+ according to the given increment.
+ The <varname>x</varname> and <varname>y</varname> range can be set
+ automatically by turning on the <guilabel>Fit dependent axis</guilabel>
+ checkbox, or it can be specified explicitly.
+ See <xref linkend="paramplot-fig"/>.
+ </para>
+
+ <figure id="paramplot-fig">
+ <title>Parametric Plot Tab</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Parametric plotting tab in the <guilabel>Criar Traço</guilabel> window.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ An example of a parametric plot is given in
+ <xref linkend="paramplot2-fig"/>.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> or
+ <link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>
function.
+ </para>
+
+ <figure id="paramplot2-fig">
+ <title>Parametric Plot</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Parametric plot produced</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Slopefield Plots</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Slope field</guilabel> notebook
+ tab to create a two dimensional slope field plot.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link> function.
+ </para>
+
+ <para>
+ When a slope field is active, there is an extra <guilabel>Solver</guilabel> menu available,
+ through which you can bring up the solver dialog. Here you can have Genius plot specific
+ solutions for the given initial conditions. You can either specify initial conditions in the dialog,
+ or you can click on the plot directly to specify the initial point. While the solver dialog
+ is active, the zooming by clicking and dragging does not work. You have to close the dialog first
+ if you want to zoom using the mouse.
+ </para>
+
+ <para>
+ The solver uses the standard Runge-Kutta method.
+ The plots will stay on the screen until cleared. The solver will stop whenever it reaches the
boundary
+ of the plot window. Zooming does not change the limits or parameters of the solutions,
+ you will have to clear and redraw them with appropriate parameters.
+ You can also use the
+ <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>
+ function to draw solutions from the command line or programs.
+ </para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Vectorfield Plots</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Vector field</guilabel> notebook
+ tab to create a two dimensional vector field plot.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link> function.
+ </para>
+
+ <para>
+ By default the direction and magnitude of the vector field is shown.
+ To only show direction and not the magnitude, check the appropriate
+ checkbox to normalize the arrow lengths.
+ </para>
+
+ <para>
+ When a vector field is active, there is an extra <guilabel>Solver</guilabel> menu available,
+ through which you can bring up the solver dialog. Here you can have Genius plot specific
+ solutions for the given initial conditions. You can either specify initial conditions in the dialog,
+ or you can click on the plot directly to specify the initial point. While the solver dialog
+ is active, the zooming by clicking and dragging does not work. You have to close the dialog first
+ if you want to zoom using the mouse.
+ </para>
+
+ <para>
+ The solver uses the standard Runge-Kutta method.
+ The plots will stay on the screen until cleared.
+ Zooming does not change the limits or parameters of the solutions,
+ you will have to clear and redraw them with appropriate parameters.
+ You can also use the
+ <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>
+ function to draw solutions from the command line or programs.
+ </para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Surface Plots</title>
+ <para>
+ Genius can also plot surfaces. Select the <guilabel>Surface plot</guilabel> tab in the
+ main notebook of the <guilabel>Create Plot</guilabel> window. Here you can specify a single
+ expression that should use either <varname>x</varname> and <varname>y</varname> as real independent
variables
+ or <varname>z</varname> as a complex variable (where <varname>x</varname> is the real part of
<varname>z</varname> and <varname>y</varname> is the
+ imaginary part). For example to plot the modulus of the cosine
+ function for complex parameters,
+ you could enter <userinput>|cos(z)|</userinput>. This would be
+ equivalent to <userinput>|cos(x+1i*y)|</userinput>.
+ See <xref linkend="surfaceplot-fig"/>.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link> function.
+ </para>
+ <para>
+ The <varname>z</varname> range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox. The variables can be renamed by clicking the <guilabel>Change variable
names...</guilabel> button, which is useful if you wish to print or save the figure and don't want to use the
standard
+ names. Finally you can also avoid printing the legend, which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="surfaceplot-fig">
+ <title>Surface Plot</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Modulus of the complex cosine function.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ In surface mode, left and right arrow keys on your keyboard will rotate the
+ view along the z axis. Alternatively you can rotate along any axis by
+ selecting <guilabel>Rotate axis...</guilabel> in the <guilabel>View</guilabel>
+ menu. The <guilabel>View</guilabel> menu also has a top view mode which rotates the
+ graph so that the z axis is facing straight out, that is, we view the graph from the top
+ and get essentially just the colors that define the values of the function getting a
+ temperature plot of the function. Finally you should
+ try <guilabel>Start rotate animation</guilabel>, to start a continuous slow rotation.
+ This is especially good if using <application>Genius Mathematics Tool</application> to present
to an audience.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>GEL Basics</title>
+
+ <para>
+ GEL stands for Genius Extension Language. It is the language you use
+ to write programs in Genius. A program in GEL is simply an
+ expression that evaluates to a number, a matrix, or another object
+ in GEL.
+ <application>Genius Mathematics Tool</application> can be used as a simple calculator, or as a
+ powerful theoretical research tool. The syntax is meant to
+ have as shallow of a learning curve as possible, especially for use
+ as a calculator.
+ </para>
+
+ <sect1 id="genius-gel-values">
+ <title>Values</title>
+
+ <para>
+ Values in GEL can be <link linkend="genius-gel-values-numbers">numbers</link>, <link
linkend="genius-gel-values-booleans">Booleans</link>, or <link
linkend="genius-gel-values-strings">strings</link>. GEL also treats
+<link linkend="genius-gel-matrices">matrices</link> as values.
+ Values can be used in calculations, assigned to variables and returned from functions, among
other uses.
+ </para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Números</title>
+ <para>
+Integers are the first type of number in GEL. Integers are written in the normal way.
+<programlisting>1234
+</programlisting>
+Hexadecimal and octal numbers can be written using C notation. For example:
+<programlisting>0x123ABC
+01234
+</programlisting>
+Or you can type numbers in an arbitrary base using <literal><base>\<number></literal>. Digits
higher than 10 use letters in a similar way to hexadecimal. For example, a number in base 23 could be written:
+<programlisting>23\1234ABCD
+</programlisting>
+ </para>
+
+ <para>
+The second type of GEL number is rationals. Rationals are simply achieved by dividing two integers. So one
could write:
+<programlisting>3/4
+</programlisting>
+to get three quarters. Rationals also accept mixed fraction notation. So in order to get one and three
tenths you could write:
+<programlisting>1 3/10
+</programlisting>
+ </para>
+
+ <para>
+The next type of number is floating point. These are entered in a similar fashion to C notation. You can use
<literal>E</literal>, <literal>e</literal> or <literal>@</literal> as the exponent delimiter. Note that using
the exponent delimiter gives a float even if there is no decimal point in the number. Examples:
+<programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting>
+ When Genius prints a floating point number it will always append a
+ <computeroutput>.0</computeroutput> even if the number is whole. This is to indicate that
+ floating point numbers are taken as imprecise quantities. When a number is written in the
+ scientific notation, it is always a floating point number and thus Genius does not
+ print the <computeroutput>.0</computeroutput>.
+ </para>
+
+ <para>
+The final type of number in GEL is the complex numbers. You can enter a complex number as a sum of real and
imaginary parts. To add an imaginary part, append an <literal>i</literal>. Here are examples of entering
complex numbers:
+<programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting>
+ </para>
+
+ <important>
+ <para>
+When entering imaginary numbers, a number must be in front of the <literal>i</literal>. If you use
<literal>i</literal> by itself, Genius will interpret this as referring to the variable <varname>i</varname>.
If you need to refer to <literal>i</literal> by itself, use <literal>1i</literal> instead.
+ </para>
+
+ <para>
+In order to use mixed fraction notation with imaginary numbers you must have the mixed fraction in
parentheses. (i.e., <userinput>(1 2/5)i</userinput>)
+ </para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Booleanos</title>
+ <para>
+Genius also supports native Boolean values. The two Boolean constants are
+defined as <constant>true</constant> and <constant>false</constant>; these
+identifiers can be used like any other variable. You can also use the
+identifiers <constant>True</constant>, <constant>TRUE</constant>,
+<constant>False</constant> and <constant>FALSE</constant> as aliases for the
+above.
+ </para>
+ <para>
+At any place where a Boolean expression is expected, you can use a Boolean
+value or any expression that produces either a number or a Boolean. If
+Genius needs to evaluate a number as a Boolean it will interpret
+0 as <constant>false</constant> and any other number as
+<constant>true</constant>.
+ </para>
+ <para>
+In addition, you can do arithmetic with Boolean values. For example:
+<programlisting>( (1 + true) - false ) * true
+</programlisting>
+is the same as:
+<programlisting>( (true or true) or not false ) and true
+</programlisting>
+Only addition, subtraction and multiplication are supported. If you mix numbers with Booleans in an
expression then the numbers are converted to Booleans as described above. This means that, for example:
+<programlisting>1 == true
+</programlisting>
+always evaluates to <constant>true</constant> since 1 will be converted to <constant>true</constant> before
being compared to <constant>true</constant>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Strings</title>
+ <para>
+Like numbers and Booleans, strings in GEL can be stored as values inside variables and passed to functions.
You can also concatenate a string with another value using the plus operator. For example:
+<programlisting>a=2+3;"The result is: "+a
+</programlisting>
+will create the string:
+<programlisting>The result is: 5
+</programlisting>
+You can also use C-like escape sequences such as
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> and
<literal>\r</literal>. To get a <literal>\</literal> or <literal>"</literal> into the string you can quote it
with a <literal>\</literal>. For example:
+<programlisting>"Slash: \\ Quotes: \" Tabs: \t1\t2\t3"
+</programlisting>
+will make a string:
+<programlisting>Slash: \ Quotes: " Tabs: 1 2 3
+</programlisting>
+Do note however that when a string is returned from a function, escapes are
+quoted, so that the output can be used as input. If you wish to print the
+string as it is (without escapes), use the
+<link linkend="gel-function-print"><function>print</function></link>
+or
+<link linkend="gel-function-printn"><function>printn</function></link> functions.
+ </para>
+ <para>
+ In addition, you can use the library function <link
linkend="gel-function-string"><function>string</function></link> to convert anything to a string. For example:
+<programlisting>string(22)
+</programlisting>
+will return
+<programlisting>"22"
+</programlisting>
+Strings can also be compared with <literal>==</literal> (equal), <literal>!=</literal> (not equal) and
<literal><=></literal> (comparison) operators
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>
+There is a special value called
+<constant>null</constant>. No operations can be performed on
+it, and nothing is printed when it is returned. Therefore,
+<constant>null</constant> is useful when you do not want output from an
+expression. The value <constant>null</constant> can be obtained as an expression when you
+type <literal>.</literal>, the constant <constant>null</constant> or nothing.
+By nothing we mean that if you end an expression with
+a separator <literal>;</literal>, it is equivalent to ending it with a
+separator followed by a <constant>null</constant>.
+ </para>
+ <para>
+Example:
+<programlisting>x=5;.
+x=5;
+</programlisting>
+ </para>
+<para>
+Some functions return <constant>null</constant> when no value can be returned
+or an error happened. Also <constant>null</constant> is used as an empty vector
+or matrix, or an empty reference.
+</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Using Variables</title>
+
+ <para>
+Syntax:
+<programlisting>VariableName
+</programlisting>
+Example:
+<screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen>
+ </para>
+
+ <para>
+To evaluate a variable by itself, just enter the name of the variable. This will return the value of the
variable. You can use a variable anywhere you would normally use a number or string. In addition, variables
are necessary when defining functions that take arguments (see <xref
linkend="genius-gel-functions-defining"/>).
+ </para>
+
+ <tip>
+ <title>Using Tab completion</title>
+ <para>
+You can use Tab completion to get Genius to complete variable names for you. Try typing the first few
letters of the name and pressing <userinput>Tab</userinput>.
+ </para>
+ </tip>
+
+ <important>
+ <title>Variable names are case sensitive</title>
+ <para>
+The names of variables are case sensitive. That means that variables named <varname>hello</varname>,
<varname>HELLO</varname> and <varname>Hello</varname> are all different variables.
+ </para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Setting Variables</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting>
+Example:
+<programlisting>x = 3
+x := 3
+</programlisting>
+ </para>
+
+ <para>
+To assign a value to a variable, use the <literal>=</literal> or <literal>:=</literal> operators. These
operators set the value of the variable and return the value you set, so you can do things like
+<programlisting>a = b = 5
+</programlisting>
+This will set <varname>b</varname> to 5 and then also set <varname>a</varname> to 5.
+ </para>
+
+ <para>
+The <literal>=</literal> and <literal>:=</literal> operators can both be used to set variables. The
difference between them is that the <literal>:=</literal> operator always acts as an assignment operator,
whereas the <literal>=</literal> operator may be interpreted as testing for equality when used in a context
where a Boolean expression is expected.
+ </para>
+
+ <para>
+ For more information about the scope of variables, that is when are what variables visible, see
<xref linkend="genius-gel-variables-global"/>.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Built-in Variables</title>
+ <para>
+GEL has a number of built-in ‘variables’, such as
+<varname>e</varname>, <varname>pi</varname> or <varname>GoldenRatio</varname>. These are widely used
constants with a preset value, and
+they cannot be assigned new values.
+There are a number of other built-in variables.
+See <xref linkend="genius-gel-function-list-constants"/> for a full list. Note that <varname>i</varname> is
not by default
+the square root of negative one (the imaginary number), and is undefined to allow its use as a counter. If
you wish to write the imaginary number you need to
+use <userinput>1i</userinput>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Previous Result Variable</title>
+ <para>
+The <varname>Ans</varname> and <varname>ans</varname> variables can be used to get the result of the last
expression. For example, if you had performed some calculation, to add 389 to the result you could do:
+<programlisting>Ans+389
+</programlisting>
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Using Functions</title>
+
+ <para>
+Syntax:
+<programlisting>FunctionName(argument1, argument2, ...)
+</programlisting>
+Example:
+<programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting>
+
+To evaluate a function, enter the name of the function, followed by the arguments (if any) to the function
in parentheses. This will return the result of applying the function to its arguments. The number of
arguments to the function is, of course, different for each function.
+ </para>
+
+ <para>
+ There are many built-in functions, such as <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> and <link
linkend="gel-function-tan"><function>tan</function></link>. You can use the <link
linkend="gel-command-help"><function>help</function></link> built-in command to get a list of available
functions, or see <xref linkend="genius-gel-function-list"/> for a full listing.
+ </para>
+
+ <tip>
+ <title>Using Tab completion</title>
+ <para>
+You can use Tab completion to get Genius to complete function names for you. Try typing the first few
letters of the name and pressing <userinput>Tab</userinput>.
+ </para>
+ </tip>
+
+ <important>
+ <title>Function names are case sensitive</title>
+ <para>
+The names of functions are case sensitive. That means that functions named <function>dosomething</function>,
<function>DOSOMETHING</function> and <function>DoSomething</function> are all different functions.
+ </para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Defining Functions</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[function <identifier>(<comma separated arguments>) = <function body>
+<identifier> = (`() = <function body>)
+]]></programlisting>
+The <literal>`</literal> is the backquote character, and signifies an anonymous function. By setting it to a
variable name you effectively define a function.
+ </para>
+
+ <para>
+A function takes zero or more comma separated arguments, and returns the result of the function body.
Defining your own functions is primarily a matter of convenience; one possible use is to have sets of
functions defined in GEL files that Genius can load in order to make them available.
+Example:
+<programlisting>function addup(a,b,c) = a+b+c
+</programlisting>
+then <userinput>addup(1,4,9)</userinput> yields 14
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Variable Argument Lists</title>
+ <para>
+If you include <literal>...</literal> after the last argument name in the function declaration, then Genius
will allow any number of arguments to be passed in place of that argument. If no arguments were passed then
that argument will be set to <constant>null</constant>. Otherwise, it will be a horizontal vector containing
all the arguments. For example:
+<programlisting>function f(a,b...) = b
+</programlisting>
+Then <userinput>f(1,2,3)</userinput> yields <computeroutput>[2,3]</computeroutput>, while
<userinput>f(1)</userinput> yields a <constant>null</constant>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Passing Functions to Functions</title>
+
+ <para>
+In Genius, it is possible to pass a function as an argument to another function. This can be done using
either ‘function nodes’ or anonymous functions.
+ </para>
+
+ <para>
+If you do not enter the parentheses after a function name, instead of being evaluated, the function will
instead be returned as a ‘function node’. The function node can then be passed to another function.
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting>
+ </para>
+ <para>
+To pass functions that are not defined,
+you can use an anonymous function (see <xref linkend="genius-gel-functions-defining"/>). That is, you want
to pass a function without giving it a name.
+Syntax:
+<programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting>
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting>
+This will return 5.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Operations on Functions</title>
+ <para>
+ Some functions allow arithmetic operations, and some single argument functions such as <link
linkend="gel-function-exp"><function>exp</function></link> or <link
linkend="gel-function-ln"><function>ln</function></link>, to operate on the function. For example,
+<programlisting>exp(sin*cos+4)
+</programlisting>
+will return a function that takes <varname>x</varname> and returns
<userinput>exp(sin(x)*cos(x)+4)</userinput>. It is functionally equivalent
+to typing
+<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting>
+
+This operation can be useful when quickly defining functions. For example to create a function called
<varname>f</varname>
+to perform the above operation, you can just type:
+<programlisting>f = exp(sin*cos+4)
+</programlisting>
+It can also be used in plotting. For example, to plot sin squared you can enter:
+<programlisting>LinePlot(sin^2)
+</programlisting>
+ </para>
+
+ <warning>
+ <para>
+Not all functions can be used in this way. For example, when you use a binary operation the functions must
take the same number of arguments.
+ </para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Separator</title>
+ <para>
+ GEL is somewhat different from other languages in how it deals with multiple commands and
functions.
+ In GEL you must chain commands together with a separator operator.
+That is, if you want to type more than one expression you have to use
+the <literal>;</literal> operator in between the expressions. This is
+a way in which both expressions are evaluated and the result of the second one (or the last one
+if there is more than two expressions) is returned.
+Suppose you type the following:
+<programlisting>3 ; 5
+</programlisting>
+This expression will yield 5.
+ </para>
+ <para>
+This will require some parenthesizing to make it unambiguous sometimes,
+especially if the <literal>;</literal> is not the top most primitive. This slightly differs from
+other programming languages where the <literal>;</literal> is a terminator of statements, whereas
+in GEL it’s actually a binary operator. If you are familiar with pascal
+this should be second nature. However genius can let you pretend it is a
+terminator to some degree. If a <literal>;</literal> is found at the end of a parenthesis or a block,
+genius will append a null to it as if you would have written
+<userinput>;null</userinput>.
+This is useful in case you do not want to return a value from say a loop,
+or if you handle the return differently. Note that it will slightly slow down
+the code if it is executed too often as there is one more operator involved.
+ </para>
+ <para>
+ If you are typing expressions in a program you do not have to add a semicolon. In this case
+ genius will simply print the return value whenever it executes the expression. However, do
note that if you are defining a
+ function, the body of the function is a single expression.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Comments</title>
+ <para>
+ GEL is similar to other scripting languages in that <literal>#</literal> denotes
+ a comment, that is text that is not meant to be evaluated. Everything beyond the
+ pound sign till the end of line will just be ignored. For example,
+<programlisting># This is just a comment
+# every line in a comment must have its own pound sign
+# in the next line we set x to the value 123
+x=123;
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Modular Evaluation</title>
+ <para>
+ Genius implements modular arithmetic.
+To use it you just add "mod <integer>" after
+the expression. Example:
+<userinput>2^(5!) * 3^(6!) mod 5</userinput>
+It could be possible to do modular arithmetic by computing with integers and then modding in the end with
+the <literal>%</literal> operator, which simply gives the remainder, but
+that may be time consuming if not impossible when working with larger numbers.
+For example, <userinput>10^(10^10) % 6</userinput> will simply not work (the exponent
+will be too large), while
+<userinput>10^(10^10) mod 6</userinput> is instantaneous. The first expression first tries to compute the
integer
+<userinput>10^(10^10)</userinput> and then find remainder after division by 6, while the second expression
evaluates
+everything modulo 6 to begin with.
+ </para>
+ <para>
+You can calculate the inverses of numbers mod some integer by just using
+rational numbers (of course the inverse has to exist).
+Examples:
+<programlisting>10^-1 mod 101
+1/10 mod 101</programlisting>
+You can also do modular evaluation with matrices including taking inverses,
+powers and dividing.
+Example:
+<programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting>
+This should yield the identity matrix as B will be the inverse of A mod 5.
+ </para>
+ <para>
+Some functions such as
+<link linkend="gel-function-sqrt"><function>sqrt</function></link> or
+<link linkend="gel-function-log"><function>log</function></link>
+work in a different way when in modulo mode. These will then work like their
+discrete versions working within the ring of integers you selected. For
+example:
+<programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting>
+ <function>sqrt</function> will actually return all the possible square
+ roots.
+ </para>
+ <para>
+ Do not chain mod operators, simply place it at the end of the computation, all computations in
the expression on the left
+ will be carried out in mod arithmetic. If you place a mod inside
+ a mod, you will get unexpected results. If you simply want to
+ mod a single number and control exactly when remainders are
+ taken, best to use the <literal>%</literal> operator. When you
+ need to chain several expressions in modular arithmetic with
+ different divisors, it may be best to just split up the expression into several and use
+ temporary variables to avoid a mod inside a mod.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>List of GEL Operators</title>
+
+ <para>
+ Everything in GEL is really just an expression. Expressions are stringed together with
+ different operators. As we have seen, even the separator is simply a binary operator
+ in GEL. Here is a list of the operators in GEL.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>
+ The separator, just evaluates both
+ <varname>a</varname> and
+ <varname>b</varname>,
+ but returns only the result of
+ <varname>b</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>
+ The assignment operator. This assigns <varname>b</varname> to
+<varname>a</varname> (<varname>a</varname> must be a valid <link linkend="genius-gel-lvalues">lvalue</link>)
(note however that this operator
+may be translated to <literal>==</literal> if used in a place where boolean
+expression is expected)
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>
+ The assignment operator. Assigns <varname>b</varname> to
+<varname>a</varname> (<varname>a</varname> must be a valid <link
linkend="genius-gel-lvalues">lvalue</link>). This is
+different from <literal>=</literal> because it never gets translated to a
+<literal>==</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>
+ Absolute value.
+ In case the expression is a complex number the result will be the modulus
+(distance from the origin). For example:
+<userinput>|3 * e^(1i*pi)|</userinput>
+returns 3.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>
+ Exponentiation, raises <varname>a</varname> to the <varname>b</varname>th power.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>
+ Element by element exponentiation. Raise each element of a matrix
+ <varname>a</varname> to the <varname>b</varname>th power. Or if
+ <varname>b</varname> is a matrix of the same size as
+ <varname>a</varname>, then do the operation element by element.
+ If <varname>a</varname> is a number and <varname>b</varname> is a
+ matrix then it creates matrix of the same size as
+ <varname>b</varname> with <varname>a</varname> raised to all the
+ different powers in <varname>b</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>
+ Addition. Adds two numbers, matrices, functions or strings. If
+ you add a string to anything the result will just be a string. If one is
+ a square matrix and the other a number, then the number is multiplied by
+ the identity matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>
+ Subtraction. Subtract two numbers, matrices or functions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>
+ Multiplication. This is the normal matrix multiplication.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>
+ Element by element multiplication if <varname>a</varname> and
+ <varname>b</varname> are matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>
+ Division. When <varname>a</varname> and <varname>b</varname> are just numbers
+ this is the normal division. When they are matrices, then this is
+ equivalent to <userinput>a*b^-1</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>
+ Element by element division. Same as <userinput>a/b</userinput> for
+ numbers, but operates element by element on matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>
+ Back division. That is this is the same as <userinput>b/a</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>
+ Element by element back division.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>
+ The mod operator. This does not turn on the <link
linkend="genius-gel-modular-evaluation">modular mode</link>, but
+ just returns the remainder of integer division
+ <userinput>a/b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>
+ Element by element mod operator. Returns the remainder
+ after element by element integer division
+ <userinput>a./b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>
+ Modular evaluation operator. The expression <varname>a</varname>
+ is evaluated modulo <varname>b</varname>. See <xref linkend="genius-gel-modular-evaluation"/>.
+ Some functions and operators behave differently modulo an integer.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>
+ Factorial operator. This is like
+ <userinput>1*...*(n-2)*(n-1)*n</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>
+ Double factorial operator. This is like
+ <userinput>1*...*(n-4)*(n-2)*n</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>
+ Equality operator.
+ Returns <constant>true</constant> or <constant>false</constant>
+ depending on <varname>a</varname> and <varname>b</varname> being equal or not.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>
+ Inequality operator,
+ returns <constant>true</constant> if <varname>a</varname> does not
+ equal <varname>b</varname> else returns <constant>false</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>
+ Alternative inequality operator,
+ returns <constant>true</constant> if <varname>a</varname> does not
+ equal <varname>b</varname> else returns <constant>false</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>
+ Less than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a <= b <= c</userinput> (can
+ also be combined with the less than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>
+ Greater than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a >= b >= c</userinput>
+ (and they can also be combined with the greater than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>
+ Less than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a < b < c</userinput>
+ (they can also be combined with the less than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>
+ Greater than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a > b > c</userinput>
+ (they can also be combined with the greater than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>
+ Comparison operator. If <varname>a</varname> is equal to
+ <varname>b</varname> it returns 0, if <varname>a</varname> is less
+ than <varname>b</varname> it returns -1 and if
+ <varname>a</varname> is greater than <varname>b</varname> it
+ returns 1.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>
+ Logical and. Returns true if both
+ <varname>a</varname> and <varname>b</varname> are true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>
+ Logical or.
+ Returns true if either
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>
+ Logical xor.
+ Returns true if exactly one of
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>
+ Logical not. Returns the logical negation of <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>
+ Negation operator. Returns the negative of a number or a matrix (works element-wise on a
matrix).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>
+ Variable referencing (to pass a reference to a variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Variable dereferencing (to access a referenced variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>
+ Matrix conjugate transpose. That is, rows and columns get swapped and we take complex
conjugate of all entries. That is
+ if the i,j element of <varname>a</varname> is x+iy, then the j,i element of
<userinput>a'</userinput> is x-iy.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>
+ Matrix transpose, does not conjugate the entries. That is,
+ the i,j element of <varname>a</varname> becomes the j,i element of <userinput>a.'</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>
+ Get element of a matrix in row <varname>b</varname> and column
+ <varname>c</varname>. If <varname>b</varname>,
+ <varname>c</varname> are vectors, then this gets the corresponding
+ rows, columns or submatrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>
+ Get row of a matrix (or multiple rows if <varname>b</varname> is a vector).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>
+ Same as above.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>
+ Get column of a matrix (or columns if <varname>c</varname> is a
+ vector).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>
+ Same as above.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>
+ Get an element from a matrix treating it as a vector. This will
+ traverse the matrix row-wise.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>
+ Build a vector from <varname>a</varname> to <varname>b</varname> (or specify a row, column
region for the <literal>@</literal> operator). For example to get rows 2 to 4 of matrix <varname>A</varname>
we could do
+ <programlisting>A@(2:4,)
+ </programlisting>
+ as <userinput>2:4</userinput> will return a vector
+ <userinput>[2,3,4]</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>
+ Build a vector from <varname>a</varname> to <varname>c</varname>
+ with <varname>b</varname> as a step. That is for example
+ <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting>
+ </para>
+ <para>
+ When the numbers involved are floating point numbers, for example
+ <userinput>1.0:0.4:3.0</userinput>, the output is what is expected
+ even though adding 0.4 to 1.0 five times is actually just slightly
+ more than 3.0 due to the way that floating point numbers are
+ stored in base 2 (there is no 0.4, the actual number stored is
+ just ever so slightly bigger). The way this is handled is the
+ same as in the for, sum, and prod loops. If the end is within
+ <userinput>2^-20</userinput> times the step size of the endpoint,
+ the endpoint is used and we assume there were roundoff errors.
+ This is not perfect, but it handles the majority of the cases.
+ This check is done only from version 1.0.18 onwards, so execution
+ of your code may differ on older versions. If you want to avoid
+ dealing with this issue, use actual rational numbers, possibly
+ using the <function>float</function> if you wish to get floating
+ point numbers in the end. For example
+ <userinput>1:2/5:3</userinput> does the right thing and
+ <userinput>float(1:2/5:3)</userinput> even gives you floating
+ point numbers and is ever so slightly more precise than
+ <userinput>1.0:0.4:3.0</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>
+ Make <varname>a</varname> into an imaginary number (multiply <varname>a</varname> by the
+ imaginary). Normally the imaginary number <varname>i</varname> is
+ written as <userinput>1i</userinput>. So the above is equal to
+ <programlisting>(a)*1i
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>
+ Quote an identifier so that it doesn't get evaluated. Or
+ quote a matrix so that it doesn't get expanded.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>
+ Swap value of <varname>a</varname> with the value
+ of <varname>b</varname>. Currently does not operate
+ on ranges of matrix elements.
+ It returns <constant>null</constant>.
+ Available from version 1.0.13.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>
+ Increment the variable <varname>a</varname> by 1. If
+ <varname>a</varname> is a matrix, then increment each element.
+ This is equivalent to <userinput>a=a+1</userinput>, but
+ it is somewhat faster. It returns <constant>null</constant>.
+ Available from version 1.0.13.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>
+ Increment the variable <varname>a</varname> by <varname>b</varname>. If
+ <varname>a</varname> is a matrix, then increment each element.
+ This is equivalent to <userinput>a=a+b</userinput>, but
+ it is somewhat faster. It returns <constant>null</constant>.
+ Available from version 1.0.13.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>
+The @() operator makes the : operator most useful. With this you can specify regions of a matrix. So that
a@(2:4,6) is the rows 2,3,4 of the column 6. Or a@(,1:2) will get you the first two columns of a matrix. You
can also assign to the @() operator, as long as the right value is a matrix that matches the region in size,
or if it is any other type of value.
+</para>
+</note>
+
+<note>
+<para>
+The comparison operators (except for the <=> operator, which behaves normally), are not strictly
binary operators, they can in fact be grouped in the normal mathematical way, e.g.: (1<x<=y<5) is a
legal boolean expression and means just what it should, that is (1<x and x≤y and y<5)
+</para>
+</note>
+
+<note>
+<para>
+The unitary minus operates in a different fashion depending on where it
+appears. If it appears before a number it binds very closely, if it appears in
+front of an expression it binds less than the power and factorial operators.
+So for example <userinput>-1^k</userinput> is really <userinput>(-1)^k</userinput>,
+but <userinput>-foo(1)^k</userinput> is really <userinput>-(foo(1)^k)</userinput>. So
+be careful how you use it and if in doubt, add parentheses.
+</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Programming with GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Conditionals</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting>
+If <literal>else</literal> is omitted, then if the <literal>expression1</literal> yields
<constant>false</constant> or 0, <literal>NULL</literal> is returned.
+ </para>
+ <para>
+Examples:
+<programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting>
+Note that <literal>=</literal> will be translated to <literal>==</literal> if used inside the expression for
<literal>if</literal>, so
+<programlisting>if a=5 then a=a-1
+</programlisting>
+will be interpreted as:
+<programlisting>if a==5 then a:=a-1
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Loops</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>While Loops</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting>
+
+ These are similar to other languages. However, as in GEL it is simply an expression that must have
some return value, these
+ constructs will simply return the result of the last iteration or <literal>NULL</literal> if no
iteration was done. In the boolean expression, <literal>=</literal> is translated into <literal>==</literal>
just as for the <literal>if</literal> statement.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>For Loops</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting>
+
+Loop with identifier being set to all values from <literal><from></literal> to
<literal><to></literal>, optionally using an increment other than 1. These are faster, nicer and more
compact than the normal loops such as above, but less flexible. The identifier must be an identifier and
can't be a dereference. The value of identifier is the last value of identifier, or
<literal><from></literal> if body was never evaluated. The variable is guaranteed to be initialized
after a loop, so you can safely use it. Also the <literal><from></literal>,
<literal><to></literal> and <literal><increment></literal> must be non complex values. The
<literal><to></literal> is not guaranteed to be hit, but will never be overshot, for example the
following prints out odd numbers from 1 to 19:
+<programlisting>for i = 1 to 20 by 2 do print(i)
+</programlisting>
+ </para>
+ <para>
+ When one of the values is a floating point number, then the
+ final check is done to within 2^-20 of the step size. That is,
+ even if we overshoot by 2^-20 times the "by" above, we still execute the last
+ iteration. This way
+<programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting>
+does the expected even though adding 0.1 ten times becomes just slightly more than 1.0 due to the way that
floating point numbers
+are stored in base 2 (there is no 0.1, the actual number stored is just ever so slightly bigger). This is
not perfect but it handles
+the majority of the cases. If you want to avoid dealing with this issue, use actual rational numbers for
example:
+<programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting>
+ This check is done only from version 1.0.16 onwards, so execution of your code may differ on
older versions.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Foreach Loops</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
+
+ For each element in the matrix, going row by row from left to right we execute the
body
+ with the identifier set to the current element. To
+print numbers 1,2,3 and 4 in this order you could do:
+<programlisting>for n in [1,2:3,4] do print(n)
+</programlisting>
+If you wish to run through the rows and columns of a matrix, you can use
+the RowsOf and ColumnsOf functions, which return a vector of the rows or
+columns of the matrix. So,
+<programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
+</programlisting>
+will print out [1,2] and then [3,4].
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Break and Continue</title>
+ <para>
+You can also use the <literal>break</literal> and <literal>continue</literal> commands in loops. The
continue <literal>continue</literal> command will restart the current loop at its next iteration, while the
<literal>break</literal> command exits the current loop.
+<programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting>
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Sums and Products</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting>
+
+If you substitute <literal>for</literal> with <literal>sum</literal> or <literal>prod</literal>, then you
will get a sum or a product instead of a <literal>for</literal> loop. Instead of returning the last value,
these will return the sum or the product of the values respectively.
+ </para>
+ <para>
+If no body is executed (for example <userinput>sum i=1 to 0 do ...</userinput>) then <literal>sum</literal>
returns 0 and <literal>prod</literal> returns 1 as is the standard convention.
+ </para>
+ <para>
+ For floating point numbers the same roundoff error protection is done as in the for loop.
+ See <xref linkend="genius-gel-loops-for"/>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Comparison Operators</title>
+ <para>
+ The following standard comparison operators are supported in GEL and have the obvious meaning:
+ <literal>==</literal>, <literal>>=</literal>,
+ <literal><=</literal>, <literal>!=</literal>,
+ <literal><></literal>, <literal><</literal>,
+ <literal>></literal>. They return <constant>true</constant> or
+ <constant>false</constant>.
+ The operators
+ <literal>!=</literal> and <literal><></literal> are the same
+ thing and mean "is not equal to".
+ GEL also supports the operator
+ <literal><=></literal>, which returns -1 if left side is
+ smaller, 0 if both sides are equal, 1 if left side is larger.
+ </para>
+
+ <para>
+ Normally <literal>=</literal> is translated to <literal>==</literal> if
+ it happens to be somewhere where GEL is expecting a condition such as
+ in the if condition. For example
+ <programlisting>if a=b then c
+if a==b then c
+</programlisting>
+ are the same thing in GEL. However you should really use
+ <literal>==</literal> or <literal>:=</literal> when you want to compare
+ or assign respectively if you want your code to be easy to read and
+ to avoid mistakes.
+ </para>
+
+ <para>
+ All the comparison operators (except for the
+ <literal><=></literal> operator, which
+ behaves normally), are not strictly binary operators, they can in fact
+ be grouped in the normal mathematical way, e.g.:
+ (<literal>1<x<=y<5</literal>) is
+ a legal boolean expression and means just what it should, that is
+ (1<x and x≤y and y<5)
+ </para>
+ <para>
+ To build up logical expressions use the words <literal>not</literal>,
+ <literal>and</literal>, <literal>or</literal>, <literal>xor</literal>.
+ The operators <literal>or</literal> and <literal>and</literal> are
+special beasts as they evaluate their arguments one by one, so the usual trick
+for conditional evaluation works here as well. For example, <literal>1 or a=1</literal> will not set
+<literal>a=1</literal> since the first argument was true.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Global Variables and Scope of Variables</title>
+ <para>
+ GEL is a
+ <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">
+ dynamically scoped language</ulink>. We will explain what this
+ means below. That is, normal variables and functions are dynamically
+ scoped. The exception are
+ <link linkend="genius-gel-parameters">parameter variables</link>,
+ which are always global.
+ </para>
+ <para>
+ Like most programming languages, GEL has different types
+ of variables. Normally when a variable is defined in a function,
+ it is visible from that function and from all functions that are
+ called (all higher contexts). For example, suppose a function
+ <function>f</function> defines a variable <varname>a</varname>
+ and then calls function <function>g</function>. Then
+ function <function>g</function> can reference
+ <varname>a</varname>. But once <function>f</function> returns,
+ the variable <varname>a</varname> goes out of scope.
+ For example, the following code will print out 5.
+ The function <function>g</function> cannot be called on the
+ top level (outside <function>f</function> as <varname>a</varname>
+ will not be defined).
+<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting>
+ </para>
+ <para>
+ If you define a variable inside a function it will override
+ any variables defined in calling functions. For example,
+ we modify the above code and write:
+<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting>
+ This code will still print out 5. But if you call
+ <function>g</function> outside of <function>f</function> then
+ you will get a printout of 10. Note that
+ setting <varname>a</varname>
+ to 5 inside <function>f</function> does not change
+ the value of <varname>a</varname> at the top (global) level,
+ so if you now check the value of <varname>a</varname> it will
+ still be 10.
+ </para>
+ <para>
+ Function arguments are exactly like variables defined inside
+ the function, except that they are initialized with the value
+ that was passed to the function. Other than this point, they are
+ treated just like all other variables defined inside the
+ function.
+ </para>
+ <para>
+ Functions are treated exactly like variables. Hence you can
+ locally redefine functions. Normally (on the top level) you
+ cannot redefine protected variables and functions. But locally
+ you can do this. Consider the following session:
+<screen><prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen>
+ </para>
+ <para>
+ Functions and variables defined at the top level are
+ considered global. They are visible from anywhere. As we
+ said the following function <function>f</function>
+ will not change the value of <varname>a</varname> to 5.
+<programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting>
+ Sometimes, however, it is necessary to set
+a global variable from inside a function. When this behavior is needed,
+use the
+<link linkend="gel-function-set"><function>set</function></link> function. Passing a string or a quoted
identifier to
+this function sets the variable globally (on the top level).
+For example, to set
+<varname>a</varname> to the value 3 you could call:
+<programlisting>set(`a,3)
+</programlisting>
+or:
+<programlisting>set("a",3)
+</programlisting>
+ </para>
+ <para>
+ The <function>set</function> function always sets the toplevel
+ global. There is no way to set a local variable in some function
+ from a subroutine. If this is required, must use passing by
+ reference.
+ </para>
+ <para>
+ See also the
+ <link linkend="gel-function-SetElement"><function>SetElement</function></link> and
+ <link linkend="gel-function-SetVElement"><function>SetVElement</function></link> functions.
+ </para>
+ <para>
+ So to recap in a more technical language: Genius operates with
+ different numbered contexts. The top level is the context 0
+ (zero). Whenever a function is entered, the context is raised,
+ and when the function returns the context is lowered. A function
+ or a variable is always visible from all higher numbered contexts.
+ When a variable was defined in a lower numbered context, then
+ setting this variable has the effect of creating a new local
+ variable in the current context number and this variable
+ will now be visible from all higher numbered contexts.
+ </para>
+ <para>
+ There are also true local variables that are not seen from
+ anywhere but the current context. Also when returning functions
+ by value it may reference variables not visible from higher context
+ and this may be a problem. See the sections
+ <link linkend="genius-gel-true-local-variables">True
+ Local Variables</link> and
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Parameter variables</title>
+ <para>
+ As we said before, there exist special variables called parameters
+ that exist in all scopes. To declare a parameter called
+ <varname>foo</varname> with the initial value 1, we write
+<programlisting><![CDATA[parameter foo = 1
+]]></programlisting>
+ From then on, <varname>foo</varname> is a strictly global variable.
+ Setting <varname>foo</varname> inside any function will modify the
+ variable in all contexts, that is, functions do not have a private
+ copy of parameters.
+ </para>
+ <para>
+ When you undefine a parameter using the
+ <link linkend="gel-function-undefine">
+ <function>undefine</function></link> function, it stops being
+ a parameter.
+ </para>
+ <para>
+ Some parameters are built-in and modify the behavior of genius.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Returning</title>
+ <para>
+ Normally a function is one or several expressions separated by a
+semicolon, and the value of the last expression is returned. This is fine for
+simple functions, but
+sometimes you do not want a function to return the last thing calculated. You may, for example, want to
return from a middle of a function. In this case, you can use the <literal>return</literal> keyword.
<literal>return</literal> takes one argument, which is the value to be returned.
+ </para>
+ <para>
+Example:
+<programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting>
+ </para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>References</title>
+ <para>
+ It may be necessary for some functions to return more than one value.
+ This may be accomplished by returning a vector of values, but many
+ times it is convenient to use passing a reference to a variable.
+ You pass a reference to a variable to a function, and the function
+ will set the variable for you using a dereference. You do not have
+ to use references only for this purpose, but this is their main use.
+ </para>
+ <para>
+ When using functions that return values through references
+ in the argument list, just pass the variable name with an ampersand.
+ For example the following code will compute an eigenvalue of a matrix
+ <varname>A</varname> with initial eigenvector guess
+ <varname>x</varname>, and store the computed eigenvector
+ into the variable named <varname>v</varname>:
+<programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
+]]></programlisting>
+ </para>
+ <para>
+The details of how references work and the syntax is similar to the C language.
+The operator
+<literal>&</literal> references a variable
+and <literal>*</literal> dereferences a variable. Both can only be applied to an identifier,
+so <literal>**a</literal> is not a legal expression in GEL.
+ </para>
+ <para>
+References are best explained by an example:
+<programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting>
+now <varname>a</varname> contains 2. You can also reference functions:
+<programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting>
+gives us 4.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Lvalues</title>
+ <para>
+ An lvalue is the left hand side of an assignment. In other words, an
+ lvalue is what you assign something to. Valid lvalues are:
+<variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>
+ Identifier. Here we would be setting the variable of name
+ <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Dereference of an identifier. This will set whatever variable
+ <varname>a</varname> points to.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<region>)</userinput></term>
+ <listitem>
+ <para>
+ A region of a matrix. Here the region is specified normally as with
+ the regular @() operator, and can be a single entry, or an entire
+ region of the matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+ </para>
+ <para>
+Examples:
+<programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting>
+Note that both <literal>:=</literal> and <literal>=</literal> can be used
+interchangeably. Except if the assignment appears in a condition.
+It is thus always safer to just use
+<literal>:=</literal> when you mean assignment, and <literal>==</literal>
+when you mean comparison.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Advanced Programming with GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Error Handling</title>
+ <para>
+If you detect an error in your function, you can bail out of it. For normal
+errors, such as wrong types of arguments, you can fail to compute the function
+by adding the statement <literal>bailout</literal>. If something went
+really wrong and you want to completely kill the current computation, you can
+use <literal>exception</literal>.
+ </para>
+ <para>
+ For example if you want to check for arguments in your function. You
+could use the following code.
+<programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M not a matrix!");
+ bailout
+ );
+ ...
+)
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Toplevel Syntax</title>
+ <para>
+ The syntax is slightly different if you enter statements on
+ the top level versus when they are inside parentheses or
+ inside functions. On the top level, enter acts the same as if
+ you press return on the command line. Therefore think of programs
+ as just a sequence of lines as if they were entered on the command line.
+ In particular, you do not need to enter the separator at the end of the
+ line (unless it is of course part of several statements inside
+ parentheses). When a statement does not end with a separator on the
+ top level, the result is printed after being executed.
+ </para>
+ <para>
+ For example,
+ <programlisting>function f(x)=x^2
+f(3)
+</programlisting>
+ will print first the result of setting a function (a representation of
+ the function, in this case <computeroutput>(`(x)=(x^2))</computeroutput>)
+ and then the expected 9. To avoid this, enter a separator
+ after the function definition.
+ <programlisting>function f(x)=x^2;
+f(3)
+</programlisting>
+ If you need to put a separator into your function then you have to surround with
+ parenthesis. For example:
+<programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting>
+ </para>
+ <para>
+ The following code will produce an error when entered on the top
+ level of a program, while it will work just fine in a function.
+<programlisting>if Something() then
+ DoSomething()
+else
+ DoSomethingElse()
+</programlisting>
+ </para>
+ <para>
+ The problem is that after <application>Genius Mathematics Tool</application> sees the end of line
after the
+ second line, it will decide that we have whole statement and
+ it will execute it. After the execution is done, <application>Genius Mathematics Tool</application>
will
+ go on to the next
+ line, it will see <literal>else</literal>, and it will produce
+ a parsing error. To fix this, use parentheses. <application>Genius Mathematics Tool</application>
will not
+ be satisfied until it has found that all parentheses are closed.
+<programlisting>if Something() then (
+ DoSomething()
+) else (
+ DoSomethingElse()
+)
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Returning Functions</title>
+ <para>
+ It is possible to return functions as value. This way you can
+ build functions that construct special purpose functions according
+ to some parameters. The tricky bit is what variables does the
+ function see. The way this works in GEL is that when a function
+ returns another function, all identifiers referenced in the
+ function body that went out of scope
+ are prepended a private dictionary of the returned
+ function. So the function will see all variables that were in
+ scope
+ when it was defined. For example, we define a function that
+ returns a function that adds 5 to its argument.
+<programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting>
+ Notice that the function adds <varname>k</varname> to
+ <varname>x</varname>. You could use this as follows.
+<programlisting>g = f();
+g(5)
+</programlisting>
+ And <userinput>g(5)</userinput> should return 10.
+ </para>
+ <para>
+ One thing to note is that the value of <varname>k</varname>
+ that is used is the one that's in effect when the
+ <function>f</function> returns. For example:
+<programlisting>function f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting>
+ will return a function that adds 10 to its argument rather than
+ 5. This is because the extra dictionary is created only when
+ the context
+ in which the function was defined ends, which is when the function
+ <function>f</function> returns. This is consistent with how you
+ would expect the function <function>r</function> to work inside
+ the function <function>f</function> according to the rules of
+ scope of variables in GEL. Only those variables are added to the
+ extra dictionary that are in the context that just ended and
+ no longer exists. Variables
+ used in the function that are in still valid contexts will work
+ as usual, using the current value of the variable.
+ The only difference is with global variables and functions.
+ All identifiers that referenced global variables at time of
+ the function definition are not added to the private dictionary.
+ This is to avoid much unnecessary work when returning functions
+ and would rarely be a problem. For example, suppose that you
+ delete the "k=5" from the function <function>f</function>,
+ and at the top level you define <varname>k</varname> to be
+ say 5. Then when you run <function>f</function>, the function
+ <function>r</function> will not put <varname>k</varname> into
+ the private dictionary because it was global (toplevel)
+ at the time of definition of <function>r</function>.
+ </para>
+ <para>
+ Sometimes it is better to have more control over how variables
+ are copied into the private dictionary. Since version 1.0.7,
+ you can specify which
+ variables are copied into the private dictionary by putting
+ extra square brackets after the arguments with the list of
+ variables to be copied separated by commas.
+ If you do this, then variables are
+ copied into the private dictionary at time of the function
+ definition, and the private dictionary is not touched afterwards.
+ For example
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting>
+ will return a function that when called will add 5 to its
+ argument. The local copy of <varname>k</varname> was created
+ when the function was defined.
+ </para>
+ <para>
+ When you want the function to not have any private dictionary
+ then put empty square brackets after the argument list. Then
+ no private dictionary will be created at all. Doing this is
+ good to increase efficiency when a private dictionary is not
+ needed or when you want the function to lookup all variables
+ as it sees them when called. For example suppose you want
+ the function returned from <function>f</function> to see
+ the value of <varname>k</varname> from the toplevel despite
+ there being a local variable of the same name during definition.
+ So the code
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting>
+ will return 20 and not 15, which would happen if
+ <varname>k</varname> with a value of 5 was added to the private
+ dictionary.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>True Local Variables</title>
+ <para>
+ When passing functions into other functions, the normal scoping of
+ variables might be undesired. For example:
+<programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting>
+ you probably want the function <function>r</function>
+ when passed as <function>g</function> into <function>f</function>
+ to see <varname>k</varname> as 10 rather than 5, so that
+ the code returns 11 and not 6. However, as written, the function
+ when executed will see the <varname>k</varname> that is
+ equal to 5. There are two ways to solve this. One would be
+ to have <function>r</function> get <varname>k</varname> in a
+ private dictionary using the square bracket notation section
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ <para>
+ But there is another solution. Since version 1.0.7 there are
+ true local variables. These are variables that are visible only
+ from the current context and not from any called functions.
+ We could define <varname>k</varname> as a local variable in the
+ function <function>f</function>. To do this add a
+ <command>local</command> statement as the first statement in the
+ function (it must always be the first statement in the function).
+ You can also make any arguments be local variables as well.
+ That is,
+<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ Then the code will work as expected and prints out 11.
+ Note that the <command>local</command> statement initializes
+ all the referenced variables (except for function arguments) to
+ a <constant>null</constant>.
+ </para>
+ <para>
+ If all variables are to be created as locals you can just pass an
+ asterisk instead of a list of variables. In this case the variables
+ will not be initialized until they are actually set of course.
+ So the following definition of <function>f</function>
+ will also work:
+<programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ </para>
+ <para>
+ It is good practice that all functions that take other functions
+ as arguments use local variables. This way the passed function
+ does not see implementation details and get confused.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>GEL Startup Procedure</title>
+ <para>
+First the program looks for the installed library file (the compiled version <filename>lib.cgel</filename>)
in the installed directory, then it looks into the current directory, and then it tries to load an uncompiled
file called
+<filename>~/.geniusinit</filename>.
+ </para>
+ <para>
+If you ever change the library in its installed place, you’ll have to
+first compile it with <command>genius --compile loader.gel > lib.cgel</command>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Loading Programs</title>
+ <para>
+Sometimes you have a larger program you wrote into a file and want to read that file into
<application>Genius Mathematics Tool</application>. In these situations, you have two options. You can keep
the functions you use most inside the <filename>~/.geniusinit</filename> file. Or if you want to load up a
file in a middle of a session (or from within another file), you can type <command>load <list of
filenames></command> at the prompt. This has to be done on the top level and not inside any function or
whatnot, and it cannot be part of any expression. It also has a slightly different syntax than the rest of
genius, more similar to a shell. You can enter the file in quotes. If you use the '' quotes, you will get
exactly the string that you typed, if you use the "" quotes, special characters will be unescaped as they are
for strings. Example:
+<programlisting>load program1.gel program2.gel
+load "Weird File Name With SPACES.gel"
+</programlisting>
+There are also <command>cd</command>, <command>pwd</command> and <command>ls</command> commands built in.
<command>cd</command> will take one argument, <command>ls</command> will take an argument that is like the
glob in the UNIX shell (i.e., you can use wildcards). <command>pwd</command> takes no arguments. For example:
+<programlisting>cd directory_with_gel_programs
+ls *.gel
+</programlisting>
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Matrices in GEL</title>
+
+ <para>
+ Genius has support for vectors and matrices and possesses a sizable library of
+ matrix manipulation and linear algebra functions.
+ </para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Entering Matrices</title>
+ <para>
+To enter matrices, you can use one of the following two syntaxes. You can either enter
+the matrix on one line, separating values by commas and rows by semicolons. Or you
+can enter each row on one line, separating
+values by commas.
+You can also just combine the two methods.
+So to enter a 3x3 matrix
+of numbers 1-9 you could do
+<programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting>
+or
+<programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting>
+Do not use both ';' and return at once on the same line though.
+ </para>
+
+ <para>
+You can also use the matrix expansion functionality to enter matrices.
+For example you can do:
+<programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting>
+and you should get
+<programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting>
+similarly you can build matrices out of vectors and other stuff like that.
+ </para>
+
+ <para>
+Another thing is that non-specified spots are initialized to 0, so
+<programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting>
+will end up being
+<programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting>
+ </para>
+
+ <para>
+ When matrices are evaluated, they are evaluated and traversed row-wise. This is just
+ like the <literal>M@(j)</literal> operator, which traverses the matrix row-wise.
+ </para>
+
+ <note>
+ <para>
+Be careful about using returns for expressions inside the
+<literal>[ ]</literal> brackets, as they have a slightly different meaning
+there. You will start a new row.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Conjugate Transpose and Transpose Operator</title>
+ <para>
+You can conjugate transpose a matrix by using the <literal>'</literal> operator. That is
+the entry in the
+<varname>i</varname>th column and the <varname>j</varname>th row will be
+the complex conjugate of the entry in the
+<varname>j</varname>th column and the <varname>i</varname>th row of the original matrix.
+ For example:
+<programlisting>[1,2,3]*[4,5,6]'
+</programlisting>
+We transpose the second vector to make matrix multiplication possible.
+If you just want to transpose a matrix without conjugating it, you would
+use the <literal>.'</literal> operator. For example:
+<programlisting>[1,2,3]*[4,5,6i].'
+</programlisting>
+ </para>
+ <para>
+ Note that normal transpose, that is the <literal>.'</literal> operator, is much faster
+ and will not create a new copy of the matrix in memory. The conjugate transpose does
+ create a new copy unfortunately.
+ It is recommended to always use the <literal>.'</literal> operator when working with real
+ matrices and vectors.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Álgebra linear</title>
+ <para>
+ Genius implements many useful linear algebra and matrix manipulation
+routines. See the <link linkend="genius-gel-function-list-linear-algebra">Linear Algebra</link> and
+<link linkend="genius-gel-function-list-matrix">Matrix Manipulation</link>
+sections of the GEL function listing.
+ </para>
+ <para>
+ The linear algebra routines implemented in GEL do not currently come
+from a well tested numerical package, and thus should not be used for critical
+numerical computation. On the other hand, Genius implements very well many
+linear algebra operations with rational and integer coefficients. These are
+inherently exact and in fact will give you much better results than common
+double precision routines for linear algebra.
+ </para>
+ <para>
+ For example, it is pointless to compute the rank and nullspace of a
+floating point matrix since for all practical purposes, we need to consider the
+matrix as having some slight errors. You are likely to get a different result
+than you expect. The problem is that under a small perturbation every matrix
+is of full rank and invertible. If the matrix however is of rational numbers,
+then the rank and nullspace are always exact.
+ </para>
+ <para>
+ In general when Genius computes the basis of a certain vectorspace
+ (for example with the <link linkend="gel-function-NullSpace"><function>NullSpace</function></link>)
it will give the basis as
+a matrix, in which the columns are the vectors of the basis. That is, when
+Genius talks of a linear subspace it means a matrix whose column space is
+the given linear subspace.
+ </para>
+ <para>
+ It should be noted that Genius can remember certain properties of a
+matrix. For example, it will remember that a matrix is in row reduced form.
+If many calls are made to functions that internally use row reduced form of
+the matrix, we can just row reduce the matrix beforehand once. Successive
+calls to <link linkend="gel-function-rref"><function>rref</function></link> will be very fast.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Polynomials in GEL</title>
+
+ <para>
+ Currently Genius can handle polynomials of one variable written out
+ as vectors, and do some basic operations with these. It is planned to
+ expand this support further.
+ </para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Using Polynomials</title>
+ <para>
+Currently
+polynomials in one variable are just horizontal vectors with value only nodes.
+The power of the term is the position in the vector, with the first position
+being 0. So,
+<programlisting>[1,2,3]
+</programlisting>
+translates to a polynomial of
+<programlisting>1 + 2*x + 3*x^2
+</programlisting>
+ </para>
+ <para>
+You can add, subtract and multiply polynomials using the
+<link linkend="gel-function-AddPoly"><function>AddPoly</function></link>,
+<link linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link>, and
+<link linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link> functions respectively.
+You can print a polynomial using the
+<link linkend="gel-function-PolyToString"><function>PolyToString</function></link>
+function.
+For example,
+<programlisting>PolyToString([1,2,3],"y")
+</programlisting>
+gives
+<programlisting>3*y^2 + 2*y + 1
+</programlisting>
+You can also get a function representation of the polynomial so that you can
+evaluate it. This is done by using
+<link linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>,
+which
+returns an anonymous function.
+<programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting>
+ </para>
+ <para>
+ It is also possible to find roots of polynomials of degrees 1 through 4 by using the
+function
+<link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>,
+which calls the appropriate formula function. Higher degree polynomials must be converted to
+functions and solved
+numerically using a function such as
+<link linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>,
+<link linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>,
+<link linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link>, or
+<link linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.
+ </para>
+ <para>
+See <xref linkend="genius-gel-function-list-polynomials"/> in the function list
+for the rest of functions acting on polynomials.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Set Theory in GEL</title>
+
+ <para>
+ Genius has some basic set theoretic functionality built in. Currently a set is
+ just a vector (or a matrix). Every distinct object is treated as a different element.
+ </para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Using Sets</title>
+ <para>
+ Just like vectors, objects
+ in sets can include numbers, strings, <constant>null</constant>, matrices and vectors. It is
+ planned in the future to have a dedicated type for sets, rather than using vectors.
+ Note that floating point numbers are distinct from integers, even if they appear the same.
+ That is, Genius will treat <constant>0</constant> and <constant>0.0</constant>
+ as two distinct elements. The <constant>null</constant> is treated as an empty set.
+ </para>
+ <para>
+ To build a set out of a vector, use the
+ <link linkend="gel-function-MakeSet"><function>MakeSet</function></link> function.
+ Currently, it will just return a new vector where every element is unique.
+<screen><prompt>genius> </prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen>
+</para>
+
+ <para>
+ Similarly there are functions
+ <link linkend="gel-function-Union"><function>Union</function></link>,
+ <link linkend="gel-function-Intersection"><function>Intersection</function></link>,
+ <link linkend="gel-function-SetMinus"><function>SetMinus</function></link>, which
+ are rather self explanatory. For example:
+<screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen>
+ Note that no order is guaranteed for the return values. If you wish to sort the vector you
+should use the
+ <link linkend="gel-function-SortVector"><function>SortVector</function></link> function.
+ </para>
+
+ <para>
+ For testing membership, there are functions
+ <link linkend="gel-function-IsIn"><function>IsIn</function></link> and
+ <link linkend="gel-function-IsSubset"><function>IsSubset</function></link>,
+ which return a boolean value. For example:
+<screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen>
+ The input <userinput>IsIn(x,X)</userinput> is of course equivalent to
+ <userinput>IsSubset([x],X)</userinput>. Note that since the empty set is a subset
+ of every set, <userinput>IsSubset(null,X)</userinput> is always true.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>List of GEL functions</title>
+
+ <!--&gel-function-list;-->
+
+ <para>
+To get help on a specific function from the console type:
+<programlisting>help FunctionName
+</programlisting>
+ </para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Comandos</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>help FunctionName</synopsis>
+ <para>Print help (or help on a function/command).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "file.gel"</synopsis>
+ <para>Load a file into the interpreter. The file will execute
+as if it were typed onto the command line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /directory/name</synopsis>
+ <para>Change working directory to <filename>/directory/name</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Print the current working directory.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>List files in the current directory.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin plugin_name</synopsis>
+ <para>Load a plugin. Plugin of that name must be installed on the system
+in the proper directory.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Básico</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (query)</synopsis>
+ <synopsis>AskButtons (query, button1, ...)</synopsis>
+ <para>Asks a question and presents a list of buttons to the user (or
+a menu of options in text mode). Returns the 1-based index of the button
+pressed. That is, returns 1 if the first button was pressed, 2 if the second
+button was pressed, and so on. If the user closes the window (or simply hits
+enter in text mode), then <constant>null</constant> is returned. The execution
+of the program is blocked until the user responds.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (query)</synopsis>
+ <synopsis>AskString (query, default)</synopsis>
+ <para>Asks a question and lets the user enter a string, which
+it then returns. If the user cancels or closes the window, then
+<constant>null</constant> is returned. The execution of the program
+is blocked until the user responds. If <varname>default</varname> is given, then it is pre-typed in for the
user to just press enter on (version 1.0.6 onwards).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Compose two functions and return a function that is the composition of
<function>f</function> and <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Compose and execute a function with itself <varname>n</varname> times, passing
<varname>x</varname> as argument. Returning <varname>x</varname> if
+<varname>n</varname> equals 0.
+ Example:
+ <screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (str)</synopsis>
+ <para>Parses and evaluates a string.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Get current modulo from the context outside the function. That is, if outside of
+the function was executed in modulo (using <literal>mod</literal>) then this returns what
+this modulo was. Normally the body of the function called is not executed in modular arithmetic,
+and this builtin function makes it possible to make GEL functions aware of modular arithmetic.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Identity function, returns its argument. It is equivalent to <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (bval)</synopsis>
+ <para>
+ Make integer (0 for <constant>false</constant> or 1 for
+ <constant>true</constant>) from a boolean value.
+ <varname>bval</varname> can also be a number in which case a
+ non-zero value will be interpreted as <constant>true</constant> and
+ zero will be interpreted as <constant>false</constant>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (arg)</synopsis>
+ <para>Check if argument is a boolean (and not a number).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Check if an id is defined. You should pass a string or
+ and identifier. If you pass a matrix, each entry will be
+ evaluated separately and the matrix should contain strings
+ or identifiers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (arg)</synopsis>
+ <para>Check if argument is a function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (arg)</synopsis>
+ <para>Check if argument is a function or an identifier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (arg)</synopsis>
+ <para>Check if argument is a function reference. This includes variable
+references.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (arg)</synopsis>
+ <para>Check if argument is a matrix. Even though <constant>null</constant> is
+sometimes considered an empty matrix, the function <function>IsMatrix</function> does
+not consider <constant>null</constant> a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (arg)</synopsis>
+ <para>Check if argument is a <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (arg)</synopsis>
+ <para>Check if argument is a text string.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (arg)</synopsis>
+ <para>Check if argument is a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (str)</synopsis>
+ <para>Parses but does not evaluate a string. Note that certain
+ pre-computation is done during the parsing stage.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,flags...)</synopsis>
+ <para>Set flags for a function, currently <literal>"PropagateMod"</literal> and
<literal>"NoModuloArguments"</literal>.
+If <literal>"PropagateMod"</literal> is set, then the body of the function is evaluated in modular
arithmetic when the function
+is called inside a block that was evaluated using modular arithmetic (using <literal>mod</literal>). If
+<literal>"NoModuloArguments"</literal>, then the arguments of the function are never evaluated using modular
arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,category,desc)</synopsis>
+ <para>Set the category and help description line for a function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Sets up a help alias.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (dir)</synopsis>
+ <para>Changes current directory, same as the <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Returns the current UNIX time with microsecond precision as a floating point number. That
is, returns the number of seconds since January 1st 1970.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (str,expr)</synopsis>
+ <para>Display a string and an expression with a colon to separate them.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Display set of variables. The variables can be given as
+ strings or identifiers. For example:
+ <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting>
+ </para>
+ <para>
+ If called without arguments (must supply empty argument list) as
+ <programlisting>DisplayVariables()
+ </programlisting>
+ then all variables are printed including a stacktrace similar to
+ <guilabel>Show user variables</guilabel> in the graphical version.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (str)</synopsis>
+ <para>Prints a string to the error stream (onto the console).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Aliases: <function>quit</function></para>
+ <para>Exits the program.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Aliases: <function>False</function> <function>FALSE</function></para>
+ <para>The <constant>false</constant> boolean value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Displays the user manual.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (str)</synopsis>
+ <para>Prints an expression and then print a newline. The argument <varname>str</varname> can be
any expression. It is
+made into a string before being printed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (str)</synopsis>
+ <para>Prints an expression without a trailing newline. The argument <varname>str</varname> can be
any expression. It is
+made into a string before being printed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Print a table of values for a function. The values are in the
+ vector <varname>v</varname>. You can use the vector
+ building notation as follows:
+ <programlisting>PrintTable (f,[0:10])
+ </programlisting>
+ If <varname>v</varname> is a positive integer, then the table of
+ integers from 1 up to and including v will be used.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Protect a variable from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Protect all currently defined variables, parameters and
+functions from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden. Normally <application>Genius Mathematics Tool</application>
considers
+unprotected variables as user defined.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,val)</synopsis>
+ <para>Set a global variable. The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>set(`x,1)
+ </programlisting>
+ will set the global variable <varname>x</varname> to the value 1.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,row,col,val)</synopsis>
+ <para>Set an element of a global variable which is a matrix.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,3,1)
+ </programlisting>
+ will set the second row third column element of the global variable <varname>x</varname> to the
value 1. If no global variable of the name exists, or if it is set to something that's not a matrix, a new
zero matrix of appropriate size will be created.
+ </para>
+ <para>The <varname>row</varname> and <varname>col</varname> can also be ranges, and the semantics
are the same as for regular setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,val)</synopsis>
+ <para>Set an element of a global variable which is a vector.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,1)
+ </programlisting>
+ will set the second element of the global vector variable <varname>x</varname> to the value 1.
If no global variable of the name exists, or if it is set to something that's not a vector (matrix), a new
zero row vector of appropriate size will be created.
+ </para>
+ <para>The <varname>elt</varname> can also be a range, and the semantics are the same as for regular
setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Make a string. This will make a string out of any argument.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Aliases: <function>True</function> <function>TRUE</function></para>
+ <para>The <constant>true</constant> boolean value.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Alias: <function>Undefine</function></para>
+ <para>Undefine a variable. This includes locals and globals,
+ every value on all context levels is wiped. This function
+ should really not be used on local variables. A vector of
+ identifiers can also be passed to undefine several variables.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Undefine all unprotected global variables
+ (including functions and parameters). Normally <application>Genius Mathematics Tool</application>
+ considers protected variables as system defined functions
+ and variables. Note that <function>UndefineAll</function>
+ only removes the global definition of symbols not local ones,
+ so that it may be run from inside other functions safely.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Unprotect a variable from being modified.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Return a vector of identifiers of
+ user defined (unprotected) global variables.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (secs)</synopsis>
+ <para>Waits a specified number of seconds. <varname>secs</varname>
+must be non-negative. Zero is accepted and nothing happens in this case,
+except possibly user interface events are processed.</para>
+ <para>Since version 1.0.18, <varname>secs</varname> can be a noninteger number, so
+ <userinput>wait(0.1)</userinput> will wait for one tenth of a second.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Returns the version of Genius as a horizontal 3-vector with
+ major version first, then minor version and finally the patch level.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Gives the warranty information.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = number</synopsis>
+ <para>Tolerance of the <function>Chop</function> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = number</synopsis>
+ <para>How many iterations to try to find the limit for continuity and limits.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = number</synopsis>
+ <para>How many successive steps to be within tolerance for calculation of continuity.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = number</synopsis>
+ <para>Tolerance for continuity of functions and for calculating the limit.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = number</synopsis>
+ <para>How many iterations to try to find the limit for derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = number</synopsis>
+ <para>How many successive steps to be within tolerance for calculation of derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = number</synopsis>
+ <para>Tolerance for calculating the derivatives of functions.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = number</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = number</synopsis>
+ <para>Floating point precision.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = boolean</synopsis>
+ <para>Print full expressions, even if more than a line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = number</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = number</synopsis>
+ <para>Integer output base.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = number</synopsis>
+ <para>Number of extra Miller-Rabin tests to run on a number before declaring it a prime in <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link linkend="genius-gel-function-list-plotting">line
plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Tells genius to draw the axis labels for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>
and friends.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Sets the limits for <link linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = number</synopsis>
+ <para>Maximum digits to display.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = number</synopsis>
+ <para>Maximum errors to display.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = boolean</synopsis>
+ <para>If true, mixed fractions are printed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = function</synopsis>
+ <para>The function used for numerical integration in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = number</synopsis>
+ <para>Steps to perform in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = number</synopsis>
+ <para>When another number in the object being printed (a matrix or a
+value) is greater than
+10<superscript>-OutputChopWhenExponent</superscript>, and
+the number being printed is less than
+10<superscript>-OutputChopExponent</superscript>, then
+display <computeroutput>0.0</computeroutput> instead of the number.
+</para>
+<para>
+Output is never chopped if <function>OutputChopExponent</function> is zero.
+It must be a non-negative integer.
+</para>
+<para>
+If you want output always chopped according to
+<function>OutputChopExponent</function>, then set
+<function>OutputChopWhenExponent</function>, to something
+greater than or equal to
+<function>OutputChopExponent</function>.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = number</synopsis>
+ <para>When to chop output. See
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = string</synopsis>
+ <para>
+ Output style, this can be <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> or <literal>troff</literal>.
+ </para>
+ <para>
+ This affects mostly how matrices and fractions are printed out and
+ is useful for pasting into documents. For example you can set this
+ to the latex by:
+ <programlisting>OutputStyle = "latex"
+</programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = boolean</synopsis>
+ <para>Convert all results to floats before printing.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = boolean</synopsis>
+ <para>Use scientific notation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [vertical,horizontal]</synopsis>
+ <para>Sets the number of vertical and horizontal ticks in a
+slopefield plot. (See <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = number</synopsis>
+ <para>How many iterations to try for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = number</synopsis>
+ <para>How many successive steps to be within tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = number</synopsis>
+ <para>Tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> such as <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> using <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ Note that the <varname>z</varname> does not refer to the dependent (vertical) axis, but to the
independent complex variable
+ <userinput>z=x+iy</userinput>.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Sets the limits for surface plotting (See <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Should the vectorfield plotting have normalized arrow length. If true, vector fields will
only show direction
+ and not magnitude. (See <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [vertical,horizontal]</synopsis>
+ <para>Sets the number of vertical and horizontal ticks in a
+vectorfield plot. (See <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Constantes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>
+ Catalan's Constant, approximately 0.915... It is defined to be the series where terms are
<userinput>(-1^k)/((2*k+1)^2)</userinput>, where <varname>k</varname> ranges from 0 to infinity.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Aliases: <function>gamma</function></para>
+ <para>
+ Euler's constant gamma. Sometimes called the
+ Euler-Mascheroni constant.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>The Golden Ratio.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GoldenRatio">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Free fall acceleration at sea level in meters per second squared. This is the standard
gravity constant 9.80665. The gravity
+ in your particular neck of the woods might be different due to different altitude and the
fact that the earth is not perfectly
+ round and uniform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>
+ The base of the natural logarithm. <userinput>e^x</userinput>
+ is the exponential function
+ <link linkend="gel-function-exp"><function>exp</function></link>. It is approximately
+ 2.71828182846... This number is sometimes called Euler's number, although there are
+ several numbers that are also called Euler's. An example is the gamma constant: <link
linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/E">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>
+ The number pi, that is the ratio of a circle's circumference
+ to its diameter. This is approximately 3.14159265359...
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Pi">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Numérico</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Aliases: <function>abs</function></para>
+ <para>
+ Absolute value of a number and if <varname>x</varname> is
+ a complex value the modulus of <varname>x</varname>. I.e. this
+ the distance of <varname>x</varname> to the origin. This is equivalent
+ to <userinput>|x|</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/AbsoluteValue">Planetmath (absolute value)</ulink>,
+ <ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>,
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolute value)</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (complex modulus)</ulink>
+for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Replace very small number with zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Aliases: <function>conj</function> <function>Conj</function></para>
+ <para>Calculates the complex conjugate of the complex number <varname>z</varname>. If
<varname>z</varname> is a vector or matrix,
+all its elements are conjugated.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Get the denominator of a rational number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Return the fractional part of a number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Aliases: <function>ImaginaryPart</function></para>
+ <para>Get the imaginary part of a complex number. For example <userinput>Re(3+4i)</userinput>
yields 4.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Division without remainder.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (num)</synopsis>
+ <para>Check if argument is a complex (non-real) number. Do note that we really mean nonreal
number. That is,
+ <userinput>IsComplex(3)</userinput> yields false, while
+ <userinput>IsComplex(3-1i)</userinput> yields true.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (num)</synopsis>
+ <para>Check if argument is a possibly complex rational number. That is, if both real and imaginary
parts are
+ given as rational numbers. Of course rational simply means "not stored as a floating point
number."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (num)</synopsis>
+ <para>Check if argument is a real floating point number (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (num)</synopsis>
+ <para>Aliases: <function>IsComplexInteger</function></para>
+ <para>Check if argument is a possibly complex integer. That is a complex integer is a number of
+ the form <userinput>n+1i*m</userinput> where <varname>n</varname> and <varname>m</varname>
+ are integers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (num)</synopsis>
+ <para>Check if argument is an integer (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (num)</synopsis>
+ <para>Check if argument is a non-negative real integer. That is, either a positive integer or
zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (num)</synopsis>
+ <para>Aliases: <function>IsNaturalNumber</function></para>
+ <para>Check if argument is a positive real integer. Note that
+we accept the convention that 0 is not a natural number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (num)</synopsis>
+ <para>Check if argument is a rational number (non-complex). Of course rational simply means "not
stored as a floating point number."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (num)</synopsis>
+ <para>Check if argument is a real number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Get the numerator of a rational number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Aliases: <function>RealPart</function></para>
+ <para>Get the real part of a complex number. For example <userinput>Re(3+4i)</userinput> yields
3.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Aliases: <function>sign</function></para>
+ <para>Return the sign of a number. That is returns
+<literal>-1</literal> if value is negative,
+<literal>0</literal> if value is zero and
+<literal>1</literal> if value is positive. If <varname>x</varname> is a complex
+value then <function>Sign</function> returns the direction or 0.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Aliases: <function>Ceiling</function></para>
+ <para>Get the lowest integer more than or equal to <varname>n</varname>. Examples:
+ <screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen>
+ </para>
+ <para>Note that you should be careful and notice that floating point
+ numbers are stored in binary and so may not be what you
+ expect. For example <userinput>ceil(420/4.2)</userinput>
+ returns 101 instead of the expected 100. This is because
+ 4.2 is actually very slightly less than 4.2. Use rational
+ representation <userinput>42/10</userinput> if you want
+ exact arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>
+ The exponential function. This is the function
+ <userinput>e^x</userinput> where <varname>e</varname>
+ is the <link linkend="gel-function-e">base of the natural
+ logarithm</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Make number a floating point value. That is returns the floating point representation of
the number <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Aliases: <function>Floor</function></para>
+ <para>Get the highest integer less than or equal to <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>The natural logarithm, the logarithm to base <varname>e</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logarithm of <varname>x</varname> base <varname>b</varname> (calls <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> if in modulo mode), if base is not
given, <link linkend="gel-function-e"><varname>e</varname></link> is used.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Logarithm of <varname>x</varname> base 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Aliases: <function>lg</function></para>
+ <para>Logarithm of <varname>x</varname> base 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,args...)</synopsis>
+ <para>Aliases: <function>Max</function> <function>Maximum</function></para>
+ <para>Returns the maximum of arguments or matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,args...)</synopsis>
+ <para>Aliases: <function>Min</function> <function>Minimum</function></para>
+ <para>Returns the minimum of arguments or matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (size...)</synopsis>
+ <para>Generate random float in the range <literal>[0,1)</literal>.
+If size is given then a matrix (if two numbers are specified) or vector (if one
+number is specified) of the given size returned.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,size...)</synopsis>
+ <para>Generate random integer in the range
+<literal>[0,max)</literal>.
+If size is given then a matrix (if two numbers are specified) or vector (if one
+number is specified) of the given size returned. For example,
+ <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Aliases: <function>Round</function></para>
+ <para>Round a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Aliases: <function>SquareRoot</function></para>
+ <para>The square root. When operating modulo some integer will return either a
<constant>null</constant> or a vector of the square roots. Examples:
+ <screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/SquareRoot">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Aliases: <function>Truncate</function> <function>IntegerPart</function></para>
+ <para>Truncate number to an integer (return the integer part).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Trigonometria</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Aliases: <function>arccos</function></para>
+ <para>The arccos (inverse cos) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Aliases: <function>arccosh</function></para>
+ <para>The arccosh (inverse cosh) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Aliases: <function>arccot</function></para>
+ <para>The arccot (inverse cot) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Aliases: <function>arccoth</function></para>
+ <para>The arccoth (inverse coth) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Aliases: <function>arccsc</function></para>
+ <para>The inverse cosecant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Aliases: <function>arccsch</function></para>
+ <para>The inverse hyperbolic cosecant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Aliases: <function>arcsec</function></para>
+ <para>The inverse secant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Aliases: <function>arcsech</function></para>
+ <para>The inverse hyperbolic secant function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Aliases: <function>arcsin</function></para>
+ <para>The arcsin (inverse sin) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Aliases: <function>arcsinh</function></para>
+ <para>The arcsinh (inverse sinh) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Aliases: <function>arctan</function></para>
+ <para>Calculates the arctan (inverse tan) function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Aliases: <function>arctanh</function></para>
+ <para>The arctanh (inverse tanh) function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Aliases: <function>arctan2</function></para>
+ <para>Calculates the arctan2 function. If
+ <userinput>x>0</userinput> then it returns
+ <userinput>atan(y/x)</userinput>. If <userinput>x<0</userinput>
+ then it returns <userinput>sign(y) * (pi - atan(|y/x|)</userinput>.
+ When <userinput>x=0</userinput> it returns <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> returns 0
+ rather than failing.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Calculates the cosine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Calculates the hyperbolic cosine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>The cotangent function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>The hyperbolic cotangent function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>The cosecant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>The hyperbolic cosecant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>The secant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>The hyperbolic secant function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Calculates the sine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Calculates the hyperbolic sine function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Calculates the tan function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>The hyperbolic tangent function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Teoria dos números</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>
+ Are the real integers <varname>a</varname> and <varname>b</varname> relatively prime?
+ Returns <constant>true</constant> or <constant>false</constant>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Return the <varname>n</varname>th Bernoulli number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Aliases: <function>CRT</function></para>
+ <para>Find the <varname>x</varname> that solves the system given by
+ the vector <varname>a</varname> and modulo the elements of
+ <varname>m</varname>, using the Chinese Remainder Theorem.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Given two factorizations, give the factorization of the
+ product.</para>
+ <para>See <link linkend="gel-function-Factorize">Factorize</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Convert a vector of values indicating powers of b to a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Convert a number to a vector of powers for elements in base <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
+ F<subscript>q</subscript>, the finite field of order <varname>q</varname>, where
<varname>q</varname>
+ is a prime, using the Silver-Pohlig-Hellman algorithm.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Checks divisibility (if <varname>m</varname> divides <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>
+ Compute the Euler phi function for <varname>n</varname>, that is
+ the number of integers between 1 and <varname>n</varname>
+ relatively prime to <varname>n</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/EulerPhifunction">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>
+ Return <userinput>n/d</userinput> but only if <varname>d</varname>
+ divides <varname>n</varname>. If <varname>d</varname>
+ does not divide <varname>n</varname> then this function returns
+ garbage. This is a lot faster for very large numbers
+ than the operation <userinput>n/d</userinput>, but of course only
+ useful if you know that the division is exact.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>
+ Return factorization of a number as a matrix. The first
+ row is the primes in the factorization (including 1) and the
+ second row are the powers. So for example:
+ <screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>
+ Return all factors of <varname>n</varname> in a vector. This
+ includes all the non-prime factors as well. It includes 1 and the
+ number itself. So for example to print all the perfect numbers
+ (those that are sums of their factors) up to the number 1000 you
+ could do (this is of course very inefficient)
+ <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,tries)</synopsis>
+ <para>
+ Attempt Fermat factorization of <varname>n</varname> into
+ <userinput>(t-s)*(t+s)</userinput>, returns <varname>t</varname>
+ and <varname>s</varname> as a vector if possible, <constant>null</constant> otherwise.
+ <varname>tries</varname> specifies the number of tries before
+ giving up.
+ </para>
+ <para>
+ This is a fairly good factorization if your number is the product
+ of two factors that are very close to each other.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Find the first primitive element in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>. Of course <varname>q</varname> must be a prime.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Find a random primitive element in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (q must be a prime).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Compute discrete log base <varname>b</varname> of n in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (<varname>q</varname> a prime), using the
+factor base <varname>S</varname>. <varname>S</varname> should be a column of
+primes possibly with second column precalculated by
+<link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Run the precalculation step of
+ <link linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> for
logarithms base <varname>b</varname> in
+F<subscript>q</subscript>, the finite group of order <varname>q</varname>
+(<varname>q</varname> a prime), for the factor base <varname>S</varname> (where
+<varname>S</varname> is a column vector of primes). The logs will be
+precalculated and returned in the second column.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Tests if an integer is even.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>
+ Tests if a positive integer <varname>p</varname> is a
+ Mersenne prime exponent. That is if
+ 2<superscript>p</superscript>-1 is a prime. It does this
+ by looking it up in a table of known values, which is relatively
+ short.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>
+ Tests if a rational number <varname>m</varname> is a perfect
+ <varname>n</varname>th power. See also
+ <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link>
+ and
+ <link linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Tests if an integer is odd.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Check an integer for being any perfect power, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>
+ Check an integer for being a perfect square of an integer. The number must
+ be an integer. Negative integers are of course never perfect
+ squares of integers.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>
+ Tests primality of integers, for numbers less than 2.5e10 the
+ answer is deterministic (if Riemann hypothesis is true). For
+ numbers larger, the probability of a false positive
+ depends on
+ <link linkend="gel-function-IsPrimeMillerRabinReps">
+ <function>IsPrimeMillerRabinReps</function></link>. That
+ is the probability of false positive is 1/4 to the power
+ <function>IsPrimeMillerRabinReps</function>. The default
+ value of 22 yields a probability of about 5.7e-14.
+ </para>
+ <para>
+ If <constant>false</constant> is returned, you can be sure that
+ the number is a composite. If you want to be absolutely sure
+ that you have a prime you can use
+ <link linkend="gel-function-MillerRabinTestSure">
+ <function>MillerRabinTestSure</function></link> but it may take
+ a lot longer.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>, where <varname>q</varname> is a prime. If <varname>q</varname> is not
prime results are bogus.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>, where <varname>q</varname> is a prime and
+<varname>f</varname> is a vector of prime factors of <varname>q</varname>-1.
+If <varname>q</varname> is not prime results are bogus.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>If <varname>n</varname> is a pseudoprime base <varname>b</varname> but not a prime,
+ that is if <userinput>b^(n-1) == 1 mod n</userinput>. This calls the <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Test if <varname>n</varname> is a strong pseudoprime to base <varname>b</varname> but not a
prime.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Aliases: <function>JacobiSymbol</function></para>
+ <para>Calculate the Jacobi symbol (a/b) (b should be odd).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Aliases: <function>JacobiKroneckerSymbol</function></para>
+ <para>Calculate the Jacobi symbol (a/b) with the Kronecker extension (a/2)=(2/a) when a odd, or
(a/2)=0 when a even.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Return the residue of <varname>a</varname> mod <varname>n</varname> with the least absolute
value (in the interval -n/2 to n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Aliases: <function>LegendreSymbol</function></para>
+ <para>Calculate the Legendre symbol (a/p).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Test if 2<superscript>p</superscript>-1 is a Mersenne prime using the Lucas-Lehmer test.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Returns the <varname>n</varname>th Lucas number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasNumbers">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Return all maximal prime power factors of a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>
+ A vector of known Mersenne prime exponents, that is
+ a list of positive integers
+ <varname>p</varname> such that
+ 2<superscript>p</superscript>-1 is a prime.
+ See also
+ <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname>,
+ <varname>reps</varname> number of times. The probability of false
+ positive is <userinput>(1/4)^reps</userinput>. It is probably
+ usually better to use
+ <link linkend="gel-function-IsPrime">
+ <function>IsPrime</function></link> since that is faster and
+ better on smaller integers.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>
or
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname> with
+ enough bases that assuming the Generalized Riemann Hypothesis the
+ result is deterministic.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink>, or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Returns inverse of n mod m.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>
+ Return the Moebius mu function evaluated in <varname>n</varname>.
+ That is, it returns 0 if <varname>n</varname> is not a product
+ of distinct primes and <userinput>(-1)^k</userinput> if it is
+ a product of <varname>k</varname> distinct primes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>
+ Returns the least prime greater than <varname>n</varname>.
+ Negatives of primes are considered prime and so to get the
+ previous prime you can use <userinput>-NextPrime(-n)</userinput>.
+ </para>
+ <para>
+ This function uses the GMPs <function>mpz_nextprime</function>,
+ which in turn uses the probabilistic Miller-Rabin test
+ (See also <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>).
+ The probability
+ of false positive is not tunable, but is low enough
+ for all practical purposes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Returns the p-adic valuation (number of trailing zeros in base <varname>p</varname>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/PAdicValuation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>
+ Compute <userinput>a^b mod m</userinput>. The
+ <varname>b</varname>'s power of <varname>a</varname> modulo
+ <varname>m</varname>. It is not necessary to use this function
+ as it is automatically used in modulo mode. Hence
+ <userinput>a^b mod m</userinput> is just as fast.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Aliases: <function>prime</function></para>
+ <para>Return the <varname>n</varname>th prime (up to a limit).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Return all prime factors of a number as a vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Pseudoprime test, returns <constant>true</constant> if and only if
+ <userinput>b^(n-1) == 1 mod n</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Removes all instances of the factor <varname>m</varname> from the number
<varname>n</varname>. That is divides by the largest power of <varname>m</varname>, that divides
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
F<subscript>q</subscript>, the finite group of order <varname>q</varname>, where <varname>q</varname> is a
prime using the Silver-Pohlig-Hellman algorithm, given <varname>f</varname> being the factorization of
<varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Find square root of <varname>n</varname> modulo <varname>p</varname> (where
<varname>p</varname> is a prime). Null is returned if not a quadratic residue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Run the strong pseudoprime test base <varname>b</varname> on <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,args...)</synopsis>
+ <para>Aliases: <function>GCD</function></para>
+ <para>
+ Greatest common divisor of integers. You can enter as many
+ integers as you want in the argument list, or you can give
+ a vector or a matrix of integers. If you give more than
+ one matrix of the same size then GCD is done element by
+ element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,args...)</synopsis>
+ <para>Aliases: <function>LCM</function></para>
+ <para>
+ Least common multiplier of integers. You can enter as many
+ integers as you want in the argument list, or you can give a
+ vector or a matrix of integers. If you give more than one
+ matrix of the same size then LCM is done element by element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Manipulação de matrizes</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,func)</synopsis>
+ <para>Apply a function over all entries of a matrix and return a matrix of the results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,func)</synopsis>
+ <para>Apply a function over all entries of 2 matrices (or 1 value and 1 matrix) and return a
matrix of the results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Gets the columns of a matrix as a horizontal vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Remove column(s) and row(s) from a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Calculate the kth compound matrix of A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>
+ Count the number of zero columns in a matrix. For example,
+ once you column-reduce a matrix, you can use this to find
+ the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
+ and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,col)</synopsis>
+ <para>Delete a column of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,row)</synopsis>
+ <para>Delete a row of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Gets the diagonal entries of a matrix as a column vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Get the dot product of two vectors. The vectors must be of the
+ same size. No conjugates are taken so this is a bilinear form even if working over the
complex numbers; This is the bilinear scalar product not the sesquilinear scalar product. See <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> for the standard sesquilinear inner
product.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DotProduct">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>
+ Expands a matrix just like we do on unquoted matrix input.
+ That is we expand any internal matrices as blocks. This is
+ a way to construct matrices out of smaller ones and this is
+ normally done automatically on input unless the matrix is quoted.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Aliases: <function>InnerProduct</function></para>
+ <para>Get the Hermitian product of two vectors. The vectors must be of the same size. This is a
sesquilinear form using the identity matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Aliases: <function>eye</function></para>
+ <para>Return an identity matrix of a given size, that is <varname>n</varname> by
<varname>n</varname>. If <varname>n</varname> is zero, returns <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vec,msize)</synopsis>
+ <para>Return the index complement of a vector of indexes. Everything is one based. For example
for vector <userinput>[2,3]</userinput> and size
+<userinput>5</userinput>, we return <userinput>[1,4,5]</userinput>. If
+<varname>msize</varname> is 0, we always return <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>É uma matriz diagonal.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Check if a matrix is the identity matrix. Automatically returns <constant>false</constant>
+ if the matrix is not square. Also works on numbers, in which
+ case it is equivalent to <userinput>x==1</userinput>. When <varname>x</varname> is
+ <constant>null</constant> (we could think of that as a 0 by 0 matrix),
+ no error is generated and <constant>false</constant> is returned.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Is a matrix lower triangular. That is, are all the entries above the diagonal zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Check if a matrix is a matrix of integers (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Check if a matrix is non-negative, that is if each element is non-negative.
+ Do not confuse positive matrices with positive semi-definite matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Check if a matrix is positive, that is if each element is
+positive (and hence real). In particular, no element is 0. Do not confuse
+positive matrices with positive definite matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Check if a matrix is a matrix of rational (non-complex)
+numbers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Check if a matrix is a matrix of real (non-complex) numbers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>
+ Check if a matrix is square, that is its width is equal to
+ its height.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Is a matrix upper triangular? That is, a matrix is upper triangular if all the entries
below the diagonal are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Check if a matrix is a matrix of numbers only. Many internal
+functions make this check. Values can be any number including complex numbers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>
+ Is argument a horizontal or a vertical vector. Genius does
+ not distinguish between a matrix and a vector and a vector
+ is just a 1 by <varname>n</varname> or <varname>n</varname> by 1 matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Check if a matrix is composed of all zeros. Also works on numbers, in which
+ case it is equivalent to <userinput>x==0</userinput>. When <varname>x</varname> is
+ <constant>null</constant> (we could think of that as a 0 by 0 matrix),
+ no error is generated and <constant>true</constant> is returned as the condition is
+ vacuous.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Returns a copy of the matrix <varname>M</varname> with all the entries above the diagonal
set to zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,arg...)</synopsis>
+ <para>Aliases: <function>diag</function></para>
+ <para>Make diagonal matrix from a vector. Alternatively you can pass
+ in the values to put on the diagonal as arguments. So
+ <userinput>MakeDiagonal([1,2,3])</userinput> is the same as
+ <userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Make column vector out of matrix by putting columns above
+ each other. Returns <constant>null</constant> when given <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>
+ Calculate the product of all elements in a matrix or vector.
+ That is we multiply all the elements and return a number that
+ is the product of all the elements.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>
+ Calculate the sum of all elements in a matrix or vector. That is
+ we add all the elements and return a number that is the
+ sum of all the elements.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Calculate the sum of squares of all elements in a matrix
+ or vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Returns a row vector of the indices of nonzero columns in the matrix
<varname>M</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Returns a row vector of the indices of nonzero elements in the vector
<varname>v</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Get the outer product of two vectors. That is, suppose that
+<varname>u</varname> and <varname>v</varname> are vertical vectors, then
+the outer product is <userinput>v * u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Reverse elements in a vector. Return <constant>null</constant> if given
<constant>null</constant></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Calculate sum of each row in a matrix and return a vertical
+vector with the result.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Calculate sum of squares of each row in a matrix and return a vertical vector with the
results.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Gets the rows of a matrix as a vertical vector. Each element
+of the vector is a horizontal vector that is the corresponding row of
+<varname>M</varname>. This function is useful if you wish to loop over the
+rows of a matrix. For example, as <userinput>for r in RowsOf(M) do
+something(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,rows,columns)</synopsis>
+ <para>Make new matrix of given size from old one. That is, a new
+ matrix will be returned to which the old one is copied. Entries that
+ don't fit are clipped and extra space is filled with zeros.
+ If <varname>rows</varname> or <varname>columns</varname> are zero
+ then <constant>null</constant> is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Shuffle elements in a vector. Return <constant>null</constant> if given
<constant>null</constant>.</para>
+ <para>Version 1.0.13 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Sort vector elements in an increasing order.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Removes any all-zero columns of <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Removes any all-zero rows of <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Return column(s) and row(s) from a matrix. This is
+just equivalent to <userinput>m@(r,c)</userinput>. <varname>r</varname>
+and <varname>c</varname> should be vectors of rows and columns (or single numbers if only one row or column
is needed).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,row1,row2)</synopsis>
+ <para>Swap two rows in a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Returns a copy of the matrix <varname>M</varname> with all the entries below the diagonal
set to zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Get the number of columns of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Get the total number of elements of a matrix. This is the
+number of columns times the number of rows.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (rows,columns...)</synopsis>
+ <para>Make an matrix of all ones (or a row vector if only one argument is given). Returns
<constant>null</constant> if either rows or columns are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Get the number of rows of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (rows,columns...)</synopsis>
+ <para>Make a matrix of all zeros (or a row vector if only one argument is given). Returns
<constant>null</constant> if either rows or columns are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Álgebra linear</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Get the auxiliary unit matrix of size <varname>n</varname>. This is a square matrix with
that is all zero except the
+superdiagonal being all ones. It is the Jordan block matrix of one zero eigenvalue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information
on Jordan Canonical Form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Evaluate (v,w) with respect to the bilinear form given by the matrix A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Return a function that evaluates two vectors with respect to the bilinear form given by
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Aliases: <function>CharPoly</function></para>
+ <para>Get the characteristic polynomial as a vector. That is, return
+the coefficients of the polynomial starting with the constant term. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
+polynomial are the eigenvalues of <varname>M</varname>.
+See also <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Get the characteristic polynomial as a function. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
+polynomial are the eigenvalues of <varname>M</varname>.
+See also <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Get a basis matrix for the columnspace of a matrix. That is,
+return a matrix whose columns are the basis for the column space of
+<varname>M</varname>. That is the space spanned by the columns of
+<varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Return the commutation matrix <userinput>K(m,n)</userinput>, which is the unique
<userinput>m*n</userinput> by
+ <userinput>m*n</userinput> matrix such that <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> for all <varname>m</varname> by <varname>n</varname>
+ matrices <varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Companion matrix of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Conjugate transpose of a matrix (adjoint). This is the
+ same as the <userinput>'</userinput> operator.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Aliases: <function>convol</function></para>
+ <para>Calculate convolution of two horizontal vectors.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Calculate convolution of two horizontal vectors. Return
+result as a vector and not added together.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>CrossProduct of two vectors in R<superscript>3</superscript> as
+ a column vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Get the determinantal divisors of an integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Direct sum of matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Direct sum of a vector of matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Aliases: <function>eig</function></para>
+ <para>Get the eigenvalues of a square matrix.
+ Currently only works for matrices of size up to 4 by 4, or for
+ triangular matrices (for which the eigenvalues are on the
+ diagonal).
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvalue">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues, &multiplicities)</synopsis>
+ <para>Get the eigenvectors of a square matrix. Optionally get also
+the eigenvalues and their algebraic multiplicities.
+ Currently only works for matrices of size up to 2 by 2.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvector">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Apply the Gram-Schmidt process (to the columns) with respect to
+inner product given by <varname>B</varname>. If <varname>B</varname> is not
+given then the standard Hermitian product is used. <varname>B</varname> can
+either be a sesquilinear function of two arguments or it can be a matrix giving
+a sesquilinear form. The vectors will be made orthonormal with respect to
+<varname>B</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>Hankel matrix, a matrix whose skew-diagonals are constant. <varname>c</varname> is the first
row and <varname>r</varname> is the
+ last column. It is assumed that both arguments are vectors and the last element of
<varname>c</varname> is the same
+ as the first element of <varname>r</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Hilbert matrix of order <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Get the image (columnspace) of a linear transform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Get the Inf Norm of a vector, sometimes called the sup norm or the max norm.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Get the invariant factors of a square integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Inverse Hilbert matrix of order <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Is a matrix Hermitian. That is, is it equal to its conjugate transpose.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Test if a vector is in a subspace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Is a matrix (or number) invertible (Integer matrix is invertible if and only if it is
invertible over the integers).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Is a matrix (or number) invertible over a field.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Is <varname>M</varname> a normal matrix. That is,
+ does <userinput>M*M' == M'*M</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Is <varname>M</varname> a Hermitian positive definite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always strictly positive for
+any vector <varname>v</varname>.
+<varname>M</varname> must be square and Hermitian to be positive definite.
+The check that is performed is that every principal submatrix has a non-negative
+determinant.
+(See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>
+ Note that some authors (for example Mathworld) do not require that
+ <varname>M</varname> be Hermitian, and then the condition is
+ on the real part of the inner product, but we do not take this
+ view. If you wish to perform this check, just check the
+ Hermitian part of the matrix <varname>M</varname> as follows:
+ <userinput>IsPositiveDefinite(M+M')</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/PositiveDefinite">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Is <varname>M</varname> a Hermitian positive semidefinite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always non-negative for
+any vector <varname>v</varname>.
+<varname>M</varname> must be square and Hermitian to be positive semidefinite.
+The check that is performed is that every principal submatrix has a non-negative
+determinant.
+(See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>
+ Note that some authors do not require that
+ <varname>M</varname> be Hermitian, and then the condition is
+ on the real part of the inner product, but we do not take this
+ view. If you wish to perform this check, just check the
+ Hermitian part of the matrix <varname>M</varname> as follows:
+ <userinput>IsPositiveSemidefinite(M+M')</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Is a matrix skew-Hermitian. That is, is the conjugate transpose equal to negative of the
matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Is a matrix unitary? That is, does
+ <userinput>M'*M</userinput> and <userinput>M*M'</userinput>
+ equal the identity.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Aliases: <function>J</function></para>
+ <para>Get the Jordan block corresponding to the eigenvalue
+ <varname>lambda</varname> with multiplicity <varname>n</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Get the kernel (nullspace) of a linear transform.</para>
+ <para>
+ (See <link linkend="gel-function-NullSpace">NullSpace</link>)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Aliases: <function>TensorProduct</function></para>
+ <para>
+ Compute the Kronecker product (tensor product in standard basis)
+ of two matrices.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>
+ Get the LU decomposition of <varname>A</varname>, that is
+ find a lower triangular matrix and upper triangular
+ matrix whose product is <varname>A</varname>.
+ Store the result in the <varname>L</varname> and
+ <varname>U</varname>, which should be references. It returns <constant>true</constant>
+ if successful.
+ For example suppose that A is a square matrix, then after running:
+ <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen>
+ You will have the lower matrix stored in a variable called
+ <varname>L</varname> and the upper matrix in a variable called
+ <varname>U</varname>.
+ </para>
+ <para>
+ This is the LU decomposition of a matrix aka Crout and/or Cholesky
+ reduction.
+ (ISBN 0-201-11577-8 pp.99-103)
+ The upper triangular matrix features a diagonal
+ of values 1 (one). This is not Doolittle's Method, which features
+ the 1's diagonal on the lower matrix.
+ </para>
+ <para>
+ Not all matrices have LU decompositions, for example
+ <userinput>[0,1;1,0]</userinput> does not and this function returns
+ <constant>false</constant> in this case and sets <varname>L</varname>
+ and <varname>U</varname> to <constant>null</constant>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LUDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Get the <varname>i</varname>-<varname>j</varname> minor of a matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Minor">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Return the columns that are not the pivot columns of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Aliases: <function>norm</function></para>
+ <para>Get the p Norm (or 2 Norm if no p is supplied) of a vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Get the nullspace of a matrix. That is the kernel of the
+ linear mapping that the matrix represents. This is returned
+ as a matrix whose column space is the nullspace of
+ <varname>T</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Aliases: <function>nullity</function></para>
+ <para>Get the nullity of a matrix. That is, return the dimension of
+the nullspace; the dimension of the kernel of <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Get the orthogonal complement of the columnspace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Return pivot columns of a matrix, that is columns that have a leading 1 in row reduced form.
Also returns the row where they occur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Projection of vector <varname>v</varname> onto subspace
+<varname>W</varname> with respect to inner product given by
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+Hermitian product is used. <varname>B</varname> can either be a sesquilinear
+function of two arguments or it can be a matrix giving a sesquilinear form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>
+ Get the QR decomposition of a square matrix <varname>A</varname>,
+ returns the upper triangular matrix <varname>R</varname>
+ and sets <varname>Q</varname> to the orthogonal (unitary) matrix.
+ <varname>Q</varname> should be a reference or <constant>null</constant> if you don't
+ want any return.
+ For example:
+ <screen><prompt>genius></prompt> <userinput>R = QRDecomposition(A,&Q)</userinput>
+</screen>
+ You will have the upper triangular matrix stored in
+ a variable called
+ <varname>R</varname> and the orthogonal (unitary) matrix stored in
+ <varname>Q</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Return the Rayleigh quotient (also called the Rayleigh-Ritz quotient or ratio) of a matrix
and a vector.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Find eigenvalues of <varname>A</varname> using the Rayleigh
+ quotient iteration method. <varname>x</varname> is a guess
+ at a eigenvector and could be random. It should have
+ nonzero imaginary part if it will have any chance at finding
+ complex eigenvalues. The code will run at most
+ <varname>maxiter</varname> iterations and return <constant>null</constant>
+ if we cannot get within an error of <varname>epsilon</varname>.
+ <varname>vecref</varname> should either be <constant>null</constant> or a reference
+ to a variable where the eigenvector should be stored.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information on
Rayleigh quotient.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Aliases: <function>rank</function></para>
+ <para>Get the rank of a matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Returns the Rosser matrix, which is a classic symmetric eigenvalue test problem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (angle)</synopsis>
+ <para>Aliases: <function>RotationMatrix</function></para>
+ <para>Return the matrix corresponding to rotation around origin in
R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the x-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the y-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the z-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Get a basis matrix for the rowspace of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Evaluate (v,w) with respect to the sesquilinear form given by the matrix A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Return a function that evaluates two vectors with respect to the sesquilinear form given by
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Returns the Smith normal form of a matrix over fields (will end up with 1's on the
diagonal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Return the Smith normal form for square integer matrices over integers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,args...)</synopsis>
+ <para>Solve linear system Mx=V, return solution V if there is a unique solution,
<constant>null</constant> otherwise. Extra two reference parameters can optionally be used to get the
reduced M and V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (c, r...)</synopsis>
+ <para>Return the Toeplitz matrix constructed given the first column c
+and (optionally) the first row r. If only the column c is given then it is
+conjugated and the nonconjugated version is used for the first row to give a
+Hermitian matrix (if the first element is real of course).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Aliases: <function>trace</function></para>
+ <para>Calculate the trace of a matrix. That is the sum of the diagonal elements.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Trace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Transpose of a matrix. This is the same as the
+ <userinput>.'</userinput> operator.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Transpose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Aliases: <function>vander</function></para>
+ <para>Return the Vandermonde matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>The angle of two vectors with respect to inner product given by
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+Hermitian product is used. <varname>B</varname> can either be a sesquilinear
+function of two arguments or it can be a matrix giving a sesquilinear form.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>The direct sum of the vector spaces M and N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Intersection of the subspaces given by M and N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>The sum of the vector spaces M and N, that is {w | w=m+n, m in M, n in N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Aliases: <function>Adjugate</function></para>
+ <para>Get the classical adjoint (adjugate) of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Aliases: <function>CREF</function> <function>ColumnReducedEchelonForm</function></para>
+ <para>Compute the Column Reduced Echelon Form.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Aliases: <function>Determinant</function></para>
+ <para>Get the determinant of a matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Determinant2">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Aliases: <function>REF</function> <function>RowEchelonForm</function></para>
+ <para>Get the row echelon form of a matrix. That is, apply gaussian
+elimination but not backaddition to <varname>M</varname>. The pivot rows are
+divided to make all pivots 1.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Aliases: <function>RREF</function> <function>ReducedRowEchelonForm</function></para>
+ <para>Get the reduced row echelon form of a matrix. That is, apply gaussian elimination together
with backaddition to <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Combinatória</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Get <varname>n</varname>th Catalan number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Get all combinations of k numbers from 1 to n as a vector of vectors.
+ (See also <link linkend="gel-function-NextCombination">NextCombination</link>)
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Double factorial: <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Factorial: <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Falling factorial: <userinput>(n)_k = n(n-1)...(n-(k-1))</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Aliases: <function>fib</function></para>
+ <para>
+ Calculate <varname>n</varname>th Fibonacci number. That
+ is the number defined recursively by
+ <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput>
+ and
+ <userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>
+ Calculate the Frobenius number. That is calculate largest
+ number that cannot be given as a non-negative integer linear
+ combination of a given vector of non-negative integers.
+ The vector can be given as separate numbers or a single vector.
+ All the numbers given should have GCD of 1.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (combining_rule)</synopsis>
+ <para>Galois matrix given a linear combining rule (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>
+ Find the vector <varname>c</varname> of non-negative integers
+ such that taking the dot product with <varname>v</varname> is
+ equal to n. If not possible returns <constant>null</constant>. <varname>v</varname>
+ should be given sorted in increasing order and should consist
+ of non-negative integers.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Aliases: <function>HarmonicH</function></para>
+ <para>Harmonic Number, the <varname>n</varname>th harmonic number of order <varname>r</varname>.
+ That is, it is the sum of <userinput>1/k^r</userinput> for <varname>k</varname>
+ from 1 to n. Equivalent to <userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Hofstadter's function q(n) defined by q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> for more
information.
+ The sequence is <ulink url="https://oeis.org/A005185">A005185 in OEIS</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (seed_values,combining_rule,n)</synopsis>
+ <para>Compute linear recursive sequence using Galois stepping.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Calculate multinomial coefficients. Takes a vector of
+ <varname>k</varname>
+ non-negative integers and computes the multinomial coefficient.
+ This corresponds to the coefficient in the homogeneous polynomial
+ in <varname>k</varname> variables with the corresponding powers.
+ </para>
+ <para>
+ The formula for <userinput>Multinomial(a,b,c)</userinput>
+ can be written as:
+<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting>
+ In other words, if we would have only two elements, then
+<userinput>Multinomial(a,b)</userinput> is the same thing as
+<userinput>Binomial(a+b,a)</userinput> or
+<userinput>Binomial(a+b,b)</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Get combination that would come after v in call to
+combinations, first combination should be <userinput>[1:k]</userinput>. This
+function is useful if you have many combinations to go through and you don't
+want to waste memory to store them all.
+ </para>
+ <para>
+ For example with Combinations you would normally write a loop like:
+ <screen><userinput>for n in Combinations (4,6) do (
+ SomeFunction (n)
+);</userinput>
+</screen>
+ But with NextCombination you would write something like:
+ <screen><userinput>n:=[1:4];
+do (
+ SomeFunction (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen>
+ See also <link linkend="gel-function-Combinations">Combinations</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Get the Pascal's triangle as a matrix. This will return
+ an <varname>i</varname>+1 by <varname>i</varname>+1 lower diagonal
+ matrix that is the Pascal's triangle after <varname>i</varname>
+ iterations.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Get all permutations of <varname>k</varname> numbers from 1 to <varname>n</varname> as a
vector of vectors.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Aliases: <function>Pochhammer</function></para>
+ <para>(Pochhammer) Rising factorial: (n)_k = n(n+1)...(n+(k-1)).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Aliases: <function>StirlingS1</function></para>
+ <para>Stirling number of the first kind.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Aliases: <function>StirlingS2</function></para>
+ <para>Stirling number of the second kind.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink>
for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (nth)</synopsis>
+ <para>Calculate the <varname>n</varname>th triangular number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Aliases: <function>Binomial</function></para>
+ <para>Calculate combinations, that is, the binomial coefficient.
+ <varname>n</varname> can be any real number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Choose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Calculate the number of permutations of size
+ <varname>r</varname> of numbers from 1 to <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Cálculo</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Integration of f by Composite Simpson's Rule on the interval [a,b] with n subintervals with
error of max(f'''')*h^4*(b-a)/180, note that n should be even.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
+ <para>Integration of f by Composite Simpson's Rule on the interval [a,b] with the number of steps
calculated by the fourth derivative bound and the desired tolerance.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Attempt to calculate derivative by trying first symbolically and then numerically.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the even periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be even on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
+ and
+ <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Return a function that is a Fourier series with the
+coefficients given by the vectors <varname>a</varname> (sines) and
+<varname>b</varname> (cosines). Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>, while
+<userinput>b@(n)</userinput> refers to the term
+<userinput>sin(x*n*pi/L)</userinput>. Either <varname>a</varname>
+or <varname>b</varname> can be <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (func,start,inc)</synopsis>
+ <para>Try to calculate an infinite product for a single parameter function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (func,arg,start,inc)</synopsis>
+ <para>Try to calculate an infinite product for a double parameter function with func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (func,start,inc)</synopsis>
+ <para>Try to calculate an infinite sum for a single parameter function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (func,arg,start,inc)</synopsis>
+ <para>Try to calculate an infinite sum for a double parameter function with func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Try and see if a real-valued function is continuous at x0 by calculating the limit
there.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Test for differentiability by approximating the left and right limits and comparing.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Calculate the left limit of a real-valued function at x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Calculate the limit of a real-valued function at x0. Tries to calculate both left and right
limits.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Integration by midpoint rule.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Aliases: <function>NDerivative</function></para>
+ <para>Attempt to calculate numerical derivative.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of vectors <userinput>[a,b]</userinput>
+where <varname>a</varname> are the cosine coefficients and
+<varname>b</varname> are the sine coefficients of
+the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. This is the
+trigonometric real series composed of sines and cosines. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.
+Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Integration by rule set in NumericalIntegralFunction of f from a to b using
NumericalIntegralSteps steps.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Attempt to calculate numerical left derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
+ <para>Attempt to calculate the limit of f(step_fun(i)) as i goes from 1 to N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Attempt to calculate numerical right derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the odd periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be odd on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>
+ and
+ <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Compute one-sided derivative using five point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Compute one-sided derivative using three-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Return a function that is the periodic extension of
+<function>f</function> defined on the interval <userinput>[a,b]</userinput>
+and has period <userinput>b-a</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
+ and
+ <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Calculate the right limit of a real-valued function at x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Compute two-sided derivative using five-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Compute two-sided derivative using three-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Funções</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Aliases: <function>Arg</function> <function>arg</function></para>
+ <para>argument (angle) of complex number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Bessel function of the first kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Bessel function of the first kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Bessel function of the first kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Bessel function of the second kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Bessel function of the second kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Bessel function of the second kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichlet kernel of order <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Aliases: <function>erf</function></para>
+ <para>The error function, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ErrorFunction">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Fejer kernel of order <varname>n</varname> evaluated at
+ <varname>t</varname></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Aliases: <function>Gamma</function></para>
+ <para>The Gamma function. Currently only implemented for real values.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are equal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>
+ The principal branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>.
+ That is, <function>LambertW</function> is the inverse of
+ the expression <userinput>x*e^x</userinput>. Even for
+ real <varname>x</varname> this expression is not one to one and
+ therefore has two branches over <userinput>[-1/e,0)</userinput>.
+ See <link linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> for the
other real branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>
+ The minus-one branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>
+ and less than 0.
+ That is, <function>LambertWm1</function> is the second
+ branch of the inverse of <userinput>x*e^x</userinput>.
+ See <link linkend="gel-function-LambertW"><function>LambertW</function></link> for the
principal branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (func,x,incr)</synopsis>
+ <para>Find the first value where f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Moebius mapping of the disk to itself mapping a to 0.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking z2,z3,z4 to 1,0, and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to infinity and z2,z3 to 1 and 0
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to 1 and z3,z4 to 0 and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to 0 and z2,z4 to 1 and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Poisson kernel on D(0,1) (not normalized to 1, that is integral of this is 2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Poisson kernel on D(0,R) (not normalized to 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Aliases: <function>zeta</function></para>
+ <para>The Riemann zeta function. Currently only implemented for real values.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>The unit step function is 0 for x<0, 1 otherwise. This is the integral of the Dirac
Delta function. Also called the Heaviside function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>
+ The <function>cis</function> function, that is the same as
+ <userinput>cos(x)+1i*sin(x)</userinput>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Convert degrees to radians.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Convert radians to degrees.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Calculates the unnormalized sinc function, that is
+ <userinput>sin(x)/x</userinput>.
+ If you want the normalized function call <userinput>sinc(pi*x)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Solução de equações</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>
+ Compute roots of a cubic (degree 3) polynomial using the
+ cubic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,4]</userinput>.
+ Returns a column vector of the three solutions. The first solution is always
+ the real one as a cubic always has one real solution.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns <varname>y</varname> at <varname>x1</varname>.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKutta">RungeKutta</link>
+ for solving ODE.
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link>
+ for solving ODE.
+ Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the bisection method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the method of false position.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Find root of a function using the Muller's method.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the secant method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Halley's method. <varname>f</varname> is
+ the function, <varname>df</varname> is the derivative of
+ <varname>f</varname>, and <varname>ddf</varname> is the second derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link> and
<link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Newton's method. <varname>f</varname> is
+ the function and <varname>df</varname> is the derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> and <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>
+ Compute roots of a polynomial (degrees 1 through 4)
+ using one of the formulas for such polynomials.
+ The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,4]</userinput>.
+ Returns a column vector of the solutions.
+ </para>
+ <para>
+ The function calls
+ <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>,
+ <link linkend="gel-function-CubicFormula">CubicFormula</link>, and
+ <link linkend="gel-function-QuarticFormula">QuarticFormula</link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>
+ Compute roots of a quadratic (degree 2) polynomial using the
+ quadratic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>3*x^2 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,3]</userinput>.
+ Returns a column vector of the two solutions.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>
+ Compute roots of a quartic (degree 4) polynomial using the
+ quartic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>5*x^4 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,0,5]</userinput>.
+ Returns a column vector of the four solutions.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments, returns <varname>y</varname> at <varname>x1</varname>.
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values. Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Estatística</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Aliases: <function>average</function> <function>Mean</function>
<function>mean</function></para>
+ <para>Calculate average (the arithmetic mean) of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Integral of the GaussFunction from 0 to <varname>x</varname> (area under the normal
curve).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>The normalized Gauss distribution function (the normal curve).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Aliases: <function>median</function></para>
+ <para>Calculate median of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>stdevp</function></para>
+ <para>Calculate the population standard deviation of a whole matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Aliases: <function>RowMean</function></para>
+ <para>Calculate average of each row in a matrix. That is, compute the
+ arithmetic mean.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Calculate median of each row in a matrix and return a column
+ vector of the medians.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>rowstdevp</function></para>
+ <para>Calculate the population standard deviations of rows of a matrix and return a vertical
vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>rowstdev</function></para>
+ <para>Calculate the standard deviations of rows of a matrix and return a vertical vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Aliases: <function>stdev</function></para>
+ <para>Calculate the standard deviation of a whole matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Polinômios</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Add two polynomials (vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Divide two polynomials (as vectors) using long division.
+ Returns the quotient
+ of the two polynomials. The optional argument <varname>r</varname>
+ is used to return the remainder. The remainder will have lower
+ degree than <varname>q</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Check if a vector is usable as a polynomial.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Multiply two polynomials (as vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,guess,epsilon,maxn)</synopsis>
+ <para>Find a root of a polynomial using Newton's method. <varname>poly</varname> is
+ the polynomial as a vector and <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Take second polynomial (as vector) derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Take polynomial (as vector) derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Make function out of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Make string out of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Subtract two polynomials (as vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Trim zeros from a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Teoria dos conjuntos</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Returns a set theoretic intersection of X and Y (X and Y are vectors pretending to be
sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Returns <constant>true</constant> if the element x is in the set X (where X is a vector
pretending to be a set).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Returns <constant>true</constant> if X is a subset of Y (X and Y are vectors pretending to be
sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Returns a vector where every element of X appears only once.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Returns a set theoretic difference X-Y (X and Y are vectors pretending to be sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Returns a set theoretic union of X and Y (X and Y are vectors pretending to be sets).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Álgebra comutativa</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>For a Hilbert function that is c for degree d, given the Macaulay bound for the Hilbert
function of degree d+1 (The c^<d> operator from Green's proof).</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>The c_<d> operator from Green's proof of Macaulay's Theorem.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Return the dth Macaulay representation of a positive integer c.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Miscelânea</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vec)</synopsis>
+ <para>Convert a vector of ASCII values to a string.
+ See also
+ <link linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vec,alphabet)</synopsis>
+ <para>Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string.
A <constant>null</constant> vector results in an empty string.
+ See also
+ <link linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (str)</synopsis>
+ <para>Convert a string to a (row) vector of ASCII values.
+ See also
+ <link linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (str,alphabet)</synopsis>
+ <para>Convert a string to a (row) vector of 0-based alphabet values
+ (positions in the alphabet string), -1's for unknown letters.
+ An empty string results in a <constant>null</constant>.
+ See also
+ <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Operações simbólicas</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Tenta simbolicamente derivar a função f, onde f é uma função de uma variável.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Attempt to symbolically differentiate the function f, where f is a function of one variable,
returns <constant>null</constant> if unsuccessful but is silent.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Attempt to symbolically differentiate a function n times.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Attempt to symbolically differentiate a function n times quietly and return
<constant>null</constant> on failure
+ (See <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Attempt to construct the Taylor approximation function around x0 to the nth degree.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Plotagem</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (file,type)</synopsis>
+ <synopsis>ExportPlot (file)</synopsis>
+ <para>
+ Export the contents of the plotting window to a file.
+ The type is a string that specifies the file type to
+ use, "png", "eps", or "ps". If the type is not
+ specified, then it is taken to be the extension, in
+ which case the extension must be ".png", ".eps", or ".ps".
+ </para>
+ <para>
+ Note that files are overwritten without asking.
+ </para>
+ <para>
+ On successful export, true is returned. Otherwise
+ error is printed and exception is raised.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>ExportPlot("file.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/directory/file","eps")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (func1,func2,func3,...)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a function (or several functions) with a line.
+ First (up to 10) arguments are functions, then optionally
+ you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>)
+ If the y limits are not specified, then the functions are computed and then the maxima and minima
+ are used.
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>
+ Show the line plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (func,...)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>
+ Plot a parametric complex valued function with a line. First comes
+the function that returns <computeroutput>x+iy</computeroutput>,
+then optionally the <varname>t</varname> limits as <userinput>t1,t2,tinc</userinput>, then
+optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
+ </para>
+ <para>
+ If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,
+ <varname>x2</varname>,<varname>y2</varname> can be replaced by an
+ <varname>n</varname> by 2 matrix for a longer polyline.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ arrows, the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ <userinput>"arrow"</userinput>, or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, type of arrow, or the legend. (Arrow and window are from version 1.0.6 onwards.)
+ </para>
+ <para>
+ If the line is to be treated as a filled polygon, filled with the given color, you
+ can specify the argument <userinput>"filled"</userinput>. Since version 1.0.22 onwards.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Arrow specification should be
+ <userinput>"origin"</userinput>,
+ <userinput>"end"</userinput>,
+ <userinput>"both"</userinput>, or
+ <userinput>"none"</userinput>.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector.
+ </para>
+ <para>
+ Specifying <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>.
+ The input can be an <varname>n</varname> by 2 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th
roots of unity")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector. Therefore, notice in the
+ last example the transpose of the vector <userinput>0:6</userinput>
+ to make it into a column vector.
+ </para>
+ <para>
+ Available from version 1.0.18 onwards. Specifying
+ <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>
+ Returns a row vector of a point on the line plot corresponding to
+ the current mouse location. If the line plot is not visible,
+ then prints an error and returns <constant>null</constant>.
+ In this case you should run
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> or
+ <link linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link>
+ to put the graphing window into the line plot mode.
+ See also
+ <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfunc,yfunc,...)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
+ <para>
+ Plot a parametric function with a line. First come the functions
+for <varname>x</varname> and <varname>y</varname> then optionally the <varname>t</varname> limits as
<userinput>t1,t2,tinc</userinput>, then optionally the
+limits as <userinput>x1,x2,y1,y2</userinput>.
+ </para>
+ <para>
+ If x and y limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>
+ If in line plot mode, waits for a click on the line plot window
+ and returns the location of the click as a row vector.
+ If the window is closed
+ the function returns immediately with <constant>null</constant>.
+ If the window is not in line plot mode, it is put in it and shown
+ if not shown.
+ See also
+ <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>
+ Freeze drawing of the canvas plot temporarily. Useful if you need to draw a bunch of
elements
+ and want to delay drawing everything to avoid flicker in an animation. After everything
+ has been drawn you should call <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.
+ </para>
+ <para>
+ The canvas is always thawed after end of any execution, so it will never remain frozen.
The moment
+ a new command line is shown for example the plot canvas is thawed automatically. Also note
that
+ calls to freeze and thaw may be safely nested.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>
+ Thaw the plot canvas frozen by
+ <link linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link>
+ and redraw the canvas immediately. The canvas is also always thawed after end of execution
+ of any program.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>
+ Show and raise the plot window, creating it if necessary.
+ Normally the window is created when one of the plotting
+ functions is called, but it is not always raised if it
+ happens to be below other windows. So this function is
+ good to call in scripts where the plot window might have
+ been created before, and by now is hidden behind the
+ console or other windows.
+ </para>
+ <para>Version 1.0.19 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>
+ Clears the solutions drawn by the
+ <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>
+ function.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>
+ When a slope field plot is active, draw a solution with
+ the specified initial condition. The standard
+ Runge-Kutta method is used with increment <varname>dx</varname>.
+ Solutions stay on the graph until a different plot is shown or until
+ you call
+ <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>.
+ You can also use the graphical interface to draw solutions and specify
+ initial conditions with the mouse.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (func)</synopsis>
+ <synopsis>SlopefieldPlot (func,x1,x2,y1,y2)</synopsis>
+ <para>
+ Plot a slope field. The function <varname>func</varname>
+ should take two real numbers <varname>x</varname>
+ and <varname>y</varname>, or a single complex
+ number.
+ Optionally you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (func)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a surface function that takes either two arguments or a complex number. First comes the
function then optionally limits as <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>,
+ <varname>z1</varname>, <varname>z2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>).
+ Genius can only plot a single surface function at this time.
+ </para>
+ <para>
+ If the z limits are not specified then the maxima and minima of the function are used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>
+ Show the surface plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ <para>
+ Available in version 1.0.19 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,label)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>
+ Plot a surface from data. The data is an n by 3 matrix whose
+ rows are the x, y and z coordinates. The data can also be
+ simply a vector whose length is a multiple of 3 and so
+ contains the triples of x, y, z. The data should contain at
+ least 3 points.
+ </para>
+ <para>
+ Optionally we can give the label and also optionally the
+ limits. If limits are not given, they are computed from
+ the data, <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>
+ is not used, if you want to use it, pass it in explicitly.
+ If label is not given then empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"My data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen>
+ </para>
+ <para>
+ Here's an example of how to plot in polar coordinates,
+ in particular how to plot the function
+ <userinput>-r^2 * theta</userinput>:
+ <screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi
by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)</synopsis>
+ <para>
+ Plot a surface from regular rectangular data.
+ The data is given in a n by m matrix where the rows are the
+ x coordinate and the columns are the y coordinate.
+ The x coordinate is divided into equal n-1 subintervals
+ and y coordinate is divided into equal m-1 subintervals.
+ The limits <varname>x1</varname> and <varname>x2</varname>
+ give the interval on the x-axis that we use, and
+ the limits <varname>y1</varname> and <varname>y2</varname>
+ give the interval on the y-axis that we use.
+ If the limits <varname>z1</varname> and <varname>z2</varname>
+ are not given they are computed from the data (to be
+ the extreme values from the data).
+ </para>
+ <para>
+ Optionally we can give the label, if label is not given then
+ empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> can be replaced by an
+ <varname>n</varname> by 3 matrix for a longer polyline.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>,<varname>z</varname>.
+ The input can be an <varname>n</varname> by 3 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>
+ Clears the solutions drawn by the
+ <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>
+ function.
+ </para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
+ <para>
+ When a vector field plot is active, draw a solution with
+ the specified initial condition. The standard
+ Runge-Kutta method is used with increment <varname>dt</varname>
+ for an interval of length <varname>tlen</varname>.
+ Solutions stay on the graph until a different plot is shown or until
+ you call
+ <link
linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>.
+ You can also use the graphical interface to draw solutions and specify
+ initial conditions with the mouse.
+ </para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (funcx, funcy)</synopsis>
+ <synopsis>VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)</synopsis>
+ <para>
+ Plot a two dimensional vector field. The function
+ <varname>funcx</varname>
+ should be the dx/dt of the vectorfield and the function
+ <varname>funcy</varname> should be the dy/dt of the vectorfield.
+ The functions
+ should take two real numbers <varname>x</varname>
+ and <varname>y</varname>, or a single complex
+ number. When the parameter
+ <link
linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link>
+ is <constant>true</constant>, then the magnitude of the vectors is normalized. That is, only
+ the direction and not the magnitude is shown.
+ </para>
+ <para>
+ Optionally you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1,
-1, 1)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Example Programs in GEL</title>
+
+ <para>
+Here is a function that calculates factorials:
+<programlisting><![CDATA[function f(x) = if x <= 1 then 1 else (f(x-1)*x)
+]]></programlisting>
+ </para>
+ <para>
+With indentation it becomes:
+<programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting>
+ </para>
+ <para>
+This is a direct port of the factorial function from the <application>bc</application> manpage. The syntax
seems similar to <application>bc</application>, but different in that in GEL, the last expression is the one
that is returned. Using the <literal>return</literal> function instead, it would be:
+<programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting>
+ </para>
+
+ <para>
+By far the easiest way to define a factorial function would be using
+the product loop as follows. This is not only the shortest and fastest,
+but also probably the most readable version.
+<programlisting>function f(x) = prod k=1 to x do k
+</programlisting>
+ </para>
+
+ <para>
+Here is a larger example, this basically redefines the internal
+<link linkend="gel-function-ref"><function>ref</function></link> function to calculate the row echelon form
of a
+matrix. The function <function>ref</function> is built in and much faster,
+but this example demonstrates some of the more complex features of GEL.
+<programlisting><![CDATA[# Calculate the row-echelon form of a matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting>
+ </para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Preferências</title>
+
+ <para>
+ To configure <application>Genius Mathematics Tool</application>, choose
+ <menuchoice><guimenu>Settings</guimenu>
+ <guimenuitem>Preferences</guimenuitem></menuchoice>.
+ There are several basic parameters provided by the calculator in addition
+ to the ones provided by the standard library. These control how the
+ calculator behaves.
+ </para>
+
+ <note>
+ <title>Changing Settings with GEL</title>
+ <para>
+ Many of the settings in Genius are simply global variables, and can
+ be evaluated and assigned to in the same way as normal variables. See
+ <xref linkend="genius-gel-variables"/> about evaluating and assigning
+ to variables, and <xref linkend="genius-gel-function-parameters"/> for
+ a list of settings that can be modified in this way.
+ </para>
+ <para>
+As an example, you can set the maximum number of digits in a result to 12 by typing:
+<programlisting>MaxDigits = 12
+</programlisting>
+ </para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Saída</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximum digits to output</guilabel>
+ </term>
+ <listitem>
+ <para>The maximum digits in a result (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Resultados como números reais</guilabel>
+ </term>
+ <listitem>
+ <para>If the results should be always printed as floats (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Resultados em notação científica</guilabel>
+ </term>
+ <listitem>
+ <para>If floats should be in scientific notation (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Sempre mostrar expressões completas</guilabel>
+ </term>
+ <listitem>
+ <para>Should we print out full expressions for non-numeric return values (longer than a
line) (<link linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Usa frações mistas</guilabel>
+ </term>
+ <listitem>
+ <para>If fractions should be printed as mixed fractions such as "1 1/3" rather than "4/3".
(<link linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Exibir 0.0 quando o número de ponto flutuante for menor que 10^-x (0=nunca
arredondar)</guilabel>
+ </term>
+ <listitem>
+ <para>How to chop output. But only when other numbers nearby are large.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Só arredondar números quando outro número for maior que 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>When to chop output. This is set by the parameter <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Lembrar a saída de configurações entre sessões</guilabel>
+ </term>
+ <listitem>
+ <para>Should the output settings in the <guilabel>Number/Expression output options</guilabel> frame
+ be remembered for next session. Does not apply to the <guilabel>Error/Info output
options</guilabel> frame.</para>
+ <para>
+ If unchecked,
+ either the default or any previously saved settings are used each time Genius starts
+ up. Note that
+ settings are saved at the end of the session, so if you wish to change the defaults
+ check this box, restart <application>Genius Mathematics Tool</application> and then uncheck it
again.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Exibir erros em uma caixa de diálogo</guilabel>
+ </term>
+ <listitem>
+ <para>If set the errors will be displayed in a separate dialog, if
+ unset the errors will be printed on the console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Exibir mensagens de informação em uma caixa de diálogo</guilabel>
+ </term>
+ <listitem>
+ <para>If set the information messages will be displayed in a separate
+ dialog, if unset the information messages will be printed on the
+ console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Erros máximos para mostrar</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The maximum number of errors to return on one evaluation
+ (<link linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). If you set this to
0 then
+ all errors are always returned. Usually if some loop causes
+ many errors, then it is unlikely that you will be able to make
+ sense out of more than a few of these, so seeing a long list
+ of errors is usually not helpful.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ In addition to these preferences, there are some preferences that can
+ only be changed by setting them in the workspace console. For others
+ that may affect the output see <xref linkend="genius-gel-function-parameters"/>.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>The base that will be used to output integers</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>A string, can be <literal>"normal"</literal>,
+<literal>"latex"</literal>, <literal>"mathml"</literal> or
+<literal>"troff"</literal> and it will affect how matrices (and perhaps other
+stuff) is printed, useful for pasting into documents. Normal style is the
+default human readable printing style of <application>Genius Mathematics Tool</application>. The other
styles are for
+typesetting in LaTeX, MathML (XML), or in Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Precisão</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Precisão de ponto flutuante</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The floating point precision in bits
+ (<link linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>).
+ Note that changing this only affects newly computed quantities.
+ Old values stored in variables are obviously still in the old
+ precision and if you want to have them more precise you will have
+ to recompute them. Exceptions to this are the system constants
+ such as <link linkend="gel-function-pi"><function>pi</function></link> or
+ <link linkend="gel-function-e"><function>e</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Lembrar as configurações de precisão entre sessões</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Should the precision setting be remembered for the next session. If unchecked,
+ either the default or any previously saved setting is used each time Genius starts
+ up. Note that
+ settings are saved at the end of the session, so if you wish to change the default
+ check this box, restart genius and then uncheck it again.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Terminal</title>
+
+ <para>
+ Terminal refers to the console in the work area.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Rolar linha para trás</guilabel>
+ </term>
+ <listitem>
+ <para>Lines of scrollback in the terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Fonte</guilabel>
+ </term>
+ <listitem>
+ <para>The font to use on the terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Preto em branco</guilabel>
+ </term>
+ <listitem>
+ <para>If to use black on white on the terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Cursor piscante</guilabel>
+ </term>
+ <listitem>
+ <para>If the cursor in the terminal should blink when the terminal is in focus. This can sometimes
be annoying and it generates idle traffic if you are using Genius remotely.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Memória</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Número máximo de nós para alocar</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Internally all data is put onto small nodes in memory. This gives
+ a limit on the maximum number of nodes to allocate for
+ computations. This limit avoids the problem of running out of memory
+ if you do something by mistake that uses too much memory, such
+ as a recursion without end. This could slow your computer and make
+ it hard to even interrupt the program.
+ </para>
+ <para>
+ Once the limit is reached, <application>Genius Mathematics Tool</application> asks if you wish to
interrupt
+ the computation or if you wish to continue. If you continue, no
+ limit is applied and it will be possible to run your computer
+ out of memory. The limit will be applied again next time you
+ execute a program or an expression on the Console regardless of how
+ you answered the question.
+ </para>
+ <para>
+ Setting the limit to zero means there is no limit to the amount of
+ memory that genius uses.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>About <application>Genius Mathematics Tool</application></title>
+
+ <para> <application>Genius Mathematics Tool</application> was written by Jiří (George) Lebl
+(<email>jirka 5z com</email>). The history of <application>Genius Mathematics Tool</application> goes back
to late
+1997. It was the first calculator program for GNOME, but it then grew
+beyond being just a desktop calculator. To find more information about
+<application>Genius Mathematics Tool</application>, please visit the <ulink
url="http://www.jirka.org/genius.html" type="http">Genius Web page</ulink>.
+ </para>
+ <para>
+ To report a bug or make a suggestion regarding this application or
+ this manual, send email to me (the author) or post to the mailing
+ list (see the web page).
+ </para>
+
+ <para> This program is distributed under the terms of the GNU
+ General Public license as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option)
+ any later version. A copy of this license can be found at this
+ <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">link</ulink>, or in the file
+ COPYING included with the source code of this program. </para>
+
+ <para>Jiří Lebl was during various parts of the development
+ partially supported for the work by NSF grants DMS 0900885,
+ DMS 1362337,
+ the University of Illinois at Urbana-Champaign,
+ the University of California at San Diego,
+ the University of Wisconsin-Madison, and
+ Oklahoma State University. The software has
+ been used for both teaching and research.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/pt_BR/html/index.html b/help/pt_BR/html/index.html
index ab7555b..9a89635 100644
--- a/help/pt_BR/html/index.html
+++ b/help/pt_BR/html/index.html
@@ -1,5 +1,5 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Manual do
Genius</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="description"
content="Manual da ferramenta matemática Genius"><link rel="home" href="index.html" title="Manual do
Genius"><link rel="next" href="ch01.html" title="Capítulo 1. Introdução"></head><body bgcolor="white"
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%"
summary="Navigation header"><tr><th colspan="3" align="center">Manual do Genius</th></tr><tr><td width="20%"
align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n"
href="ch01.html">Próxima</a></td></tr></table><hr></div><div lang="pt_BR" class="book"><div
class="titlepage"><div><div><h1 class="title"><a name="index"></a>Manual do Genius</h1></div><div><div
class="authorgroup"><div class="author"><h3 class="author"><span cl
ass="firstname">Jiří</span> <span class="surname">Lebl</span></h3><div class="affiliation"><span
class="orgname">Universidade do Estado de Oklahoma<br></span><div class="address"><p> <code
class="email"><<a class="email" href="mailto:jirka 5z com">jirka 5z com</a>></code>
</p></div></div></div><div class="author"><h3 class="author"><span class="firstname">Kai</span> <span
class="surname">Willadsen</span></h3><div class="affiliation"><span class="orgname">Universidade de
Queensland, Austrália<br></span><div class="address"><p> <code class="email"><<a class="email"
href="mailto:kaiw itee uq edu au">kaiw itee uq edu au</a>></code>
</p></div></div></div></div></div><div><p class="releaseinfo">This manual describes version 1.0.22 of Genius.
- </p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2013. Enrico
Nicoletto (liverig gmail com)</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>Permissão
concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação
Livre GNU (GNU Free Documentation License), Versão 1.1 ou qualquer versão mais recente publicada pela Free
Software Foundation; sem Seções Invariantes, Textos de Capa Frontal, e sem Textos de Contracapa. Você pode
encontrar uma cópia da licença GFDL neste <a class="ulink" href="ghelp:fdl" target="_top">link</a> ou no
arquivo COPYING-DOCS distribuído com este manual.</p><p>Este manual é parte da coleção de manuais do GNOME
distribuídos sob a GFDL. Se você quiser distribuí-lo separadamente da coleção, você pode fazê-lo adicionando
ao manu
al uma cópia da licença, como descrito na seção 6 da licença.</p><p>Muitos dos nomes usados por empresas
para distinguir seus produtos e serviços são reivindicados como marcas registradas. Onde esses nomes aparecem
em qualquer documentação do GNOME e os membros do Projeto de Documentação do GNOME estiverem cientes dessas
marcas registradas, os nomes aparecerão impressos em letras maiúsculas ou com iniciais em maiúsculas.</p><p>O
DOCUMENTO E VERSÕES MODIFICADAS DO DOCUMENTO SÃO FORNECIDOS SOB OS TERMOS DA GNU FREE DOCUMENTATION LICENSE
COM O ENTENDIMENTO ADICIONAL DE QUE: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li
class="listitem"><p>O DOCUMENTO É FORNECIDO NA BASE "COMO ESTÁ", SEM GARANTIAS DE QUALQUER TIPO, TANTO
EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS DE QUE O DOCUMENTO OU VERSÃO MODIFICADA DO
DOCUMENTO SEJA COMERCIALIZÁVEL, LIVRE DE DEFEITOS, PRÓPRIO PARA UM PROPÓSITO ESPECÍFICO OU SEM INFRAÇÕES. TO
DO O RISCO A RESPEITO DA QUALIDADE, EXATIDÃO, E DESEMPENHO DO DOCUMENTO OU VERSÕES MODIFICADAS DO DOCUMENTO
É DE SUA RESPONSABILIDADE. SE ALGUM DOCUMENTO OU VERSÃO MODIFICADA SE PROVAR DEFEITUOSO EM QUALQUER ASPECTO,
VOCÊ (NÃO O ESCRITOR INICIAL, AUTOR OU QUALQUER CONTRIBUIDOR) ASSUME O CUSTO DE QUALQUER SERVIÇO NECESSÁRIO,
REPARO OU CORREÇÃO. ESSA RENÚNCIA DE GARANTIAS CONSTITUI UMA PARTE ESSENCIAL DESTA LICENÇA. NENHUM USO DESTE
DOCUMENTO OU VERSÃO MODIFICADA DESTE DOCUMENTO É AUTORIZADO SE NÃO FOR SOB ESSA RENÚNCIA; E</p></li><li
class="listitem"><p>SOB NENHUMA CIRCUNSTÂNCIA E SOB NENHUMA TEORIA LEGAL, TANTO EM DANO (INCLUINDO
NEGLIGÊNCIA), CONTRATO, OU OUTROS, DEVEM O AUTOR, ESCRITOR INICIAL, QUALQUER CONTRIBUIDOR, OU QUALQUER
DISTRIBUIDOR DO DOCUMENTO OU VERSÃO MODIFICADA DO DOCUMENTO, OU QUALQUER FORNECEDOR DE ALGUMA DESSAS PARTES,
SEREM CONSIDERADOS RESPONSÁVEIS A QUALQUER PESSOA POR QUALQUER DANO, SEJA DIRETO, INDIRETO, ESPECIAL,
ACIDENTAL OU DANO
S DECORRENTES DE QUALQUER NATUREZA, INCLUINDO, MAS NÃO LIMITADO A, DANOS POR PERDA DE BOA VONTADE, TRABALHO
PARADO, FALHA OU MAU FUNCIONAMENTO DO COMPUTADOR, OU QUALQUER E TODOS OS OUTROS DANOS OU PERDAS RESULTANTES
OU RELACIONADOS AO USO DO DOCUMENTO E VERSÕES MODIFICADAS, MESMO QUE TAL PARTE TENHA SIDO INFORMADA DA
POSSIBILIDADE DE TAIS DANOS.</p></li></ol></div></div></div><div><div class="legalnotice"><a
name="idm45857544496400"></a><p class="legalnotice-title"><b>Comentários</b></p><p>
+ </p></div><div><p class="copyright">Copyright © 1997-2016 Jiří (George) Lebl</p></div><div><p
class="copyright">Copyright © 2004 Kai Willadsen</p></div><div><p class="copyright">Copyright © 2013. Enrico
Nicoletto (liverig gmail com)</p></div><div><div class="legalnotice"><a name="legalnotice"></a><p>Permissão
concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação
Livre GNU (GNU Free Documentation License), Versão 1.1 ou qualquer versão mais recente publicada pela Free
Software Foundation; sem Seções Invariantes, Textos de Capa Frontal, e sem Textos de Contracapa. Você pode
encontrar uma cópia da licença GFDL neste <a class="ulink" href="ghelp:fdl" target="_top">link</a> ou no
arquivo COPYING-DOCS distribuído com este manual.</p><p>Este manual é parte da coleção de manuais do GNOME
distribuídos sob a GFDL. Se você quiser distribuí-lo separadamente da coleção, você pode fazê-lo adicionando
ao manu
al uma cópia da licença, como descrito na seção 6 da licença.</p><p>Muitos dos nomes usados por empresas
para distinguir seus produtos e serviços são reivindicados como marcas registradas. Onde esses nomes aparecem
em qualquer documentação do GNOME e os membros do Projeto de Documentação do GNOME estiverem cientes dessas
marcas registradas, os nomes aparecerão impressos em letras maiúsculas ou com iniciais em maiúsculas.</p><p>O
DOCUMENTO E VERSÕES MODIFICADAS DO DOCUMENTO SÃO FORNECIDOS SOB OS TERMOS DA GNU FREE DOCUMENTATION LICENSE
COM O ENTENDIMENTO ADICIONAL DE QUE: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li
class="listitem"><p>O DOCUMENTO É FORNECIDO NA BASE "COMO ESTÁ", SEM GARANTIAS DE QUALQUER TIPO, TANTO
EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS DE QUE O DOCUMENTO OU VERSÃO MODIFICADA DO
DOCUMENTO SEJA COMERCIALIZÁVEL, LIVRE DE DEFEITOS, PRÓPRIO PARA UM PROPÓSITO ESPECÍFICO OU SEM INFRAÇÕES. TO
DO O RISCO A RESPEITO DA QUALIDADE, EXATIDÃO, E DESEMPENHO DO DOCUMENTO OU VERSÕES MODIFICADAS DO DOCUMENTO
É DE SUA RESPONSABILIDADE. SE ALGUM DOCUMENTO OU VERSÃO MODIFICADA SE PROVAR DEFEITUOSO EM QUALQUER ASPECTO,
VOCÊ (NÃO O ESCRITOR INICIAL, AUTOR OU QUALQUER CONTRIBUIDOR) ASSUME O CUSTO DE QUALQUER SERVIÇO NECESSÁRIO,
REPARO OU CORREÇÃO. ESSA RENÚNCIA DE GARANTIAS CONSTITUI UMA PARTE ESSENCIAL DESTA LICENÇA. NENHUM USO DESTE
DOCUMENTO OU VERSÃO MODIFICADA DESTE DOCUMENTO É AUTORIZADO SE NÃO FOR SOB ESSA RENÚNCIA; E</p></li><li
class="listitem"><p>SOB NENHUMA CIRCUNSTÂNCIA E SOB NENHUMA TEORIA LEGAL, TANTO EM DANO (INCLUINDO
NEGLIGÊNCIA), CONTRATO, OU OUTROS, DEVEM O AUTOR, ESCRITOR INICIAL, QUALQUER CONTRIBUIDOR, OU QUALQUER
DISTRIBUIDOR DO DOCUMENTO OU VERSÃO MODIFICADA DO DOCUMENTO, OU QUALQUER FORNECEDOR DE ALGUMA DESSAS PARTES,
SEREM CONSIDERADOS RESPONSÁVEIS A QUALQUER PESSOA POR QUALQUER DANO, SEJA DIRETO, INDIRETO, ESPECIAL,
ACIDENTAL OU DANO
S DECORRENTES DE QUALQUER NATUREZA, INCLUINDO, MAS NÃO LIMITADO A, DANOS POR PERDA DE BOA VONTADE, TRABALHO
PARADO, FALHA OU MAU FUNCIONAMENTO DO COMPUTADOR, OU QUALQUER E TODOS OS OUTROS DANOS OU PERDAS RESULTANTES
OU RELACIONADOS AO USO DO DOCUMENTO E VERSÕES MODIFICADAS, MESMO QUE TAL PARTE TENHA SIDO INFORMADA DA
POSSIBILIDADE DE TAIS DANOS.</p></li></ol></div></div></div><div><div class="legalnotice"><a
name="idm51"></a><p class="legalnotice-title"><b>Comentários</b></p><p>
To report a bug or make a suggestion regarding the <span class="application">Genius Mathematics
Tool</span>
application or this manual, please visit the
<a class="ulink" href="http://www.jirka.org/genius.html" target="_top">Genius
diff --git a/help/ru/genius.xml b/help/ru/genius.xml
new file mode 100644
index 0000000..9a898a9
--- /dev/null
+++ b/help/ru/genius.xml
@@ -0,0 +1,9669 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="ru">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Руководство по Математическому инструменту
Genius.</para></abstract>
+ <title>Руководство пользователя Genius</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2012</year><holder>Алексей Кабанов (ak099 mail ru)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License (GFDL), Version 1.1 or any later version published
+ by the Free Software Foundation with no Invariant Sections,
+ no Front-Cover Texts, and no Back-Cover Texts. You can find
+ a copy of the GFDL at this <ulink type="help" url="ghelp:fdl">link</ulink> or in the file
COPYING-DOCS
+ distributed with this manual.
+ </para>
+ <para> This manual is part of a collection of GNOME manuals
+ distributed under the GFDL. If you want to distribute this
+ manual separately from the collection, you can do so by
+ adding a copy of the license to the manual, as described in
+ section 6 of the license.
+ </para>
+
+ <para>
+ Many of the names used by companies to distinguish their
+ products and services are claimed as trademarks. Where those
+ names appear in any GNOME documentation, and the members of
+ the GNOME Documentation Project are made aware of those
+ trademarks, then the names are in capital letters or initial
+ capital letters.
+ </para>
+
+ <para>
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
+ UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
+ WITH THE FURTHER UNDERSTANDING THAT:
+
+ <orderedlist>
+ <listitem>
+ <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+ IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+ THAT THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
+ A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+ RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
+ OF THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
+ MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
+ CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+ SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+ LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
+ VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
+ EXCEPT UNDER THIS DISCLAIMER; AND
+ </para>
+ </listitem>
+ <listitem>
+ <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
+ THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
+ CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
+ INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
+ DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
+ OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
+ PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+ INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
+ OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+ MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
+ LOSSES ARISING OUT OF OR RELATING TO USE OF THE
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
+ EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+ THE POSSIBILITY OF SUCH DAMAGES.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Oklahoma State University</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>Университет Квинслэнда, Австралия</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>September 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>This manual describes version 1.0.22 of Genius.
+ </releaseinfo>
+ <legalnotice>
+ <title>Обратная связь</title>
+ <para>
+ To report a bug or make a suggestion regarding the <application>Genius Mathematics
Tool</application>
+ application or this manual, please visit the
+ <ulink url="http://www.jirka.org/genius.html" type="http">Genius
+ Web page</ulink>
+ or email me at <email>jirka 5z com</email>.
+ </para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Введение</title>
+ <para>
+ The <application>Genius Mathematics Tool</application> application is a general calculator for use as
a desktop
+ calculator, an educational tool in mathematics, and is useful even for
+ research. The language used in <application>Genius Mathematics Tool</application> is designed to be
+ ‘mathematical’ in the sense that it should be ‘what
+ you mean is what you get’. Of course that is not an
+ entirely attainable goal. <application>Genius Mathematics Tool</application> features rationals,
arbitrary
+ precision integers and multiple precision floats using the GMP library.
+ It handles complex numbers using cartesian notation. It has good
+ vector and matrix manipulation and can handle basic linear algebra.
+ The programming language allows user defined functions, variables and
+ modification of parameters.
+ </para>
+
+ <para><application>Математический инструмент Genius</application> имеет две версии. Одна из них — это
версия с графическим интерфейсом для GNOME, имеющая интерфейс в стиле интегрированных сред разработки (IDE) и
способная строить графики функций одной или двух переменных. Версия для командной строки не требует наличия
GNOME, но и не реализует тех возможностей, которые требуют наличия графического интерфейса.</para>
+
+ <para>
+ Parts of this manual describe the graphical version of the calculator,
+ but the language is of course the same. The command line only version
+ lacks the graphing capabilities and all other capabilities that require
+ the graphical user interface.
+ </para>
+
+ <para>
+ Generally, when some feature of the language (function, operator, etc...)
+ is new in some version past 1.0.5, it is mentioned, but
+ below 1.0.5 you would have to look at the NEWS file.
+ </para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Приступая к работе</title>
+
+ <sect1 id="genius-to-start">
+ <title>Запуск <application>Математического инструмента Genius</application></title>
+ <para>You can start <application>Genius Mathematics Tool</application> in the following ways:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Меню <guimenu>Приложения</guimenu></term>
+ <listitem>
+ <para>В зависимости от установленной операционной системы и её версии, команда меню для запуска
<application>Математического инструмента Genius</application> может находиться в различных местах. Она может
располагаться в подменю <guisubmenu>Образование</guisubmenu>, <guisubmenu>Стандартные</guisubmenu>,
<guisubmenu>Офис</guisubmenu>, <guisubmenu>Наука</guisubmenu> или других подобных подменю. Нужный вам элемент
меню называется <guimenuitem>Математический инструмент Genius</guimenuitem>. Когда вы найдёте этот элемент
меню, щёлкните на нём, чтобы запустить <application>Математический инструмент Genius</application>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Диалог запуска</term>
+ <listitem>
+ <para>В некоторых операционных системах упомянутая выше команда меню может быть недоступна. В
этом случае можно открыть диалог запуска и выполнить команду <command>gnome-genius</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Командная строка</term>
+ <listitem>
+ <para>Чтобы запустить версию <application>Математического инструмента Genius</application> для
GNOME, выполните в командной строке <command>gnome-genius</command>.</para>
+ <para>Чтобы запустить версию для командной строки, выполните следующую команду:
<command>genius</command>. Эта версия не содержит графического интерфейса и некоторые возможности, такие как
построение графиков, будут в ней недоступны.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>После запуска Genius</title>
+ <para>После запуска версии <application>Математического инструмента Genius</application> для GNOME
появится окно, изображённое на иллюстрации <xref linkend="mainwindow-fig"/>.</para>
+
+ <figure id="mainwindow-fig">
+ <title>Окно <application>Математического инструмента Genius</application></title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows <application>Математический инструмент Genius</application> main window. Contains
titlebar, menubar,
+toolbar and working area. Menubar contains <guilabel>Файл</guilabel>,
+<guilabel>Правка</guilabel>, <guilabel>Калькулятор</guilabel>,
+<guilabel>Examples</guilabel>,
+<guilabel>Programs</guilabel>,
+<guilabel>Настройки</guilabel>, and <guilabel>Справка</guilabel> menus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Окно <application>Математического инструмента Genius</application> содержит следующие
элементы:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Строка меню.</term>
+ <listitem>
+ <para>Строка меню содержит все команды, необходимые для работы с файлами в
<application>Математическом инструменте Genius</application>. Меню <guilabel>Файл</guilabel> содержит команды
для загрузки и сохранения объектов и создания новых программ. Команда <guilabel>Загрузить и
выполнить...</guilabel> не открывает новое окно для программы, а просто сразу выполняет программу. Её
действие эквивалентно действию команды <command>load</command>.</para>
+ <para>
+ The <guilabel>Calculator</guilabel> menu controls the
+calculator engine. It allows you to run the currently selected program or to
+interrupt the current calculation. You can also look at the full expression of
+the last answer (useful if the last answer was too large to fit onto the
+console), or you can view a listing of the values of all user defined
+variables. You can also monitor user variables, which is especially useful
+while a long calculation is running, or to debug a certain program.
+ Finally the <guilabel>Calculator</guilabel> allows plotting functions using a user
friendly dialog box.
+ </para>
+ <para>
+ The <guilabel>Examples</guilabel> menu is a list of example
+ programs or demos. If you open the menu, it will load the
+ example into a new program, which you can run, edit, modify,
+ and save. These programs should be well documented
+ and generally demonstrate either some feature of <application>Genius Mathematics
Tool</application>
+ or some mathematical concept.
+ </para>
+ <para>
+ The <guilabel>Programs</guilabel> menu lists
+ the currently open programs and allows you to switch
+ between them.
+ </para>
+ <para>Остальные меню выполняют такие же действия, как в других приложениях.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Панель инструментов.</term>
+ <listitem>
+ <para>Панель инструментов содержит некоторые из команд, к которым можно получить доступ через
строку меню.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Рабочая область</term>
+ <listitem>
+ <para>Рабочая область — основной способ взаимодействия с приложением.</para>
+ <para>
+ The working area initially has just the <guilabel>Console</guilabel> tab, which is
+ the main way of interacting with the calculator. Here you
+ type expressions and the results are immediately returned
+ after you hit the Enter key.
+ </para>
+ <para>
+ Alternatively you can write longer programs and those can
+ appear in separate tabs. The programs are a set of commands or
+ functions that can be run all at once rather than entering them
+ at the command line. The programs can be saved in files for later
+ retrieval.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Основы работы с программой</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Использование рабочей области</title>
+
+ <para>
+ Normally you interact with the calculator in the <guilabel>Console</guilabel> tab of the
+ work area. If you are running the text only version then the console
+ will be the only thing that is available to you. If you want to use
+ <application>Genius Mathematics Tool</application> as a calculator only, just type in your expression
in the console, it
+ will be evaluated, and the returned value will be printed.
+ </para>
+
+ <para>
+ To evaluate an expression, type it into the <guilabel>Console</guilabel> work area and press
enter.
+ Expressions are written in a
+language called GEL. The most simple GEL expressions just looks like
+mathematics. For example
+<screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen>
+or
+<screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen>
+(Last is the harmonic sum from 1 to 70)
+</para>
+<para>Чтобы получить список функций и команд, наберите: <screen><prompt>genius>
</prompt><userinput>help</userinput>
+</screen> Для получения дополнительной справки по отдельной функции наберите : <screen><prompt>genius>
</prompt><userinput>help ИмяФункции</userinput>
+</screen> Чтобы увидеть это руководство, наберите: <screen><prompt>genius>
</prompt><userinput>manual</userinput>
+</screen></para>
+<para>
+Suppose you have previously saved some GEL commands as a program to a file and
+you now want to execute them.
+To load this program from the file <filename>path/to/program.gel</filename>,
+type
+<screen><prompt>genius> </prompt><userinput>load path/to/program.gel</userinput>
+</screen>
+<application>Genius Mathematics Tool</application> keeps track of the current directory.
+To list files in the current directory type <command>ls</command>, to change directory
+do <userinput>cd directory</userinput> as in the UNIX command shell.
+</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>Создание новой программы</title>
+ <para>
+ If you wish to enter several more complicated commands, or perhaps write a complicated
+ function using the <link linkend="genius-gel">GEL</link> language, you can create a new
+ program.
+ </para>
+ <para>
+To start writing a new program, choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>New
+Program</guimenuitem></menuchoice>. A new tab will appear in the work area. You
+can write a <link linkend="genius-gel">GEL</link> program in this work area.
+Once you have written your program you can run it by
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice> (or
+the <guilabel>Run</guilabel> toolbar button).
+This will execute your program and will display any output on the <guilabel>Console</guilabel> tab.
+Executing a program is equivalent of taking the text of the program and
+typing it into the console. The only difference is that this input is done
+independent of the console and just the output goes onto the console.
+<menuchoice><guimenu>Calculator</guimenu><guimenuitem>Run</guimenuitem></menuchoice>
+will always run the currently selected program even if you are on the <guilabel>Console</guilabel>
+tab. The currently selected program has its tab in bold type. To select a
+program, just click on its tab.
+ </para>
+ <para>
+To save the program you've just written, choose <menuchoice><guimenu>File</guimenu><guimenuitem>Save
As...</guimenuitem></menuchoice>.
+Similarly as in other programs you can choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save</guimenuitem></menuchoice> to save a program that
already has
+a filename attached to it. If you have many opened programs you have edited and wish to save you can also
choose
+<menuchoice><guimenu>File</guimenu><guimenuitem>Save All Unsaved</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ Programs that have unsaved changes will have a "[+]" next to their filename. This way you can
see if the file
+ on disk and the currently opened tab differ in content. Programs which have not yet had a
filename associated
+ with them are always considered unsaved and no "[+]" is printed.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Открытие и запуск программы</title>
+ <para>Чтобы открыть файл, выберите
<menuchoice><guimenu>Файл</guimenu><guimenuitem>Открыть</guimenuitem></menuchoice>. В рабочей области
появится новая вкладка с содержимым файла. Вы можете использовать её для редактирования файла.</para>
+ <para>Чтобы запустить программу из файла, выберите
<menuchoice><guimenu>Файл</guimenu><guimenuitem>Загрузить и выполнить...</guimenuitem></menuchoice>. Это
действие запустит программу, не открывая её в отдельной вкладке. Это эквивалентно команде
<command>load</command>.</para>
+ <para>
+ If you have made edits to a file you wish to throw away and want to reload to the version
that's on disk,
+ you can choose the
+ <menuchoice><guimenu>File</guimenu><guimenuitem>Reload from Disk</guimenuitem></menuchoice>
menuitem. This is useful for experimenting
+ with a program and making temporary edits, to run a program, but that you do not intend to keep.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Построение графиков</title>
+
+ <para>Построение графиков поддерживается только в версии с графическим интерфейсом для GNOME. Все
варианты графиков, имеющиеся в графическом интерфейсе, доступны из окна <guilabel>Создать график</guilabel>.
Чтобы открыть это окно, нажмите кнопку <guilabel>График</guilabel> на панели инструментов или выберите
<guilabel>Нарисовать график</guilabel> из меню <guilabel>Калькулятор</guilabel>. Можно также использовать
команды <link linkend="genius-gel-function-list-plotting">построения графиков</link> языка GEL. Смотрите
<xref linkend="genius-gel"/>, чтобы узнать, как вводить выражения, которые понимает Genius.</para>
+
+ <sect1 id="genius-line-plots">
+ <title>Линейные графики</title>
+ <para>
+ To graph real valued functions of one variable open the <guilabel>Create Plot</guilabel>
+ window. You can also use the
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> function
+ on the command line (see its documentation).
+ </para>
+ <para>После нажатия кнопки <guilabel>График</guilabel> откроется окно с несколькими вкладками. Вам
нужна вкладка <guilabel>Линейный график функции</guilabel>, внутри которой следует выбрать вкладку
<guilabel>Функции / Выражения</guilabel>. Смотрите <xref linkend="lineplot-fig"/>.</para>
+
+ <figure id="lineplot-fig">
+ <title>Create Plot Window</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows the line plotting window.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ Type expressions with <userinput>x</userinput> as
+ the independent variable into the textboxes. Alternatively you can give names of functions such as
+ <userinput>cos</userinput> rather then having to type <userinput>cos(x)</userinput>.
+ You can graph up to ten functions. If you make a mistake and Genius cannot
+ parse the input it will signify this with a warning icon on the right of the text
+ input box where the error occurred, as well as giving you an error dialog.
+ You can change the ranges of the dependent and independent variables in the bottom
+ part of the dialog.
+ The <varname>y</varname> (dependent) range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox.
+ The names of the variables can also be changed.
+ Pressing the <guilabel>Plot</guilabel> button produces the graph shown in <xref
linkend="lineplot2-fig"/>.
+ </para>
+ <para>
+ The variables can be renamed by clicking the <guilabel>Change variable names...</guilabel>
button, which is useful if you wish to print or save the figure and don't want to use the standard
+ names. Finally you can also avoid printing the legend and the axis labels completely,
+ which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="lineplot2-fig">
+ <title>Plot Window</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>The graph produced.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ From here you can print out the plot, create encapsulated postscript
+ or a PNG version of the plot or change the zoom. If the dependent axis was
+ not set correctly you can have Genius fit it by finding out the extrema of
+ the graphed functions.
+ </para>
+
+ <para>
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> function.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Parametric Plots</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Parametric</guilabel> notebook
+ tab to create two dimensional parametric plots. This way you can
+ plot a single parametric function. You can either specify the
+ points as <varname>x</varname> and <varname>y</varname>, or giving a single complex number
+ as a function of the variable <varname>t</varname>.
+ The range of the variable <varname>t</varname> is given explicitly, and the function is sampled
+ according to the given increment.
+ The <varname>x</varname> and <varname>y</varname> range can be set
+ automatically by turning on the <guilabel>Fit dependent axis</guilabel>
+ checkbox, or it can be specified explicitly.
+ See <xref linkend="paramplot-fig"/>.
+ </para>
+
+ <figure id="paramplot-fig">
+ <title>Parametric Plot Tab</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Parametric plotting tab in the <guilabel>Create Plot</guilabel> window.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ An example of a parametric plot is given in
+ <xref linkend="paramplot2-fig"/>.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> or
+ <link linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>
function.
+ </para>
+
+ <figure id="paramplot2-fig">
+ <title>Parametric Plot</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Parametric plot produced</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Slopefield Plots</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Slope field</guilabel> notebook
+ tab to create a two dimensional slope field plot.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link> function.
+ </para>
+
+ <para>
+ When a slope field is active, there is an extra <guilabel>Solver</guilabel> menu available,
+ through which you can bring up the solver dialog. Here you can have Genius plot specific
+ solutions for the given initial conditions. You can either specify initial conditions in the dialog,
+ or you can click on the plot directly to specify the initial point. While the solver dialog
+ is active, the zooming by clicking and dragging does not work. You have to close the dialog first
+ if you want to zoom using the mouse.
+ </para>
+
+ <para>
+ The solver uses the standard Runge-Kutta method.
+ The plots will stay on the screen until cleared. The solver will stop whenever it reaches the
boundary
+ of the plot window. Zooming does not change the limits or parameters of the solutions,
+ you will have to clear and redraw them with appropriate parameters.
+ You can also use the
+ <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>
+ function to draw solutions from the command line or programs.
+ </para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Vectorfield Plots</title>
+ <para>
+ In the create plot window, you can also choose the <guilabel>Vector field</guilabel> notebook
+ tab to create a two dimensional vector field plot.
+ Similar operations can be
+ done on such graphs as can be done on the other line plots.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link> function.
+ </para>
+
+ <para>
+ By default the direction and magnitude of the vector field is shown.
+ To only show direction and not the magnitude, check the appropriate
+ checkbox to normalize the arrow lengths.
+ </para>
+
+ <para>
+ When a vector field is active, there is an extra <guilabel>Solver</guilabel> menu available,
+ through which you can bring up the solver dialog. Here you can have Genius plot specific
+ solutions for the given initial conditions. You can either specify initial conditions in the dialog,
+ or you can click on the plot directly to specify the initial point. While the solver dialog
+ is active, the zooming by clicking and dragging does not work. You have to close the dialog first
+ if you want to zoom using the mouse.
+ </para>
+
+ <para>
+ The solver uses the standard Runge-Kutta method.
+ The plots will stay on the screen until cleared.
+ Zooming does not change the limits or parameters of the solutions,
+ you will have to clear and redraw them with appropriate parameters.
+ You can also use the
+ <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>
+ function to draw solutions from the command line or programs.
+ </para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Графики поверхностей</title>
+ <para>
+ Genius can also plot surfaces. Select the <guilabel>Surface plot</guilabel> tab in the
+ main notebook of the <guilabel>Create Plot</guilabel> window. Here you can specify a single
+ expression that should use either <varname>x</varname> and <varname>y</varname> as real independent
variables
+ or <varname>z</varname> as a complex variable (where <varname>x</varname> is the real part of
<varname>z</varname> and <varname>y</varname> is the
+ imaginary part). For example to plot the modulus of the cosine
+ function for complex parameters,
+ you could enter <userinput>|cos(z)|</userinput>. This would be
+ equivalent to <userinput>|cos(x+1i*y)|</userinput>.
+ See <xref linkend="surfaceplot-fig"/>.
+ For plotting using the command line see the documentation of the
+ <link linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link> function.
+ </para>
+ <para>
+ The <varname>z</varname> range can be set automatically by turning on the <guilabel>Fit
dependent axis</guilabel>
+ checkbox. The variables can be renamed by clicking the <guilabel>Change variable
names...</guilabel> button, which is useful if you wish to print or save the figure and don't want to use the
standard
+ names. Finally you can also avoid printing the legend, which is also useful if printing or
+ saving, when the legend might simply be clutter.
+ </para>
+
+ <figure id="surfaceplot-fig">
+ <title>Surface Plot</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Modulus of the complex cosine function.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>
+ In surface mode, left and right arrow keys on your keyboard will rotate the
+ view along the z axis. Alternatively you can rotate along any axis by
+ selecting <guilabel>Rotate axis...</guilabel> in the <guilabel>View</guilabel>
+ menu. The <guilabel>View</guilabel> menu also has a top view mode which rotates the
+ graph so that the z axis is facing straight out, that is, we view the graph from the top
+ and get essentially just the colors that define the values of the function getting a
+ temperature plot of the function. Finally you should
+ try <guilabel>Start rotate animation</guilabel>, to start a continuous slow rotation.
+ This is especially good if using <application>Genius Mathematics Tool</application> to present
to an audience.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>Основы GEL</title>
+
+ <para>
+ GEL stands for Genius Extension Language. It is the language you use
+ to write programs in Genius. A program in GEL is simply an
+ expression that evaluates to a number, a matrix, or another object
+ in GEL.
+ <application>Genius Mathematics Tool</application> can be used as a simple calculator, or as a
+ powerful theoretical research tool. The syntax is meant to
+ have as shallow of a learning curve as possible, especially for use
+ as a calculator.
+ </para>
+
+ <sect1 id="genius-gel-values">
+ <title>Значения</title>
+
+ <para>
+ Values in GEL can be <link linkend="genius-gel-values-numbers">numbers</link>, <link
linkend="genius-gel-values-booleans">Booleans</link>, or <link
linkend="genius-gel-values-strings">strings</link>. GEL also treats
+<link linkend="genius-gel-matrices">matrices</link> as values.
+ Values can be used in calculations, assigned to variables and returned from functions, among
other uses.
+ </para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Числа</title>
+ <para>Целые числа — первый тип чисел в GEL. Целые числа записываются общепринятым способом.
<programlisting>1234
+</programlisting> Шестнадцатиричные и восьмиричные числа можно записать, используя нотацию языка C.
Например: <programlisting>0x123ABC
+01234
+</programlisting> Можно также набрать числа в произвольной системе счисления, используя запись
<literal><основание>\<число></literal>. Для цифр больше 10 используются буквы, как и в
шестнадцатиричном счислении. Например, число по основанию 23 может быть записано в виде:
<programlisting>23\1234ABCD
+</programlisting></para>
+
+ <para>Второй тип чисел в GEL — это рациональные числа. Они получаются делением двух целых чисел.
Поэтому можно написать: <programlisting>3/4
+</programlisting> чтобы обозначить три четвёртых. Рациональные числа также можно записывать в виде смешанных
дробей. Чтобы указать одну целую три десятых, можно написать: <programlisting>1 3/10
+</programlisting></para>
+
+ <para>
+The next type of number is floating point. These are entered in a similar fashion to C notation. You can use
<literal>E</literal>, <literal>e</literal> or <literal>@</literal> as the exponent delimiter. Note that using
the exponent delimiter gives a float even if there is no decimal point in the number. Examples:
+<programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting>
+ When Genius prints a floating point number it will always append a
+ <computeroutput>.0</computeroutput> even if the number is whole. This is to indicate that
+ floating point numbers are taken as imprecise quantities. When a number is written in the
+ scientific notation, it is always a floating point number and thus Genius does not
+ print the <computeroutput>.0</computeroutput>.
+ </para>
+
+ <para>
+The final type of number in GEL is the complex numbers. You can enter a complex number as a sum of real and
imaginary parts. To add an imaginary part, append an <literal>i</literal>. Here are examples of entering
complex numbers:
+<programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting>
+ </para>
+
+ <important>
+ <para>При вводе мнимых чисел перед символом <literal>i</literal> должно стоять число. Если
использовать символ <literal>i</literal> сам по себе, Genius интерпретирует его как ссылку на переменную
<varname>i</varname>. Если нужно указать саму мнимую единицу <literal>i</literal>, используйте вместо неё
<literal>1i</literal>.</para>
+
+ <para>Чтобы использовать смешанные дроби в мнимых числах, нужно взять смешанную дробь в круглые
скобки: (например, <userinput>(1 2/5)i</userinput>)</para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Логические значения</title>
+ <para>Genius также поддерживает логические значения. Определены две логические константы:
<constant>true</constant> и <constant>false</constant>; их можно использовать, как и любую переменную. В
качестве псевдонимов к ним можно также использовать <constant>True</constant>, <constant>TRUE</constant>,
<constant>False</constant> и <constant>FALSE</constant>.</para>
+ <para>Там, где требуется логическое выражение, можно использовать логическое значение или любое
выражение, дающее в результате число или логическое значение. Если Genius нужно использовать число как
логическое значение, он будет интерпретировать 0 как <constant>false</constant> и любое другое число как
<constant>true</constant>.</para>
+ <para>Кроме того, с логическими значениями можно выполнять арифметические операции. Например:
<programlisting>( (1 + true) - false ) * true
+</programlisting> это то же самое, что и: <programlisting>( (true or true) or not false ) and true
+</programlisting> Поддерживаются только сложение, вычитание и умножение. Если вы используете в выражении
смесь чисел с логическими значениями, то числа преобразовываются в логические значения, как описано выше. То
есть, результатом выражения: <programlisting>1 == true
+</programlisting> всегда будет <constant>true</constant>, так как 1 преобразовывается в
<constant>true</constant> перед сравнением с <constant>true</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Строки</title>
+ <para>
+Like numbers and Booleans, strings in GEL can be stored as values inside variables and passed to functions.
You can also concatenate a string with another value using the plus operator. For example:
+<programlisting>a=2+3;"Результат равен: "+a
+</programlisting>
+will create the string:
+<programlisting>Результат равен: 5
+</programlisting>
+You can also use C-like escape sequences such as
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal>\a</literal> and
<literal>\r</literal>. To get a <literal>\</literal> or <literal>"</literal> into the string you can quote it
with a <literal>\</literal>. For example:
+<programlisting>"Косая черта: \\ Кавычки: \" Табуляция: \t1\t2\t3"
+</programlisting>
+will make a string:
+<programlisting>Косая черта: \ Кавычки: " Табуляция: 1 2 3
+</programlisting>
+Do note however that when a string is returned from a function, escapes are
+quoted, so that the output can be used as input. If you wish to print the
+string as it is (without escapes), use the
+<link linkend="gel-function-print"><function>print</function></link>
+or
+<link linkend="gel-function-printn"><function>printn</function></link> functions.
+ </para>
+ <para>
+ In addition, you can use the library function <link
linkend="gel-function-string"><function>string</function></link> to convert anything to a string. For example:
+<programlisting>string(22)
+</programlisting>
+will return
+<programlisting>"22"
+</programlisting>
+Strings can also be compared with <literal>==</literal> (equal), <literal>!=</literal> (not equal) and
<literal><=></literal> (comparison) operators
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>
+There is a special value called
+<constant>null</constant>. No operations can be performed on
+it, and nothing is printed when it is returned. Therefore,
+<constant>null</constant> is useful when you do not want output from an
+expression. The value <constant>null</constant> can be obtained as an expression when you
+type <literal>.</literal>, the constant <constant>null</constant> or nothing.
+By nothing we mean that if you end an expression with
+a separator <literal>;</literal>, it is equivalent to ending it with a
+separator followed by a <constant>null</constant>.
+ </para>
+ <para>Пример: <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>Некоторые функции возвращают <constant>null</constant>, если невозможно вернуть значение или произошла
ошибка. Также <constant>null</constant> используется как пустой вектор или матрица, или пустая ссылка.</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Использование переменных</title>
+
+ <para>Синтаксис: <programlisting>ИмяПеременной
+</programlisting> Пример: <screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen></para>
+
+ <para>Чтобы вычислить значение переменной, просто введите имя переменной и программа вернёт её
значение. Можно использовать переменную в любом месте, где обычно используется число или строка. Кроме того,
переменные необходимы при определении функций, принимающих аргументы (см. <xref
linkend="genius-gel-functions-defining"/>).</para>
+
+ <tip>
+ <title>Использование автозавершения по клавише Tab</title>
+ <para>Вы можете использовать автозавершение по нажатию клавиши Tab, чтобы Genius автоматически
подставлял полное имя переменной. Попробуйте набрать несколько первых букв имени и нажать
<userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Имена переменных чувствительны к регистру</title>
+ <para>Имена переменных чувствительны к регистру символов. Это означает, что переменные
<varname>hello</varname>, <varname>HELLO</varname> и <varname>Hello</varname> — это разные переменные.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Присваивание значения переменным</title>
+ <para>Синтаксис: <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Пример: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>
+To assign a value to a variable, use the <literal>=</literal> or <literal>:=</literal> operators. These
operators set the value of the variable and return the value you set, so you can do things like
+<programlisting>a = b = 5
+</programlisting>
+This will set <varname>b</varname> to 5 and then also set <varname>a</varname> to 5.
+ </para>
+
+ <para>Для присваивания значения переменным можно использовать любой из операторов
<literal>=</literal> и <literal>:=</literal>. Различие между ними в том, что оператор <literal>:=</literal>
всегда действует как оператор присваивания, а оператор <literal>=</literal> может интерпретироваться как
проверка на равенство там, где ожидается логическое выражение.</para>
+
+ <para>
+ For more information about the scope of variables, that is when are what variables visible, see
<xref linkend="genius-gel-variables-global"/>.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Встроенные переменные</title>
+ <para>
+GEL has a number of built-in ‘variables’, such as
+<varname>e</varname>, <varname>pi</varname> or <varname>GoldenRatio</varname>. These are widely used
constants with a preset value, and
+they cannot be assigned new values.
+There are a number of other built-in variables.
+See <xref linkend="genius-gel-function-list-constants"/> for a full list. Note that <varname>i</varname> is
not by default
+the square root of negative one (the imaginary number), and is undefined to allow its use as a counter. If
you wish to write the imaginary number you need to
+use <userinput>1i</userinput>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Переменные с результатом предыдущего вычисления</title>
+ <para>Переменные <varname>Ans</varname> и <varname>ans</varname> могут использоваться для получения
результата последнего вычисления. Например, чтобы добавить 389 к результату предыдущего вычисления, можно
набрать: <programlisting>Ans+389
+</programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Использование функций</title>
+
+ <para>Синтаксис: <programlisting>ИмяФункции(аргумент1, аргумент2, ...)
+</programlisting> Пример: <programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting> Чтобы вычислить значение функции, введите имя функции, за которым следуют аргументы
функции (если они имеются) в круглых скобках. Программа вернёт результат применения функции к её аргументам.
Разумеется, число аргументов может быть разным для разных функций.</para>
+
+ <para>
+ There are many built-in functions, such as <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> and <link
linkend="gel-function-tan"><function>tan</function></link>. You can use the <link
linkend="gel-command-help"><function>help</function></link> built-in command to get a list of available
functions, or see <xref linkend="genius-gel-function-list"/> for a full listing.
+ </para>
+
+ <tip>
+ <title>Использование автозавершения по клавише Tab</title>
+ <para>Можно использовать автозавершение по клавише Tab, чтобы Genius автоматически подставлял имена
функций. Попробуйте набрать первые несколько букв имени и нажать <userinput>Tab</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Имена функций чувствительны к регистру</title>
+ <para>Имена функций чувствительны к регистру символов. Это означает, что функции
<function>dosomething</function>, <function>DOSOMETHING</function> и <function>DoSomething</function> — это
разные функции.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Определение функций</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[function <identifier>(<comma separated arguments>) = <function body>
+<identifier> = (`() = <function body>)
+]]></programlisting>
+The <literal>`</literal> is the backquote character, and signifies an anonymous function. By setting it to a
variable name you effectively define a function.
+ </para>
+
+ <para>
+A function takes zero or more comma separated arguments, and returns the result of the function body.
Defining your own functions is primarily a matter of convenience; one possible use is to have sets of
functions defined in GEL files that Genius can load in order to make them available.
+Example:
+<programlisting>function addup(a,b,c) = a+b+c
+</programlisting>
+then <userinput>addup(1,4,9)</userinput> yields 14
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Variable Argument Lists</title>
+ <para>
+If you include <literal>...</literal> after the last argument name in the function declaration, then Genius
will allow any number of arguments to be passed in place of that argument. If no arguments were passed then
that argument will be set to <constant>null</constant>. Otherwise, it will be a horizontal vector containing
all the arguments. For example:
+<programlisting>function f(a,b...) = b
+</programlisting>
+Then <userinput>f(1,2,3)</userinput> yields <computeroutput>[2,3]</computeroutput>, while
<userinput>f(1)</userinput> yields a <constant>null</constant>.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Passing Functions to Functions</title>
+
+ <para>
+In Genius, it is possible to pass a function as an argument to another function. This can be done using
either ‘function nodes’ or anonymous functions.
+ </para>
+
+ <para>
+If you do not enter the parentheses after a function name, instead of being evaluated, the function will
instead be returned as a ‘function node’. The function node can then be passed to another function.
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting>
+ </para>
+ <para>
+To pass functions that are not defined,
+you can use an anonymous function (see <xref linkend="genius-gel-functions-defining"/>). That is, you want
to pass a function without giving it a name.
+Syntax:
+<programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting>
+Example:
+<programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting>
+This will return 5.
+ </para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Операции с функциями</title>
+ <para>
+ Some functions allow arithmetic operations, and some single argument functions such as <link
linkend="gel-function-exp"><function>exp</function></link> or <link
linkend="gel-function-ln"><function>ln</function></link>, to operate on the function. For example,
+<programlisting>exp(sin*cos+4)
+</programlisting>
+will return a function that takes <varname>x</varname> and returns
<userinput>exp(sin(x)*cos(x)+4)</userinput>. It is functionally equivalent
+to typing
+<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting>
+
+This operation can be useful when quickly defining functions. For example to create a function called
<varname>f</varname>
+to perform the above operation, you can just type:
+<programlisting>f = exp(sin*cos+4)
+</programlisting>
+It can also be used in plotting. For example, to plot sin squared you can enter:
+<programlisting>LinePlot(sin^2)
+</programlisting>
+ </para>
+
+ <warning>
+ <para>
+Not all functions can be used in this way. For example, when you use a binary operation the functions must
take the same number of arguments.
+ </para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Разделитель</title>
+ <para>
+ GEL is somewhat different from other languages in how it deals with multiple commands and
functions.
+ In GEL you must chain commands together with a separator operator.
+That is, if you want to type more than one expression you have to use
+the <literal>;</literal> operator in between the expressions. This is
+a way in which both expressions are evaluated and the result of the second one (or the last one
+if there is more than two expressions) is returned.
+Suppose you type the following:
+<programlisting>3 ; 5
+</programlisting>
+This expression will yield 5.
+ </para>
+ <para>
+This will require some parenthesizing to make it unambiguous sometimes,
+especially if the <literal>;</literal> is not the top most primitive. This slightly differs from
+other programming languages where the <literal>;</literal> is a terminator of statements, whereas
+in GEL it’s actually a binary operator. If you are familiar with pascal
+this should be second nature. However genius can let you pretend it is a
+terminator to some degree. If a <literal>;</literal> is found at the end of a parenthesis or a block,
+genius will append a null to it as if you would have written
+<userinput>;null</userinput>.
+This is useful in case you do not want to return a value from say a loop,
+or if you handle the return differently. Note that it will slightly slow down
+the code if it is executed too often as there is one more operator involved.
+ </para>
+ <para>
+ If you are typing expressions in a program you do not have to add a semicolon. In this case
+ genius will simply print the return value whenever it executes the expression. However, do
note that if you are defining a
+ function, the body of the function is a single expression.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Comments</title>
+ <para>
+ GEL is similar to other scripting languages in that <literal>#</literal> denotes
+ a comment, that is text that is not meant to be evaluated. Everything beyond the
+ pound sign till the end of line will just be ignored. For example,
+<programlisting># This is just a comment
+# every line in a comment must have its own pound sign
+# in the next line we set x to the value 123
+x=123;
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Modular Evaluation</title>
+ <para>
+ Genius implements modular arithmetic.
+To use it you just add "mod <integer>" after
+the expression. Example:
+<userinput>2^(5!) * 3^(6!) mod 5</userinput>
+It could be possible to do modular arithmetic by computing with integers and then modding in the end with
+the <literal>%</literal> operator, which simply gives the remainder, but
+that may be time consuming if not impossible when working with larger numbers.
+For example, <userinput>10^(10^10) % 6</userinput> will simply not work (the exponent
+will be too large), while
+<userinput>10^(10^10) mod 6</userinput> is instantaneous. The first expression first tries to compute the
integer
+<userinput>10^(10^10)</userinput> and then find remainder after division by 6, while the second expression
evaluates
+everything modulo 6 to begin with.
+ </para>
+ <para>
+You can calculate the inverses of numbers mod some integer by just using
+rational numbers (of course the inverse has to exist).
+Examples:
+<programlisting>10^-1 mod 101
+1/10 mod 101</programlisting>
+You can also do modular evaluation with matrices including taking inverses,
+powers and dividing.
+Example:
+<programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting>
+This should yield the identity matrix as B will be the inverse of A mod 5.
+ </para>
+ <para>
+Some functions such as
+<link linkend="gel-function-sqrt"><function>sqrt</function></link> or
+<link linkend="gel-function-log"><function>log</function></link>
+work in a different way when in modulo mode. These will then work like their
+discrete versions working within the ring of integers you selected. For
+example:
+<programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting>
+ <function>sqrt</function> will actually return all the possible square
+ roots.
+ </para>
+ <para>
+ Do not chain mod operators, simply place it at the end of the computation, all computations in
the expression on the left
+ will be carried out in mod arithmetic. If you place a mod inside
+ a mod, you will get unexpected results. If you simply want to
+ mod a single number and control exactly when remainders are
+ taken, best to use the <literal>%</literal> operator. When you
+ need to chain several expressions in modular arithmetic with
+ different divisors, it may be best to just split up the expression into several and use
+ temporary variables to avoid a mod inside a mod.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Список операторов GEL</title>
+
+ <para>
+ Everything in GEL is really just an expression. Expressions are stringed together with
+ different operators. As we have seen, even the separator is simply a binary operator
+ in GEL. Here is a list of the operators in GEL.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>Разделитель, просто вычисляющий как <varname>a</varname>, так и <varname>b</varname>, но
возвращающий только результат <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>
+ The assignment operator. This assigns <varname>b</varname> to
+<varname>a</varname> (<varname>a</varname> must be a valid <link linkend="genius-gel-lvalues">lvalue</link>)
(note however that this operator
+may be translated to <literal>==</literal> if used in a place where boolean
+expression is expected)
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>
+ The assignment operator. Assigns <varname>b</varname> to
+<varname>a</varname> (<varname>a</varname> must be a valid <link
linkend="genius-gel-lvalues">lvalue</link>). This is
+different from <literal>=</literal> because it never gets translated to a
+<literal>==</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>
+ Absolute value.
+ In case the expression is a complex number the result will be the modulus
+(distance from the origin). For example:
+<userinput>|3 * e^(1i*pi)|</userinput>
+returns 3.
+ </para>
+ <para>Смотрите <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> для
дополнительной информации.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>Возводит переменную <varname>a</varname> в степень <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>Поэлементное возведение в степень. Возводит каждый элемент матрицы <varname>a</varname> в
степень <varname>b</varname>. Или, если <varname>b</varname> — матрица той же размерности, что и
<varname>a</varname>, выполняет операцию поэлементно. Если <varname>a</varname> — число, а
<varname>b</varname> — матрица, то создаёт матрицу той же размерности, что и <varname>b</varname> со
значением <varname>a</varname>, возведённым во все степени, содержащиеся в <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>
+ Addition. Adds two numbers, matrices, functions or strings. If
+ you add a string to anything the result will just be a string. If one is
+ a square matrix and the other a number, then the number is multiplied by
+ the identity matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>Вычитание. Вычитает два числа, матрицы или функции.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>Умножение. Это обычное умножение матриц.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>Поэлементное умножение, если <varname>a</varname> и <varname>b</varname> являются
матрицами.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>
+ Division. When <varname>a</varname> and <varname>b</varname> are just numbers
+ this is the normal division. When they are matrices, then this is
+ equivalent to <userinput>a*b^-1</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>
+ Element by element division. Same as <userinput>a/b</userinput> for
+ numbers, but operates element by element on matrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>Обратное деление. Это то же самое, что <userinput>b/a</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>Поэлементное обратное деление.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>
+ The mod operator. This does not turn on the <link
linkend="genius-gel-modular-evaluation">modular mode</link>, but
+ just returns the remainder of integer division
+ <userinput>a/b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>
+ Element by element mod operator. Returns the remainder
+ after element by element integer division
+ <userinput>a./b</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>
+ Modular evaluation operator. The expression <varname>a</varname>
+ is evaluated modulo <varname>b</varname>. See <xref linkend="genius-gel-modular-evaluation"/>.
+ Some functions and operators behave differently modulo an integer.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>Факториал: <userinput>1*...*(n-2)*(n-1)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>Двойной факториал: <userinput>1*...*(n-4)*(n-2)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>
+ Equality operator.
+ Returns <constant>true</constant> or <constant>false</constant>
+ depending on <varname>a</varname> and <varname>b</varname> being equal or not.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>Оператор неравенства, возвращает <constant>true</constant>, если <varname>a</varname> не
равно <varname>b</varname>, в противном случае возвращает <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>Альтернативный оператор неравенства, возвращает <constant>true</constant>, если
<varname>a</varname> не равно <varname>b</varname>, иначе возвращает <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>
+ Less than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a <= b <= c</userinput> (can
+ also be combined with the less than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>
+ Greater than or equal operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than or equal to
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a >= b >= c</userinput>
+ (and they can also be combined with the greater than operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>
+ Less than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ less than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a < b < c</userinput>
+ (they can also be combined with the less than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>
+ Greater than operator,
+ returns <constant>true</constant> if <varname>a</varname> is
+ greater than
+ <varname>b</varname> else returns <constant>false</constant>.
+ These can be chained as in <userinput>a > b > c</userinput>
+ (they can also be combined with the greater than or equal to operator).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>Оператор сравнения. Если <varname>a</varname> равно <varname>b</varname>, возвращает 0;
если <varname>a</varname> меньше <varname>b</varname>, возвращает -1; если <varname>a</varname> больше
<varname>b</varname>, возвращает 1.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>
+ Logical and. Returns true if both
+ <varname>a</varname> and <varname>b</varname> are true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>
+ Logical or.
+ Returns true if either
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>
+ Logical xor.
+ Returns true if exactly one of
+ <varname>a</varname> or <varname>b</varname> is true,
+ else returns false. If given numbers, nonzero numbers
+ are treated as true.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>
+ Logical not. Returns the logical negation of <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>
+ Negation operator. Returns the negative of a number or a matrix (works element-wise on a
matrix).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>
+ Variable referencing (to pass a reference to a variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Variable dereferencing (to access a referenced variable).
+ See <xref linkend="genius-gel-references"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>
+ Matrix conjugate transpose. That is, rows and columns get swapped and we take complex
conjugate of all entries. That is
+ if the i,j element of <varname>a</varname> is x+iy, then the j,i element of
<userinput>a'</userinput> is x-iy.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>
+ Matrix transpose, does not conjugate the entries. That is,
+ the i,j element of <varname>a</varname> becomes the j,i element of <userinput>a.'</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>
+ Get element of a matrix in row <varname>b</varname> and column
+ <varname>c</varname>. If <varname>b</varname>,
+ <varname>c</varname> are vectors, then this gets the corresponding
+ rows, columns or submatrices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>
+ Get row of a matrix (or multiple rows if <varname>b</varname> is a vector).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>То же, что и выше.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>Возвращает столбец матрицы (или столбцы, если <varname>c</varname> является
вектором).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>То же, что и выше.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>
+ Get an element from a matrix treating it as a vector. This will
+ traverse the matrix row-wise.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>
+ Build a vector from <varname>a</varname> to <varname>b</varname> (or specify a row, column
region for the <literal>@</literal> operator). For example to get rows 2 to 4 of matrix <varname>A</varname>
we could do
+ <programlisting>A@(2:4,)
+ </programlisting>
+ as <userinput>2:4</userinput> will return a vector
+ <userinput>[2,3,4]</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>
+ Build a vector from <varname>a</varname> to <varname>c</varname>
+ with <varname>b</varname> as a step. That is for example
+ <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting>
+ </para>
+ <para>
+ When the numbers involved are floating point numbers, for example
+ <userinput>1.0:0.4:3.0</userinput>, the output is what is expected
+ even though adding 0.4 to 1.0 five times is actually just slightly
+ more than 3.0 due to the way that floating point numbers are
+ stored in base 2 (there is no 0.4, the actual number stored is
+ just ever so slightly bigger). The way this is handled is the
+ same as in the for, sum, and prod loops. If the end is within
+ <userinput>2^-20</userinput> times the step size of the endpoint,
+ the endpoint is used and we assume there were roundoff errors.
+ This is not perfect, but it handles the majority of the cases.
+ This check is done only from version 1.0.18 onwards, so execution
+ of your code may differ on older versions. If you want to avoid
+ dealing with this issue, use actual rational numbers, possibly
+ using the <function>float</function> if you wish to get floating
+ point numbers in the end. For example
+ <userinput>1:2/5:3</userinput> does the right thing and
+ <userinput>float(1:2/5:3)</userinput> even gives you floating
+ point numbers and is ever so slightly more precise than
+ <userinput>1.0:0.4:3.0</userinput>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>
+ Make <varname>a</varname> into an imaginary number (multiply <varname>a</varname> by the
+ imaginary). Normally the imaginary number <varname>i</varname> is
+ written as <userinput>1i</userinput>. So the above is equal to
+ <programlisting>(a)*1i
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>
+ Quote an identifier so that it doesn't get evaluated. Or
+ quote a matrix so that it doesn't get expanded.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>Меняет местами значение <varname>a</varname> со значением <varname>b</varname>. В настоящее
время не работает с диапазонами элементов матрицы. Возвращает <constant>null</constant>. Доступен, начиная с
версии 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>Инкремент переменной <varname>a</varname> на 1. Если <varname>a</varname> — матрица, то
инкрементирует каждый элемент. Это эквивалентно <userinput>a=a+1</userinput>, но немного быстрее.
Возвращает <constant>null</constant>. Доступен с версии 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>Инкремент переменной <varname>a</varname> на величину <varname>b</varname>. Если
<varname>a</varname> — матрица, то инкрементирует каждый элемент. Это эквивалентно
<userinput>a=a+b</userinput>, но немного быстрее. Возвращает <constant>null</constant>. Доступен с версии
1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>Оператор @() делает использование оператора : наиболее полезным. С его помощью можно указывать области
матрицы. Таким образом, a@(2:4,6) — это строки 2,3,4 столбца 6. Или a@(,1:2) возвращает два первых столбца
матрицы. Можно также присваивать значения оператору @(), если правое значение — это матрица, совпадающая по
размеру с данной областью, или если это любой другой тип значений.</para>
+</note>
+
+<note>
+<para>
+The comparison operators (except for the <=> operator, which behaves normally), are not strictly
binary operators, they can in fact be grouped in the normal mathematical way, e.g.: (1<x<=y<5) is a
legal boolean expression and means just what it should, that is (1<x and x≤y and y<5)
+</para>
+</note>
+
+<note>
+<para>
+The unitary minus operates in a different fashion depending on where it
+appears. If it appears before a number it binds very closely, if it appears in
+front of an expression it binds less than the power and factorial operators.
+So for example <userinput>-1^k</userinput> is really <userinput>(-1)^k</userinput>,
+but <userinput>-foo(1)^k</userinput> is really <userinput>-(foo(1)^k)</userinput>. So
+be careful how you use it and if in doubt, add parentheses.
+</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Программирование в GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Условные операторы</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting>
+If <literal>else</literal> is omitted, then if the <literal>expression1</literal> yields
<constant>false</constant> or 0, <literal>NULL</literal> is returned.
+ </para>
+ <para>
+Examples:
+<programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting>
+Note that <literal>=</literal> will be translated to <literal>==</literal> if used inside the expression for
<literal>if</literal>, so
+<programlisting>if a=5 then a=a-1
+</programlisting>
+will be interpreted as:
+<programlisting>if a==5 then a:=a-1
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Циклы</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>Циклы While</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting>
+
+ These are similar to other languages. However, as in GEL it is simply an expression that must have
some return value, these
+ constructs will simply return the result of the last iteration or <literal>NULL</literal> if no
iteration was done. In the boolean expression, <literal>=</literal> is translated into <literal>==</literal>
just as for the <literal>if</literal> statement.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>Циклы For</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting>
+
+Loop with identifier being set to all values from <literal><from></literal> to
<literal><to></literal>, optionally using an increment other than 1. These are faster, nicer and more
compact than the normal loops such as above, but less flexible. The identifier must be an identifier and
can't be a dereference. The value of identifier is the last value of identifier, or
<literal><from></literal> if body was never evaluated. The variable is guaranteed to be initialized
after a loop, so you can safely use it. Also the <literal><from></literal>,
<literal><to></literal> and <literal><increment></literal> must be non complex values. The
<literal><to></literal> is not guaranteed to be hit, but will never be overshot, for example the
following prints out odd numbers from 1 to 19:
+<programlisting>for i = 1 to 20 by 2 do print(i)
+</programlisting>
+ </para>
+ <para>
+ When one of the values is a floating point number, then the
+ final check is done to within 2^-20 of the step size. That is,
+ even if we overshoot by 2^-20 times the "by" above, we still execute the last
+ iteration. This way
+<programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting>
+does the expected even though adding 0.1 ten times becomes just slightly more than 1.0 due to the way that
floating point numbers
+are stored in base 2 (there is no 0.1, the actual number stored is just ever so slightly bigger). This is
not perfect but it handles
+the majority of the cases. If you want to avoid dealing with this issue, use actual rational numbers for
example:
+<programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting>
+ This check is done only from version 1.0.16 onwards, so execution of your code may differ on
older versions.
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Циклы Foreach</title>
+ <para>
+Syntax:
+<programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
+
+ For each element in the matrix, going row by row from left to right we execute the
body
+ with the identifier set to the current element. To
+print numbers 1,2,3 and 4 in this order you could do:
+<programlisting>for n in [1,2:3,4] do print(n)
+</programlisting>
+If you wish to run through the rows and columns of a matrix, you can use
+the RowsOf and ColumnsOf functions, which return a vector of the rows or
+columns of the matrix. So,
+<programlisting>for n in RowsOf ([1,2:3,4]) do print(n)
+</programlisting>
+will print out [1,2] and then [3,4].
+ </para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Break и Continue</title>
+ <para>В циклах также можно использовать команды <literal>break</literal> и
<literal>continue</literal>. Команда <literal>continue</literal> перезапускает текущий цикл с его следующей
итерации, а команда <literal>break</literal> позволяет выйти из текущего цикла.
<programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Суммы и произведения</title>
+ <para>Синтаксис: <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting> Если заменить <literal>for</literal> на
<literal>sum</literal> или <literal>prod</literal>, то вместо цикла <literal>for</literal> получатся циклы
вычисления суммы или произведения. Вместо того, чтобы возвращать последнее значение, эти команды возвращают
сумму или произведение значений, соответственно.</para>
+ <para>Если тело цикла не вычислялось (например, <userinput>sum i=1 to 0 do ...</userinput>), то
<literal>sum</literal> возвращает 0, а <literal>prod</literal> возвращает 1.</para>
+ <para>
+ For floating point numbers the same roundoff error protection is done as in the for loop.
+ See <xref linkend="genius-gel-loops-for"/>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Операторы сравнения</title>
+ <para>В GEL поддерживаются следующие стандартные операторы сравнения, имеющие очевидное значение:
<literal>==</literal>, <literal>>=</literal>, <literal><=</literal>, <literal>!=</literal>,
<literal><></literal>, <literal><</literal>, <literal>></literal>. Они возвращают
<constant>true</constant> или <constant>false</constant>. Операторы <literal>!=</literal> и
<literal><></literal> эквивалентны и означают «не равно». GEL также поддерживает оператор
<literal><=></literal>, который возвращает -1, если левая сторона меньше, 0 при равенстве обеих сторон
и 1, если левая сторона больше.</para>
+
+ <para>
+ Normally <literal>=</literal> is translated to <literal>==</literal> if
+ it happens to be somewhere where GEL is expecting a condition such as
+ in the if condition. For example
+ <programlisting>if a=b then c
+if a==b then c
+</programlisting>
+ are the same thing in GEL. However you should really use
+ <literal>==</literal> or <literal>:=</literal> when you want to compare
+ or assign respectively if you want your code to be easy to read and
+ to avoid mistakes.
+ </para>
+
+ <para>
+ All the comparison operators (except for the
+ <literal><=></literal> operator, which
+ behaves normally), are not strictly binary operators, they can in fact
+ be grouped in the normal mathematical way, e.g.:
+ (<literal>1<x<=y<5</literal>) is
+ a legal boolean expression and means just what it should, that is
+ (1<x and x≤y and y<5)
+ </para>
+ <para>
+ To build up logical expressions use the words <literal>not</literal>,
+ <literal>and</literal>, <literal>or</literal>, <literal>xor</literal>.
+ The operators <literal>or</literal> and <literal>and</literal> are
+special beasts as they evaluate their arguments one by one, so the usual trick
+for conditional evaluation works here as well. For example, <literal>1 or a=1</literal> will not set
+<literal>a=1</literal> since the first argument was true.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Глобальные переменные и область видимости переменных</title>
+ <para>
+ GEL is a
+ <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29">
+ dynamically scoped language</ulink>. We will explain what this
+ means below. That is, normal variables and functions are dynamically
+ scoped. The exception are
+ <link linkend="genius-gel-parameters">parameter variables</link>,
+ which are always global.
+ </para>
+ <para>
+ Like most programming languages, GEL has different types
+ of variables. Normally when a variable is defined in a function,
+ it is visible from that function and from all functions that are
+ called (all higher contexts). For example, suppose a function
+ <function>f</function> defines a variable <varname>a</varname>
+ and then calls function <function>g</function>. Then
+ function <function>g</function> can reference
+ <varname>a</varname>. But once <function>f</function> returns,
+ the variable <varname>a</varname> goes out of scope.
+ For example, the following code will print out 5.
+ The function <function>g</function> cannot be called on the
+ top level (outside <function>f</function> as <varname>a</varname>
+ will not be defined).
+<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting>
+ </para>
+ <para>
+ If you define a variable inside a function it will override
+ any variables defined in calling functions. For example,
+ we modify the above code and write:
+<programlisting>function f() = (a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting>
+ This code will still print out 5. But if you call
+ <function>g</function> outside of <function>f</function> then
+ you will get a printout of 10. Note that
+ setting <varname>a</varname>
+ to 5 inside <function>f</function> does not change
+ the value of <varname>a</varname> at the top (global) level,
+ so if you now check the value of <varname>a</varname> it will
+ still be 10.
+ </para>
+ <para>
+ Function arguments are exactly like variables defined inside
+ the function, except that they are initialized with the value
+ that was passed to the function. Other than this point, they are
+ treated just like all other variables defined inside the
+ function.
+ </para>
+ <para>
+ Functions are treated exactly like variables. Hence you can
+ locally redefine functions. Normally (on the top level) you
+ cannot redefine protected variables and functions. But locally
+ you can do this. Consider the following session:
+<screen><prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen>
+ </para>
+ <para>
+ Functions and variables defined at the top level are
+ considered global. They are visible from anywhere. As we
+ said the following function <function>f</function>
+ will not change the value of <varname>a</varname> to 5.
+<programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting>
+ Sometimes, however, it is necessary to set
+a global variable from inside a function. When this behavior is needed,
+use the
+<link linkend="gel-function-set"><function>set</function></link> function. Passing a string or a quoted
identifier to
+this function sets the variable globally (on the top level).
+For example, to set
+<varname>a</varname> to the value 3 you could call:
+<programlisting>set(`a,3)
+</programlisting>
+or:
+<programlisting>set("a",3)
+</programlisting>
+ </para>
+ <para>
+ The <function>set</function> function always sets the toplevel
+ global. There is no way to set a local variable in some function
+ from a subroutine. If this is required, must use passing by
+ reference.
+ </para>
+ <para>
+ See also the
+ <link linkend="gel-function-SetElement"><function>SetElement</function></link> and
+ <link linkend="gel-function-SetVElement"><function>SetVElement</function></link> functions.
+ </para>
+ <para>
+ So to recap in a more technical language: Genius operates with
+ different numbered contexts. The top level is the context 0
+ (zero). Whenever a function is entered, the context is raised,
+ and when the function returns the context is lowered. A function
+ or a variable is always visible from all higher numbered contexts.
+ When a variable was defined in a lower numbered context, then
+ setting this variable has the effect of creating a new local
+ variable in the current context number and this variable
+ will now be visible from all higher numbered contexts.
+ </para>
+ <para>
+ There are also true local variables that are not seen from
+ anywhere but the current context. Also when returning functions
+ by value it may reference variables not visible from higher context
+ and this may be a problem. See the sections
+ <link linkend="genius-gel-true-local-variables">True
+ Local Variables</link> and
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Parameter variables</title>
+ <para>
+ As we said before, there exist special variables called parameters
+ that exist in all scopes. To declare a parameter called
+ <varname>foo</varname> with the initial value 1, we write
+<programlisting><![CDATA[parameter foo = 1
+]]></programlisting>
+ From then on, <varname>foo</varname> is a strictly global variable.
+ Setting <varname>foo</varname> inside any function will modify the
+ variable in all contexts, that is, functions do not have a private
+ copy of parameters.
+ </para>
+ <para>
+ When you undefine a parameter using the
+ <link linkend="gel-function-undefine">
+ <function>undefine</function></link> function, it stops being
+ a parameter.
+ </para>
+ <para>
+ Some parameters are built-in and modify the behavior of genius.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Returning</title>
+ <para>
+ Normally a function is one or several expressions separated by a
+semicolon, and the value of the last expression is returned. This is fine for
+simple functions, but
+sometimes you do not want a function to return the last thing calculated. You may, for example, want to
return from a middle of a function. In this case, you can use the <literal>return</literal> keyword.
<literal>return</literal> takes one argument, which is the value to be returned.
+ </para>
+ <para>Пример: <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>References</title>
+ <para>
+ It may be necessary for some functions to return more than one value.
+ This may be accomplished by returning a vector of values, but many
+ times it is convenient to use passing a reference to a variable.
+ You pass a reference to a variable to a function, and the function
+ will set the variable for you using a dereference. You do not have
+ to use references only for this purpose, but this is their main use.
+ </para>
+ <para>
+ When using functions that return values through references
+ in the argument list, just pass the variable name with an ampersand.
+ For example the following code will compute an eigenvalue of a matrix
+ <varname>A</varname> with initial eigenvector guess
+ <varname>x</varname>, and store the computed eigenvector
+ into the variable named <varname>v</varname>:
+<programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
+]]></programlisting>
+ </para>
+ <para>
+The details of how references work and the syntax is similar to the C language.
+The operator
+<literal>&</literal> references a variable
+and <literal>*</literal> dereferences a variable. Both can only be applied to an identifier,
+so <literal>**a</literal> is not a legal expression in GEL.
+ </para>
+ <para>
+References are best explained by an example:
+<programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting>
+now <varname>a</varname> contains 2. You can also reference functions:
+<programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting>
+gives us 4.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Lvalues</title>
+ <para>
+ An lvalue is the left hand side of an assignment. In other words, an
+ lvalue is what you assign something to. Valid lvalues are:
+<variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>
+ Identifier. Here we would be setting the variable of name
+ <varname>a</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>
+ Dereference of an identifier. This will set whatever variable
+ <varname>a</varname> points to.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<region>)</userinput></term>
+ <listitem>
+ <para>
+ A region of a matrix. Here the region is specified normally as with
+ the regular @() operator, and can be a single entry, or an entire
+ region of the matrix.
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+ </para>
+ <para>
+Examples:
+<programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting>
+Note that both <literal>:=</literal> and <literal>=</literal> can be used
+interchangeably. Except if the assignment appears in a condition.
+It is thus always safer to just use
+<literal>:=</literal> when you mean assignment, and <literal>==</literal>
+when you mean comparison.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Advanced Programming with GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Обработка ошибок</title>
+ <para>
+If you detect an error in your function, you can bail out of it. For normal
+errors, such as wrong types of arguments, you can fail to compute the function
+by adding the statement <literal>bailout</literal>. If something went
+really wrong and you want to completely kill the current computation, you can
+use <literal>exception</literal>.
+ </para>
+ <para>
+ For example if you want to check for arguments in your function. You
+could use the following code.
+<programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M not a matrix!");
+ bailout
+ );
+ ...
+)
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Toplevel Syntax</title>
+ <para>
+ The syntax is slightly different if you enter statements on
+ the top level versus when they are inside parentheses or
+ inside functions. On the top level, enter acts the same as if
+ you press return on the command line. Therefore think of programs
+ as just a sequence of lines as if they were entered on the command line.
+ In particular, you do not need to enter the separator at the end of the
+ line (unless it is of course part of several statements inside
+ parentheses). When a statement does not end with a separator on the
+ top level, the result is printed after being executed.
+ </para>
+ <para>
+ For example,
+ <programlisting>function f(x)=x^2
+f(3)
+</programlisting>
+ will print first the result of setting a function (a representation of
+ the function, in this case <computeroutput>(`(x)=(x^2))</computeroutput>)
+ and then the expected 9. To avoid this, enter a separator
+ after the function definition.
+ <programlisting>function f(x)=x^2;
+f(3)
+</programlisting>
+ If you need to put a separator into your function then you have to surround with
+ parenthesis. For example:
+<programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting>
+ </para>
+ <para>
+ The following code will produce an error when entered on the top
+ level of a program, while it will work just fine in a function.
+<programlisting>if Something() then
+ DoSomething()
+else
+ DoSomethingElse()
+</programlisting>
+ </para>
+ <para>
+ The problem is that after <application>Genius Mathematics Tool</application> sees the end of line
after the
+ second line, it will decide that we have whole statement and
+ it will execute it. After the execution is done, <application>Genius Mathematics Tool</application>
will
+ go on to the next
+ line, it will see <literal>else</literal>, and it will produce
+ a parsing error. To fix this, use parentheses. <application>Genius Mathematics Tool</application>
will not
+ be satisfied until it has found that all parentheses are closed.
+<programlisting>if Something() then (
+ DoSomething()
+) else (
+ DoSomethingElse()
+)
+</programlisting>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Returning Functions</title>
+ <para>
+ It is possible to return functions as value. This way you can
+ build functions that construct special purpose functions according
+ to some parameters. The tricky bit is what variables does the
+ function see. The way this works in GEL is that when a function
+ returns another function, all identifiers referenced in the
+ function body that went out of scope
+ are prepended a private dictionary of the returned
+ function. So the function will see all variables that were in
+ scope
+ when it was defined. For example, we define a function that
+ returns a function that adds 5 to its argument.
+<programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting>
+ Notice that the function adds <varname>k</varname> to
+ <varname>x</varname>. You could use this as follows.
+<programlisting>g = f();
+g(5)
+</programlisting>
+ And <userinput>g(5)</userinput> should return 10.
+ </para>
+ <para>
+ One thing to note is that the value of <varname>k</varname>
+ that is used is the one that's in effect when the
+ <function>f</function> returns. For example:
+<programlisting>function f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting>
+ will return a function that adds 10 to its argument rather than
+ 5. This is because the extra dictionary is created only when
+ the context
+ in which the function was defined ends, which is when the function
+ <function>f</function> returns. This is consistent with how you
+ would expect the function <function>r</function> to work inside
+ the function <function>f</function> according to the rules of
+ scope of variables in GEL. Only those variables are added to the
+ extra dictionary that are in the context that just ended and
+ no longer exists. Variables
+ used in the function that are in still valid contexts will work
+ as usual, using the current value of the variable.
+ The only difference is with global variables and functions.
+ All identifiers that referenced global variables at time of
+ the function definition are not added to the private dictionary.
+ This is to avoid much unnecessary work when returning functions
+ and would rarely be a problem. For example, suppose that you
+ delete the "k=5" from the function <function>f</function>,
+ and at the top level you define <varname>k</varname> to be
+ say 5. Then when you run <function>f</function>, the function
+ <function>r</function> will not put <varname>k</varname> into
+ the private dictionary because it was global (toplevel)
+ at the time of definition of <function>r</function>.
+ </para>
+ <para>
+ Sometimes it is better to have more control over how variables
+ are copied into the private dictionary. Since version 1.0.7,
+ you can specify which
+ variables are copied into the private dictionary by putting
+ extra square brackets after the arguments with the list of
+ variables to be copied separated by commas.
+ If you do this, then variables are
+ copied into the private dictionary at time of the function
+ definition, and the private dictionary is not touched afterwards.
+ For example
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting>
+ will return a function that when called will add 5 to its
+ argument. The local copy of <varname>k</varname> was created
+ when the function was defined.
+ </para>
+ <para>
+ When you want the function to not have any private dictionary
+ then put empty square brackets after the argument list. Then
+ no private dictionary will be created at all. Doing this is
+ good to increase efficiency when a private dictionary is not
+ needed or when you want the function to lookup all variables
+ as it sees them when called. For example suppose you want
+ the function returned from <function>f</function> to see
+ the value of <varname>k</varname> from the toplevel despite
+ there being a local variable of the same name during definition.
+ So the code
+<programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting>
+ will return 20 and not 15, which would happen if
+ <varname>k</varname> with a value of 5 was added to the private
+ dictionary.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>True Local Variables</title>
+ <para>
+ When passing functions into other functions, the normal scoping of
+ variables might be undesired. For example:
+<programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting>
+ you probably want the function <function>r</function>
+ when passed as <function>g</function> into <function>f</function>
+ to see <varname>k</varname> as 10 rather than 5, so that
+ the code returns 11 and not 6. However, as written, the function
+ when executed will see the <varname>k</varname> that is
+ equal to 5. There are two ways to solve this. One would be
+ to have <function>r</function> get <varname>k</varname> in a
+ private dictionary using the square bracket notation section
+ <link linkend="genius-gel-returning-functions">Returning
+ Functions</link>.
+ </para>
+ <para>
+ But there is another solution. Since version 1.0.7 there are
+ true local variables. These are variables that are visible only
+ from the current context and not from any called functions.
+ We could define <varname>k</varname> as a local variable in the
+ function <function>f</function>. To do this add a
+ <command>local</command> statement as the first statement in the
+ function (it must always be the first statement in the function).
+ You can also make any arguments be local variables as well.
+ That is,
+<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ Then the code will work as expected and prints out 11.
+ Note that the <command>local</command> statement initializes
+ all the referenced variables (except for function arguments) to
+ a <constant>null</constant>.
+ </para>
+ <para>
+ If all variables are to be created as locals you can just pass an
+ asterisk instead of a list of variables. In this case the variables
+ will not be initialized until they are actually set of course.
+ So the following definition of <function>f</function>
+ will also work:
+<programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting>
+ </para>
+ <para>
+ It is good practice that all functions that take other functions
+ as arguments use local variables. This way the passed function
+ does not see implementation details and get confused.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>GEL Startup Procedure</title>
+ <para>
+First the program looks for the installed library file (the compiled version <filename>lib.cgel</filename>)
in the installed directory, then it looks into the current directory, and then it tries to load an uncompiled
file called
+<filename>~/.geniusinit</filename>.
+ </para>
+ <para>
+If you ever change the library in its installed place, you’ll have to
+first compile it with <command>genius --compile loader.gel > lib.cgel</command>
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Загрузка программ</title>
+ <para>
+Sometimes you have a larger program you wrote into a file and want to read that file into
<application>Genius Mathematics Tool</application>. In these situations, you have two options. You can keep
the functions you use most inside the <filename>~/.geniusinit</filename> file. Or if you want to load up a
file in a middle of a session (or from within another file), you can type <command>load <list of
filenames></command> at the prompt. This has to be done on the top level and not inside any function or
whatnot, and it cannot be part of any expression. It also has a slightly different syntax than the rest of
genius, more similar to a shell. You can enter the file in quotes. If you use the '' quotes, you will get
exactly the string that you typed, if you use the "" quotes, special characters will be unescaped as they are
for strings. Example:
+<programlisting>load program1.gel program2.gel
+load "Причудливое имя файла с ПРОБЕЛАМИ.gel"
+</programlisting>
+There are also <command>cd</command>, <command>pwd</command> and <command>ls</command> commands built in.
<command>cd</command> will take one argument, <command>ls</command> will take an argument that is like the
glob in the UNIX shell (i.e., you can use wildcards). <command>pwd</command> takes no arguments. For example:
+<programlisting>cd каталог_с_программами_gel
+ls *.gel
+</programlisting>
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Матрицы в GEL</title>
+
+ <para>
+ Genius has support for vectors and matrices and possesses a sizable library of
+ matrix manipulation and linear algebra functions.
+ </para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Ввод матриц</title>
+ <para>
+To enter matrices, you can use one of the following two syntaxes. You can either enter
+the matrix on one line, separating values by commas and rows by semicolons. Or you
+can enter each row on one line, separating
+values by commas.
+You can also just combine the two methods.
+So to enter a 3x3 matrix
+of numbers 1-9 you could do
+<programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting>
+or
+<programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting>
+Do not use both ';' and return at once on the same line though.
+ </para>
+
+ <para>
+You can also use the matrix expansion functionality to enter matrices.
+For example you can do:
+<programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting>
+and you should get
+<programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting>
+similarly you can build matrices out of vectors and other stuff like that.
+ </para>
+
+ <para>
+Another thing is that non-specified spots are initialized to 0, so
+<programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting>
+will end up being
+<programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting>
+ </para>
+
+ <para>
+ When matrices are evaluated, they are evaluated and traversed row-wise. This is just
+ like the <literal>M@(j)</literal> operator, which traverses the matrix row-wise.
+ </para>
+
+ <note>
+ <para>
+Be careful about using returns for expressions inside the
+<literal>[ ]</literal> brackets, as they have a slightly different meaning
+there. You will start a new row.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Conjugate Transpose and Transpose Operator</title>
+ <para>
+You can conjugate transpose a matrix by using the <literal>'</literal> operator. That is
+the entry in the
+<varname>i</varname>th column and the <varname>j</varname>th row will be
+the complex conjugate of the entry in the
+<varname>j</varname>th column and the <varname>i</varname>th row of the original matrix.
+ For example:
+<programlisting>[1,2,3]*[4,5,6]'
+</programlisting>
+We transpose the second vector to make matrix multiplication possible.
+If you just want to transpose a matrix without conjugating it, you would
+use the <literal>.'</literal> operator. For example:
+<programlisting>[1,2,3]*[4,5,6i].'
+</programlisting>
+ </para>
+ <para>
+ Note that normal transpose, that is the <literal>.'</literal> operator, is much faster
+ and will not create a new copy of the matrix in memory. The conjugate transpose does
+ create a new copy unfortunately.
+ It is recommended to always use the <literal>.'</literal> operator when working with real
+ matrices and vectors.
+ </para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Линейная алгебра</title>
+ <para>
+ Genius implements many useful linear algebra and matrix manipulation
+routines. See the <link linkend="genius-gel-function-list-linear-algebra">Linear Algebra</link> and
+<link linkend="genius-gel-function-list-matrix">Matrix Manipulation</link>
+sections of the GEL function listing.
+ </para>
+ <para>
+ The linear algebra routines implemented in GEL do not currently come
+from a well tested numerical package, and thus should not be used for critical
+numerical computation. On the other hand, Genius implements very well many
+linear algebra operations with rational and integer coefficients. These are
+inherently exact and in fact will give you much better results than common
+double precision routines for linear algebra.
+ </para>
+ <para>
+ For example, it is pointless to compute the rank and nullspace of a
+floating point matrix since for all practical purposes, we need to consider the
+matrix as having some slight errors. You are likely to get a different result
+than you expect. The problem is that under a small perturbation every matrix
+is of full rank and invertible. If the matrix however is of rational numbers,
+then the rank and nullspace are always exact.
+ </para>
+ <para>
+ In general when Genius computes the basis of a certain vectorspace
+ (for example with the <link linkend="gel-function-NullSpace"><function>NullSpace</function></link>)
it will give the basis as
+a matrix, in which the columns are the vectors of the basis. That is, when
+Genius talks of a linear subspace it means a matrix whose column space is
+the given linear subspace.
+ </para>
+ <para>
+ It should be noted that Genius can remember certain properties of a
+matrix. For example, it will remember that a matrix is in row reduced form.
+If many calls are made to functions that internally use row reduced form of
+the matrix, we can just row reduce the matrix beforehand once. Successive
+calls to <link linkend="gel-function-rref"><function>rref</function></link> will be very fast.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Многочлены в GEL</title>
+
+ <para>В настоящее время Genius может работать с многочленами одной переменной, записанными в виде
векторов, и выполнять некоторые основные операции с ними. В будущем планируется расширить их поддержку.</para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Использование многочленов</title>
+ <para>
+Currently
+polynomials in one variable are just horizontal vectors with value only nodes.
+The power of the term is the position in the vector, with the first position
+being 0. So,
+<programlisting>[1,2,3]
+</programlisting>
+translates to a polynomial of
+<programlisting>1 + 2*x + 3*x^2
+</programlisting>
+ </para>
+ <para>
+You can add, subtract and multiply polynomials using the
+<link linkend="gel-function-AddPoly"><function>AddPoly</function></link>,
+<link linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link>, and
+<link linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link> functions respectively.
+You can print a polynomial using the
+<link linkend="gel-function-PolyToString"><function>PolyToString</function></link>
+function.
+For example,
+<programlisting>PolyToString([1,2,3],"y")
+</programlisting>
+gives
+<programlisting>3*y^2 + 2*y + 1
+</programlisting>
+You can also get a function representation of the polynomial so that you can
+evaluate it. This is done by using
+<link linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>,
+which
+returns an anonymous function.
+<programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting>
+ </para>
+ <para>
+ It is also possible to find roots of polynomials of degrees 1 through 4 by using the
+function
+<link linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>,
+which calls the appropriate formula function. Higher degree polynomials must be converted to
+functions and solved
+numerically using a function such as
+<link linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>,
+<link linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>,
+<link linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link>, or
+<link linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.
+ </para>
+ <para>
+See <xref linkend="genius-gel-function-list-polynomials"/> in the function list
+for the rest of functions acting on polynomials.
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Теория множеств в GEL</title>
+
+ <para>
+ Genius has some basic set theoretic functionality built in. Currently a set is
+ just a vector (or a matrix). Every distinct object is treated as a different element.
+ </para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Using Sets</title>
+ <para>
+ Just like vectors, objects
+ in sets can include numbers, strings, <constant>null</constant>, matrices and vectors. It is
+ planned in the future to have a dedicated type for sets, rather than using vectors.
+ Note that floating point numbers are distinct from integers, even if they appear the same.
+ That is, Genius will treat <constant>0</constant> and <constant>0.0</constant>
+ as two distinct elements. The <constant>null</constant> is treated as an empty set.
+ </para>
+ <para>
+ To build a set out of a vector, use the
+ <link linkend="gel-function-MakeSet"><function>MakeSet</function></link> function.
+ Currently, it will just return a new vector where every element is unique.
+<screen><prompt>genius> </prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen>
+</para>
+
+ <para>
+ Similarly there are functions
+ <link linkend="gel-function-Union"><function>Union</function></link>,
+ <link linkend="gel-function-Intersection"><function>Intersection</function></link>,
+ <link linkend="gel-function-SetMinus"><function>SetMinus</function></link>, which
+ are rather self explanatory. For example:
+<screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen>
+ Note that no order is guaranteed for the return values. If you wish to sort the vector you
+should use the
+ <link linkend="gel-function-SortVector"><function>SortVector</function></link> function.
+ </para>
+
+ <para>
+ For testing membership, there are functions
+ <link linkend="gel-function-IsIn"><function>IsIn</function></link> and
+ <link linkend="gel-function-IsSubset"><function>IsSubset</function></link>,
+ which return a boolean value. For example:
+<screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen>
+ The input <userinput>IsIn(x,X)</userinput> is of course equivalent to
+ <userinput>IsSubset([x],X)</userinput>. Note that since the empty set is a subset
+ of every set, <userinput>IsSubset(null,X)</userinput> is always true.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Список функций GEL</title>
+
+ <!--&gel-function-list;-->
+
+ <para>Для получения справки по определённой функции, наберите в консоли: <programlisting>help ИмяФункции
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Команды</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>help ИмяФункции</synopsis>
+ <para>Показывает справку (или справку по функции/команде).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "file.gel"</synopsis>
+ <para>Load a file into the interpreter. The file will execute
+as if it were typed onto the command line.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /каталог/имя</synopsis>
+ <para>Меняет рабочий каталог на <filename>/каталог/имя</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Выводит текущий рабочий каталог.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Показывает список файлов в текущем каталоге.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin plugin_name</synopsis>
+ <para>Load a plugin. Plugin of that name must be installed on the system
+in the proper directory.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Основные</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (вопрос)</synopsis>
+ <synopsis>AskButtons (вопрос, кнопка1, ...)</synopsis>
+ <para>Задаёт вопрос и предлагает пользователю список кнопок (или меню вариантов в текстовом
режиме). Возвращает отсчитываемый с 1 индекс нажатой кнопки. То есть 1, если нажата первая кнопка, 2 — если
нажата вторая и т.д. Если пользователь закрыл окно (или просто нажал Enter в текстовом режиме), то возвращает
<constant>null</constant>. Выполнение программы останавливается, пока пользователь не ответит.</para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (query)</synopsis>
+ <synopsis>AskString (query, default)</synopsis>
+ <para>Asks a question and lets the user enter a string, which
+it then returns. If the user cancels or closes the window, then
+<constant>null</constant> is returned. The execution of the program
+is blocked until the user responds. If <varname>default</varname> is given, then it is pre-typed in for the
user to just press enter on (version 1.0.6 onwards).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Compose two functions and return a function that is the composition of
<function>f</function> and <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Compose and execute a function with itself <varname>n</varname> times, passing
<varname>x</varname> as argument. Returning <varname>x</varname> if
+<varname>n</varname> equals 0.
+ Example:
+ <screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (str)</synopsis>
+ <para>Parses and evaluates a string.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Get current modulo from the context outside the function. That is, if outside of
+the function was executed in modulo (using <literal>mod</literal>) then this returns what
+this modulo was. Normally the body of the function called is not executed in modular arithmetic,
+and this builtin function makes it possible to make GEL functions aware of modular arithmetic.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Identity function, returns its argument. It is equivalent to <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (bval)</synopsis>
+ <para>Преобразует логическое значение в целое число (0 для <constant>false</constant> или 1 для
<constant>true</constant>). <varname>bval</varname> может также быть числом, в этом случае ненулевое значение
интерпретируется как <constant>true</constant>, а нулевое — как <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (arg)</synopsis>
+ <para>Проверяет, является аргумент логическим значением (а не числом).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Check if an id is defined. You should pass a string or
+ and identifier. If you pass a matrix, each entry will be
+ evaluated separately and the matrix should contain strings
+ or identifiers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (arg)</synopsis>
+ <para>Проверяет, является ли аргумент функцией.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (arg)</synopsis>
+ <para>Check if argument is a function or an identifier.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (arg)</synopsis>
+ <para>Check if argument is a function reference. This includes variable
+references.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (arg)</synopsis>
+ <para>Проверяет, является ли аргумент матрицей. Хотя <constant>null</constant> иногда используют
вместо пустой матрицы, функция <function>IsMatrix</function> не считает <constant>null</constant>
матрицей.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (arg)</synopsis>
+ <para>Проверяет, имеет ли аргумент значение <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (arg)</synopsis>
+ <para>Проверяет, является ли аргумент текстовой строкой.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (arg)</synopsis>
+ <para>Проверяет, является ли аргумент числом.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (str)</synopsis>
+ <para>Parses but does not evaluate a string. Note that certain
+ pre-computation is done during the parsing stage.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,flags...)</synopsis>
+ <para>Set flags for a function, currently <literal>"PropagateMod"</literal> and
<literal>"NoModuloArguments"</literal>.
+If <literal>"PropagateMod"</literal> is set, then the body of the function is evaluated in modular
arithmetic when the function
+is called inside a block that was evaluated using modular arithmetic (using <literal>mod</literal>). If
+<literal>"NoModuloArguments"</literal>, then the arguments of the function are never evaluated using modular
arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,category,desc)</synopsis>
+ <para>Set the category and help description line for a function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Sets up a help alias.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (dir)</synopsis>
+ <para>Изменяет текущий каталог. То же, что и <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Возвращает текущее время UNIX с точностью до микросекунд в виде числа с плавающей точкой. То
есть возвращает число секунд с 1 января 1970 г.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (str,expr)</synopsis>
+ <para>Display a string and an expression with a colon to separate them.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Display set of variables. The variables can be given as
+ strings or identifiers. For example:
+ <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting>
+ </para>
+ <para>
+ If called without arguments (must supply empty argument list) as
+ <programlisting>DisplayVariables()
+ </programlisting>
+ then all variables are printed including a stacktrace similar to
+ <guilabel>Show user variables</guilabel> in the graphical version.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (str)</synopsis>
+ <para>Выводит строку в поток ошибок (на консоль).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Псевдоним: <function>quit</function></para>
+ <para>Завершает работу программы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Псевдонимы: <function>False</function><function>FALSE</function></para>
+ <para>Логическое значение <constant>false</constant> (ложь).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Показывает руководство пользователя.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (str)</synopsis>
+ <para>Выводит выражение и выполняет переход на новую строку. Аргумент <varname>str</varname> может
быть любым выражением. Он преобразуется в строку перед выводом.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (str)</synopsis>
+ <para>Выводит выражение без перехода на новую строку. Аргумент <varname>str</varname> может быть
любым выражением. Он преобразуется в строку перед выводом.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Print a table of values for a function. The values are in the
+ vector <varname>v</varname>. You can use the vector
+ building notation as follows:
+ <programlisting>PrintTable (f,[0:10])
+ </programlisting>
+ If <varname>v</varname> is a positive integer, then the table of
+ integers from 1 up to and including v will be used.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Protect a variable from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Protect all currently defined variables, parameters and
+functions from being modified. This is used on the internal GEL functions to
+avoid them being accidentally overridden. Normally <application>Genius Mathematics Tool</application>
considers
+unprotected variables as user defined.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,val)</synopsis>
+ <para>Set a global variable. The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>set(`x,1)
+ </programlisting>
+ will set the global variable <varname>x</varname> to the value 1.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,row,col,val)</synopsis>
+ <para>Set an element of a global variable which is a matrix.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,3,1)
+ </programlisting>
+ will set the second row third column element of the global variable <varname>x</varname> to the
value 1. If no global variable of the name exists, or if it is set to something that's not a matrix, a new
zero matrix of appropriate size will be created.
+ </para>
+ <para>The <varname>row</varname> and <varname>col</varname> can also be ranges, and the semantics
are the same as for regular setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,val)</synopsis>
+ <para>Set an element of a global variable which is a vector.
+ The <varname>id</varname>
+ can be either a string or a quoted identifier.
+ For example:
+ <programlisting>SetElement(`x,2,1)
+ </programlisting>
+ will set the second element of the global vector variable <varname>x</varname> to the value 1.
If no global variable of the name exists, or if it is set to something that's not a vector (matrix), a new
zero row vector of appropriate size will be created.
+ </para>
+ <para>The <varname>elt</varname> can also be a range, and the semantics are the same as for regular
setting of the elements with an equals sign.
+ </para>
+ <para>The function returns the <varname>val</varname>, to be
+ usable in chaining.</para>
+ <para>Available from 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Преобразует аргумент любого типа в строку.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Псевдонимы: <function>True</function><function>TRUE</function></para>
+ <para>Логическое значение <constant>true</constant> (истина).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Alias: <function>Undefine</function></para>
+ <para>Undefine a variable. This includes locals and globals,
+ every value on all context levels is wiped. This function
+ should really not be used on local variables. A vector of
+ identifiers can also be passed to undefine several variables.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Undefine all unprotected global variables
+ (including functions and parameters). Normally <application>Genius Mathematics Tool</application>
+ considers protected variables as system defined functions
+ and variables. Note that <function>UndefineAll</function>
+ only removes the global definition of symbols not local ones,
+ so that it may be run from inside other functions safely.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Unprotect a variable from being modified.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Возвращает вектор идентификаторов определённых пользователем (незащищённых) глобальных
переменных.</para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (secs)</synopsis>
+ <para>Waits a specified number of seconds. <varname>secs</varname>
+must be non-negative. Zero is accepted and nothing happens in this case,
+except possibly user interface events are processed.</para>
+ <para>Since version 1.0.18, <varname>secs</varname> can be a noninteger number, so
+ <userinput>wait(0.1)</userinput> will wait for one tenth of a second.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Returns the version of Genius as a horizontal 3-vector with
+ major version first, then minor version and finally the patch level.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Gives the warranty information.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Параметры</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = number</synopsis>
+ <para>Tolerance of the <function>Chop</function> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = number</synopsis>
+ <para>How many iterations to try to find the limit for continuity and limits.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = number</synopsis>
+ <para>How many successive steps to be within tolerance for calculation of continuity.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = number</synopsis>
+ <para>Tolerance for continuity of functions and for calculating the limit.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = number</synopsis>
+ <para>How many iterations to try to find the limit for derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = number</synopsis>
+ <para>How many successive steps to be within tolerance for calculation of derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = number</synopsis>
+ <para>Tolerance for calculating the derivatives of functions.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = number</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = число</synopsis>
+ <para>Точность чисел с плавающей точкой.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = логическое значение</synopsis>
+ <para>Выводить полные выражения, даже если они превышают длину строки.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = number</synopsis>
+ <para>Tolerance of the <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link> function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = number</synopsis>
+ <para>Integer output base.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = number</synopsis>
+ <para>Number of extra Miller-Rabin tests to run on a number before declaring it a prime in <link
linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link linkend="genius-gel-function-list-plotting">line
plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Tells genius to draw the axis labels for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>
and friends.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Sets the limits for <link linkend="genius-gel-function-list-plotting">line plotting
+ functions</link> such as <link linkend="gel-function-LinePlot"><function>LinePlot</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = number</synopsis>
+ <para>Maximum digits to display.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = number</synopsis>
+ <para>Maximum errors to display.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = логическое значение</synopsis>
+ <para>Если true, выводятся смешанные дроби.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = function</synopsis>
+ <para>The function used for numerical integration in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = number</synopsis>
+ <para>Steps to perform in <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = number</synopsis>
+ <para>When another number in the object being printed (a matrix or a
+value) is greater than
+10<superscript>-OutputChopWhenExponent</superscript>, and
+the number being printed is less than
+10<superscript>-OutputChopExponent</superscript>, then
+display <computeroutput>0.0</computeroutput> instead of the number.
+</para>
+<para>
+Output is never chopped if <function>OutputChopExponent</function> is zero.
+It must be a non-negative integer.
+</para>
+<para>
+If you want output always chopped according to
+<function>OutputChopExponent</function>, then set
+<function>OutputChopWhenExponent</function>, to something
+greater than or equal to
+<function>OutputChopExponent</function>.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = number</synopsis>
+ <para>When to chop output. See
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = строка</synopsis>
+ <para>Стиль вывода, может быть <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> или <literal>troff</literal>.</para>
+ <para>В основном влияет на то, как выводятся матрицы и дроби, и может быть полезно для копирования
и вставки в документы. Например, задать вывод в стиле latex можно с помощью: <programlisting>OutputStyle =
"latex"
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = boolean</synopsis>
+ <para>Convert all results to floats before printing.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = boolean</synopsis>
+ <para>Use scientific notation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [vertical,horizontal]</synopsis>
+ <para>Sets the number of vertical and horizontal ticks in a
+slopefield plot. (See <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = number</synopsis>
+ <para>How many iterations to try for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = number</synopsis>
+ <para>How many successive steps to be within tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = number</synopsis>
+ <para>Tolerance for <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> and <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Tells genius to draw the legends for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> such as <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Tells genius which variable names are used as default names for <link
linkend="genius-gel-function-list-plotting">surface plotting
+ functions</link> using <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.
+ Note that the <varname>z</varname> does not refer to the dependent (vertical) axis, but to the
independent complex variable
+ <userinput>z=x+iy</userinput>.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Sets the limits for surface plotting (See <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Should the vectorfield plotting have normalized arrow length. If true, vector fields will
only show direction
+ and not magnitude. (See <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [vertical,horizontal]</synopsis>
+ <para>Sets the number of vertical and horizontal ticks in a
+vectorfield plot. (See <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Константы</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>
+ Catalan's Constant, approximately 0.915... It is defined to be the series where terms are
<userinput>(-1^k)/((2*k+1)^2)</userinput>, where <varname>k</varname> ranges from 0 to infinity.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Aliases: <function>gamma</function></para>
+ <para>
+ Euler's constant gamma. Sometimes called the
+ Euler-Mascheroni constant.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>The Golden Ratio.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GoldenRatio">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Free fall acceleration at sea level in meters per second squared. This is the standard
gravity constant 9.80665. The gravity
+ in your particular neck of the woods might be different due to different altitude and the
fact that the earth is not perfectly
+ round and uniform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>
+ The base of the natural logarithm. <userinput>e^x</userinput>
+ is the exponential function
+ <link linkend="gel-function-exp"><function>exp</function></link>. It is approximately
+ 2.71828182846... This number is sometimes called Euler's number, although there are
+ several numbers that are also called Euler's. An example is the gamma constant: <link
linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/E">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>Число «пи» — отношение длины окружности к её диаметру. Значение приблизительно равно
3.14159265359...</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Pi">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Числовые</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Синонимы: <function>abs</function></para>
+ <para>
+ Absolute value of a number and if <varname>x</varname> is
+ a complex value the modulus of <varname>x</varname>. I.e. this
+ the distance of <varname>x</varname> to the origin. This is equivalent
+ to <userinput>|x|</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/AbsoluteValue">Planetmath (absolute value)</ulink>,
+ <ulink url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>,
+ <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolute value)</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (complex modulus)</ulink>
+for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Заменяет очень малое число нулём.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Aliases: <function>conj</function> <function>Conj</function></para>
+ <para>Calculates the complex conjugate of the complex number <varname>z</varname>. If
<varname>z</varname> is a vector or matrix,
+all its elements are conjugated.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Возвращает знаменатель рационального числа.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Возвращает дробную часть числа.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Синонимы: <function>ImaginaryPart</function></para>
+ <para>Get the imaginary part of a complex number. For example <userinput>Re(3+4i)</userinput>
yields 4.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Деление без остатка.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (num)</synopsis>
+ <para>Check if argument is a complex (non-real) number. Do note that we really mean nonreal
number. That is,
+ <userinput>IsComplex(3)</userinput> yields false, while
+ <userinput>IsComplex(3-1i)</userinput> yields true.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (num)</synopsis>
+ <para>Check if argument is a possibly complex rational number. That is, if both real and imaginary
parts are
+ given as rational numbers. Of course rational simply means "not stored as a floating point
number."</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (num)</synopsis>
+ <para>Check if argument is a real floating point number (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (num)</synopsis>
+ <para>Aliases: <function>IsComplexInteger</function></para>
+ <para>Check if argument is a possibly complex integer. That is a complex integer is a number of
+ the form <userinput>n+1i*m</userinput> where <varname>n</varname> and <varname>m</varname>
+ are integers.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (num)</synopsis>
+ <para>Проверяет, является ли аргумент целым числом (не комплексным).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (num)</synopsis>
+ <para>Check if argument is a non-negative real integer. That is, either a positive integer or
zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (num)</synopsis>
+ <para>Синонимы: <function>IsNaturalNumber</function></para>
+ <para>Проверяет, является ли аргумент положительным действительным целым числом. Обратите
внимание, что мы придерживаемся соглашения о том, что 0 не является натуральным числом.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (num)</synopsis>
+ <para>Проверяет, является ли аргумент рациональным числом (не комплексным). Разумеется,
«рациональное» означает просто «не хранящееся в виде числа с плавающей точкой».</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (num)</synopsis>
+ <para>Проверяет, является ли аргумент действительным числом.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Возвращает числитель рационального числа.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Синонимы: <function>RealPart</function></para>
+ <para>Get the real part of a complex number. For example <userinput>Re(3+4i)</userinput> yields
3.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Синонимы: <function>sign</function></para>
+ <para>Возвращает знак числа. То есть, возвращает <literal>-1</literal>, если значение
отрицательно, <literal>0</literal>, если рано нулю и <literal>1</literal>, если значение положительно. Если
<varname>x</varname> — комплексное число, то <function>Sign</function> возвращает направление на числовой оси
(положительное или отрицательное) или 0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Синонимы: <function>Ceiling</function></para>
+ <para>Возвращает наименьшее целое число, которое больше или равно <varname>n</varname>. Примеры:
<screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen></para>
+ <para>Note that you should be careful and notice that floating point
+ numbers are stored in binary and so may not be what you
+ expect. For example <userinput>ceil(420/4.2)</userinput>
+ returns 101 instead of the expected 100. This is because
+ 4.2 is actually very slightly less than 4.2. Use rational
+ representation <userinput>42/10</userinput> if you want
+ exact arithmetic.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>Экспоненциальная функция. Это функция <userinput>e^x</userinput>, где <varname>e</varname> —
<link linkend="gel-function-e">основание натурального логарифма</link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Возвращает представление числа <varname>x</varname> в виде числа с плавающей точкой.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Синонимы: <function>Floor</function></para>
+ <para>Возвращает наибольшее целое число, которое меньше или равно <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>Натуральный логарифм (логарифм по основанию <varname>e</varname>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logarithm of <varname>x</varname> base <varname>b</varname> (calls <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> if in modulo mode), if base is not
given, <link linkend="gel-function-e"><varname>e</varname></link> is used.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Логарифм <varname>x</varname> по основанию 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Синоним: <function>lg</function></para>
+ <para>Логарифм <varname>x</varname> по основанию 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,args...)</synopsis>
+ <para>Псевдонимы: <function>Max</function><function>Maximum</function></para>
+ <para>Возвращает максимальный из аргументов или элементов матрицы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,args...)</synopsis>
+ <para>Псевдонимы: <function>Min</function><function>Minimum</function></para>
+ <para>Возвращает минимальный из аргументов или элементов матрицы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (size...)</synopsis>
+ <para>Генерирует случайное число с плавающей точкой в диапазоне <literal>[0,1)</literal>. Если
задан аргумент size, то может возвращать матрицу (если указано два числа) или вектор (если указано одно
число) заданной размерности.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,size...)</synopsis>
+ <para>Генерирует случайное целое число в диапазоне <literal>[0,max)</literal>. Если задан аргумент
size, возвращает матрицу (если указано два числа) или вектор (если указано одно число) заданной размерности.
Например, <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Синонимы: <function>Round</function></para>
+ <para>Округляет число.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Синонимы: <function>SquareRoot</function></para>
+ <para>The square root. When operating modulo some integer will return either a
<constant>null</constant> or a vector of the square roots. Examples:
+ <screen><prompt>genius></prompt> <userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/SquareRoot">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Синонимы: <function>Truncate</function><function>IntegerPart</function></para>
+ <para>Усекает число до целого (возвращает целую часть).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Тригонометрические</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Синонимы: <function>arccos</function></para>
+ <para>Функция arccos (арккосинус, обратный косинус).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Синонимы: <function>arccosh</function></para>
+ <para>Функция arccosh (обратный гиперболический косинус).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Синонимы: <function>arccot</function></para>
+ <para>Фунция arccot (арккотангенс, обратный котангенс).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Синонимы: <function>arccoth</function></para>
+ <para>Функция arccoth (обратный гиперболический котангенс).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Синонимы: <function>arccsc</function></para>
+ <para>Обратный косеканс.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Синонимы: <function>arccsch</function></para>
+ <para>Обратный гиперболический косеканс.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Синонимы: <function>arcsec</function></para>
+ <para>Обратный секанс.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Синонимы: <function>arcsech</function></para>
+ <para>Обратный гиперболический секанс.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Синонимы: <function>arcsin</function></para>
+ <para>Функция arcsin (арксинус, обратный синус).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Синонимы: <function>arcsinh</function></para>
+ <para>Фунция arcsinh (обратный гиперболический синус).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Синонимы: <function>arctan</function></para>
+ <para>Вычисляет функцию arctan (арктангенс, обратный тангенс).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Синонимы: <function>arctanh</function></para>
+ <para>Функция arctanh (обратный гиперболический тангенс).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Синонимы: <function>arctan2</function></para>
+ <para>Calculates the arctan2 function. If
+ <userinput>x>0</userinput> then it returns
+ <userinput>atan(y/x)</userinput>. If <userinput>x<0</userinput>
+ then it returns <userinput>sign(y) * (pi - atan(|y/x|)</userinput>.
+ When <userinput>x=0</userinput> it returns <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> returns 0
+ rather than failing.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Вычисляет косинус.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Вычисляет гиперболический косинус.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>Вычисляет котангенс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>Вычисляет гиперболический котангенс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>Вычисляет косеканс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>Вычисляет гиперболический косеканс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>Вычисляет секанс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>Вычисляет гиперболический секанс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Вычисляет синус.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Вычисляет гиперболический синус.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Вычисляет тангенс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>Вычисляет гиперболический тангенс.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Теория чисел</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>
+ Are the real integers <varname>a</varname> and <varname>b</varname> relatively prime?
+ Returns <constant>true</constant> or <constant>false</constant>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Return the <varname>n</varname>th Bernoulli number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Aliases: <function>CRT</function></para>
+ <para>Find the <varname>x</varname> that solves the system given by
+ the vector <varname>a</varname> and modulo the elements of
+ <varname>m</varname>, using the Chinese Remainder Theorem.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Given two factorizations, give the factorization of the
+ product.</para>
+ <para>See <link linkend="gel-function-Factorize">Factorize</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Convert a vector of values indicating powers of b to a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Convert a number to a vector of powers for elements in base <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
+ F<subscript>q</subscript>, the finite field of order <varname>q</varname>, where
<varname>q</varname>
+ is a prime, using the Silver-Pohlig-Hellman algorithm.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Проверяет делимость (делится ли <varname>n</varname> на <varname>m</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>
+ Compute the Euler phi function for <varname>n</varname>, that is
+ the number of integers between 1 and <varname>n</varname>
+ relatively prime to <varname>n</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/EulerPhifunction">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>Возвращает <userinput>n/d</userinput>, но только если <varname>n</varname> делится на
<varname>d</varname>. Если не делится, то функция возвращает мусор. Для очень больших чисел это гораздо
быстрее, чем операция <userinput>n/d</userinput>, но, разумеется, полезно только в том случае, если вы точно
знаете, что числа делятся без остатка.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>
+ Return factorization of a number as a matrix. The first
+ row is the primes in the factorization (including 1) and the
+ second row are the powers. So for example:
+ <screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>
+ Return all factors of <varname>n</varname> in a vector. This
+ includes all the non-prime factors as well. It includes 1 and the
+ number itself. So for example to print all the perfect numbers
+ (those that are sums of their factors) up to the number 1000 you
+ could do (this is of course very inefficient)
+ <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,tries)</synopsis>
+ <para>
+ Attempt Fermat factorization of <varname>n</varname> into
+ <userinput>(t-s)*(t+s)</userinput>, returns <varname>t</varname>
+ and <varname>s</varname> as a vector if possible, <constant>null</constant> otherwise.
+ <varname>tries</varname> specifies the number of tries before
+ giving up.
+ </para>
+ <para>
+ This is a fairly good factorization if your number is the product
+ of two factors that are very close to each other.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Find the first primitive element in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>. Of course <varname>q</varname> must be a prime.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Find a random primitive element in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (q must be a prime).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Compute discrete log base <varname>b</varname> of n in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname> (<varname>q</varname> a prime), using the
+factor base <varname>S</varname>. <varname>S</varname> should be a column of
+primes possibly with second column precalculated by
+<link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Run the precalculation step of
+ <link linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> for
logarithms base <varname>b</varname> in
+F<subscript>q</subscript>, the finite group of order <varname>q</varname>
+(<varname>q</varname> a prime), for the factor base <varname>S</varname> (where
+<varname>S</varname> is a column vector of primes). The logs will be
+precalculated and returned in the second column.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Проверяет, является ли целое число чётным.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>
+ Tests if a positive integer <varname>p</varname> is a
+ Mersenne prime exponent. That is if
+ 2<superscript>p</superscript>-1 is a prime. It does this
+ by looking it up in a table of known values, which is relatively
+ short.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>
+ Tests if a rational number <varname>m</varname> is a perfect
+ <varname>n</varname>th power. See also
+ <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link>
+ and
+ <link linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Проверяет, является ли целое число нечётным.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Check an integer for being any perfect power, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>
+ Check an integer for being a perfect square of an integer. The number must
+ be an integer. Negative integers are of course never perfect
+ squares of integers.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>
+ Tests primality of integers, for numbers less than 2.5e10 the
+ answer is deterministic (if Riemann hypothesis is true). For
+ numbers larger, the probability of a false positive
+ depends on
+ <link linkend="gel-function-IsPrimeMillerRabinReps">
+ <function>IsPrimeMillerRabinReps</function></link>. That
+ is the probability of false positive is 1/4 to the power
+ <function>IsPrimeMillerRabinReps</function>. The default
+ value of 22 yields a probability of about 5.7e-14.
+ </para>
+ <para>
+ If <constant>false</constant> is returned, you can be sure that
+ the number is a composite. If you want to be absolutely sure
+ that you have a prime you can use
+ <link linkend="gel-function-MillerRabinTestSure">
+ <function>MillerRabinTestSure</function></link> but it may take
+ a lot longer.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>, where <varname>q</varname> is a prime. If <varname>q</varname> is not
prime results are bogus.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Check if <varname>g</varname> is primitive in F<subscript>q</subscript>, the finite
+group of order <varname>q</varname>, where <varname>q</varname> is a prime and
+<varname>f</varname> is a vector of prime factors of <varname>q</varname>-1.
+If <varname>q</varname> is not prime results are bogus.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>If <varname>n</varname> is a pseudoprime base <varname>b</varname> but not a prime,
+ that is if <userinput>b^(n-1) == 1 mod n</userinput>. This calls the <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Test if <varname>n</varname> is a strong pseudoprime to base <varname>b</varname> but not a
prime.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Синонимы: <function>JacobiSymbol</function></para>
+ <para>Вычисляет символ Якоби (a/b) (b должно быть нечётным).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Синонимы: <function>JacobiKroneckerSymbol</function></para>
+ <para>Вычисляет символ Якоби (a/b) с дополнением Кронекера (a/2)=(2/a), если нечётное или (a/2)=0,
если чётное.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Return the residue of <varname>a</varname> mod <varname>n</varname> with the least absolute
value (in the interval -n/2 to n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Aliases: <function>LegendreSymbol</function></para>
+ <para>Calculate the Legendre symbol (a/p).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Test if 2<superscript>p</superscript>-1 is a Mersenne prime using the Lucas-Lehmer test.
+ See also
+ <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link>
+ and
+ <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasLhemer">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Returns the <varname>n</varname>th Lucas number.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LucasNumbers">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Return all maximal prime power factors of a number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>
+ A vector of known Mersenne prime exponents, that is
+ a list of positive integers
+ <varname>p</varname> such that
+ 2<superscript>p</superscript>-1 is a prime.
+ See also
+ <link linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>
+ and
+ <link linkend="gel-function-LucasLehmer">LucasLehmer</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> or
+ <ulink url="http://www.mersenne.org/">GIMPS</ulink>
+ for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname>,
+ <varname>reps</varname> number of times. The probability of false
+ positive is <userinput>(1/4)^reps</userinput>. It is probably
+ usually better to use
+ <link linkend="gel-function-IsPrime">
+ <function>IsPrime</function></link> since that is faster and
+ better on smaller integers.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>
or
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>
+ Use the Miller-Rabin primality test on <varname>n</varname> with
+ enough bases that assuming the Generalized Riemann Hypothesis the
+ result is deterministic.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink>, or
+ <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Returns inverse of n mod m.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>
+ Return the Moebius mu function evaluated in <varname>n</varname>.
+ That is, it returns 0 if <varname>n</varname> is not a product
+ of distinct primes and <userinput>(-1)^k</userinput> if it is
+ a product of <varname>k</varname> distinct primes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>
+ Returns the least prime greater than <varname>n</varname>.
+ Negatives of primes are considered prime and so to get the
+ previous prime you can use <userinput>-NextPrime(-n)</userinput>.
+ </para>
+ <para>
+ This function uses the GMPs <function>mpz_nextprime</function>,
+ which in turn uses the probabilistic Miller-Rabin test
+ (See also <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>).
+ The probability
+ of false positive is not tunable, but is low enough
+ for all practical purposes.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Returns the p-adic valuation (number of trailing zeros in base <varname>p</varname>).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/PAdicValuation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>
+ Compute <userinput>a^b mod m</userinput>. The
+ <varname>b</varname>'s power of <varname>a</varname> modulo
+ <varname>m</varname>. It is not necessary to use this function
+ as it is automatically used in modulo mode. Hence
+ <userinput>a^b mod m</userinput> is just as fast.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Aliases: <function>prime</function></para>
+ <para>Return the <varname>n</varname>th prime (up to a limit).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Return all prime factors of a number as a vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Pseudoprime test, returns <constant>true</constant> if and only if
+ <userinput>b^(n-1) == 1 mod n</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Removes all instances of the factor <varname>m</varname> from the number
<varname>n</varname>. That is divides by the largest power of <varname>m</varname>, that divides
<varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Find discrete log of <varname>n</varname> base <varname>b</varname> in
F<subscript>q</subscript>, the finite group of order <varname>q</varname>, where <varname>q</varname> is a
prime using the Silver-Pohlig-Hellman algorithm, given <varname>f</varname> being the factorization of
<varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Find square root of <varname>n</varname> modulo <varname>p</varname> (where
<varname>p</varname> is a prime). Null is returned if not a quadratic residue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Run the strong pseudoprime test base <varname>b</varname> on <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,args...)</synopsis>
+ <para>Aliases: <function>GCD</function></para>
+ <para>
+ Greatest common divisor of integers. You can enter as many
+ integers as you want in the argument list, or you can give
+ a vector or a matrix of integers. If you give more than
+ one matrix of the same size then GCD is done element by
+ element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,args...)</synopsis>
+ <para>Aliases: <function>LCM</function></para>
+ <para>
+ Least common multiplier of integers. You can enter as many
+ integers as you want in the argument list, or you can give a
+ vector or a matrix of integers. If you give more than one
+ matrix of the same size then LCM is done element by element.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Операции с матрицами</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,func)</synopsis>
+ <para>Применяет функцию к каждому элементу матрицы и возвращает матрицу результатов.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,func)</synopsis>
+ <para>Применяет функцию к каждому элементу двух матриц (или 1 значению и 1 матрице) и возвращает
матрицу результатов.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Возвращает столбцы матрицы в виде горизонтального вектора.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Remove column(s) and row(s) from a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Calculate the kth compound matrix of A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>
+ Count the number of zero columns in a matrix. For example,
+ once you column-reduce a matrix, you can use this to find
+ the nullity. See <link linkend="gel-function-cref"><function>cref</function></link>
+ and <link linkend="gel-function-Nullity"><function>Nullity</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,столбец)</synopsis>
+ <para>Удаляет столбец матрицы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,строка)</synopsis>
+ <para>Удаляет строку матрицы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Gets the diagonal entries of a matrix as a column vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Get the dot product of two vectors. The vectors must be of the
+ same size. No conjugates are taken so this is a bilinear form even if working over the
complex numbers; This is the bilinear scalar product not the sesquilinear scalar product. See <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> for the standard sesquilinear inner
product.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DotProduct">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>
+ Expands a matrix just like we do on unquoted matrix input.
+ That is we expand any internal matrices as blocks. This is
+ a way to construct matrices out of smaller ones and this is
+ normally done automatically on input unless the matrix is quoted.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Aliases: <function>InnerProduct</function></para>
+ <para>Get the Hermitian product of two vectors. The vectors must be of the same size. This is a
sesquilinear form using the identity matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Aliases: <function>eye</function></para>
+ <para>Return an identity matrix of a given size, that is <varname>n</varname> by
<varname>n</varname>. If <varname>n</varname> is zero, returns <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vec,msize)</synopsis>
+ <para>Return the index complement of a vector of indexes. Everything is one based. For example
for vector <userinput>[2,3]</userinput> and size
+<userinput>5</userinput>, we return <userinput>[1,4,5]</userinput>. If
+<varname>msize</varname> is 0, we always return <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Является ли матрица диагональной.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Check if a matrix is the identity matrix. Automatically returns <constant>false</constant>
+ if the matrix is not square. Also works on numbers, in which
+ case it is equivalent to <userinput>x==1</userinput>. When <varname>x</varname> is
+ <constant>null</constant> (we could think of that as a 0 by 0 matrix),
+ no error is generated and <constant>false</constant> is returned.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Является ли матрица нижнетреугольной, то есть все её элементы над диагональю равны
нулю.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Check if a matrix is a matrix of integers (non-complex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Check if a matrix is non-negative, that is if each element is non-negative.
+ Do not confuse positive matrices with positive semi-definite matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Check if a matrix is positive, that is if each element is
+positive (and hence real). In particular, no element is 0. Do not confuse
+positive matrices with positive definite matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Проверяет, является ли матрица матрицей из рациональных (не комплексных) чисел.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Проверяет, является ли матрица матрицей из действительных (не комплексных) чисел.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>Проверяет, является ли матрица квадратной, то есть её ширина равна высоте.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Is a matrix upper triangular? That is, a matrix is upper triangular if all the entries
below the diagonal are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Проверяет, состоит ли матрица только из чисел. Многие встроенные функции делают эту
проверку. Значения могут быть любыми числами, включая комплексные.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>Является ли аргумент горизонтальным или вертикальным вектором. Genius не делает различий
между матрицей и вектором: вектор — это просто матрица 1 на <varname>n</varname> или <varname>n</varname> на
1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Проверяет, состоит ли матрица из одних нулей. Также работает с числами, в этом случае
эквивалентна выражению <userinput>x==0</userinput>. Если переменная <varname>x</varname> равна
<constant>null</constant> (можно представить это, как матрицу 0 на 0 элементов), ошибка не генерируется и
возвращается <constant>true</constant>, так как условие является бессмысленным.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Возвращает копию матрицы <varname>M</varname>, в которой все элементы под диагональю
заменены нулями.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,arg...)</synopsis>
+ <para>Псевдоним: <function>diag</function></para>
+ <para>Создаёт диагональную матрицу из вектора. Значения для диагонали также могут быть переданы в
виде аргументов функции. Поэтому <userinput>MakeDiagonal([1,2,3])</userinput> — то же самое, что и
<userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Make column vector out of matrix by putting columns above
+ each other. Returns <constant>null</constant> when given <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>Вычисляет произведение всех элементов матрицы или вектора. То есть, умножает друг на друга
все элементы и возвращает число, являющееся их произведением.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>Вычисляет сумму всех элементов матрицы или вектора. То есть, складывает все элементы и
возвращает число, являющееся их суммой.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Вычисляет сумму квадратов всех элементов матрицы или вектора.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Returns a row vector of the indices of nonzero columns in the matrix
<varname>M</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Returns a row vector of the indices of nonzero elements in the vector
<varname>v</varname>.</para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Get the outer product of two vectors. That is, suppose that
+<varname>u</varname> and <varname>v</varname> are vertical vectors, then
+the outer product is <userinput>v * u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Reverse elements in a vector. Return <constant>null</constant> if given
<constant>null</constant></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Вычисляет суммы элементов в каждой строке матрицы и возвращает вертикальный вектор с
результатом.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Вычисляет суммы квадратов элементов в каждой строке матрицы и возвращает вертикальный вектор
с результатами.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Gets the rows of a matrix as a vertical vector. Each element
+of the vector is a horizontal vector that is the corresponding row of
+<varname>M</varname>. This function is useful if you wish to loop over the
+rows of a matrix. For example, as <userinput>for r in RowsOf(M) do
+something(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,строки,столбцы)</synopsis>
+ <para>Make new matrix of given size from old one. That is, a new
+ matrix will be returned to which the old one is copied. Entries that
+ don't fit are clipped and extra space is filled with zeros.
+ If <varname>rows</varname> or <varname>columns</varname> are zero
+ then <constant>null</constant> is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Shuffle elements in a vector. Return <constant>null</constant> if given
<constant>null</constant>.</para>
+ <para>Version 1.0.13 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Sort vector elements in an increasing order.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Удаляет все состоящие только из нулей столбцы матрицы <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Удаляет все состоящие только из нулей строки матрицы <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Return column(s) and row(s) from a matrix. This is
+just equivalent to <userinput>m@(r,c)</userinput>. <varname>r</varname>
+and <varname>c</varname> should be vectors of rows and columns (or single numbers if only one row or column
is needed).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,строка1,строка2)</synopsis>
+ <para>Меняет местами две строки матрицы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Возвращает копию матрицы <varname>M</varname>, в которой все элементы под диагональю
заменены нулями.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Возвращает число столбцов в матрице.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Возвращает общее число элементов в матрице. Это число столбцов, умноженное на число
строк.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (строки,столбцы...)</synopsis>
+ <para>Создаёт матрицу, состоящую только из единиц (или строчный вектор, если задан только один
аргумент). Возвращает <constant>null</constant>, если задано число строк или столбцов, равное нулю.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Возвращает число строк в матрице.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (строки,столбцы...)</synopsis>
+ <para>Создаёт матрицу, состоящую только из единиц (или строчный вектор, если задан только один
аргумент). Возвращает <constant>null</constant>, если задано число строк или столбцов, равное нулю.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Линейная алгебра</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Get the auxiliary unit matrix of size <varname>n</varname>. This is a square matrix with
that is all zero except the
+superdiagonal being all ones. It is the Jordan block matrix of one zero eigenvalue.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information
on Jordan Canonical Form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Evaluate (v,w) with respect to the bilinear form given by the matrix A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Return a function that evaluates two vectors with respect to the bilinear form given by
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Aliases: <function>CharPoly</function></para>
+ <para>Get the characteristic polynomial as a vector. That is, return
+the coefficients of the polynomial starting with the constant term. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
+polynomial are the eigenvalues of <varname>M</varname>.
+See also <link
linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Get the characteristic polynomial as a function. This is
+the polynomial defined by <userinput>det(M-xI)</userinput>. The roots of this
+polynomial are the eigenvalues of <varname>M</varname>.
+See also <link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Get a basis matrix for the columnspace of a matrix. That is,
+return a matrix whose columns are the basis for the column space of
+<varname>M</varname>. That is the space spanned by the columns of
+<varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Return the commutation matrix <userinput>K(m,n)</userinput>, which is the unique
<userinput>m*n</userinput> by
+ <userinput>m*n</userinput> matrix such that <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> for all <varname>m</varname> by <varname>n</varname>
+ matrices <varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Companion matrix of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Conjugate transpose of a matrix (adjoint). This is the
+ same as the <userinput>'</userinput> operator.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Aliases: <function>convol</function></para>
+ <para>Calculate convolution of two horizontal vectors.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Calculate convolution of two horizontal vectors. Return
+result as a vector and not added together.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>CrossProduct of two vectors in R<superscript>3</superscript> as
+ a column vector.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Get the determinantal divisors of an integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Direct sum of matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Direct sum of a vector of matrices.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Aliases: <function>eig</function></para>
+ <para>Get the eigenvalues of a square matrix.
+ Currently only works for matrices of size up to 4 by 4, or for
+ triangular matrices (for which the eigenvalues are on the
+ diagonal).
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvalue">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues, &multiplicities)</synopsis>
+ <para>Get the eigenvectors of a square matrix. Optionally get also
+the eigenvalues and their algebraic multiplicities.
+ Currently only works for matrices of size up to 2 by 2.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/Eigenvector">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Apply the Gram-Schmidt process (to the columns) with respect to
+inner product given by <varname>B</varname>. If <varname>B</varname> is not
+given then the standard Hermitian product is used. <varname>B</varname> can
+either be a sesquilinear function of two arguments or it can be a matrix giving
+a sesquilinear form. The vectors will be made orthonormal with respect to
+<varname>B</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (c,r)</synopsis>
+ <para>Hankel matrix, a matrix whose skew-diagonals are constant. <varname>c</varname> is the first
row and <varname>r</varname> is the
+ last column. It is assumed that both arguments are vectors and the last element of
<varname>c</varname> is the same
+ as the first element of <varname>r</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Hilbert matrix of order <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Get the image (columnspace) of a linear transform.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Get the Inf Norm of a vector, sometimes called the sup norm or the max norm.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Get the invariant factors of a square integer matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Inverse Hilbert matrix of order <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Is a matrix Hermitian. That is, is it equal to its conjugate transpose.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Test if a vector is in a subspace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Is a matrix (or number) invertible (Integer matrix is invertible if and only if it is
invertible over the integers).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Is a matrix (or number) invertible over a field.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Is <varname>M</varname> a normal matrix. That is,
+ does <userinput>M*M' == M'*M</userinput>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Is <varname>M</varname> a Hermitian positive definite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always strictly positive for
+any vector <varname>v</varname>.
+<varname>M</varname> must be square and Hermitian to be positive definite.
+The check that is performed is that every principal submatrix has a non-negative
+determinant.
+(See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>
+ Note that some authors (for example Mathworld) do not require that
+ <varname>M</varname> be Hermitian, and then the condition is
+ on the real part of the inner product, but we do not take this
+ view. If you wish to perform this check, just check the
+ Hermitian part of the matrix <varname>M</varname> as follows:
+ <userinput>IsPositiveDefinite(M+M')</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/PositiveDefinite">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Is <varname>M</varname> a Hermitian positive semidefinite matrix. That is if
+<userinput>HermitianProduct(M*v,v)</userinput> is always non-negative for
+any vector <varname>v</varname>.
+<varname>M</varname> must be square and Hermitian to be positive semidefinite.
+The check that is performed is that every principal submatrix has a non-negative
+determinant.
+(See <link linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>
+ Note that some authors do not require that
+ <varname>M</varname> be Hermitian, and then the condition is
+ on the real part of the inner product, but we do not take this
+ view. If you wish to perform this check, just check the
+ Hermitian part of the matrix <varname>M</varname> as follows:
+ <userinput>IsPositiveSemidefinite(M+M')</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Is a matrix skew-Hermitian. That is, is the conjugate transpose equal to negative of the
matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Is a matrix unitary? That is, does
+ <userinput>M'*M</userinput> and <userinput>M*M'</userinput>
+ equal the identity.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Aliases: <function>J</function></para>
+ <para>Get the Jordan block corresponding to the eigenvalue
+ <varname>lambda</varname> with multiplicity <varname>n</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Get the kernel (nullspace) of a linear transform.</para>
+ <para>
+ (See <link linkend="gel-function-NullSpace">NullSpace</link>)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Aliases: <function>TensorProduct</function></para>
+ <para>
+ Compute the Kronecker product (tensor product in standard basis)
+ of two matrices.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>
+ Get the LU decomposition of <varname>A</varname>, that is
+ find a lower triangular matrix and upper triangular
+ matrix whose product is <varname>A</varname>.
+ Store the result in the <varname>L</varname> and
+ <varname>U</varname>, which should be references. It returns <constant>true</constant>
+ if successful.
+ For example suppose that A is a square matrix, then after running:
+ <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen>
+ You will have the lower matrix stored in a variable called
+ <varname>L</varname> and the upper matrix in a variable called
+ <varname>U</varname>.
+ </para>
+ <para>
+ This is the LU decomposition of a matrix aka Crout and/or Cholesky
+ reduction.
+ (ISBN 0-201-11577-8 pp.99-103)
+ The upper triangular matrix features a diagonal
+ of values 1 (one). This is not Doolittle's Method, which features
+ the 1's diagonal on the lower matrix.
+ </para>
+ <para>
+ Not all matrices have LU decompositions, for example
+ <userinput>[0,1;1,0]</userinput> does not and this function returns
+ <constant>false</constant> in this case and sets <varname>L</varname>
+ and <varname>U</varname> to <constant>null</constant>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/LUDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Get the <varname>i</varname>-<varname>j</varname> minor of a matrix.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Minor">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Return the columns that are not the pivot columns of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Aliases: <function>norm</function></para>
+ <para>Get the p Norm (or 2 Norm if no p is supplied) of a vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Get the nullspace of a matrix. That is the kernel of the
+ linear mapping that the matrix represents. This is returned
+ as a matrix whose column space is the nullspace of
+ <varname>T</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Aliases: <function>nullity</function></para>
+ <para>Get the nullity of a matrix. That is, return the dimension of
+the nullspace; the dimension of the kernel of <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Get the orthogonal complement of the columnspace.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Return pivot columns of a matrix, that is columns that have a leading 1 in row reduced form.
Also returns the row where they occur.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Projection of vector <varname>v</varname> onto subspace
+<varname>W</varname> with respect to inner product given by
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+Hermitian product is used. <varname>B</varname> can either be a sesquilinear
+function of two arguments or it can be a matrix giving a sesquilinear form.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>
+ Get the QR decomposition of a square matrix <varname>A</varname>,
+ returns the upper triangular matrix <varname>R</varname>
+ and sets <varname>Q</varname> to the orthogonal (unitary) matrix.
+ <varname>Q</varname> should be a reference or <constant>null</constant> if you don't
+ want any return.
+ For example:
+ <screen><prompt>genius></prompt> <userinput>R = QRDecomposition(A,&Q)</userinput>
+</screen>
+ You will have the upper triangular matrix stored in
+ a variable called
+ <varname>R</varname> and the orthogonal (unitary) matrix stored in
+ <varname>Q</varname>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Return the Rayleigh quotient (also called the Rayleigh-Ritz quotient or ratio) of a matrix
and a vector.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)</synopsis>
+ <para>Find eigenvalues of <varname>A</varname> using the Rayleigh
+ quotient iteration method. <varname>x</varname> is a guess
+ at a eigenvector and could be random. It should have
+ nonzero imaginary part if it will have any chance at finding
+ complex eigenvalues. The code will run at most
+ <varname>maxiter</varname> iterations and return <constant>null</constant>
+ if we cannot get within an error of <varname>epsilon</varname>.
+ <varname>vecref</varname> should either be <constant>null</constant> or a reference
+ to a variable where the eigenvector should be stored.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> for more information on
Rayleigh quotient.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Синонимы: <function>rank</function></para>
+ <para>Возвращает ранг матрицы.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Returns the Rosser matrix, which is a classic symmetric eigenvalue test problem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (angle)</synopsis>
+ <para>Aliases: <function>RotationMatrix</function></para>
+ <para>Return the matrix corresponding to rotation around origin in
R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the x-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the y-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (angle)</synopsis>
+ <para>Return the matrix corresponding to rotation around origin in R<superscript>3</superscript>
about the z-axis.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Get a basis matrix for the rowspace of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Evaluate (v,w) with respect to the sesquilinear form given by the matrix A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Return a function that evaluates two vectors with respect to the sesquilinear form given by
A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Returns the Smith normal form of a matrix over fields (will end up with 1's on the
diagonal).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Return the Smith normal form for square integer matrices over integers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,args...)</synopsis>
+ <para>Solve linear system Mx=V, return solution V if there is a unique solution,
<constant>null</constant> otherwise. Extra two reference parameters can optionally be used to get the
reduced M and V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (c, r...)</synopsis>
+ <para>Return the Toeplitz matrix constructed given the first column c
+and (optionally) the first row r. If only the column c is given then it is
+conjugated and the nonconjugated version is used for the first row to give a
+Hermitian matrix (if the first element is real of course).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Aliases: <function>trace</function></para>
+ <para>Calculate the trace of a matrix. That is the sum of the diagonal elements.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Trace">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Транспозиция матрицы. То же самое, что оператор <userinput>.'</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Transpose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Aliases: <function>vander</function></para>
+ <para>Return the Vandermonde matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>The angle of two vectors with respect to inner product given by
+<varname>B</varname>. If <varname>B</varname> is not given then the standard
+Hermitian product is used. <varname>B</varname> can either be a sesquilinear
+function of two arguments or it can be a matrix giving a sesquilinear form.
+</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>The direct sum of the vector spaces M and N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Intersection of the subspaces given by M and N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>The sum of the vector spaces M and N, that is {w | w=m+n, m in M, n in N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Aliases: <function>Adjugate</function></para>
+ <para>Get the classical adjoint (adjugate) of a matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Aliases: <function>CREF</function> <function>ColumnReducedEchelonForm</function></para>
+ <para>Compute the Column Reduced Echelon Form.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Aliases: <function>Determinant</function></para>
+ <para>Get the determinant of a matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/Determinant2">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Aliases: <function>REF</function> <function>RowEchelonForm</function></para>
+ <para>Get the row echelon form of a matrix. That is, apply gaussian
+elimination but not backaddition to <varname>M</varname>. The pivot rows are
+divided to make all pivots 1.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Aliases: <function>RREF</function> <function>ReducedRowEchelonForm</function></para>
+ <para>Get the reduced row echelon form of a matrix. That is, apply gaussian elimination together
with backaddition to <varname>M</varname>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Комбинаторика</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Возвращает <varname>n</varname>-ое число Каталана.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Get all combinations of k numbers from 1 to n as a vector of vectors.
+ (See also <link linkend="gel-function-NextCombination">NextCombination</link>)
+</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Двойной факториал: <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Факториал: <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Убывающий факториал: <userinput>(n)_k = n(n-1)...(n-(k-1))</userinput></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Синонимы: <function>fib</function></para>
+ <para>Вычисляет <varname>n</varname>-ое число Фибоначчи. Это число, вычисляемое рекурсивно по
формулам <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> и <userinput>Fibonacci(1) =
Fibonacci(2) = 1</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>
+ Calculate the Frobenius number. That is calculate largest
+ number that cannot be given as a non-negative integer linear
+ combination of a given vector of non-negative integers.
+ The vector can be given as separate numbers or a single vector.
+ All the numbers given should have GCD of 1.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (combining_rule)</synopsis>
+ <para>Galois matrix given a linear combining rule (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>
+ Find the vector <varname>c</varname> of non-negative integers
+ such that taking the dot product with <varname>v</varname> is
+ equal to n. If not possible returns <constant>null</constant>. <varname>v</varname>
+ should be given sorted in increasing order and should consist
+ of non-negative integers.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Aliases: <function>HarmonicH</function></para>
+ <para>Harmonic Number, the <varname>n</varname>th harmonic number of order <varname>r</varname>.
+ That is, it is the sum of <userinput>1/k^r</userinput> for <varname>k</varname>
+ from 1 to n. Equivalent to <userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Hofstadter's function q(n) defined by q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> for more
information.
+ The sequence is <ulink url="https://oeis.org/A005185">A005185 in OEIS</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (seed_values,combining_rule,n)</synopsis>
+ <para>Compute linear recursive sequence using Galois stepping.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Calculate multinomial coefficients. Takes a vector of
+ <varname>k</varname>
+ non-negative integers and computes the multinomial coefficient.
+ This corresponds to the coefficient in the homogeneous polynomial
+ in <varname>k</varname> variables with the corresponding powers.
+ </para>
+ <para>
+ The formula for <userinput>Multinomial(a,b,c)</userinput>
+ can be written as:
+<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting>
+ In other words, if we would have only two elements, then
+<userinput>Multinomial(a,b)</userinput> is the same thing as
+<userinput>Binomial(a+b,a)</userinput> or
+<userinput>Binomial(a+b,b)</userinput>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>,
+ <ulink url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Get combination that would come after v in call to
+combinations, first combination should be <userinput>[1:k]</userinput>. This
+function is useful if you have many combinations to go through and you don't
+want to waste memory to store them all.
+ </para>
+ <para>
+ For example with Combinations you would normally write a loop like:
+ <screen><userinput>for n in Combinations (4,6) do (
+ SomeFunction (n)
+);</userinput>
+</screen>
+ But with NextCombination you would write something like:
+ <screen><userinput>n:=[1:4];
+do (
+ SomeFunction (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen>
+ See also <link linkend="gel-function-Combinations">Combinations</link>.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Get the Pascal's triangle as a matrix. This will return
+ an <varname>i</varname>+1 by <varname>i</varname>+1 lower diagonal
+ matrix that is the Pascal's triangle after <varname>i</varname>
+ iterations.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Get all permutations of <varname>k</varname> numbers from 1 to <varname>n</varname> as a
vector of vectors.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Aliases: <function>Pochhammer</function></para>
+ <para>(Pochhammer) Rising factorial: (n)_k = n(n+1)...(n+(k-1)).</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Aliases: <function>StirlingS1</function></para>
+ <para>Stirling number of the first kind.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> for
more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Aliases: <function>StirlingS2</function></para>
+ <para>Stirling number of the second kind.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink>
for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (nth)</synopsis>
+ <para>Calculate the <varname>n</varname>th triangular number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Aliases: <function>Binomial</function></para>
+ <para>Calculate combinations, that is, the binomial coefficient.
+ <varname>n</varname> can be any real number.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/Choose">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Calculate the number of permutations of size
+ <varname>r</varname> of numbers from 1 to <varname>n</varname>.</para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Calculus</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Integration of f by Composite Simpson's Rule on the interval [a,b] with n subintervals with
error of max(f'''')*h^4*(b-a)/180, note that n should be even.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)</synopsis>
+ <para>Integration of f by Composite Simpson's Rule on the interval [a,b] with the number of steps
calculated by the fourth derivative bound and the desired tolerance.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Attempt to calculate derivative by trying first symbolically and then numerically.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the even periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be even on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
+ and
+ <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Return a function that is a Fourier series with the
+coefficients given by the vectors <varname>a</varname> (sines) and
+<varname>b</varname> (cosines). Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>, while
+<userinput>b@(n)</userinput> refers to the term
+<userinput>sin(x*n*pi/L)</userinput>. Either <varname>a</varname>
+or <varname>b</varname> can be <constant>null</constant>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (func,start,inc)</synopsis>
+ <para>Try to calculate an infinite product for a single parameter function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (func,arg,start,inc)</synopsis>
+ <para>Try to calculate an infinite product for a double parameter function with func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (func,start,inc)</synopsis>
+ <para>Try to calculate an infinite sum for a single parameter function.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (func,arg,start,inc)</synopsis>
+ <para>Try to calculate an infinite sum for a double parameter function with func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Try and see if a real-valued function is continuous at x0 by calculating the limit
there.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Test for differentiability by approximating the left and right limits and comparing.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Calculate the left limit of a real-valued function at x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Calculate the limit of a real-valued function at x0. Tries to calculate both left and right
limits.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Integration by midpoint rule.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Aliases: <function>NDerivative</function></para>
+ <para>Attempt to calculate numerical derivative.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of vectors <userinput>[a,b]</userinput>
+where <varname>a</varname> are the cosine coefficients and
+<varname>b</varname> are the sine coefficients of
+the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the Fourier series of
+<function>f</function> with half-period <varname>L</varname> (that is defined
+on <userinput>[-L,L]</userinput> and extended periodically) with coefficients
+up to <varname>N</varname>th harmonic computed numerically. This is the
+trigonometric real series composed of sines and cosines. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.
+Note that <userinput>a@(1)</userinput> is
+the constant coefficient! That is, <userinput>a@(n)</userinput> refers to
+the term <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the cosine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the even periodic extension and compute the Fourier series, which
+only has cosine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Return a vector of coefficients of
+the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Return a function that is the sine Fourier series of
+<function>f</function> with half-period <varname>L</varname>. That is,
+we take <function>f</function> defined on <userinput>[0,L]</userinput>
+take the odd periodic extension and compute the Fourier series, which
+only has sine terms. The series is computed up to the
+<varname>N</varname>th harmonic. The coefficients are
+computed by numerical integration using
+<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> for more
information.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Integration by rule set in NumericalIntegralFunction of f from a to b using
NumericalIntegralSteps steps.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Attempt to calculate numerical left derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)</synopsis>
+ <para>Attempt to calculate the limit of f(step_fun(i)) as i goes from 1 to N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Attempt to calculate numerical right derivative.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Return a function that is the odd periodic extension of
+<function>f</function> with half period <varname>L</varname>. That
+is a function defined on the interval <userinput>[0,L]</userinput>
+extended to be odd on <userinput>[-L,L]</userinput> and then
+extended to be periodic with period <userinput>2*L</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>
+ and
+ <link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Compute one-sided derivative using five point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Compute one-sided derivative using three-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Return a function that is the periodic extension of
+<function>f</function> defined on the interval <userinput>[a,b]</userinput>
+and has period <userinput>b-a</userinput>.</para>
+ <para>
+ See also
+ <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link>
+ and
+ <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.
+ </para>
+ <para>Version 1.0.7 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Calculate the right limit of a real-valued function at x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Compute two-sided derivative using five-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Compute two-sided derivative using three-point formula.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Functions</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Aliases: <function>Arg</function> <function>arg</function></para>
+ <para>argument (angle) of complex number.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Bessel function of the first kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Bessel function of the first kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Bessel function of the first kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Bessel function of the second kind of order 0. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Bessel function of the second kind of order 1. Only implemented for real numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Bessel function of the second kind of order <varname>n</varname>. Only implemented for real
numbers.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichlet kernel of order <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are zero.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Aliases: <function>erf</function></para>
+ <para>The error function, 2/sqrt(pi) * int_0^x e^(-t^2) dt.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/ErrorFunction">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Fejer kernel of order <varname>n</varname> evaluated at
+ <varname>t</varname></para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Aliases: <function>Gamma</function></para>
+ <para>The Gamma function. Currently only implemented for real values.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Returns 1 if and only if all elements are equal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>
+ The principal branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>.
+ That is, <function>LambertW</function> is the inverse of
+ the expression <userinput>x*e^x</userinput>. Even for
+ real <varname>x</varname> this expression is not one to one and
+ therefore has two branches over <userinput>[-1/e,0)</userinput>.
+ See <link linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> for the
other real branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>
+ The minus-one branch of Lambert W function computed for only
+ real values greater than or equal to <userinput>-1/e</userinput>
+ and less than 0.
+ That is, <function>LambertWm1</function> is the second
+ branch of the inverse of <userinput>x*e^x</userinput>.
+ See <link linkend="gel-function-LambertW"><function>LambertW</function></link> for the
principal branch.
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (func,x,incr)</synopsis>
+ <para>Find the first value where f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Moebius mapping of the disk to itself mapping a to 0.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking z2,z3,z4 to 1,0, and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to infinity and z2,z3 to 1 and 0
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to 1 and z3,z4 to 0 and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Moebius mapping using the cross ratio taking infinity to 0 and z2,z4 to 1 and infinity
respectively.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink> or
+ <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Poisson kernel on D(0,1) (not normalized to 1, that is integral of this is 2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Poisson kernel on D(0,R) (not normalized to 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Aliases: <function>zeta</function></para>
+ <para>The Riemann zeta function. Currently only implemented for real values.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>The unit step function is 0 for x<0, 1 otherwise. This is the integral of the Dirac
Delta function. Also called the Heaviside function.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para>Функция <function>cis</function>, то же самое, что
<userinput>cos(x)+1i*sin(x)</userinput></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Преобразует градусы в радианы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Преобразует радианы в градусы.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Calculates the unnormalized sinc function, that is
+ <userinput>sin(x)/x</userinput>.
+ If you want the normalized function call <userinput>sinc(pi*x)</userinput>.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Решение уравнений</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>
+ Compute roots of a cubic (degree 3) polynomial using the
+ cubic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,4]</userinput>.
+ Returns a column vector of the three solutions. The first solution is always
+ the real one as a cubic always has one real solution.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns <varname>y</varname> at <varname>x1</varname>.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKutta">RungeKutta</link>
+ for solving ODE.
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical Euler's method to numerically solve y'=f(x,y) for
+ initial <varname>x0</varname>, <varname>y0</varname> going to
+ <varname>x1</varname> with <varname>n</varname> increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values.
+ Unless you explicitly want to use Euler's method, you should really
+ think about using
+ <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link>
+ for solving ODE.
+ Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the bisection method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the method of false position.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Find root of a function using the Muller's method.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Find root of a function using the secant method.
+ <varname>a</varname> and <varname>b</varname> are the initial guess interval,
+ <userinput>f(a)</userinput> and <userinput>f(b)</userinput> should have opposite signs.
+ <varname>TOL</varname> is the desired tolerance and
+<varname>N</varname> is the limit on the number of iterations to run, 0 means no limit. The function
returns a vector <userinput>[success,value,iteration]</userinput>, where <varname>success</varname> is a
boolean indicating success, <varname>value</varname> is the last value computed, and
<varname>iteration</varname> is the number of iterations done.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Halley's method. <varname>f</varname> is
+ the function, <varname>df</varname> is the derivative of
+ <varname>f</varname>, and <varname>ddf</varname> is the second derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link> and
<link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,guess,epsilon,maxn)</synopsis>
+ <para>Find zeros using Newton's method. <varname>f</varname> is
+ the function and <varname>df</varname> is the derivative of
+ <varname>f</varname>. <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> and <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>
+ Compute roots of a polynomial (degrees 1 through 4)
+ using one of the formulas for such polynomials.
+ The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>4*x^3 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,4]</userinput>.
+ Returns a column vector of the solutions.
+ </para>
+ <para>
+ The function calls
+ <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>,
+ <link linkend="gel-function-CubicFormula">CubicFormula</link>, and
+ <link linkend="gel-function-QuarticFormula">QuarticFormula</link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>
+ Compute roots of a quadratic (degree 2) polynomial using the
+ quadratic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>3*x^2 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,3]</userinput>.
+ Returns a column vector of the two solutions.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, or
+ <ulink url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>
+ Compute roots of a quartic (degree 4) polynomial using the
+ quartic formula. The polynomial should be given as a
+ vector of coefficients. That is
+ <userinput>5*x^4 + 2*x + 1</userinput> corresponds to the vector
+ <userinput>[1,2,0,0,5]</userinput>.
+ Returns a column vector of the four solutions.
+ </para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>,
+ <ulink url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink>, or
+ <ulink url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments, returns <varname>y</varname> at <varname>x1</varname>.
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>
+ Use classical non-adaptive fourth order Runge-Kutta method to
+ numerically solve
+ y'=f(x,y) for initial <varname>x0</varname>, <varname>y0</varname>
+ going to <varname>x1</varname> with <varname>n</varname>
+ increments,
+ returns an <userinput>n+1</userinput> by 2 matrix with the
+ <varname>x</varname> and <varname>y</varname> values. Suitable
+ for plugging into
+ <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> or
+ <link linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</userinput>
+</screen>
+ </para>
+ <para>
+ Systems can be solved by just having <varname>y</varname> be a
+ (column) vector everywhere. That is, <varname>y0</varname> can
+ be a vector in which case <varname>f</varname> should take a number
+ <varname>x</varname> and a vector of the same size for the second
+ argument and should return a vector of the same size.
+ </para>
+ <para>
+ The output for a system is still a n by 2 matrix with the second
+ entry being a vector. If you wish to plot the line, make sure to use row vectors, and then
flatten the matrix with
+ <link linkend="gel-function-ExpandMatrix">ExpandMatrix</link>,
+ and pick out the right columns. Example:
+ <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","First");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> or
+ <ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> for more
information.
+ </para>
+ <para>Version 1.0.10 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Статистика</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Псевдонимы:
<function>average</function><function>Mean</function><function>mean</function></para>
+ <para>Calculate average (the arithmetic mean) of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Integral of the GaussFunction from 0 to <varname>x</varname> (area under the normal
curve).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>The normalized Gauss distribution function (the normal curve).</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> for more
information.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Aliases: <function>median</function></para>
+ <para>Calculate median of an entire matrix.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>stdevp</function></para>
+ <para>Calculate the population standard deviation of a whole matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Aliases: <function>RowMean</function></para>
+ <para>Calculate average of each row in a matrix. That is, compute the
+ arithmetic mean.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Calculate median of each row in a matrix and return a column
+ vector of the medians.</para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> or
+ <ulink url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> for more
information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>rowstdevp</function></para>
+ <para>Calculate the population standard deviations of rows of a matrix and return a vertical
vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Aliases: <function>rowstdev</function></para>
+ <para>Calculate the standard deviations of rows of a matrix and return a vertical vector.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Aliases: <function>stdev</function></para>
+ <para>Calculate the standard deviation of a whole matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Многочлены</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Складывает два многочлена (в виде векторов).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Divide two polynomials (as vectors) using long division.
+ Returns the quotient
+ of the two polynomials. The optional argument <varname>r</varname>
+ is used to return the remainder. The remainder will have lower
+ degree than <varname>q</varname>.</para>
+ <para>
+ See
+ <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Проверяет, можно ли использовать вектор в качестве многочлена.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Умножает два многочлена (в виде векторов).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,guess,epsilon,maxn)</synopsis>
+ <para>Find a root of a polynomial using Newton's method. <varname>poly</varname> is
+ the polynomial as a vector and <varname>guess</varname> is the initial
+ guess. The function returns after two successive values are
+ within <varname>epsilon</varname> of each other, or after <varname>maxn</varname> tries, in
which case the function returns <constant>null</constant> indicating failure.
+ </para>
+ <para>
+ See also <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.
+ </para>
+ <para>
+ Example to find the square root of 10:
+ <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Находит вторую производную многочлена (как вектора).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Находит производную многочлена (как вектора).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Make function out of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Make string out of a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Subtract two polynomials (as vectors).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Trim zeros from a polynomial (as vector).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Теория множеств</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Возвращает пересечение множеств X и Y (X и Y — векторы, изображающие множества).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Возвращает <constant>true</constant>, если элемент x присуствует в множестве X (где X —
вектор, изображающий множество).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Возвращает <constant>true</constant>, если X является подмножеством Y (X и Y — векторы,
изображающие множество).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Returns a vector where every element of X appears only once.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Returns a set theoretic difference X-Y (X and Y are vectors pretending to be sets).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Возвращает объединение множеств X и Y (X и Y — векторы, изображающие множества).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Commutative Algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>For a Hilbert function that is c for degree d, given the Macaulay bound for the Hilbert
function of degree d+1 (The c^<d> operator from Green's proof).</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>The c_<d> operator from Green's proof of Macaulay's Theorem.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Return the dth Macaulay representation of a positive integer c.</para>
+ <para>Version 1.0.15 onwards.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Прочие</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vec)</synopsis>
+ <para>Convert a vector of ASCII values to a string.
+ See also
+ <link linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vec,alphabet)</synopsis>
+ <para>Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string.
A <constant>null</constant> vector results in an empty string.
+ See also
+ <link linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (str)</synopsis>
+ <para>Convert a string to a (row) vector of ASCII values.
+ See also
+ <link linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.
+ </para>
+ <para>
+ Example:
+ <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (str,alphabet)</synopsis>
+ <para>Convert a string to a (row) vector of 0-based alphabet values
+ (positions in the alphabet string), -1's for unknown letters.
+ An empty string results in a <constant>null</constant>.
+ See also
+ <link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Symbolic Operations</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Attempt to symbolically differentiate the function f, where f is a function of one
variable.</para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen>
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Attempt to symbolically differentiate the function f, where f is a function of one variable,
returns <constant>null</constant> if unsuccessful but is silent.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Attempt to symbolically differentiate a function n times.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Attempt to symbolically differentiate a function n times quietly and return
<constant>null</constant> on failure
+ (See <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)
+ </para>
+ <para>
+ See
+ <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> for more information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Attempt to construct the Taylor approximation function around x0 to the nth degree.
+ (See <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Построение графиков</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (file,type)</synopsis>
+ <synopsis>ExportPlot (file)</synopsis>
+ <para>
+ Export the contents of the plotting window to a file.
+ The type is a string that specifies the file type to
+ use, "png", "eps", or "ps". If the type is not
+ specified, then it is taken to be the extension, in
+ which case the extension must be ".png", ".eps", or ".ps".
+ </para>
+ <para>
+ Note that files are overwritten without asking.
+ </para>
+ <para>
+ On successful export, true is returned. Otherwise
+ error is printed and exception is raised.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>ExportPlot("file.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/directory/file","eps")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (func1,func2,func3,...)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (func1,func2,func3,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a function (or several functions) with a line.
+ First (up to 10) arguments are functions, then optionally
+ you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>)
+ If the y limits are not specified, then the functions are computed and then the maxima and minima
+ are used.
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>
+ Show the line plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (func,...)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>
+ Plot a parametric complex valued function with a line. First comes
+the function that returns <computeroutput>x+iy</computeroutput>,
+then optionally the <varname>t</varname> limits as <userinput>t1,t2,tinc</userinput>, then
+optionally the limits as <userinput>x1,x2,y1,y2</userinput>.
+ </para>
+ <para>
+ If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,
+ <varname>x2</varname>,<varname>y2</varname> can be replaced by an
+ <varname>n</varname> by 2 matrix for a longer polyline.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ arrows, the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ <userinput>"arrow"</userinput>, or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, type of arrow, or the legend. (Arrow and window are from version 1.0.6 onwards.)
+ </para>
+ <para>
+ If the line is to be treated as a filled polygon, filled with the given color, you
+ can specify the argument <userinput>"filled"</userinput>. Since version 1.0.22 onwards.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Arrow specification should be
+ <userinput>"origin"</userinput>,
+ <userinput>"end"</userinput>,
+ <userinput>"both"</userinput>, or
+ <userinput>"none"</userinput>.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector.
+ </para>
+ <para>
+ Specifying <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>.
+ The input can be an <varname>n</varname> by 2 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>.
+ Alternatively the vector <varname>v</varname> may be a column vector of complex numbers,
+ that is an <varname>n</varname> by 1 matrix and each complex number is then
+ considered a point in the plane.
+ </para>
+ <para>
+ Extra parameters can be added to specify color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 4-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The
Solution")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th
roots of unity")</userinput>
+</screen>
+ </para>
+ <para>
+ Unlike many other functions that do not care if they take a
+ column or a row vector, if specifying points as a vector of
+ complex values, due to possible ambiguities, it must always
+ be given as a column vector. Therefore, notice in the
+ last example the transpose of the vector <userinput>0:6</userinput>
+ to make it into a column vector.
+ </para>
+ <para>
+ Available from version 1.0.18 onwards. Specifying
+ <varname>v</varname> as a column vector of complex numbers is
+ implemented from version 1.0.22 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>
+ Returns a row vector of a point on the line plot corresponding to
+ the current mouse location. If the line plot is not visible,
+ then prints an error and returns <constant>null</constant>.
+ In this case you should run
+ <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> or
+ <link linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link>
+ to put the graphing window into the line plot mode.
+ See also
+ <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfunc,yfunc,...)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")</synopsis>
+ <para>
+ Plot a parametric function with a line. First come the functions
+for <varname>x</varname> and <varname>y</varname> then optionally the <varname>t</varname> limits as
<userinput>t1,t2,tinc</userinput>, then optionally the
+limits as <userinput>x1,x2,y1,y2</userinput>.
+ </para>
+ <para>
+ If x and y limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ If instead the string "fit" is given for the x and y limits, then the limits are the maximum
extent of
+ the graph
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>
+ If in line plot mode, waits for a click on the line plot window
+ and returns the location of the click as a row vector.
+ If the window is closed
+ the function returns immediately with <constant>null</constant>.
+ If the window is not in line plot mode, it is put in it and shown
+ if not shown.
+ See also
+ <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>
+ Freeze drawing of the canvas plot temporarily. Useful if you need to draw a bunch of
elements
+ and want to delay drawing everything to avoid flicker in an animation. After everything
+ has been drawn you should call <link
linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.
+ </para>
+ <para>
+ The canvas is always thawed after end of any execution, so it will never remain frozen.
The moment
+ a new command line is shown for example the plot canvas is thawed automatically. Also note
that
+ calls to freeze and thaw may be safely nested.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>
+ Thaw the plot canvas frozen by
+ <link linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link>
+ and redraw the canvas immediately. The canvas is also always thawed after end of execution
+ of any program.
+ </para>
+ <para>Version 1.0.18 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>
+ Show and raise the plot window, creating it if necessary.
+ Normally the window is created when one of the plotting
+ functions is called, but it is not always raised if it
+ happens to be below other windows. So this function is
+ good to call in scripts where the plot window might have
+ been created before, and by now is hidden behind the
+ console or other windows.
+ </para>
+ <para>Version 1.0.19 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>
+ Clears the solutions drawn by the
+ <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>
+ function.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>
+ When a slope field plot is active, draw a solution with
+ the specified initial condition. The standard
+ Runge-Kutta method is used with increment <varname>dx</varname>.
+ Solutions stay on the graph until a different plot is shown or until
+ you call
+ <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>.
+ You can also use the graphical interface to draw solutions and specify
+ initial conditions with the mouse.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (func)</synopsis>
+ <synopsis>SlopefieldPlot (func,x1,x2,y1,y2)</synopsis>
+ <para>
+ Plot a slope field. The function <varname>func</varname>
+ should take two real numbers <varname>x</varname>
+ and <varname>y</varname>, or a single complex
+ number.
+ Optionally you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (func)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (func,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (func,[x1,x2,y1,y2])</synopsis>
+ <para>
+ Plot a surface function that takes either two arguments or a complex number. First comes the
function then optionally limits as <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>,
+ <varname>z1</varname>, <varname>z2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>).
+ Genius can only plot a single surface function at this time.
+ </para>
+ <para>
+ If the z limits are not specified then the maxima and minima of the function are used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>
+ Show the surface plot window and clear out functions and any other
+ lines that were drawn.
+ </para>
+ <para>
+ Available in version 1.0.19 and onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,label)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>
+ Plot a surface from data. The data is an n by 3 matrix whose
+ rows are the x, y and z coordinates. The data can also be
+ simply a vector whose length is a multiple of 3 and so
+ contains the triples of x, y, z. The data should contain at
+ least 3 points.
+ </para>
+ <para>
+ Optionally we can give the label and also optionally the
+ limits. If limits are not given, they are computed from
+ the data, <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>
+ is not used, if you want to use it, pass it in explicitly.
+ If label is not given then empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"My data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen>
+ </para>
+ <para>
+ Here's an example of how to plot in polar coordinates,
+ in particular how to plot the function
+ <userinput>-r^2 * theta</userinput>:
+ <screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi
by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)</synopsis>
+ <para>
+ Plot a surface from regular rectangular data.
+ The data is given in a n by m matrix where the rows are the
+ x coordinate and the columns are the y coordinate.
+ The x coordinate is divided into equal n-1 subintervals
+ and y coordinate is divided into equal m-1 subintervals.
+ The limits <varname>x1</varname> and <varname>x2</varname>
+ give the interval on the x-axis that we use, and
+ the limits <varname>y1</varname> and <varname>y2</varname>
+ give the interval on the y-axis that we use.
+ If the limits <varname>z1</varname> and <varname>z2</varname>
+ are not given they are computed from the data (to be
+ the extreme values from the data).
+ </para>
+ <para>
+ Optionally we can give the label, if label is not given then
+ empty label is used.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")</userinput>
+</screen>
+ </para>
+ <para>Version 1.0.16 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>
+ Draw a line from <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> to
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
+ <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
+ <varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> can be replaced by an
+ <varname>n</varname> by 3 matrix for a longer polyline.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally, since version 1.0.18, the color
+ can also be specified as a real vector specifying the red green and
+ blue components where the components are between 0 and 1, e.g.
<userinput>[1.0,0.5,0.1]</userinput>.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>
+ Draw a point at <varname>x</varname>,<varname>y</varname>,<varname>z</varname>.
+ The input can be an <varname>n</varname> by 3 matrix
+ for <varname>n</varname> different points. This function has essentially the same
+ input as <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.
+ </para>
+ <para>
+ Extra parameters can be added to specify line color, thickness,
+ the plotting window, or legend.
+ You can do this by adding an argument string <userinput>"color"</userinput>,
+ <userinput>"thickness"</userinput>,
+ <userinput>"window"</userinput>,
+ or <userinput>"legend"</userinput>, and after it specify
+ the color, the thickness, the window
+ as 6-vector, or the legend.
+ </para>
+ <para>
+ The color should be either a string indicating the common English word for the color
+ that GTK will recognize such as
+ <userinput>"red"</userinput>, <userinput>"blue"</userinput>, <userinput>"yellow"</userinput>,
etc...
+ Alternatively the color can be specified in RGB format as
+ <userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput>, or
+ <userinput>"#rrrrggggbbbb"</userinput>, where the r, g, or b are hex digits of the red, green,
and blue
+ components of the color. Finally the color can also be specified as a real vector specifying the
red green
+ and blue components where the components are between 0 and 1.
+ </para>
+ <para>
+ The window should be given as usual as <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, or
+ alternatively can be given as a string
+ <userinput>"fit"</userinput> in which case,
+ the x range will be set precisely and the y range will be set with
+ five percent borders around the line.
+ </para>
+ <para>
+ Finally, legend should be a string that can be used as the legend in the
+ graph. That is, if legends are being printed.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen>
+ </para>
+ <para>
+ Available from version 1.0.19 onwards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>
+ Clears the solutions drawn by the
+ <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>
+ function.
+ </para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
+ <para>
+ When a vector field plot is active, draw a solution with
+ the specified initial condition. The standard
+ Runge-Kutta method is used with increment <varname>dt</varname>
+ for an interval of length <varname>tlen</varname>.
+ Solutions stay on the graph until a different plot is shown or until
+ you call
+ <link
linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>.
+ You can also use the graphical interface to draw solutions and specify
+ initial conditions with the mouse.
+ </para>
+ <para>Version 1.0.6 onwards.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (funcx, funcy)</synopsis>
+ <synopsis>VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)</synopsis>
+ <para>
+ Plot a two dimensional vector field. The function
+ <varname>funcx</varname>
+ should be the dx/dt of the vectorfield and the function
+ <varname>funcy</varname> should be the dy/dt of the vectorfield.
+ The functions
+ should take two real numbers <varname>x</varname>
+ and <varname>y</varname>, or a single complex
+ number. When the parameter
+ <link
linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link>
+ is <constant>true</constant>, then the magnitude of the vectors is normalized. That is, only
+ the direction and not the magnitude is shown.
+ </para>
+ <para>
+ Optionally you can specify the limits of the plotting window as
+ <varname>x1</varname>, <varname>x2</varname>,
+ <varname>y1</varname>, <varname>y2</varname>. If limits are not
+ specified, then the currently set limits apply
+ (See <link linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).
+ </para>
+ <para>
+ The parameter
+ <link linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link>
+ controls the drawing of the legend.
+ </para>
+ <para>
+ Examples:
+ <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1,
-1, 1)</userinput>
+</screen>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Примеры программ на GEL</title>
+
+ <para>
+Here is a function that calculates factorials:
+<programlisting><![CDATA[function f(x) = if x <= 1 then 1 else (f(x-1)*x)
+]]></programlisting>
+ </para>
+ <para>
+With indentation it becomes:
+<programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting>
+ </para>
+ <para>
+This is a direct port of the factorial function from the <application>bc</application> manpage. The syntax
seems similar to <application>bc</application>, but different in that in GEL, the last expression is the one
that is returned. Using the <literal>return</literal> function instead, it would be:
+<programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting>
+ </para>
+
+ <para>
+By far the easiest way to define a factorial function would be using
+the product loop as follows. This is not only the shortest and fastest,
+but also probably the most readable version.
+<programlisting>function f(x) = prod k=1 to x do k
+</programlisting>
+ </para>
+
+ <para>
+Here is a larger example, this basically redefines the internal
+<link linkend="gel-function-ref"><function>ref</function></link> function to calculate the row echelon form
of a
+matrix. The function <function>ref</function> is built in and much faster,
+but this example demonstrates some of the more complex features of GEL.
+<programlisting><![CDATA[# Calculate the row-echelon form of a matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting>
+ </para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Настройки</title>
+
+ <para>
+ To configure <application>Genius Mathematics Tool</application>, choose
+ <menuchoice><guimenu>Settings</guimenu>
+ <guimenuitem>Preferences</guimenuitem></menuchoice>.
+ There are several basic parameters provided by the calculator in addition
+ to the ones provided by the standard library. These control how the
+ calculator behaves.
+ </para>
+
+ <note>
+ <title>Changing Settings with GEL</title>
+ <para>
+ Many of the settings in Genius are simply global variables, and can
+ be evaluated and assigned to in the same way as normal variables. See
+ <xref linkend="genius-gel-variables"/> about evaluating and assigning
+ to variables, and <xref linkend="genius-gel-function-parameters"/> for
+ a list of settings that can be modified in this way.
+ </para>
+ <para>
+As an example, you can set the maximum number of digits in a result to 12 by typing:
+<programlisting>MaxDigits = 12
+</programlisting>
+ </para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Output</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximum digits to output</guilabel>
+ </term>
+ <listitem>
+ <para>The maximum digits in a result (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Results as floats</guilabel>
+ </term>
+ <listitem>
+ <para>If the results should be always printed as floats (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Floats in scientific notation</guilabel>
+ </term>
+ <listitem>
+ <para>If floats should be in scientific notation (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Always print full expressions</guilabel>
+ </term>
+ <listitem>
+ <para>Should we print out full expressions for non-numeric return values (longer than a
line) (<link linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Use mixed fractions</guilabel>
+ </term>
+ <listitem>
+ <para>If fractions should be printed as mixed fractions such as "1 1/3" rather than "4/3".
(<link linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Display 0.0 when floating point number is less than 10^-x (0=never chop)</guilabel>
+ </term>
+ <listitem>
+ <para>How to chop output. But only when other numbers nearby are large.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Only chop numbers when another number is greater than 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>When to chop output. This is set by the parameter <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>.
+ See the documentation of the parameter
+ <link linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.
</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Remember output settings across sessions</guilabel>
+ </term>
+ <listitem>
+ <para>Should the output settings in the <guilabel>Number/Expression output options</guilabel> frame
+ be remembered for next session. Does not apply to the <guilabel>Error/Info output
options</guilabel> frame.</para>
+ <para>
+ If unchecked,
+ either the default or any previously saved settings are used each time Genius starts
+ up. Note that
+ settings are saved at the end of the session, so if you wish to change the defaults
+ check this box, restart <application>Genius Mathematics Tool</application> and then uncheck it
again.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Display errors in a dialog</guilabel>
+ </term>
+ <listitem>
+ <para>If set the errors will be displayed in a separate dialog, if
+ unset the errors will be printed on the console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Display information messages in a dialog</guilabel>
+ </term>
+ <listitem>
+ <para>If set the information messages will be displayed in a separate
+ dialog, if unset the information messages will be printed on the
+ console.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Maximum errors to display</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The maximum number of errors to return on one evaluation
+ (<link linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). If you set this to
0 then
+ all errors are always returned. Usually if some loop causes
+ many errors, then it is unlikely that you will be able to make
+ sense out of more than a few of these, so seeing a long list
+ of errors is usually not helpful.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ In addition to these preferences, there are some preferences that can
+ only be changed by setting them in the workspace console. For others
+ that may affect the output see <xref linkend="genius-gel-function-parameters"/>.
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>The base that will be used to output integers</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>A string, can be <literal>"normal"</literal>,
+<literal>"latex"</literal>, <literal>"mathml"</literal> or
+<literal>"troff"</literal> and it will affect how matrices (and perhaps other
+stuff) is printed, useful for pasting into documents. Normal style is the
+default human readable printing style of <application>Genius Mathematics Tool</application>. The other
styles are for
+typesetting in LaTeX, MathML (XML), or in Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Precision</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Floating point precision</guilabel>
+ </term>
+ <listitem>
+ <para>
+ The floating point precision in bits
+ (<link linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>).
+ Note that changing this only affects newly computed quantities.
+ Old values stored in variables are obviously still in the old
+ precision and if you want to have them more precise you will have
+ to recompute them. Exceptions to this are the system constants
+ such as <link linkend="gel-function-pi"><function>pi</function></link> or
+ <link linkend="gel-function-e"><function>e</function></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Remember precision setting across sessions</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Should the precision setting be remembered for the next session. If unchecked,
+ either the default or any previously saved setting is used each time Genius starts
+ up. Note that
+ settings are saved at the end of the session, so if you wish to change the default
+ check this box, restart genius and then uncheck it again.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Терминал</title>
+
+ <para>Терминалом называется консоль в рабочей области.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Scrollback lines</guilabel>
+ </term>
+ <listitem>
+ <para>Lines of scrollback in the terminal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Шрифт</guilabel>
+ </term>
+ <listitem>
+ <para>Шрифт, используемый в терминале</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Чёрный на белом</guilabel>
+ </term>
+ <listitem>
+ <para>Использовать в терминале чёрный текст на белом фоне.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Мигающий курсор</guilabel>
+ </term>
+ <listitem>
+ <para>Должен ли курсор терминала мигать, если фокус ввода находится в терминале. Иногда это
раздражает, кроме того это создаёт лишний трафик при удалённом доступе к Genius.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Память</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximum number of nodes to allocate</guilabel>
+ </term>
+ <listitem>
+ <para>
+ Internally all data is put onto small nodes in memory. This gives
+ a limit on the maximum number of nodes to allocate for
+ computations. This limit avoids the problem of running out of memory
+ if you do something by mistake that uses too much memory, such
+ as a recursion without end. This could slow your computer and make
+ it hard to even interrupt the program.
+ </para>
+ <para>
+ Once the limit is reached, <application>Genius Mathematics Tool</application> asks if you wish to
interrupt
+ the computation or if you wish to continue. If you continue, no
+ limit is applied and it will be possible to run your computer
+ out of memory. The limit will be applied again next time you
+ execute a program or an expression on the Console regardless of how
+ you answered the question.
+ </para>
+ <para>
+ Setting the limit to zero means there is no limit to the amount of
+ memory that genius uses.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>О <application>математическом инструменте Genius</application></title>
+
+ <para><application>Математический инструмент Genius</application> создан Jiří (George) Lebl
(<email>jirka 5z com</email>). История <application>математического инструмента Genius</application> началась
в конце 1997 г. Это был первый калькулятор для GNOME, но с тех пор он вырос в нечто большее, чем простой
настольный калькулятор. Чтобы узнать больше о <application>математическом инструменте Genius</application>,
посетите <ulink url="http://www.jirka.org/genius.html" type="http">веб-страницу Genius</ulink>.</para>
+ <para>
+ To report a bug or make a suggestion regarding this application or
+ this manual, send email to me (the author) or post to the mailing
+ list (see the web page).
+ </para>
+
+ <para> This program is distributed under the terms of the GNU
+ General Public license as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option)
+ any later version. A copy of this license can be found at this
+ <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">link</ulink>, or in the file
+ COPYING included with the source code of this program. </para>
+
+ <para>Jiří Lebl was during various parts of the development
+ partially supported for the work by NSF grants DMS 0900885,
+ DMS 1362337,
+ the University of Illinois at Urbana-Champaign,
+ the University of California at San Diego,
+ the University of Wisconsin-Madison, and
+ Oklahoma State University. The software has
+ been used for both teaching and research.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/ru/html/index.html b/help/ru/html/index.html
index eef761e..16bb335 100644
--- a/help/ru/html/index.html
+++ b/help/ru/html/index.html
@@ -58,7 +58,7 @@
EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
THE POSSIBILITY OF SUCH DAMAGES.
</p></li></ol></div><p>
- </p></div></div><div><div class="legalnotice"><a name="idm45623491196336"></a><p
class="legalnotice-title"><b>Обратная связь</b></p><p>
+ </p></div></div><div><div class="legalnotice"><a name="idm51"></a><p
class="legalnotice-title"><b>Обратная связь</b></p><p>
To report a bug or make a suggestion regarding the <span class="application">Genius Mathematics
Tool</span>
application or this manual, please visit the
<a class="ulink" href="http://www.jirka.org/genius.html" target="_top">Genius
diff --git a/help/sv/genius.xml b/help/sv/genius.xml
new file mode 100644
index 0000000..a61fa7b
--- /dev/null
+++ b/help/sv/genius.xml
@@ -0,0 +1,6489 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY app "<application>Genius Mathematics Tool</application>">
+<!ENTITY appname "Genius">
+<!ENTITY appversion "1.0.22">
+<!ENTITY date "September 2016">
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY manrevision "0.2">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY le "≤">
+<!ENTITY ge "≥">
+<!ENTITY lsquo "‘">
+<!ENTITY rsquo "’">
+<!--<!ENTITY gel-function-list SYSTEM "gel-function-list.xml">-->]>
+<!--
+ (Do not remove this comment block.)
+ Maintained by the GNOME Documentation Project
+ http://developer.gnome.org/projects/gdp
+ Template version: 2.0 beta
+ Template last modified Apr 11, 2002
+-->
+<!-- =============Document Header ============================= -->
+<book id="index" lang="sv">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+ <bookinfo>
+ <abstract role="description"><para>Handbok för Genius matteverktyg.</para></abstract>
+ <title>Handbok för Genius</title>
+
+ <copyright>
+ <year>1997-2016</year>
+ <holder>Jiří (George) Lebl</holder>
+ </copyright>
+ <copyright>
+ <year>2004</year>
+ <holder>Kai Willadsen</holder>
+ </copyright><copyright><year>2016</year><holder>Anders Jonsson (anders jonsson norsjovallen
se)</holder></copyright>
+<!-- translators: uncomment this:
+ <copyright>
+ <year>2002</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+-->
+
+ <publisher>
+ <publishername/>
+ </publisher>
+
+ <legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License (GFDL), Version 1.1 or any later version published
+ by the Free Software Foundation with no Invariant Sections,
+ no Front-Cover Texts, and no Back-Cover Texts. You can find
+ a copy of the GFDL at this <ulink type="help" url="ghelp:fdl">link</ulink> or in the file
COPYING-DOCS
+ distributed with this manual.
+ </para>
+ <para> This manual is part of a collection of GNOME manuals
+ distributed under the GFDL. If you want to distribute this
+ manual separately from the collection, you can do so by
+ adding a copy of the license to the manual, as described in
+ section 6 of the license.
+ </para>
+
+ <para>
+ Many of the names used by companies to distinguish their
+ products and services are claimed as trademarks. Where those
+ names appear in any GNOME documentation, and the members of
+ the GNOME Documentation Project are made aware of those
+ trademarks, then the names are in capital letters or initial
+ capital letters.
+ </para>
+
+ <para>
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
+ UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
+ WITH THE FURTHER UNDERSTANDING THAT:
+
+ <orderedlist>
+ <listitem>
+ <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+ IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+ THAT THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
+ A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+ RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
+ OF THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
+ MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
+ CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+ SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+ LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
+ VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
+ EXCEPT UNDER THIS DISCLAIMER; AND
+ </para>
+ </listitem>
+ <listitem>
+ <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
+ THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
+ CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
+ INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
+ DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
+ OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
+ PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+ INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
+ OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+ MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
+ LOSSES ARISING OUT OF OR RELATING TO USE OF THE
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
+ EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+ THE POSSIBILITY OF SUCH DAMAGES.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </legalnotice>
+
+
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <authorgroup>
+ <author role="maintainer">
+ <firstname>Jiří</firstname>
+ <surname>Lebl</surname>
+ <affiliation>
+ <orgname>Oklahoma State University</orgname>
+ <address> <email>jirka 5z com</email> </address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Kai</firstname>
+ <surname>Willadsen</surname>
+ <affiliation>
+ <orgname>University of Queensland, Australien</orgname>
+ <address> <email>kaiw itee uq edu au</email> </address>
+ </affiliation>
+ </author>
+
+<!-- This is appropriate place for other contributors: translators,
+ maintainers, etc. Commented out by default.
+
+ <othercredit role="translator">
+ <firstname>Latin</firstname>
+ <surname>Translator 1</surname>
+ <affiliation>
+ <orgname>Latin Translation Team</orgname>
+ <address> <email>translator gnome org</email> </address>
+ </affiliation>
+ <contrib>Latin translation</contrib>
+ </othercredit>
+-->
+ </authorgroup>
+
+
+<!-- According to GNU FDL, revision history is mandatory if you are -->
+<!-- modifying/reusing someone else's document. If not, you can omit it. -->
+<!-- Remember to remove the &manrevision; entity from the revision entries other
+-->
+<!-- than the current revision. -->
+<!-- The revision numbering system for GNOME manuals is as follows: -->
+<!-- * the revision number consists of two components -->
+<!-- * the first component of the revision number reflects the release version of the GNOME desktop. -->
+<!-- * the second component of the revision number is a decimal unit that is incremented with each revision
of the manual. -->
+<!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that -->
+<!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. -->
+<!-- When the desktop release version changes to V3.x, the revision number of the manual changes -->
+<!-- to V3.0, and so on. -->
+<!-- This is unmaintained quite a bit so screw this it just makes things
+ ugly and we don't update the manrevision stuff anyway
+ <revhistory>
+ <revision>
+ <revnumber>&manrevision;</revnumber>
+ <date>&date;</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>0.1</revnumber>
+ <date>September 2004</date>
+ <revdescription>
+ <para role="author">Kai Willadsen
+ <email>kaiw itee uq edu au</email>
+ </para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Genius Calculator Manual</revnumber>
+ <date>August 2004</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl
+ <email>jirka 5z com</email>
+ </para>
+ </revdescription>
+ </revision>
+ </revhistory>
+-->
+
+ <revhistory>
+ <revision>
+ <revnumber>0.2</revnumber>
+ <date>September 2016</date>
+ <revdescription>
+ <para role="author">Jiri (George) Lebl <email>jirka 5z com</email></para>
+ </revdescription>
+ </revision>
+ </revhistory>
+ <releaseinfo>Denna handbok beskriver version 1.0.22 av Genius.</releaseinfo>
+ <legalnotice>
+ <title>Återkoppling</title>
+ <para>För att rapportera ett fel eller komma med ett förslag för programmet <application>Genius
matematikverktyg</application> eller denna handbok, besök <ulink url="http://www.jirka.org/genius.html"
type="http">webbsidan för Genius</ulink> eller skicka mig ett e-postmeddelande på <email>jirka 5z
com</email>.</para>
+<!-- Translators may also add here feedback address for translations -->
+ </legalnotice>
+ </bookinfo>
+
+<!-- ============= Introduction =============================== -->
+ <chapter id="genius-introduction">
+ <title>Introduktion</title>
+ <para>Programmet <application>Genius matematikverktyg</application> är en allmän miniräknare som kan
användas som en miniräknare för skrivbordet, ett undervisningsverktyg för matematik och till och med är
användbart för forskning. Språket som används i <application>Genius matematikverktyg</application> är
designat för att vara ”matematiskt” i betydelsen att det ska uppfylla att ”vad du menar är vad du får”. Detta
är givetvis inte ett fullständigt uppnåeligt mål. <application>Genius matematikverktyg</application> klarar
av rationella tal, heltal med godtycklig precision och högprecisionsflyttal med GMP-biblioteket. Det hanterar
komplexa tal med kartesisk notation. Det har bra vektor- och matrismanipulation och kan hantera grundläggande
linjär algebra. Programmeringsspråket tillåter användardefinierade funktioner, variabler och ändring av
parametrar.</para>
+
+ <para><application>Genius matematikverktyg</application> finns i två versioner. En version är den
grafiska GNOME-versionen, som har ett gränssnitt av IDE-stil och förmågan att rita grafer med en eller två
variabler. Kommandoradsversionen kräver inte GNOME, men implementerar förstås inte någon funktion som kräver
det grafiska gränssnittet.</para>
+
+ <para>Delar av denna handbok beskriver den grafiska versionen av miniräknaren, men språket är förstås
detsamma. Kommandoradsversionen saknar funktioner för grafritning och all annan funktionalitet som kräver det
grafiska användargränssnittet.</para>
+
+ <para>Allmänt så nämns det om någon funktionalitet av språket (funktioner, operatorer och så vidare...)
är ny för någon version efter 1.0.5, men om den tillkom innan 1.0.5 skulle du behöva titta på
NEWS-filen.</para>
+
+ </chapter>
+
+<!-- =========== Getting Started ============================== -->
+ <chapter id="genius-getting-started">
+ <title>Komma igång</title>
+
+ <sect1 id="genius-to-start">
+ <title>För att starta <application>Genius matematikverktyg</application></title>
+ <para>Du kan starta <application>Genius matematikverktyg</application> på följande sätt:</para>
+ <variablelist>
+ <varlistentry>
+ <term><guimenu>Program</guimenu>-menyn</term>
+ <listitem>
+ <para>Beroende på ditt operativsystem och version kan menyposten för <application>Genius
matematikverktyg</application> dyka upp på ett antal olika platser. Det kan vara i
<guisubmenu>Utbildning</guisubmenu>, <guisubmenu>Tillbehör</guisubmenu>,
<guisubmenu>Kontorsprogram</guisubmenu>, <guisubmenu>Vetenskap</guisubmenu> eller någon liknande undermeny
beroende på din specifika konfiguration. Menyposten som du letar efter är <guimenuitem>Genius
matematikverktyg</guimenuitem>.Då du hittat denna menypost kan du klicka på den för att starta
<application>Genius matematikverktyg</application>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Dialogen <guilabel>Kör</guilabel></term>
+ <listitem>
+ <para>Beroende på din systeminstallation kanske inte menyposten finns tillgänglig. Om den inte
gör det kan du öppna Kör-dialogen och exekvera <command>gnome-genius</command>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Kommandorad</term>
+ <listitem>
+ <para>För att starta GNOME-versionen av <application>Genius matematikverktyg</application> kör
<command>gnome-genius</command> från kommandoraden.</para>
+ <para>För att starta kommandoradsversionen, kör följande kommando: <command>genius</command>.
Denna version inkluderar inte den grafiska miljön och viss funktionalitet som grafritning kommer inte finnas
tillgänglig.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-when-start">
+ <title>Då du startar Genius</title>
+ <para>Då du startar GNOME-versionen av <application>Genius matematikverktyg</application> kommer
fönstret som avbildas i <xref linkend="mainwindow-fig"/> att visas.</para>
+
+ <figure id="mainwindow-fig">
+ <title><application>Genius matematikverktyg</application>-fönstret</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/genius_window.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Shows <application>Genius Mathematics Tool</application> main window. Contains
titlebar, menubar,
+toolbar and working area. Menubar contains <guilabel>Arkiv</guilabel>,
+<guilabel>Redigera</guilabel>, <guilabel>Miniräknare</guilabel>,
+<guilabel>Exempel</guilabel>,
+<guilabel>Program</guilabel>,
+<guilabel>Inställningar</guilabel>, and <guilabel>Hjälp</guilabel> menus.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Fönstret för <application>Genius matematikverktyg</application> innehåller följande
element:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Menyrad.</term>
+ <listitem>
+ <para>Menyerna på menyraden innehåller alla kommandon som du behöver för att arbeta med filer i
<application>Genius matematikverktyg</application>.<guilabel>Arkiv</guilabel>-menyn innehåller poster för att
läsa in och spara objekt och skapa nya program. Kommandot <guilabel>Läs in och kör...</guilabel> öppnar inte
ett nytt fönster för programmet, utan kör bara programmet direkt. Det är ekvivalent med kommandot
<command>läs in</command>.</para>
+ <para>Menyn <guilabel>Miniräknare</guilabel> kontrollerar miniräknarmotorn. Den låter dig välja
det aktuellt valda programmet eller att avbryta den pågående beräkningen. Du kan också se det fulla uttrycket
för det senaste svaret (praktiskt om det senaste svaret var för stort för att passa i konsolen), eller så kan
du se en lista över värdena för alla användardefinierade variabler. Du kan också övervaka användarvariabler,
vilket är särskilt användbart under tiden en lång beräkning pågår, eller för att felsöka ett specifikt
program. Slutligen låter <guilabel>Miniräknare</guilabel> dig att rita funktionsgrafer med en användarvänlig
dialogruta.</para>
+ <para>Menyn <guilabel>Exempel</guilabel> är en lista över exempelprogram eller demonstrationer. Om
du öppnar menyn kommer den läsa in exemplet i ett nytt program vilket du kan köra, redigera, ändra och spara.
Dessa program bör vara väl dokumenterade och demonstrerar allmänt antingen någon funktion i
<application>Genius matematikverktyg</application> eller något matematiskt koncept.</para>
+ <para>Menyn <guilabel>Program</guilabel> listar aktuellt öppna program och låter dig växla mellan
dem.</para>
+ <para>De andra menyerna har samma bekanta funktioner som i andra program.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Verktygsfält.</term>
+ <listitem>
+ <para>Verktygsfältet innehåller en delmängd av kommandona du kan komma åt från menyraden.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Arbetsyta</term>
+ <listitem>
+ <para>Arbetsytan är den primära metoden för att interagera med programmet.</para>
+ <para>Arbetsytan har ursprungligen bara fliken <guilabel>Konsol</guilabel>, vilken är huvudsättet
att interagera med miniräknaren. Här skriver du in uttryck och resultaten visas omedelbart efter att du
tryckt på Returknappen.</para>
+ <para>Alternativt kan du skriva längre program och de kan visas i separata flikar. Programmen är
en uppsättning kommandon eller funktioner som kan köras alla på en gång snarare mata in dem i kommandoraden.
Programmen kan sparas i filer för senare användning.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ================ Usage =================================== -->
+ <chapter id="genius-usage">
+ <title>Grundläggande användning</title>
+
+ <sect1 id="genius-usage-workarea">
+ <title>Använda arbetsytan</title>
+
+ <para>Normalt interagerar du med miniräknaren i fliken <guilabel>Konsol</guilabel> i arbetsytan. Om du
kör textversionen kommer konsolen vara det enda som finns tillgängligt för dig. Om du vill använda
<application>Genius matematikverktyg</application> endast som en miniräknare skriver du bara in ditt uttryck
i konsolen så kommer det beräknas och det returnerade värdet kommer att skrivas ut.</para>
+
+ <para>För att beräkna ett uttryck. skriv in det i arbetsytan <guilabel>Konsol</guilabel> och tryck
Retur. Uttryck skrivs i ett språk som kallas GEL. De enklaste GEL-uttrycken ser ut precis som matematik. Till
exempel <screen><prompt>genius> </prompt><userinput>30*70 + 67^3.0 + ln(7) * (88.8/100)</userinput>
+</screen> eller <screen><prompt>genius> </prompt><userinput>62734 + 812634 + 77^4 mod 5</userinput>
+</screen> eller <screen><prompt>genius> </prompt><userinput>| sin(37) - e^7 |</userinput>
+</screen> eller <screen><prompt>genius> </prompt><userinput>sum n=1 to 70 do 1/n</userinput>
+</screen> (Det sista är den harmoniska summan från 1 till 70)</para>
+<para>För att se en lista över funktioner och kommandon, skriv: <screen><prompt>genius>
</prompt><userinput>help</userinput>
+</screen> Om du vill få mer hjälp om en specifik funktion, skriv: <screen><prompt>genius>
</prompt><userinput>help Funktionsnamn</userinput>
+</screen> För att se denna handbok, skriv: <screen><prompt>genius> </prompt><userinput>manual</userinput>
+</screen></para>
+<para>Anta att du tidigare har sparat några GEL-kommandon som ett program till en fil och att du nu vill
exekvera dem. För att läsa in detta program till filen <filename>sökväg/till/program.gel</filename>, skriv
<screen><prompt>genius> </prompt><userinput>load sökväg/till/program.gel</userinput>
+</screen><application>Genius matematikverktyg</application> håller reda på aktuell katalog. För att lista
filer i den aktuella katalogen skriv <command>ls</command>, för att ändra katalog använder du <userinput>cd
katalog</userinput> som i kommandoskalet i UNIX.</para>
+ </sect1>
+
+ <sect1 id="genius-usage-create-program">
+ <title>För att skapa ett nytt program</title>
+ <para>Om du vill mata in flera mer komplicerade kommandon, eller kanske skriva en komplicerad funktion
med <link linkend="genius-gel">GEL</link>-språket så kan du skapa ett nytt program.</para>
+ <para>För att börja skriva ett nytt program, välj
<menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Nytt program</guimenuitem></menuchoice>. En ny flik kommer
att dyka upp i arbetsytan. Du kan skriva ett <link linkend="genius-gel">GEL</link>-program i denna arbetsyta.
Då du har skrivit ditt program kan du köra det genom
<menuchoice><guimenu>Miniräknare</guimenu><guimenuitem>Kör</guimenuitem></menuchoice> (eller
verktygsfältsknappen <guilabel>Kör</guilabel>). Detta kommer exekvera ditt program och kommer visa all
utmatning i <guilabel>Konsol</guilabel>-fliken. Att exekvera ett program är ekvivalent med att ta texten i
programmet och skriva in den i konsolen. Den enda skillnaden är att denna inmatning görs oberoende från
konsolen och att bara utmatningen går till konsolen.
<menuchoice><guimenu>Miniräknare</guimenu><guimenuitem>Kör</guimenuitem></menuchoice> kommer alltid att köra
det aktuellt valda programmet även om du är i <guilabel>Konsol</guilabel>-
fliken. Det aktuellt valda programmet har sin flik i fet stil. Klicka på ett programs flik för att välja
det.</para>
+ <para>För att spara programmet du just skrivit, välj
<menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Spara som…</guimenuitem></menuchoice>. Liknande i andra
program kan du välja <menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Spara</guimenuitem></menuchoice> för
att spara ett program som redan har ett associerat filnamn. Om du har många öppnade program som du har
redigerat och vill spara kan du också välja <menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Spara allt
osparat</guimenuitem></menuchoice>.</para>
+ <para>Program som har osparade ändringar kommer ha ett ”[+]” intill sitt filnamn. På detta sätt kan du
se om filen på disk och den aktuellt öppnade fliken skiljer sig åt vad gäller innehåll. Program som inte ännu
fått ett filnamn associerat med sig anses alltid vara osparade och inget ”[+]” skrivs ut.</para>
+ </sect1>
+
+ <sect1 id="genius-usage-open-program">
+ <title>Att öppna eller köra ett program</title>
+ <para>För att öppna en fil, välj
<menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Öppna</guimenuitem></menuchoice>. En ny flik som innehåller
filen kommer att dyka upp i arbetsytan. Du kan använda denna för att redigera filen.</para>
+ <para>För att köra ett program från en fil, välj <menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Läs
in och kör...</guimenuitem></menuchoice>. Detta kommer köra programmet utan att öppna det i en separat flik.
Detta är ekvivalent med kommandot <command>load</command>.</para>
+ <para>Om du har gjort redigeringar till en fil som du vill slänga bort och vill läsa om versionen som
finns på disk kan du välja menyposten <menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Läs om från
disk</guimenuitem></menuchoice>. Detta är användbart för att experimentera med ett program och göra
tillfälliga redigeringar för att köra ett program, men som du inte avser behålla.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Plotting ============================== -->
+ <chapter id="genius-gel-plotting">
+ <title>Grafritning</title>
+
+ <para>Stöd för grafritning finns endast i den grafiska GNOME-versionen. All grafritning som finns
tillgänglig från det grafiska gränssnittet finns tillgänglig från fönstret <guilabel>Skapa graf</guilabel>.
Du kan komma åt detta fönster genom att antingen klicka på <guilabel>Graf</guilabel>-knappen i verktygsfältet
eller välja <guilabel>Graf</guilabel> i menyn <guilabel>Miniräknare</guilabel>. Du kan också komma åt
grafritningsfunktionalitet genom att använda GEL-språkets <link
linkend="genius-gel-function-list-plotting">grafritningsfunktioner</link>. Se <xref linkend="genius-gel"/>
för att få veta hur du matar in uttryck som Genius förstår.</para>
+
+ <sect1 id="genius-line-plots">
+ <title>Linjegrafer</title>
+ <para>För att rita ut reellvärda funktioner i en variabel öppna fönstret <guilabel>Skapa
graf</guilabel>. Du kan också använda <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>-funktionen på kommandoraden (se dess
dokumentation).</para>
+ <para>Då du klickar på <guilabel>Graf</guilabel>-knappen öppnas ett fönster med några flikhäften. Du
kommer att vilja vara i fliken <guilabel>Linjegraf för funktion</guilabel> och inuti detta vill du vara i
fliken <guilabel>Funktioner / Uttryck</guilabel>. Se <xref linkend="lineplot-fig"/>.</para>
+
+ <figure id="lineplot-fig">
+ <title>Skapa graf-fönster</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Visar linjegrafsfönstret.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Skriv in uttryck med <userinput>x</userinput> som oberoende variabel i textrutorna. Alternativt
kan du ange namn på funktioner som <userinput>cos</userinput> snarare än att behöva skriva
<userinput>cos(x)</userinput>. Du kan rita upp till tio funktioner. Om du gör ett misstag och Genius inte kan
tolka inmatningen kommer det att visa detta med en varningsikon till höger om textinmatningsrutan där felet
uppstod, såväl som att ge dig en feldialog. Du kan ändra intervallen för de beroende och de oberoende
variablerna i nederdelen av dialogen. Intervallet <varname>y</varname> (beroende) kan ställas in automatiskt
genom att kryssa i kryssrutan <guilabel>Passa till beroende axel</guilabel>. Namnen på variablerna kan också
ändras. Att trycka på knappen <guilabel>Graf</guilabel> producerar grafen som visas i <xref
linkend="lineplot2-fig"/>.</para>
+ <para>Namnen på variablerna kan ändras genom att klicka på knappen <guilabel>Ändra
variabelnamn…</guilabel>, vilket är användbart om du vill skriva ut eller spara figuren och inte vill använda
standardnamnen. Slutligen kan du också undvika att skriva ut förklaringen och axeletiketterna helt, vilket
också är användbart då du skriver ut eller sparar, då förklaringen kan vara i vägen.</para>
+
+ <figure id="lineplot2-fig">
+ <title>Graffönster</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/line_plot_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Den producerade grafen.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Härifrån kan du skriva ut grafen, skapa encapsulated postscript eller en PNG-version av grafen
eller ändra zoomnivån. Om den beroende axeln inte ställdes in korrekt kan Genius anpassa den genom att hitta
extremvärdena för de ritade funktionerna.</para>
+
+ <para>För grafritning med kommandoraden se dokumentationen för <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>-funktionen.</para>
+ </sect1>
+
+ <sect1 id="genius-parametric-plots">
+ <title>Parametriska grafer</title>
+ <para>I ”Skapa graf”-fönstret kan du också välja flikhäftet <guilabel>Parametrisk</guilabel> för att
skapa tvådimensionella parametriska grafer. På detta sätt kan du rita en parametrisk funktion. Du kan
antingen ange punkterna som <varname>x</varname> och <varname>y</varname>, eller ange ett ensamt komplext tal
som en funktion av variabeln <varname>t</varname>. Intervallet för variabeln <varname>t</varname> anges
explicit, och funktionen ritas enligt angivet inkrement. Intervallet för <varname>x</varname> och
<varname>y</varname> kan ställas in automatiskt genom att kryssa i kryssrutan <guilabel>Passa till beroende
axel</guilabel>, eller så kan det anges explicit. Se <xref linkend="paramplot-fig"/>.</para>
+
+ <figure id="paramplot-fig">
+ <title>Flik för parametriska grafer</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Flik för parametrisk graf i fönstret <guilabel>Skapa graf</guilabel>.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>Ett exempel på en parametrisk graf ges i <xref linkend="paramplot2-fig"/>. Liknande operationer
kan göras på sådana grafer som kan göras på de andra linjegraferna. För grafritning på kommandoraden se
dokumentationen för funktionerna <link
linkend="gel-function-LinePlotParametric"><function>LinePlotParametric</function></link> eller <link
linkend="gel-function-LinePlotCParametric"><function>LinePlotCParametric</function></link>.</para>
+
+ <figure id="paramplot2-fig">
+ <title>Parametrisk graf</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/parametric_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Producerad parametrisk graf</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="genius-slopefield-plots">
+ <title>Riktningsfältsgrafer</title>
+ <para>I ”Skapa graf”-fönstret kan du också välja flikhäftet <guilabel>Riktningsfält</guilabel> för att
skapa en tvådimensionell riktningsfältsgraf. Liknande operationer kan göras på sådana grafer som kan göras på
de andra linjegraferna. För grafritning på kommandoraden se dokumentationen för funktionen <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>.</para>
+
+ <para>Då ett riktningsfält är aktivt finns det en extra meny <guilabel>Lösare</guilabel> tillgänglig,
genom vilken du kan få fram lösardialogen. Här kan du få Genius att rita ut specifika lösningar för de givna
startvillkoren. Du kan antingen ange startvillkor i dialogen eller så kan du klicka direkt på grafen för att
ange ursprungspunkten. Medan lösardialogen är aktiv fungerar det inte att zooma genom att klicka och dra. Du
måste stänga dialogen först om du vill zooma med musen.</para>
+
+ <para>Lösaren använder den vanliga Runge-Kutta-metoden. Graferna behålls på skärmen tills de rensas
bort. Lösaren kommer stoppa då den når kanten på graffönstret. Att zooma ändrar inte gränserna eller
parametrarna för lösningarna, du kommer behöva rensa bort och rita om dem med lämpliga parametrar. Du kan
också använda funktionen <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link> för att rita
lösningar från kommandoraden eller program.</para>
+
+ </sect1>
+
+ <sect1 id="genius-vectorfield-plots">
+ <title>Vektorfältsgrafer</title>
+ <para>I ”Skapa graf”-fönstret kan du också välja flikhäftet <guilabel>Vektorfält</guilabel> för att
skapa en tvådimensionell vektorfältsgraf. Liknande operationer kan göras på sådana grafer som kan göras på de
andra linjegraferna. För grafritning på kommandoraden se dokumentationen för funktionen <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>.</para>
+
+ <para>Som standard visas riktningen och magnituden för vektorfältet. För att endast visa riktning och
inte magnituden, kryssa i motsvarande kryssruta för att normalisera pillängderna.</para>
+
+ <para>Då ett vektorfält är aktivt finns det en extra meny <guilabel>Lösare</guilabel> tillgänglig,
genom vilken du kan få fram lösardialogen. Här kan du få Genius att rita ut specifika lösningar för de givna
startvillkoren. Du kan antingen ange startvillkor i dialogen eller så kan du klicka direkt på grafen för att
ange ursprungspunkten. Medan lösardialogen är aktiv fungerar det inte att zooma genom att klicka och dra. Du
måste stänga dialogen först om du vill zooma med musen.</para>
+
+ <para>Lösaren använder den vanliga Runge-Kutta-metoden. Graferna behålls på skärmen tills de rensas
bort. Att zooma ändrar inte gränserna eller parametrarna för lösningarna, du kommer behöva rensa bort och
rita om dem med lämpliga parametrar. Du kan också använda funktionen <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link> för att
rita lösningar från kommandoraden eller program.</para>
+
+ </sect1>
+
+ <sect1 id="genius-surface-plots">
+ <title>Ytgrafer</title>
+ <para>Genius kan också rita ytor. Välj fliken <guilabel>Ytgraf</guilabel> i huvudflikhäftet i
<guilabel>Skapa graf</guilabel>-fönstret. Här kan du ange ett enskilt uttryck som ska använda antingen
<varname>x</varname> och <varname>y</varname> som reella oberoende variabler eller <varname>z</varname> som
en komplex variabel (där <varname>x</varname> är realdelen av <varname>z</varname> och <varname>y</varname>
är imaginärdelen). Till exempel kan du för att rita absolutbeloppet av cosinusfunktionen för komplexa
parametrar mata in <userinput>|cos(z)|</userinput>. Detta skulle vara ekvivalent med
<userinput>|cos(x+1i*y)|</userinput>. Se <xref linkend="surfaceplot-fig"/>. För grafritning med kommandoraden
se dokumentationen för funktionen <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para><varname>z</varname>-intervallet kan ställas in automatiskt genom att kryssa i kryssrutan
<guilabel>Passa till beroende axel</guilabel>. Namnen på variablerna kan ändras genom att klicka på knappen
<guilabel>Ändra variabelnamn…</guilabel>, vilket är användbart om du vill skriva ut eller spara figuren och
inte vill använda standardnamnen. Slutligen kan du också undvika att skriva ut förklaringen vilket också är
användbart då du skriver ut eller sparar, då förklaringen kan vara i vägen.</para>
+
+ <figure id="surfaceplot-fig">
+ <title>Ytgraf</title>
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="figures/surface_graph.png" format="PNG" scalefit="1"/>
+ </imageobject>
+ <textobject>
+ <phrase>Absolutbelopp för den komplexa cosinusfunktionen.</phrase>
+ </textobject>
+ </mediaobject>
+ </screenshot>
+ </figure>
+
+ <para>I ytläge kommer vänster- och högerpiltangenterna på ditt tangentbord att rotera vyn kring
z-axeln. Alternativt kan du rotera kring valfri axel genom att välja <guilabel>Rotera axel...</guilabel> i
<guilabel>Visa</guilabel>-menyn. <guilabel>Visa</guilabel>-menyn har också ett toppvyläge som roterar grafen
så att z-axeln pekar rakt ut, det vill säga vi ser grafen ovanifrån och får i princip bara färgerna som
definierar värdena på funktionen vilket ger oss en temperaturgraf av funktionen. Slutligen bör du pröva
<guilabel>Börja rotera animering</guilabel> för att starta en kontinuerlig långsam rotation. Detta är
speciellt bra om du använder <application>Genius matematikverktyg</application> för en presentation för
åskådare.</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL ====================================== -->
+ <chapter id="genius-gel">
+ <title>Grunderna i GEL</title>
+
+ <para>GEL står för Genius Extension Language. Det är språket som du använder för att skriva program i
Genius. Ett program i GEL är helt enkelt ett uttryck som evalueras till ett tal, en matris eller ett annat
objekt i GEL. <application>Genius matematikverktyg</application> kan användas som en enkel miniräknare eller
som ett kraftfullt verktyg för teoretisk forskning. Syntaxen är tänkt att ha en så låg inlärningskurva som
möjligt, särskilt då det används som en miniräknare.</para>
+
+ <sect1 id="genius-gel-values">
+ <title>Värden</title>
+
+ <para>Värden i GEL kan vara <link linkend="genius-gel-values-numbers">tal</link>, <link
linkend="genius-gel-values-booleans">booleska värden</link> eller <link
linkend="genius-gel-values-strings">strängar</link>. GEL behandlar också <link
linkend="genius-gel-matrices">matriser</link> som värden. Värden kan bland annat användas i beräkningar,
tilldelas till variabler och returneras från funktioner.</para>
+
+ <sect2 id="genius-gel-values-numbers">
+ <title>Tal</title>
+ <para>Heltal är den första taltypen i GEL. Heltal skrivs som vanligt. <programlisting>1234
+</programlisting> Hexadecimala och oktala tal kan skrivas med C-notation. Till exempel:
<programlisting>0x123ABC
+01234
+</programlisting> Eller så kan du skriva tal i en godtycklig bas med
<literal><base>\<number></literal>. Siffror större än 10 använder bokstäver liknande för
hexadecimala tal. Till exempel kan ett tal i bas 23 skrivas: <programlisting>23\1234ABCD
+</programlisting></para>
+
+ <para>Den andra typen av GEL-tal är rationella tal. Rationella tal fås helt enkelt genom att
dividera två heltal. Man skulle kunna skriva: <programlisting>3/4
+</programlisting> för att få tre fjärdedelar. Rationella tal accepterar också notationen för delade bråk, så
för att få ett och tre tiondelar skulle du kunna skriva: <programlisting>1 3/10
+</programlisting></para>
+
+ <para>Nästa taltyp är flyttal. Dessa matas in på liknande sätt som C-notation. Du kan använda
<literal>E</literal>, <literal>e</literal> eller <literal>@</literal> som exponentavskiljare. Observera att
använda exponentavskiljaren ger ett flyttal även om det inte är något decimaltecken i talet. Exempel:
<programlisting>1.315
+7.887e77
+7.887e-77
+.3
+0.3
+77e5
+</programlisting> När Genius skriver ut ett flyttal kommer det alltid att lägga till ett
<computeroutput>.0</computeroutput> även om talet är ett heltal. Detta är för att indikera att flyttal tas
som inexakta kvantiteter. Då ett tal är skrivet i vetenskaplig notation är det alltid ett flyttal och Genius
skriver därför inte ut <computeroutput>.0</computeroutput>.</para>
+
+ <para>Den sista taltypen i GEL är de komplexa talen. Du kan mata in ett komplext tal som en summa av
reella och imaginära delar. För att lägga till en imaginärdel, lägg till ett <literal>i</literal>. Här är
några exempel då komplexa tal matas in: <programlisting>1+2i
+8.01i
+77*e^(1.3i)
+</programlisting></para>
+
+ <important>
+ <para>Då imaginära tal matas in måste det finnas ett tal före <literal>i</literal>. Om du använder
<literal>i</literal> för sig själv kommer Genius att tolka det som att det handlar om variabeln
<varname>i</varname>. Om du behöver hänvisa till ett ensamt <literal>i</literal>, använd
<literal>1i</literal> istället.</para>
+
+ <para>För att använda blandad bråk-notation med imaginära tal måste du ha det blandade bråket inom
parenteser. (d.v.s., <userinput>(1 2/5)i</userinput>)</para>
+ </important>
+
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-booleans">
+ <title>Booleska värden</title>
+ <para>Genius har också stöd för inbyggda booleska värden. De två booleska konstanterna är
definierade som <constant>true</constant> och <constant>false</constant>; dessa identifierare kan användas
som vilken annan variabel som helst. Du kan också använda identifierarna <constant>True</constant>,
<constant>TRUE</constant>, <constant>False</constant> och <constant>FALSE</constant> som alias för de
ovannämnda.</para>
+ <para>På alla ställen där ett booleskt uttryck förväntas kan du använda ett booleskt värde eller
valfritt uttryck som producerar antingen ett tal eller ett booleskt värde. Om Genius behöver evaluera ett tal
som ett booleskt värde kommer det tolka 0 som <constant>false</constant> och alla andra tal som
<constant>true</constant>.</para>
+ <para>Utöver detta kan du göra aritmetik med booleska värden. Till exempel är <programlisting>( (1 +
true) - false ) * true
+</programlisting> detsamma som: <programlisting>( (true or true) or not false ) and true
+</programlisting> Endast addition, subtraktion och multiplikation stöds. Om du blandar tal med booleska
värden i ett uttryck så konverteras talen till booleska värden som beskrivits ovan. Detta betyder att till
exempel: <programlisting>1 == true
+</programlisting> alltid evaluerar till <constant>true</constant> eftersom 1 kommer konverteras till
<constant>true</constant> innan det jämförs med <constant>true</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-strings">
+ <title>Strängar</title>
+ <para>Som tal och booleska värden kan även strängar i GEL lagras som värden i variabler och skickas
till funktioner. Du kan också konkatenera en sträng med ett annat värde med plus-operatorn. Till exempel:
<programlisting>a=2+3;"Resultatet är: "+a
+</programlisting> kommer skapa strängen: <programlisting>Resultatet är: 5
+</programlisting> Du kan också använda C-liknande kontrollsekvenser som
<literal>\n</literal>,<literal>\t</literal>,<literal>\b</literal>,<literal> och \r. F\ eller " i str\. Till
exempel: "Omv kommer skapa en strOmv Observera dock att nprint eller printn.</literal></para>
+ <para>Dessutom kan du använda biblioteksfunktionen <link
linkend="gel-function-string"><function>string</function></link> för att konvertera vad som helst till en
sträng. Till exempel: <programlisting>string(22)
+</programlisting> kommer returnera <programlisting>"22"
+</programlisting> Strängar kan också jämföras med (jämförelse)operatorerna <literal>==</literal> (lika med),
<literal>!=</literal> (inte lika med) och <literal><=></literal></para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-values-null">
+ <title>Null</title>
+ <para>Det finns ett speciellt värde som kallas <constant>null</constant>. Inga operationer kan be
utföras på det, och inget skrivs ut då det returneras. Därför är <constant>null</constant> användbart då du
inte vill ha utdata från ett uttryck. Värdet <constant>null</constant> kan erhållas som ett uttryck då du
skriver <literal>.</literal>, konstanten <constant>null</constant> eller ingenting. Med ingenting menar vi
att om du avslutar ett uttryck med en avskiljare <literal>;</literal> är det ekvivalent med att avsluta det
med en avskiljare följt av ett <constant>null</constant>.</para>
+ <para>Exempel: <programlisting>x=5;.
+x=5;
+</programlisting></para>
+<para>Vissa funktioner returnerar <constant>null</constant> då inget värde kan returneras eller då ett fel
uppstått. <constant>null</constant> används också som en tom vektor eller matris, eller en tom
referens.</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="genius-gel-variables">
+ <title>Använda variabler</title>
+
+ <para>Syntax: <programlisting>Variabelnamn
+</programlisting> Exempel: <screen><prompt>genius> </prompt><userinput>e</userinput>
+= 2.71828182846
+</screen></para>
+
+ <para>För att evaluera en ensam variabel skriver du bara in namnet på variabeln. Detta returnerar
variabelns värde. Du kan använda en variabel var som helst där du vanligen skulle använda ett tal eller en
sträng. Dessutom är variabler nödvändiga då man definierar funktioner som tar argument (se <xref
linkend="genius-gel-functions-defining"/>).</para>
+
+ <tip>
+ <title>Använda tabbkomplettering</title>
+ <para>Du kan använda tabbkomplettering för att få Genius att komplettera variabelnamn åt dig. Skriv
in de första bokstäverna i namnet och tryck <userinput>Tabb</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Variabelnamn är skiftlägeskänsliga</title>
+ <para>Namnen på variabler är skiftlägeskänsliga. Detta betyder att variablerna med namnen
<varname>hej</varname>, <varname>HEJ</varname> och <varname>Hej</varname> alla är olika variabler.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-variables-setting">
+ <title>Ställa in variabler</title>
+ <para>Syntax: <programlisting><![CDATA[<identifier> = <value>
+<identifier> := <value>]]>
+</programlisting> Exempel: <programlisting>x = 3
+x := 3
+</programlisting></para>
+
+ <para>För att tilldela ett värde till en variabel, använd operatorerna <literal>=</literal> eller
<literal>:=</literal>. Dessa operatorer ställer in värdet på variabeln och returnerar värdet som du ställt
in, så du kan göra saker som <programlisting>a = b = 5
+</programlisting> Detta kommer ställa in <varname>b</varname> till 5 och sedan även ställa in
<varname>a</varname> till 5.</para>
+
+ <para>Operatorerna <literal>=</literal> och <literal>:=</literal> kan båda användas för att ställa
in variabler. Skillnaden mellan dem är att <literal>:=</literal>-operatorn alltid beter sig som en
tilldelningsoperator medan <literal>=</literal>-operatorn kan tolkas som ett test för likhet då den används i
en kontext där ett booleskt uttryck förväntas.</para>
+
+ <para>För mer information om variablers räckvidd, det vill säga när vilka variabler är synliga, se
<xref linkend="genius-gel-variables-global"/>.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-variables-built-in">
+ <title>Inbyggda variabler</title>
+ <para>GEL har ett antal inbyggda ”variabler”, som <varname>e</varname>, <varname>pi</varname> eller
<varname>GoldenRatio</varname>. Dessa är ofta använda konstanter med ett förinställt värde, och de kan inte
tilldelas nya värden. Det finns ett antal andra inbyggda variabler. Se <xref
linkend="genius-gel-function-list-constants"/> för en fullständig lista. Observera att <varname>i</varname>
som standard inte är kvadratroten av minus ett (det imaginära talet), och har lämnats odefinierad för att
kunna användas som en räknare. Om du vill skriva det imaginära talet kommer du behöva använda
<userinput>1i</userinput>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-previous-result">
+ <title>Variabel för föregående resultat</title>
+ <para>Variablerna <varname>Ans</varname> och <varname>ans</varname> kan användas för att få
resultatet av det senaste uttrycket. Om du till exempel utfört någon beräkning kan du göra följande för att
lägga till 389 till resultatet: <programlisting>Ans+389
+</programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-functions">
+ <title>Använda funktioner</title>
+
+ <para>Syntax: <programlisting>Funktionsnamn(argument1, argument2, ...)
+</programlisting> Exempel: <programlisting>Factorial(5)
+cos(2*pi)
+gcd(921,317)
+</programlisting> För att evaluera en funktion, mata in funktionens namn följt av funktionens argument (om
sådana finns) i parenteser. Detta kommer returnera resultatet av att tillämpa funktionen på dess argument.
Antalet argument för funktionen skiljer sig förstås åt för varje funktion.</para>
+
+ <para>Det finns många inbyggda funktioner, som <link
linkend="gel-function-sin"><function>sin</function></link>, <link
linkend="gel-function-cos"><function>cos</function></link> och <link
linkend="gel-function-tan"><function>tan</function></link>. Du kan använda det inbyggda kommandot <link
linkend="gel-command-help"><function>help</function></link> för att få en lista över tillgängliga funktioner,
eller se <xref linkend="genius-gel-function-list"/> för en fullständig lista.</para>
+
+ <tip>
+ <title>Använda tabbkomplettering</title>
+ <para>Du kan använda tabbkomplettering för att få Genius att komplettera funktionsnamn åt dig. Skriv
in de första bokstäverna i namnet och tryck <userinput>Tabb</userinput>.</para>
+ </tip>
+
+ <important>
+ <title>Funktionsnamn är skiftlägeskänsliga</title>
+ <para>Namnen på funktioner är skiftlägeskänsliga. Detta betyder att funktionerna med namnen
<function>arbeta</function>, <function>ARBETA</function> och <function>Arbeta</function> alla är olika
funktioner.</para>
+ </important>
+
+
+ <sect2 id="genius-gel-functions-defining">
+ <title>Definiera funktioner</title>
+ <para>Syntax: <programlisting><![CDATA[function <identifier>(<comma separated arguments>) =
<function body>
+<identifier> = (`() = <function body>)
+]]></programlisting> <literal>`</literal> är tecknet grav accent och betecknar en anonym funktion. Genom att
ställa in den till ett variabelnamn definierar du praktiskt sett en funktion.</para>
+
+ <para>En funktion tar noll eller fler kommaseparerade argument och returnerar resultatet av
funktionskroppen. Att definiera dina egna funktioner är främst en bekvämlighetsfråga; en möjlig användning är
att ha uppsättningar av funktioner definierade i GEL-filer som Genius kan läsa in för att göra dem
tillgängliga. Exempel: <programlisting>function addup(a,b,c) = a+b+c
+</programlisting> sedan <userinput>addup(1,4,9)</userinput> ger 14</para>
+ </sect2>
+
+ <sect2 id="genius-gel-functions-variable-argument-lists">
+ <title>Variabla argumentlistor</title>
+ <para>Om du inkluderar <literal>...</literal> efter det sista argumentnamnet i funktionsdeklaration
kommer Genius att tillåta ett godtyckligt antal argument att skickas istället för det argumentet. Om inga
skickades så kommer det argumentet att ställas in till <constant>null</constant>. I andra fall kommer det
vara en horisontell vektor som innehåller alla argumenten. Till exempel: <programlisting>function f(a,b...) =
b
+</programlisting> Då kommer <userinput>f(1,2,3)</userinput> att ge <computeroutput>[2,3]</computeroutput>,
medan <userinput>f(1)</userinput> ger ett <constant>null</constant>.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-passing-functions">
+ <title>Skicka funktioner till funktioner</title>
+
+ <para>I Genius är det möjligt att skicka en funktion som ett argument till en annan funktion. Detta
kan antingen göras med ”funktionsnoder” eller anonyma funktioner.</para>
+
+ <para>Om du inte matar in parenteserna efter ett funktionsnamn så kommer funktionen istället för att
evalueras returneras som en ”funktionsnod”. Funktionsnoden kan sedan skickas till en annan funktion. Exempel:
<programlisting>function f(a,b) = a(b)+1;
+function b(x) = x*x;
+f(b,2)
+</programlisting></para>
+ <para>För att skicka funktioner som inte är definierade kan du använda en anonym funktion (se <xref
linkend="genius-gel-functions-defining"/>). Det vill säga att du vill skicka en funktion utan att ge den ett
namn. Syntax: <programlisting><![CDATA[function(<comma separated arguments>) = <function body>
+`(<comma separated arguments>) = <function body>
+]]></programlisting> Exempel: <programlisting>function f(a,b) = a(b)+1;
+f(`(x) = x*x,2)
+</programlisting> Detta kommer returnera 5.</para>
+ </sect2>
+
+
+ <sect2 id="genius-gel-functions-operations">
+ <title>Operationer på funktioner</title>
+ <para>Vissa funktioner tillåter aritmetiska operationer, och vissa funktioner med ett argument som
<link linkend="gel-function-exp"><function>exp</function></link> eller <link
linkend="gel-function-ln"><function>ln</function></link> att operera på funktionen. Till exempel returnerar
<programlisting>exp(sin*cos+4)
+</programlisting> en funktion som tar <varname>x</varname> och returnerar
<userinput>exp(sin(x)*cos(x)+4)</userinput>. Det är funktionellt sett ekvivalent med att skriva
<programlisting>`(x) = exp(sin(x)*cos(x)+4)
+</programlisting> Denna operation kan vara användbar då man definierar funktioner snabbt. För att till
exempel skapa en funktion som kallas <varname>f</varname> för att utföra operationen ovan kan du helt enkelt
skriva: <programlisting>f = exp(sin*cos+4)
+</programlisting> Det kan också användas i grafritning. För att till exempel rita grafen för sinus i kvadrat
kan du mata in: <programlisting>LinePlot(sin^2)
+</programlisting></para>
+
+ <warning>
+ <para>Alla funktioner kan inte användas på detta sätt. Då du till exempel använder en binär
operation måste funktionerna ta samma antal argument.</para>
+ </warning>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="genius-gel-separator">
+ <title>Avskiljare</title>
+ <para>GEL skiljer sig något från andra språk i hur det hanterar flera kommandon och funktioner. I GEL
måste du skapa en kedja av kommandon med en avskiljaroperator. Det vill säga om du vill skriva mer än ett
uttryck måste du använda <literal>;</literal>-operatorn mellan uttrycken. Detta är ett sätt så att båda
uttrycken evalueras och att resultatet av det andra (eller det sista om det finns mer är två uttryck)
returneras. Anta att du matar in följande: <programlisting>3 ; 5
+</programlisting> Detta uttryck kommer att ge 5.</para>
+ <para>Detta kommer ibland att kräva parenteser för att göra det otvetydigt, särskilt om
<literal>;</literal> inte är den översta primitiven. Detta skiljer sig något från andra programmeringsspråk
där <literal>;</literal> terminerar uttryck, medan den i GEL faktiskt är en binär operator. Om du är bekant
med pascal faller detta sig naturligt. Genius kan dock låta dig låtsas att den är en terminator i någon
utsträckning. Om en <literal>;</literal> hittas i slutet på en parentes eller ett block kommer genius att
lägga till ett null efter den som om du hade skrivit <userinput>;null</userinput>. Detta är användbart ifall
du inte vill returnera ett värde från exempelvis en slinga, eller om du vill hantera returvärdet på annat
sätt. Observera att detta kommer sakta ner koden något om det anropas för ofta eftersom det är en till
operator inblandad.</para>
+ <para>Om du skriver uttryck i ett program måste du inte lägga till ett semikolon. I detta fall kommer
genius helt enkelt att skriva ut returvärdet närhelst det exekverar uttrycket. Observera dock att om du
definierar en funktion så är kroppen av funktionen ett enda uttryck.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comments">
+ <title>Kommentarer</title>
+ <para>GEL liknar andra skriptspråk i att <literal>#</literal> betecknar en kommentar, det vill säga
text som inte ska evalueras. Allt från nummertecknet till slutet på raden kommer att ignoreras. Till exempel,
<programlisting># Det här är bara en kommentar
+# varje rad i en kommentar måste ha ett nummertecken
+# i nästa rad ställer vi in x till värdet 123
+x=123;
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-modular-evaluation">
+ <title>Moduloberäkning</title>
+ <para>Genius implementerar modulär aritmetik. För att använda det lägger du bara till ”mod
<heltal>” efter uttrycket. Exempel: <userinput>2^(5!) * 3^(6!) mod 5</userinput> Det kunde vara möjligt
att utföra modulär aritmetik genom att beräkna med heltal och sedan beräkna modulo i slutet med
<literal>%</literal>-operatorn, vilken helt enkelt ger resten, men det kan vara tidskrävande om inte omöjligt
då man arbetar med större tal. Till exempel, <userinput>10^(10^10) % 6</userinput> kommer helt enkelt inte
att fungera (exponenten kommer vara för stor), medan <userinput>10^(10^10) mod 6</userinput> är omedelbart.
Det första uttrycket försöker först att beräkna heltalet <userinput>10^(10^10)</userinput> och sedan hitta
resten efter division med 6, medan det andra uttrycket evaluerar allting modulo 6 till att börja med.</para>
+ <para>Du kan beräkna inverserna av tal modulo något heltal genom att bara använda rationella tal
(givetvis måste inversen existera). Exempel: <programlisting>10^-1 mod 101
+1/10 mod 101</programlisting> Du kan också utföra modulär evaluering med matriser inklusive att ta inverser,
potenser och division. Exempel: <programlisting>A = [1,2;3,4]
+B = A^-1 mod 5
+A*B mod 5</programlisting> Detta skulle ge identitetsmatrisen eftersom B kommer vara inversen av A mod
5.</para>
+ <para>Vissa funktioner som <link linkend="gel-function-sqrt"><function>sqrt</function></link> eller
<link linkend="gel-function-log"><function>log</function></link> fungerar annorlunda i moduloläge. Dessa
kommer då fungera som sina diskreta versioner inom den ring av heltal som du valt. Till exempel:
<programlisting>genius> sqrt(4) mod 7
+=
+[2, 5]
+genius> 2*2 mod 7
+= 4</programlisting><function>sqrt</function> kommer faktiskt returnera alla möjliga kvadratrötter.</para>
+ <para>Kedja inte samman modulo-operatorer, placera det helt enkelt i slutet på beräkningen, alla
beräkningar i uttrycket till vänster kommer utföras i modulär aritmetik. Om du placerar en mod inuti en annan
mod kommer du att få oväntade resultat. Om du helt enkelt vill beräkna modulo av ett enda tal och kontrollera
exakt då rester tas är det bäst att använda <literal>%</literal>-operatorn. Då du behöver kedja samman flera
uttryck i modulär aritmetik med olika delare kan det vara bäst att bara dela upp uttrycken i flera och
använda tillfälliga variabler för att undvika att ha mod inuti mod.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-operator-list">
+ <title>Lista över GEL-operatorer</title>
+
+ <para>Allt i GEL är bara ett uttryck. Uttryck slås samman med olika operatorer. Som vi har sett är
till och med avskiljaren helt enkelt en binär operator i GEL. Här är en lista över operatorerna i GEL.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><userinput>a;b</userinput></term>
+ <listitem>
+ <para>Avskiljaren, evaluerar helt enkelt både <varname>a</varname> och <varname>b</varname>, men
returnerar bara resultatet av <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a=b</userinput></term>
+ <listitem>
+ <para>Tilldelningsoperatorn. Denna tilldelar <varname>b</varname> till <varname>a</varname>
(<varname>a</varname> måste vara ett giltigt <link linkend="genius-gel-lvalues">vvärde</link>) (observera
dock att denna operator kan översättas till <literal>==</literal> om den används där ett booleskt uttryck
förväntas)</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:=b</userinput></term>
+ <listitem>
+ <para>Tilldelningsoperatorn. Tilldelar <varname>b</varname> till <varname>a</varname>
(<varname>a</varname> måste vara ett giltigt <link linkend="genius-gel-lvalues">vvärde</link>) Detta skiljer
sig från <literal>=</literal> eftersom det aldrig översätts till <literal>==</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>|a|</userinput></term>
+ <listitem>
+ <para>Absolutbelopp. Om uttrycket är ett komplext tak kommer resultatet vara avståndet från
origo. Till exempel: <userinput>|3 * e^(1i*pi)|</userinput> returnerar 3.</para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a^b</userinput></term>
+ <listitem>
+ <para>Exponentiering, upphöjer <varname>a</varname> till exponenten <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.^b</userinput></term>
+ <listitem>
+ <para>Elementvis exponentiering. Upphöj varje element i en matris <varname>a</varname> till
exponenten <varname>b</varname>. Eller om <varname>b</varname> är en matris med samma storlek som
<varname>a</varname>, gör i så fall operationen elementvis. Om <varname>a</varname> är ett tal och
<varname>b</varname> är en matris så skapar det en matris av samma storlek som <varname>b</varname> med
<varname>a</varname> upphöjt till alla de olika exponenterna i <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a+b</userinput></term>
+ <listitem>
+ <para>Addition. Adderar två tal, matriser, funktioner eller strängar. Om du lägger till en sträng
kommer resultatet att vara en sträng. Om en är en kvadratisk matris och den andra ett tal kommer talet att
multipliceras med identitetsmatrisen.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a-b</userinput></term>
+ <listitem>
+ <para>Subtraktion. Subtrahera två tal, matriser eller funktioner.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a*b</userinput></term>
+ <listitem>
+ <para>Multiplikation. Detta är vanlig matrismultiplikation.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.*b</userinput></term>
+ <listitem>
+ <para>Elementvis multiplikation om <varname>a</varname> och <varname>b</varname> är
matriser.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a/b</userinput></term>
+ <listitem>
+ <para>Division. Då <varname>a</varname> och <varname>b</varname> bara är tal är detta vanlig
division. Då de är matriser är detta ekvivalent med <userinput>a*b^-1</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a./b</userinput></term>
+ <listitem>
+ <para>Elementvis division. Samma som <userinput>a/b</userinput> för tal, men opererar elementvis
på matriser.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a\b</userinput></term>
+ <listitem>
+ <para>Baklängesdivision. Det vill säga detta är samma sak som <userinput>b/a</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.\b</userinput></term>
+ <listitem>
+ <para>Elementvis baklängesdivision.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a%b</userinput></term>
+ <listitem>
+ <para>Modulooperatorn. Detta slår inte på <link
linkend="genius-gel-modular-evaluation">moduloläget</link>, utan returnerar bara resten av heltalsdivisionen
<userinput>a/b</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.%b</userinput></term>
+ <listitem>
+ <para>Elementvis modulooperator. Returnerar resten efter elementvis division
<userinput>a./b</userinput> av heltal.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a mod b</userinput></term>
+ <listitem>
+ <para>Modulär evalueringsoperator. Uttrycket <varname>a</varname> evalueras modulo
<varname>b</varname>. Se <xref linkend="genius-gel-modular-evaluation"/>. Vissa funktioner och operatorer
beter sig annorlunda modulo ett heltal.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!</userinput></term>
+ <listitem>
+ <para>Fakultetsoperator. Detta är som <userinput>1*...*(n-2)*(n-1)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!!</userinput></term>
+ <listitem>
+ <para>Semifakultetsoperator. Detta är som <userinput>1*...*(n-4)*(n-2)*n</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a==b</userinput></term>
+ <listitem>
+ <para>Likhetsoperator. Returnerar <constant>true</constant> eller <constant>false</constant>
beroende på om <varname>a</varname> och <varname>b</varname> är lika eller inte.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a!=b</userinput></term>
+ <listitem>
+ <para>Olikhetsoperator, returnerar <constant>true</constant> om <varname>a</varname> inte är lika
med <varname>b</varname>, returnerar annars <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<>b</userinput></term>
+ <listitem>
+ <para>Alternativ olikhetsoperator, returnerar <constant>true</constant> om <varname>a</varname>
inte är lika med <varname>b</varname>, returnerar annars <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=b</userinput></term>
+ <listitem>
+ <para>Mindre än eller lika med-operator, returnerar <constant>true</constant> om
<varname>a</varname> är mindre eller lika med <varname>b</varname>, returnerar annars
<constant>false</constant>. Dessa kan kombineras som i <userinput>a <= b <= c</userinput> (kan också
kombineras med mindre än-operatorn).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>=b</userinput></term>
+ <listitem>
+ <para>Större än eller lika med-operator, returnerar <constant>true</constant> om
<varname>a</varname> är större eller lika med <varname>b</varname>, returnerar annars
<constant>false</constant>. Dessa kan kombineras som i <userinput>a >= b >= c</userinput> (kan också
kombineras med större än-operatorn).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a<b</userinput></term>
+ <listitem>
+ <para>Mindre än-operator, returnerar <constant>true</constant> om <varname>a</varname> är mindre
än <varname>b</varname>, returnerar annars <constant>false</constant>. Dessa kan kombineras som i
<userinput>a < b < c</userinput> (kan också kombineras med mindre än eller lika med-operatorn).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a>b</userinput></term>
+ <listitem>
+ <para>Större än-operator, returnerar <constant>true</constant> om <varname>a</varname> är större
än <varname>b</varname>, returnerar annars <constant>false</constant>. Dessa kan kombineras som i
<userinput>a > b > c</userinput> (kan också kombineras med större än eller lika med-operatorn).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a<=>b</userinput></term>
+ <listitem>
+ <para>Jämförelseoperator. Om <varname>a</varname> är lika med <varname>b</varname> returnerar den
0, om <varname>a</varname> är mindre än <varname>b</varname> returnerar den -1 och om <varname>a</varname> är
större än <varname>b</varname> returnerar den 1.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a and b</userinput></term>
+ <listitem>
+ <para>Logiskt och. Returnerar true om både <varname>a</varname> och <varname>b</varname> är true,
returnerar annars false. Om tal gives behandlas nollskilda tal som true.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a or b</userinput></term>
+ <listitem>
+ <para>Logiskt eller. Returnerar true om antingen <varname>a</varname> eller <varname>b</varname>
är true, returnerar annars false. Om tal gives behandlas nollskilda tal som true.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a xor b</userinput></term>
+ <listitem>
+ <para>Logiskt uteslutande eller. Returnerar true om exakt en av <varname>a</varname> eller
<varname>b</varname> är true, returnerar annars false. Om tal gives behandlas nollskilda tal som true.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>not a</userinput></term>
+ <listitem>
+ <para>Logiskt inte. Returnerar den logiska negationen till <varname>a</varname></para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>-a</userinput></term>
+ <listitem>
+ <para>Negationsoperator. Returnerar negativet av ett tal eller en matris (arbetar elementvis på
en matris).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>&a</userinput></term>
+ <listitem>
+ <para>Variabelreferens (för att skicka en referens till en variabel). Se <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Variabeldereferering (för att komma åt en refererad variabel). Se <xref
linkend="genius-gel-references"/>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a'</userinput></term>
+ <listitem>
+ <para>Konjugattransponatet för matris. Det vill säga rader och kolumner byter plats och vi tar
komplexkonjugatet av alla poster. Det vill säga om i,j-elementet av <varname>a</varname> är x+iy så är
j,i-elementet av <userinput>a'</userinput> då x-iy.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a.'</userinput></term>
+ <listitem>
+ <para>Matristransponat, konjugerar inte posterna. Det vill säga i,j-elementet av
<varname>a</varname> blir j,i-elementet av <userinput>a.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,c)</userinput></term>
+ <listitem>
+ <para>Hämta element för en matris i rad <varname>b</varname> och kolumn <varname>c</varname>. Om
<varname>b</varname>, <varname>c</varname> är vektorer så ger detta de motsvarande raderna, kolumnerna eller
delmatriserna.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,)</userinput></term>
+ <listitem>
+ <para>Hämta rad av en matris (eller flera rader om <varname>b</varname> är en vektor).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b,:)</userinput></term>
+ <listitem>
+ <para>Samma som ovan.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(,c)</userinput></term>
+ <listitem>
+ <para>Hämta kolumn av en matris (eller flera kolumner om <varname>b</varname> är en
vektor).</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(:,c)</userinput></term>
+ <listitem>
+ <para>Samma som ovan.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a@(b)</userinput></term>
+ <listitem>
+ <para>Hämta ett element från en matris behandlad som en vektor. Detta kommer traversera matrisen
radvis.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b</userinput></term>
+ <listitem>
+ <para>Bygg en vektor från <varname>a</varname> till <varname>b</varname> (eller ange en rad- och
kolumnregion för <literal>@</literal>-operatorn). Till exempel kan vi för att få raderna 2 till 4 av matrisen
<varname>A</varname> göra <programlisting>A@(2:4,)
+ </programlisting> eftersom <userinput>2:4</userinput> kommer returnera en vektor
<userinput>[2,3,4]</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>a:b:c</userinput></term>
+ <listitem>
+ <para>Bygg en vektor från <varname>a</varname> till <varname>c</varname> med <varname>b</varname>
som steglängd. Det vill säga exempelvis <programlisting>genius> 1:2:9
+=
+`[1, 3, 5, 7, 9]
+</programlisting></para>
+ <para>Då de inblandade talen är flyttal, till exempel <userinput>1.0:0.4:3.0</userinput>, är
utmatningen vad som förväntas även om att lägga till 0.4 till 1.0 fem gånger faktiskt är något mindre än 3.0
på grund av sättet som flyttal lagras i bas 2 (det finns inget 0.4, det faktiska lagrade talet är bara något
större). Sättet detta hanteras är detsamma som i for-, sum-, och prod-slingorna. Om slutet är inom
<userinput>2^-20</userinput> gånger stegstorleken till ändpunkten, används ändpunkten och vi antar att det
fanns avrundningsfel. Detta är inte perfekt, men hanterar de flesta fallen. Denna kontroll görs bara från
version 1.0.18 och framåt, så exekvering av din kod kan skilja sig åt i äldre versioner. Använd faktiska
rationella tal om du vill undvika att hantera detta problem, möjligen tillsammans med
<function>float</function> om du vill få flyttal i slutet. Till exempel gör <userinput>1:2/5:3</userinput>
rätt sak och <userinput>float
(1:2/5:3)</userinput> ger dig till och med flyttal och är även något mer exakt än
<userinput>1.0:0.4:3.0</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>(a)i</userinput></term>
+ <listitem>
+ <para>Gör <varname>a</varname> till ett imaginärt tal (multiplicera <varname>a</varname> med det
imaginära). Observera att <varname>i</varname> vanligen skrivs <userinput>1i</userinput>, så det ovanstående
är detsamma som <programlisting>(a)*1i
+ </programlisting></para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><userinput>`a</userinput></term>
+ <listitem>
+ <para>Citera en identifierare så att den inte evalueras. Eller citera en matris så att den inte
expanderas.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>a swapwith b</userinput></term>
+ <listitem>
+ <para>Byt värde på <varname>a</varname> med värdet av <varname>b</varname>. Opererar för
närvarande inte på intervall av matriselement. Det returnerar <constant>null</constant>. Tillgängligt från
version 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a</userinput></term>
+ <listitem>
+ <para>Inkrementera variabeln <varname>a</varname> med 1. Om <varname>a</varname> är en matris
inkrementeras varje element. Detta är ekvivalent med <userinput>a=a+1</userinput>, men är något snabbare. Det
returnerar <constant>null</constant>. Tillgängligt från version 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><userinput>increment a by b</userinput></term>
+ <listitem>
+ <para>Inkrementera variabeln <varname>a</varname> med <varname>b</varname>. Om
<varname>a</varname> är en matris inkrementeras varje element. Detta är ekvivalent med
<userinput>a=a+b</userinput>, men är något snabbare. Det returnerar <constant>null</constant>. Tillgängligt
från version 1.0.13.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+
+<note>
+<para>@()-operatorn gör :-operatorn mest användbar. Med denna kan du ange regioner i en matris. Därmed är
a@(2:4,6) raderna 2,3,4 för kolumn 6. Eller så ger a@(,1:2) dig de två första kolumnerna i en matris. Du kan
också tilldela till @()-operatorn, så länge som högervärdet är en matris som matchar regionens storlek, eller
om det är någon annan sorts värde.</para>
+</note>
+
+<note>
+<para>Jämförelseoperatorerna (förutom <=>-operatorn, vilken beter sig normalt) är inte strikt binära
operatorer, de kan i själva verket grupperas på det vanliga matematiska sättet, t.ex. så är
(1<x<=y<5) ett giltigt booleskt uttryck och betyder precis vad det borde, det vill säga (1<x och
x≤y och y<5)</para>
+</note>
+
+<note>
+<para>Unärt minus opererar annorlunda beroende på var det förekommer. Om det förekommer före ett tal binder
det väldigt hårt, om det förekommer före ett uttryck binder det mindre hårt än potens- och
fakultet-operatorerna. Så till exempel är <userinput>-1^k</userinput> faktiskt <userinput>(-1)^k</userinput>,
men <userinput>-foo(1)^k</userinput> är verkligen <userinput>-(foo(1)^k)</userinput>. Så var aktsam över hur
du använder det, och om du är osäker, lägg till parenteser.</para>
+</note>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL Programming ========================== -->
+ <chapter id="genius-gel-programming">
+ <title>Programmering med GEL</title>
+
+ <sect1 id="genius-gel-conditionals">
+ <title>Villkor</title>
+ <para>Syntax: <programlisting><![CDATA[if <expression1> then <expression2> [else <expression3>]
+]]></programlisting> Om <literal>else</literal> utesluts och <literal>uttryck1</literal> ger
<constant>false</constant> eller 0 kommer <literal>NULL</literal> att returneras.</para>
+ <para>Exempel: <programlisting><![CDATA[if(a==5)then(a=a-1)
+if b<a then b=a
+if c>0 then c=c-1 else c=0
+a = ( if b>0 then b else 1 )
+]]></programlisting> Observera att <literal>=</literal> kommer att översättas till <literal>==</literal> om
det används inuti uttrycket för <literal>if</literal>, så <programlisting>if a=5 then a=a-1
+</programlisting> kommer tolkas som: <programlisting>if a==5 then a:=a-1
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loops">
+ <title>Slingor</title>
+
+ <sect2 id="genius-gel-loops-while">
+ <title>While-slingor</title>
+ <para>Syntax: <programlisting><![CDATA[while <expression1> do <expression2>
+until <expression1> do <expression2>
+do <expression2> while <expression1>
+do <expression2> until <expression1>]]></programlisting> Dessa är liknande som i andra språk. Eftersom det i
GEL helt enkelt är ett uttryck som måste ha ett returvärde kommer dessa konstruktioner dock att helt enkelt
returnera resultatet av den sista iterationen eller <literal>NULL</literal> om ingen iteration utfördes. I
det booleska uttrycket översätts <literal>=</literal> till <literal>==</literal> precis som för
<literal>if</literal>-satsen.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-for">
+ <title>For-slingor</title>
+ <para>Syntax: <programlisting><![CDATA[for <identifier> = <from> to <to> do <body>
+for <identifier> = <from> to <to> by <increment> do <body>]]></programlisting> Slinga med identifierare
inställd till alla värden från <literal><from></literal> till <literal><to></literal>, valfritt
med ett annat inkrement än 1. Dessa är snabbare, trevligare och mer kompakta än de vanliga slingorna som
ovan, men mindre flexibla. Identifieraren måste vara en identifierare och kan inte vara en dereferering.
Värdet på identifieraren är identifierarens sista värde, eller <literal><from></literal> om kroppen
aldrig evaluerades. Variabeln är garanterad att vara initierad efter en slinga, så du kan använda den säkert.
Vidare måste <literal><from></literal>, <literal><to></literal> och
<literal><increment></literal> vara icke-komplexa tal. <literal><to></literal> är inte garanterad
att träffas, men kommer aldrig att passeras, till exempel skriver följande ut udda tal från 1 till 19:
<programlisting>for i = 1 to 20 by 2 d
o print(i)
+</programlisting></para>
+ <para>Då ett av värdena är ett flyttal görs den sista kontrollen till inom 2^-20 av stegstorleken.
Det vill säga även om vi passerar med 2^-20 gånger ”by”-värdet ovan kommer vi fortfarande att exekvera den
sista iterationen. På detta sätt gör <programlisting>for x = 0 to 1 by 0.1 do print(x)
+</programlisting> vad som förväntas även om addition av 0.1 tio gånger blir något mer än 1.0 på grund av hur
flyttal lagras i bas 2 (det finns inget 0.1, det faktiska lagrade talet är något större). Detta är inte
perfekt, men hanterar de flesta fallen. Använd faktiska rationella tal om du vill undvika att hantera detta
problem, till exempel: <programlisting>for x = 0 to 1 by 1/10 do print(x)
+</programlisting> Denna kontroll görs bara från version 1.0.16 och framåt, så exekvering av din kod kan
skilja sig åt i äldre versioner.</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-foreach">
+ <title>Foreach-slingor</title>
+ <para>Syntax: <programlisting><![CDATA[for <identifier> in <matrix> do <body>]]></programlisting>
För varje element i matrisen, från rad till rad från vänster till höger exekverar vi kroppen med
identifieraren inställd till aktuellt element. För att skriva ut siffrorna 1,2,3 och 4 i denna ordning kan du
göra: <programlisting>for n in [1,2:3,4] do print(n)
+</programlisting> Om du vill gå genom raderna och kolumnerna i en matris kan du använda funktionerna RowsOf
och ColumnsOf som returnerar en vektor av raderna eller kolumnerna i matrisen. Så <programlisting>for n in
RowsOf ([1,2:3,4]) do print(n)
+</programlisting> kommer skriva ut [1,2] och sedan [3,4].</para>
+ </sect2>
+
+ <sect2 id="genius-gel-loops-break-continue">
+ <title>Break och Continue</title>
+ <para>Du kan också använda kommandona <literal>break</literal> och <literal>continue</literal> i
slingor. Fortsättningskommandot <literal>continue</literal> kommer att starta om den aktuella slingan i dess
nästa iteration, medan kommandot <literal>break</literal> går ur den aktuella slingan.
<programlisting><![CDATA[while(<expression1>) do (
+ if(<expression2>) break
+ else if(<expression3>) continue;
+ <expression4>
+)
+]]></programlisting></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="genius-gel-sums-products">
+ <title>Summor och produkter</title>
+ <para>Syntax: <programlisting><![CDATA[sum <identifier> = <from> to <to> do <body>
+sum <identifier> = <from> to <to> by <increment> do <body>
+sum <identifier> in <matrix> do <body>
+prod <identifier> = <from> to <to> do <body>
+prod <identifier> = <from> to <to> by <increment> do <body>
+prod <identifier> in <matrix> do <body>]]></programlisting> Om du ersätter <literal>for</literal> med
<literal>sum</literal> eller <literal>prod</literal> kommer du att få en summa eller en produkt istället för
en <literal>for</literal>-slinga. Istället för att returnera det sista värdet kommer dessa att returnera
summan respektive produkten av värdena.</para>
+ <para>Om ingen kropp exekveras (till exempel <userinput>sum i=1 to 0 do ...</userinput>) så kommer
<literal>sum</literal> att returnera 0 och <literal>prod</literal> att returnera 1 som är
standardkonventionen.</para>
+ <para>För flyttal görs samma skydd mot avrundningsfel som i for-slingan. Se <xref
linkend="genius-gel-loops-for"/>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-comparison-operators">
+ <title>Jämförelseoperatorer</title>
+ <para>Följande standardoperatorer för jämförelse stöds i GEL och har de uppenbara betydelserna:
<literal>==</literal>, <literal>>=</literal>, <literal><=</literal>, <literal>!=</literal>,
<literal><></literal>, <literal><</literal>, <literal>></literal>. De returnerar
<constant>true</constant> eller <constant>false</constant>. Operatorerna <literal>!=</literal> och
<literal><></literal> är samma sak och betyder ”är inte lika med”. GEL stöder även operatorn
<literal><=></literal> som returnerar -1 om vänstersidan är mindre, 0 om båda sidor är lika, 1 om
vänstersidan är större.</para>
+
+ <para>Normalt översätts <literal>=</literal> till <literal>==</literal> om det förekommer någonstans
där GEL förväntar sig ett villkor som i if-villkoret. Till exempel är <programlisting>if a=b then c
+if a==b then c
+</programlisting> samma sak i GEL. Du bör dock använda <literal>==</literal> eller <literal>:=</literal> då
du vill jämföra respektive tilldela om du vill att din kod ska vara lätt att läsa och för att undvika
misstag.</para>
+
+ <para>Alla jämförelseoperatorerna (förutom <literal><=></literal>-operatorn, vilken beter sig
normalt) är inte strikt binära operatorer, de kan i själva verket grupperas på det vanliga matematiska
sättet, t.ex. så är (<literal>1<x<=y<5</literal>) ett giltigt booleskt uttryck och betyder precis
vad det borde, det vill säga (1<x och x≤y och y<5)</para>
+ <para>Använd orden <literal>not</literal>, <literal>and</literal>, <literal>or</literal>,
<literal>xor</literal> för att bygga upp logiska uttryck. Operatorerna <literal>or</literal> och
<literal>and</literal> är speciella eftersom de evaluerar sina uttryck ett efter ett, så det vanliga tricket
för villkorlig evaluering fungerar även här. Till exempel kommer <literal>1 or a=1</literal> inte att ställa
in <literal>a=1</literal> eftersom det första argumentet var true (sant).</para>
+ </sect1>
+
+ <sect1 id="genius-gel-variables-global">
+ <title>Globala variabler och räckvidd för variabler</title>
+ <para>GEL är ett <ulink url="https://en.wikipedia.org/wiki/Scope_%28programming%29"> språk med
dynamisk räckvidd</ulink>. Vi kommer att förklara vad detta betyder nedan. Det betyder att normala variabler
och funktioner har dynamisk räckvidd. Undantaget är <link
linkend="genius-gel-parameters">parametervariabler</link> som alltid är globala.</para>
+ <para>Som de flesta programmeringsspråk har GEL olika typer av variabler. Normalt då en variabel är
definierad i en funktion är den synlig från den funktionen och från alla funktioner som anropas (alla högre
kontexter). Till exempel, anta att en funktion <function>f</function> definierar en variabel
<varname>a</varname> och sedan anropar funktionen <function>g</function>. Då kan funktion
<function>g</function> referera till <varname>a</varname>. Men då <function>f</function> returnerar, går
variabeln <varname>a</varname> utom räckvidd. Till exempel kommer den följande koden att skriva ut 5.
Funktionen <function>g</function> kan inte anropas på toppnivån (utanför <function>f</function> eftersom
<varname>a</varname> inte kommer vara definierad). <programlisting>function f() = (a:=5; g());
+function g() = print(a);
+f();
+</programlisting></para>
+ <para>Om du definierar en variabel inuti en funktion kommer den åsidosätta variabler definierade i
anropande funktioner. Som ett exempel modifierar vi koden ovan och skriver: <programlisting>function f() =
(a:=5; g());
+function g() = print(a);
+a:=10;
+f();
+</programlisting> Denna kod kommer fortfarande skriva ut 5. Men om du anropar <function>g</function> utanför
<function>f</function> kommer du få utskriften 10. Observera att ställa in <varname>a</varname> till 5 inuti
<function>f</function> ändrar inte värdet på <varname>a</varname> på toppnivån (globalt), så om du nu
kontrollerar värdet på <varname>a</varname> kommer det fortfarande vara 10.</para>
+ <para>Funktionsargument är exakt som variabler definierade i funktionen, förutom att de initieras med
värdet som skickats till funktionen. Förutom denna punkt behandlas de precis som alla andra variabler som
definieras i funktionen.</para>
+ <para>Funktioner behandlas precis som variabler. Därmed kan du definiera om funktioner lokalt.
Normalt (på toppnivån) kan du inte definiera om skyddade variabler och funktioner. Lokalt kan du dock göra
detta. Anta följande session: <screen><prompt>genius> </prompt><userinput>function f(x) =
sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function f(x) = sin(x)^2</userinput>
+= (`(x)=(sin(x)^2))
+<prompt>genius> </prompt><userinput>function g(x) = ((function sin(x)=x^10);f(x))</userinput>
+= (`(x)=((sin:=(`(x)=(x^10)));f(x)))
+<prompt>genius> </prompt><userinput>g(10)</userinput>
+= 1e20
+</screen></para>
+ <para>Funktioner och variabler definierade på toppnivån anses vara globala. De är synliga överallt.
Som vi sa kommer den följande funktionen <function>f</function> inte ändra värdet på <varname>a</varname>
till 5. <programlisting>a=6;
+function f() = (a:=5);
+f();
+</programlisting> Ibland är det dock nödvändigt att ställa in en global variabel inifrån en funktion. Då
detta beteende behövs, använd funktionen <link linkend="gel-function-set"><function>set</function></link>.
Att skicka en sträng eller en citerad identifierare till denna funktion ställer in variabeln globalt (på
toppnivån). För att till exempel ställa in <varname>a</varname> till värdet 3 kan du anropa:
<programlisting>set(`a,3)
+</programlisting> eller: <programlisting>set("a",3)
+</programlisting></para>
+ <para>Funktionen <function>set</function> ställer alltid in toppnivåglobalen. Det finns inget sätt
att ställa in en lokal variabel i någon funktion från en subrutin. Om detta krävs måste du använda
referensöverföring.</para>
+ <para>Se även funktionerna <link
linkend="gel-function-SetElement"><function>SetElement</function></link> och <link
linkend="gel-function-SetVElement"><function>SetVElement</function></link>.</para>
+ <para>För att upprepa med mer tekniskt språk: Genius arbetar med olika numrerade kontexter. Toppnivån
är kontext 0 (noll). Närhelst vi går in i en funktion höjs kontexten, och då funktionen returnerar sänks
kontexten. En funktion eller en variabel är alltid synlig från alla kontexter med högre siffra. Då en
variabel definierades i ett lägre kontextnummer, så har inställandet av denna variabel effekten att det
skapar en ny lokal variabel i det aktuella kontextnumret och denna variabel kommer nu vara synlig från alla
högre kontextnummer.</para>
+ <para>Det finns också verkligt lokala variabler som inte ses från någon annan plats än den aktuella
kontexten. Vid returnering av funktioner efter värde kan det referera till variabler som ej är synliga från
högre kontexter och detta kan vara ett problem. Se avsnitten <link
linkend="genius-gel-true-local-variables">Verkligt lokala variabler</link> och <link
linkend="genius-gel-returning-functions">Returnera funktioner</link>.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-parameters">
+ <title>Parametervariabler</title>
+ <para>Som vi sa tidigare finns det specialvariabler som kallas parametrar som finns i alla
räckvidder. För att deklarera en parameter som kallas <varname>foo</varname> med ursprungligt värde 1 skriver
vi <programlisting><![CDATA[parameter foo = 1
+]]></programlisting> Från denna punkt är <varname>foo</varname> en strikt global variabel. Att ställa in
<varname>foo</varname> i en funktion kommer ändra variabeln i alla kontexter, det vill säga att funktioner
inte har en privat kopia av parametrar.</para>
+ <para>Då du avdefinierar en parameter med funktionen <link
linkend="gel-function-undefine"><function>undefine</function></link> slutar den vara en parameter.</para>
+ <para>Några parametrar är inbyggda och ändrar beteendet hos genius.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning">
+ <title>Returnera</title>
+ <para>Normalt består en funktion av ett eller flera uttryck som skiljs åt av ett semikolon, och
värdet för det sista uttrycket returneras. Detta är bra för enkla funktioner, men ibland vill du inte att en
funktion ska returnera det sista som beräknades. Du kan exempelvis vilja returnera från mitten av en
funktion. I detta fall kan du använda nyckelordet <literal>return</literal>. <literal>return</literal> tar
ett argument, vilket är värdet som ska returneras.</para>
+ <para>Exempel: <programlisting><![CDATA[function f(x) = (
+ y=1;
+ while true do (
+ if x>50 then return y;
+ y=y+1;
+ x=x+1
+ )
+)
+]]></programlisting></para>
+ </sect1>
+
+
+ <sect1 id="genius-gel-references">
+ <title>Referenser</title>
+ <para>Det kan vara nödvändigt för vissa funktioner att returnera mer än ett värde. Detta kan
åstadkommas genom att returnera en vektor av värden, men många gånger är det bekvämt att skicka en referens
till en variabel. Du skickar en referens till en variabel till en funktion, och funktionen kommer att ställa
in variabeln åt dig med en dereferering. Du måste inte använda referenser bara för detta syfte, men det är
deras huvudsakliga användning.</para>
+ <para>Då du använder funktioner som returnerar värden genom referenser i argumentlistan, skicka bara
variabelnamnet med ett et-tecken. Till exempel kommer följande kod att beräkna ett egenvärde för en matris
<varname>A</varname> med initial egenvektorgissning <varname>x</varname>, och lagra den beräknade egenvektorn
i variabeln <varname>v</varname>: <programlisting><![CDATA[RayleighQuotientIteration (A,x,0.001,100,&v)
+]]></programlisting></para>
+ <para>Detaljerna kring hur referenser fungerar och syntaxen liknar språket C. Operatorn
<literal>&</literal> refererar en variabel och <literal>*</literal> derefererar en variabel. Båda kan
endast tillämpas till en identifierare, så <literal>**a</literal> är inte ett giltigt uttryck i GEL.</para>
+ <para>Referenser förklaras bäst med ett exempel: <programlisting><![CDATA[a=1;
+b=&a;
+*b=2;
+]]></programlisting> nu innehåller <varname>a</varname> 2. Du kan också referera till funktioner:
<programlisting><![CDATA[function f(x) = x+1;
+t=&f;
+*t(3)
+]]></programlisting> ger oss 4.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-lvalues">
+ <title>Vvärden</title>
+ <para>Ett vvärde är vänstersidan av en tilldelning. Med andra ord är ett vvärde vad du tilldelar något
till. Giltiga vvärden är: <variablelist>
+ <varlistentry>
+ <term><userinput>a</userinput></term>
+ <listitem>
+ <para>Identifierare. Här skulle vi ställa in variabeln med namn <varname>a</varname>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>*a</userinput></term>
+ <listitem>
+ <para>Dereferering av en identifierare. Detta kommer ställa in den variabel som <varname>a</varname>
pekar på.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><userinput>a@(<region>)</userinput></term>
+ <listitem>
+ <para>En matrisregion. Här specificeras regionen som vanligt med den vanliga @()-operatorn, och kan
varfa en ensam post, eller en hel region av matrisen.</para>
+ </listitem>
+ </varlistentry>
+</variablelist></para>
+ <para>Exempel: <programlisting>a:=4
+*tmp := 89
+a@(1,1) := 5
+a@(4:8,3) := [1,2,3,4,5]'
+</programlisting> Observera att både <literal>:=</literal> och <literal>=</literal> är direkt utbytbara med
varandra förutom om tilldelningen sker i ett villkor. Det är därför alltid säkrare att hel enkelt använda
<literal>:=</literal> då du menar tilldelning och <literal>==</literal> då du menar jämförelse.</para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="genius-gel-programming-advanced">
+ <title>Avancerad programmering med GEL</title>
+
+ <sect1 id="genius-gel-error-handling">
+ <title>Felhantering</title>
+ <para>Om du upptäcker ett fel i din funktion kan du avbryta den. För normala fel, som felaktiga typer
på argument kan du misslyckas att beräkna funktionen genom att lägga till satsen <literal>bailout</literal>.
Om något gick väldigt fel och du vill fullständigt döda den pågående beräkningen kan du använda
<literal>exception</literal>.</para>
+ <para>Om du till exempel vill kontrollera argument i din funktion kan du använda följande kod.
<programlisting>function f(M) = (
+ if not IsMatrix (M) then (
+ error ("M inte en matris!");
+ bailout
+ );
+ ...
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-toplevel-syntax">
+ <title>Toppnivåsyntax</title>
+ <para>Syntaxen skiljer sig något beroende på om du matar in satser på toppnivån gentemot då de används
inom parenteser eller i funktioner. På toppnivån uppför sig retur just som om du tryckte retur på
kommandoraden. Tänk därför på program som bara en följd av rader som matats in på kommandoraden. I synnerhet
behöver du inte ange avskiljaren i slutet på raden (om den förstås inte är del av flera satser inom
parenteser). Då en sats inte avslutas med en avskiljare på toppnivån skrivs resultatet ut efter
körning.</para>
+ <para>Till exempel kommer <programlisting>function f(x)=x^2
+f(3)
+</programlisting> att först skriva ut resultatet av att ställa in en funktion (en representation av
funktionen, i det här fallet <computeroutput>(`(x)=(x^2))</computeroutput>) och sedan det förväntade 9. För
att undvika detta, ange en avskiljare efter funktionsdefinitionen. <programlisting>function f(x)=x^2;
+f(3)
+</programlisting> Om du behöver stoppa en avskiljare i din funktion måste den omges av parenteser. Till
exempel: <programlisting>function f(x)=(
+ y=1;
+ for j=1 to x do
+ y = y+j;
+ y^2
+);
+</programlisting></para>
+ <para>Följande kod producerar ett fel då den matas in i toppnivån för ett program, medan den kommer
fungera fint i en funktion. <programlisting>if Ngt() then
+ ExekveraNgt()
+else
+ ExekveraNgtAnnat()
+</programlisting></para>
+ <para>Problemet är att efter <application>Genius matematikverktyg</application> ser slutet på raden
efter den andra raden kommer det att avgöra att vi har hela uttrycket och exekvera det. Efter exekveringen är
klar kommer <application>Genius matematikverktyg</application> att gå till nästa rad och se
<literal>else</literal>, och det kommer att producera ett tolkfel. För att fixa detta, använd parenteser.
<application>Genius matematikverktyg</application> kommer inte låta sig nöja förrän det har sett att alla
parenteser stängts. <programlisting>if Ngt() then (
+ ExekveraNgt()
+) else (
+ ExekveraNgtAnnat()
+)
+</programlisting></para>
+ </sect1>
+
+ <sect1 id="genius-gel-returning-functions">
+ <title>Returnera funktioner</title>
+ <para>Det är möjligt att returnera funktioner som värde. På detta sätt kan du bygga funktioner som
konstruerar specialanpassade funktioner enligt några parametrar. Det svåra är vilka variabler som funktionen
ser. Sättet det fungerar på i GEL är att när en funktion returnerar en annan funktion, blir alla
identifierare refererade i funktionskroppen som gick utanför räckvidd föregångna med en privat ordbok av den
returnerade funktionen. Funktion kommer därmed se alla variabler som var inom räckvidd då den definierades.
Till exempel definierar vi en funktion som returnerar en funktion som lägger till 5 till sitt argument.
<programlisting>function f() = (
+ k = 5;
+ `(x) = (x+k)
+)
+</programlisting> Observera att funktionen lägger till <varname>k</varname> till <varname>x</varname>. Du
kan använda detta som följer. <programlisting>g = f();
+g(5)
+</programlisting> och <userinput>g(5)</userinput> skulle returnera 10.</para>
+ <para>En sak att notera är att värdet på <varname>k</varname> som används är det som används då
<function>f</function> returnerar. Till exempel: <programlisting>function f() = (
+ k := 5;
+ function r(x) = (x+k);
+ k := 10;
+ r
+)
+</programlisting> kommer returnera en funktion som lägger till 10 till sitt argument snarare än 5. Detta är
eftersom den extra ordboken skapas bara då kontexten i vilken funktionen definierades tar slut, vilket är när
funktionen <function>f</function> returnerar. Detta är konsekvent med hur du skulle förvänta dig att
funktionen <function>r</function> fungerar inuti funktionen <function>f</function> enligt reglerna för
variabelräckvidd i GEL. Endast de variabler som är i kontexten som just tog slut och inte längre existerar
läggs till i den extra ordboken. Variabler som används i funktionen som är i fortfarande giltiga kontexter
kommer fungera som vanligt, med aktuellt värde på variabeln. Den enda skillnaden är med globala variabler och
funktioner. Alla identifierare som refererade globala variabler under tiden för funktionsdefinitionen läggs
inte till i den privata ordboken. Detta är för att undvika mycket onödigt arbete då funktioner returneras och
kommer sällan vara ett problem. Anta till exempel att du tar bort "k=5" från funktionen
<function>f</function>, och att du på toppnivån definierar <varname>k</varname> till att vara exempelvis 5.
När du då kör <function>f</function> kommer funktionen <function>r</function> inte lägga <varname>k</varname>
i den privata ordboken eftersom den var global (toppnivå) då <function>r</function> definierades.</para>
+ <para>Ibland är det bättre att ha mer kontroll över hur variabler kopieras till den privata ordboken.
Sedan version 1.0.7 kan du ange vilka variabler som kopieras till den privata ordboken genom att lägga till
extra hakparenteser efter argumenten med listan över variabler som ska kopieras separerade av kommatecken. Om
du gör detta kopieras variabler till den privata ordboken vid funktionsdefinitionen, och den privata ordboken
rörs inte efteråt. Till exempel kommer <programlisting>function f() = (
+ k := 5;
+ function r(x) [k] = (x+k);
+ k := 10;
+ r
+)
+</programlisting> returnera en funktion som när den anropas kommer lägga till 5 till sitt argument. Den
lokala kopian av <varname>k</varname> skapades när funktionen definierades.</para>
+ <para>Då du vill att funktionen inte ska ha någon privat ordbok sätter du tomma hakparenteser efter
argumentlistan. Då kommer ingen privat ordbok att skapas överhuvudtaget. Att göra detta är bra för att öka
effektiviteten då en privat ordbok inte behövs eller när du inte vill att funktionen ska slå upp alla
variabler då den ser dem då de anropas. Anta till exempel att du vill att funktionen som returneras från
<function>f</function> ska se värdet av <varname>k</varname> från toppnivån även om det finns en lokal
variabel med samma namn under definitionen. Så koden <programlisting>function f() = (
+ k := 5;
+ function r(x) [] = (x+k);
+ r
+);
+k := 10;
+g = f();
+g(10)
+</programlisting> kommer att returnera 20 och inte 15, vilket skulle hända om <varname>k</varname> med ett
värde av 5 lades till i den privata ordboken.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-true-local-variables">
+ <title>Verkligt lokala variabler</title>
+ <para>Då funktioner skickas till andra funktioner kan den vanliga variabelräckvidden vara oönskad.
Till exempel: <programlisting>k := 10;
+function r(x) = (x+k);
+function f(g,x) = (
+ k := 5;
+ g(x)
+);
+f(r,1)
+</programlisting> du vill antagligen att funktionen <function>r</function> då den skickas som
<function>g</function> till <function>f</function> ska se <varname>k</varname> som 10 snarare än 5, så att
koden returnerar 11 och inte 6. Som det är skrivet kommer dock funktionen då den exekveras se det
<varname>k</varname> som är lika med 5. Det finns två sätt att lösa detta. En skulle vara att låta
<function>r</function> få <varname>k</varname> i en privat ordbok genom hakparentesnotationen i avsnittet
<link linkend="genius-gel-returning-functions">Returnera funktioner</link>.</para>
+ <para>Men det finns en annan lösning. Sedan version 1.0.7 finns det verkligt lokala variabler. Dessa
är variabler som är synliga endast från aktuell kontext och inte från några anropade funktioner. Vi kan
definiera <varname>k</varname> som en lokal variabel i funktionen <function>f</function>. För att göra detta
lägg till ett <command>local</command>-uttryck som det första uttrycket i funktionen (det måste alltid vara
det första uttrycket i funktionen). Du kan också göra argument till lokala variabler. Det vill säga,
<programlisting>function f(g,x) = (
+ local g,x,k;
+ k := 5;
+ g(x)
+);
+</programlisting> Då kommer koden fungera som förväntat och skriver ut 11. Observera att
<command>local</command>-uttrycket initierar alla de refererade variablerna (förutom funktionsargument) till
ett <constant>null</constant>.</para>
+ <para>Om alla variabler ska skapas som lokala kan du helt enkelt skicka en asterisk istället för en
variabellista. I detta fall kommer variablerna förstås inte initieras förrän de faktiskt ställs in. Så
följande definition av <function>f</function> kommer också att fungera: <programlisting>function f(g,x) = (
+ local *;
+ k := 5;
+ g(x)
+);
+</programlisting></para>
+ <para>Det är god sed att alla funktioner som tar andra funktioner som argument använder lokala
variabler. På detta sätt ser den skickade funktionen inte implementationsdetaljer och blir förvirrad.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-startup-procedure">
+ <title>Uppstartsprocedur för GEL</title>
+ <para>Först tittar programmet efter den installerade biblioteksfilen (den kompilerade versionen
<filename>lib.cgel</filename>) i den installerade katalogen, sedan tittar det i den aktuella katalogen, och
sedan försöker det läsa in en okompilerad fil som heter <filename>~/.geniusinit</filename>.</para>
+ <para>Om du någonsin ändrar biblioteket i dess installerade plats måste du först kompilera det med
<command>genius --compile loader.gel > lib.cgel</command></para>
+ </sect1>
+
+ <sect1 id="genius-gel-loading-programs">
+ <title>Läsa in program</title>
+ <para>Ibland har du ett större program som du skrev till en fil och vill läsa in den filen i
<application>Genius matematikverktyg</application>. I dessa situationer har du två val. Du kan behålla
funktionerna du vill använda mest inuti filen <filename>~/.geniusinit</filename>. Eller om du vill läsa in en
fil mitt i en session (eller inifrån en annan fil) kan du skriva <command>load <lista med
filnamn></command> på prompten. Detta måste göras på toppnivån och inte inuti en funktion eller vad det må
vara, och det kan inte vara en del av ett uttryck. Det har också ett något annorlunda syntax från resten av
genius, mer liknande ett skal. Du kan mata in filen citerad. Om du använder citattecknen '' kommer du få
precis strängen du skrev in, om du använder citattecknen "" kommer specialtecken att få kontrollsekvenser
borttagna som för strängar. Exempel: <programlisting>load program1.gel program2.gel
+load "Konstigt filnamn med MELLANSLAG.gel"
+</programlisting> Det finns också de inbyggda kommandona <command>cd</command>, <command>pwd</command> och
<command>ls</command>. <command>cd</command> kommer ta ett argument, <command>ls</command> kommer ta ett
argument som är som ett mönster i UNIX-skalet (d.v.s. du kan använda jokertecken). <command>pwd</command> tar
inga argument. Till exempel: <programlisting>cd katalog_med_gelprogram
+ls *.gel
+</programlisting></para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Matrices ================================= -->
+ <chapter id="genius-gel-matrices">
+ <title>Matriser i GEL</title>
+
+ <para>Genius har stöd för vektorer och matriser och innehåller ett stort bibliotek med funktioner för
matrismanipulation och linjär algebra.</para>
+
+ <sect1 id="genius-gel-matrix-support">
+ <title>Mata in matriser</title>
+ <para>För att mata in matriser kan du använda en av följande två syntaxer. Du kan antingen mata in
matrisen på en rad, där värden skiljs åt av kommatecken och rader av semikolon. Annars kan du mata in varje
rad på en rad, där värden separeras av kommatecken. Du kan också kombinera de två metoderna. För att mata in
en 3x3-matris med talen 1-9 skulle du kunna göra <programlisting>[1,2,3;4,5,6;7,8,9]
+</programlisting> eller <programlisting>[1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+</programlisting> Använd dock inte både ”;” och direkt returnering på samma rad.</para>
+
+ <para>Du kan också använda matrisexpansionsfunktionen för att mata in matriser. Till exempel kan du
göra: <programlisting>a = [ 1, 2, 3
+ 4, 5, 6
+ 7, 8, 9]
+b = [ a, 10
+ 11, 12]
+</programlisting> och då få <programlisting>[1, 2, 3, 10
+ 4, 5, 6, 10
+ 7, 8, 9, 10
+ 11, 11, 11, 12]
+</programlisting> på liknande sätt kan du bygga matriser från vektorer och andra sådana saker.</para>
+
+ <para>En annan sak att tänka på är att ej angivna fläckar initieras till 0, så <programlisting>[1, 2, 3
+ 4, 5
+ 6]
+</programlisting> kommer att bli <programlisting>
+[1, 2, 3
+ 4, 5, 0
+ 6, 0, 0]
+</programlisting></para>
+
+ <para>Då matriser evalueras så evalueras och traverseras de radvis. Detta är precis som
<literal>M@(j)</literal>-operatorn som traverserar matrisen radvis.</para>
+
+ <note>
+ <para>Var försiktig med returnering av uttryck inuti <literal>[ ]</literal>-parenteserna, eftersom
det har en något annorlunda betydelse där. Du kommer att starta en ny rad.</para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-transpose">
+ <title>Konjugattransponat och transponatoperator</title>
+ <para>Du kan konjugattransponera en matris med <literal>'</literal>-operatorn. Det vill säga posten i
kolumn <varname>i</varname> och rad <varname>j</varname> kommer bli komplexkonjugatet till posten i kolumn
<varname>j</varname> och rad <varname>i</varname> av originalmatrisen. Till exempel:
<programlisting>[1,2,3]*[4,5,6]'
+</programlisting> Vi transponerar den andra vektorn för att göra matrismultiplikation möjlig. Om du bara
vill transponera en matris utan att konjugera den använder du <literal>.'</literal>-operatorn. Till exempel:
<programlisting>[1,2,3]*[4,5,6i].'
+</programlisting></para>
+ <para>Observera att normalt transponat, det vill säga <literal>.'</literal>-operatorn är mycket
snabbare och kommer inte skapa en ny kopia av matrisen i minnet. Konjugattransponatet skapar tyvärr en ny
kopia. Det rekommenderas att alltid använda <literal>.'</literal>-operatorn vid arbete med reella matriser
och vektorer.</para>
+ </sect1>
+
+ <sect1 id="genius-gel-matrix-linalg">
+ <title>Linjär algebra</title>
+ <para>Genius implementerar många användbara rutiner för linjär algebra och matrismanipulation. Se
avsnitten för <link linkend="genius-gel-function-list-linear-algebra">Linjär algebra</link> och <link
linkend="genius-gel-function-list-matrix">Matrismanipulering</link> i funktionslistan för GEL.</para>
+ <para>Linjär algebra-rutinerna som är implementerade i GEL kommer för närvarande inte från något
vältestat numeriskt paket, och bör därmed inte användas för kritiska numeriska beräkningar. Å andra sidan
implementerar Genius många linjär algebra-operationer med bråk- och heltalskoefficienter på ett mycket bra
sätt. Dessa är medfött exakta och kommer faktiskt ge dig mycket bättre resultat än vanliga
dubbelprecisionsrutiner för linjär algebra.</para>
+ <para>Till exempel är det meningslöst att beräkna rang och nollrum för en flyttalsmatris eftersom för
alla praktiska ändamål måste vi anse att matrisen har små fel. Du kommer mycket möjligt att få ett annat
resultat än du förväntar dig. Problemet är att under en liten störning är varje matris av full rang och
inverterbar. Om matrisen består av rationella tal är dock rangen och nollrummet alltid exakt.</para>
+ <para>Allmänt då Genius beräknar basen av ett särskilt vektorrum (till exempel med <link
linkend="gel-function-NullSpace"><function>NullSpace</function></link>) kommer det ge basen som en matris, i
vilken kolumnerna är vektorerna för basen. Det vill säga att då Genius pratar om ett linjärt underrum menar
det en matris vars kolumnrum är det angivna linjära underrummet.</para>
+ <para>Det bör noteras att Genius kan komma ihåg vissa egenskaper hos en matris. Till exempel kommer
det att komma ihåg att en matris är i radreducerad form. Om många anrop görs till funktioner som internt
använder radreducerad form av matrisen kan vi helt enkelt först radreducera matrisen en gång. Upprepade anrop
till <link linkend="gel-function-rref"><function>rref</function></link> kommer att vara väldigt snabba.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Polynomials ============================== -->
+ <chapter id="genius-gel-polynomials">
+ <title>Polynom i GEL</title>
+
+ <para>För närvarande kan Genius hantera polynom i en variabel utskrivna som vektorer, och utföra några
grundläggande operationer med dessa. Det finns planer för att utöka detta stöd vidare.</para>
+
+ <sect1 id="genius-gel-polynomials-using">
+ <title>Använda polynom</title>
+ <para>För närvarande är polynom i en variabel bara horisontella vektorer med värden som noder.
Potensen av termen är positionen i vektorn, med den första positionen som 0. Så, <programlisting>[1,2,3]
+</programlisting> översätts till polynomet <programlisting>1 + 2*x + 3*x^2
+</programlisting></para>
+ <para>Du kan addera, subtrahera och multiplicera polynom med de motsvarande funktionerna <link
linkend="gel-function-AddPoly"><function>AddPoly</function></link>, <link
linkend="gel-function-SubtractPoly"><function>SubtractPoly</function></link> och <link
linkend="gel-function-MultiplyPoly"><function>MultiplyPoly</function></link>. Du kan skriva ut ett polynom
med funktionen <link linkend="gel-function-PolyToString"><function>PolyToString</function></link>. Till
exempel, <programlisting>PolyToString([1,2,3],"y")
+</programlisting> ger <programlisting>3*y^2 + 2*y + 1
+</programlisting> Du kan också få en funktionsrepresentation av polynomet så att du kan beräkna det. Detta
görs genom <link linkend="gel-function-PolyToFunction"><function>PolyToFunction</function></link>, som
returnerar en anonym funktion. <programlisting>f = PolyToFunction([0,1,1])
+f(2)
+</programlisting></para>
+ <para>Det är också möjligt att hitta rötter för polynom av grad 1 till 4 med funktionen <link
linkend="gel-function-PolynomialRoots"><function>PolynomialRoots</function></link>, som anropar lämplig
formelfunktion. Polynom av högre grad måste konverteras till funktioner och lösas numeriskt med en funktion
som <link linkend="gel-function-FindRootBisection"><function>FindRootBisection</function></link>, <link
linkend="gel-function-FindRootFalsePosition"><function>FindRootFalsePosition</function></link>, <link
linkend="gel-function-FindRootMullersMethod"><function>FindRootMullersMethod</function></link> eller <link
linkend="gel-function-FindRootSecant"><function>FindRootSecant</function></link>.</para>
+ <para>Se <xref linkend="genius-gel-function-list-polynomials"/> i funktionslistan för resten av
funktionerna som arbetar på polynom.</para>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= Set Theory ============================== -->
+ <chapter id="genius-gel-settheory">
+ <title>Mängdlära i GEL</title>
+
+ <para>Genius har viss grundläggande mängdteoretisk funktionalitet inbyggd. För närvarande är en mängd
bara en vektor (eller en matris). Varje distinkt objekt behandlas som ett eget element.</para>
+
+ <sect1 id="genius-gel-sets-using">
+ <title>Använda mängder</title>
+ <para>Precis som vektorer kan objekt i mängder inkludera tal, strängar, <constant>null</constant>,
matriser och vektorer. Det planeras att i framtiden ha en enkom typ för mängder, snarare än att använda
vektorer. Observera att flyttal skiljer sig åt från heltal även om de verkar vara lika. Det vill säga Genius
behandlar <constant>0</constant> och <constant>0.0</constant> som två olika element.
<constant>null</constant> behandlas som en tom mängd.</para>
+ <para>För att skapa en mängd från en vektor, använd funktionen <link
linkend="gel-function-MakeSet"><function>MakeSet</function></link> function. För närvarande kommer den bara
att returnera en ny vektor där varje element är unikt. <screen><prompt>genius>
</prompt><userinput>MakeSet([1,2,2,3])</userinput>
+= [1, 2, 3]
+</screen></para>
+
+ <para>På liknande sätt finns det funktionerna <link
linkend="gel-function-Union"><function>Union</function></link>, <link
linkend="gel-function-Intersection"><function>Intersection</function></link> och <link
linkend="gel-function-SetMinus"><function>SetMinus</function></link>, som är ganska självförklarande. Till
exempel: <screen><prompt>genius> </prompt><userinput>Union([1,2,3], [1,2,4])</userinput>
+= [1, 2, 4, 3]
+</screen> Observera att ingen ordning garanteras för returvärdena. Om du vill sortera vektorn bör du använda
funktionen <link linkend="gel-function-SortVector"><function>SortVector</function></link>.</para>
+
+ <para>För att testa medlemskap finns funktionerna <link
linkend="gel-function-IsIn"><function>IsIn</function></link> och <link
linkend="gel-function-IsSubset"><function>IsSubset</function></link> vilka returnerar ett booleskt värde.
Till exempel: <screen><prompt>genius> </prompt><userinput>IsIn (1, [0,1,2])</userinput>
+= true
+</screen> Inmatningen <userinput>IsIn(x,X)</userinput> är förstås ekvivalent med
<userinput>IsSubset([x],X)</userinput>. Observera att eftersom den tomma mängden är en delmängd av varje
mängd så är <userinput>IsSubset(null,X)</userinput> alltid true (sann).</para>
+
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL function list ======================== -->
+ <chapter id="genius-gel-function-list">
+ <title>Lista över GEL-funktioner</title>
+
+ <!--&gel-function-list;-->
+
+ <para>För att få hjälp om en specifik funktion från konsolen skriv: <programlisting>help Funktionsnamn
+</programlisting></para>
+
+ <sect1 id="genius-gel-function-list-commands">
+ <title>Kommandon</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-command-help"/>help</term>
+ <listitem>
+ <synopsis>help</synopsis>
+ <synopsis>help Funktionsnamn</synopsis>
+ <para>Skriv ut hjälp (eller hjälp om funktion/kommando).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-load"/>load</term>
+ <listitem>
+ <synopsis>load "fil.gel"</synopsis>
+ <para>Läs in en fil i tolken. Filen kommer att exekveras som om den skrevs in i
kommandoraden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-cd"/>cd</term>
+ <listitem>
+ <synopsis>cd /katalog/namn</synopsis>
+ <para>Ändra arbetskatalog till <filename>/katalog/namn</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-pwd"/>pwd</term>
+ <listitem>
+ <synopsis>pwd</synopsis>
+ <para>Skriv ut aktuell arbetskatalog.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-ls"/>ls</term>
+ <listitem>
+ <synopsis>ls</synopsis>
+ <para>Lista filer i aktuell katalog.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-command-plugin"/>plugin</term>
+ <listitem>
+ <synopsis>plugin insticksmodulnamn</synopsis>
+ <para>Läs in en insticksmodul. En insticksmodul med det namnet måste vara installerad på systemet
i rätt katalog.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-basic">
+ <title>Grundläggande</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AskButtons"/>AskButtons</term>
+ <listitem>
+ <synopsis>AskButtons (fråga)</synopsis>
+ <synopsis>AskButtons (fråga, knapp1, ...)</synopsis>
+ <para>Ställer en fråga och visar en lista med knappar för användaren (eller en meny med val i
textläge). Returnerar det 1-baserade indexet för knappen som tryckts ned. Det vill säga returnerar 1 om den
första knappen trycktes ned, 2 om den andra knappen trycktes ned och så vidare. Om användaren stänger
fönstret (Eller helt enkelt trycker Retur i textläge) så returneras <constant>null</constant>. Körningen av
programmet blockeras till användaren svarar.</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AskString"/>AskString</term>
+ <listitem>
+ <synopsis>AskString (fråga)</synopsis>
+ <synopsis>AskString (fråga, standard)</synopsis>
+ <para>Ställer en fråga och låter användaren mata in en sträng som det sedan returnerar. Om
användaren avbryter eller stänger fönstret returneras <constant>null</constant>. Körningen av programmet
blockeras till användaren svarar. Om <varname>standard</varname> anges är det förifyllt så att användaren
helt enkelt kan trycka retur (version 1.0.6 och framåt).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Compose"/>Compose</term>
+ <listitem>
+ <synopsis>Compose (f,g)</synopsis>
+ <para>Sätt samman två funktioner och returnera en funktion som är sammanslagningen av
<function>f</function> och <function>g</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComposePower"/>ComposePower</term>
+ <listitem>
+ <synopsis>ComposePower (f,n,x)</synopsis>
+ <para>Sätt samman en funktion med sig själv <varname>n</varname> gånger och kör den, med
<varname>x</varname> som argument. Returnerar <varname>x</varname> om <varname>n</varname> är 0. Exempel:
<screen><prompt>genius></prompt> <userinput>function f(x) = x^2 ;</userinput>
+<prompt>genius></prompt> <userinput>ComposePower (f,3,7)</userinput>
+= 5764801
+<prompt>genius></prompt> <userinput>f(f(f(7)))</userinput>
+= 5764801
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Evaluate"/>Evaluate</term>
+ <listitem>
+ <synopsis>Evaluate (str)</synopsis>
+ <para>Tolkar och evaluerar en sträng.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-GetCurrentModulo"/>GetCurrentModulo</term>
+ <listitem>
+ <synopsis>GetCurrentModulo</synopsis>
+ <para>Hämta aktuell modulo från kontexten utanför funktionen. Det vill säga, om utsidan av
funktionen exekverades i modulo (med <literal>mod</literal>) så returnerar detta vad detta modulo var.
Normalt exekveras kroppen av den anropade funktionen inte i modulär aritmetik, och denna inbyggda funktion
gör det möjligt att göra GEL-funktioner medvetna om modulär aritmetik.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Identity"/>Identity</term>
+ <listitem>
+ <synopsis>Identity (x)</synopsis>
+ <para>Identitetsfunktionen, returnerar sitt argument. Den är ekvivalent med <userinput>function
Identity(x)=x</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerFromBoolean"/>IntegerFromBoolean</term>
+ <listitem>
+ <synopsis>IntegerFromBoolean (bool)</synopsis>
+ <para>Skapa heltal (0 för <constant>false</constant> eller 1 för <constant>true</constant>) från
booleskt värde. <varname>bool</varname> kan också vara ett tal i vilket fall ett nollskilt värde kommer
tolkas som <constant>true</constant> och noll kommer tolkas som <constant>false</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsBoolean"/>IsBoolean</term>
+ <listitem>
+ <synopsis>IsBoolean (arg)</synopsis>
+ <para>Kontrollera om argumentet är booleskt (och inte ett tal).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDefined"/>IsDefined</term>
+ <listitem>
+ <synopsis>IsDefined (id)</synopsis>
+ <para>Kontrollera om ett id är definierat. Du bör skicka en sträng och eller identifierare. Om du
skickar en matris kommer varje post att evalueras separat och matrisen bör innehålla strängar eller
identifierare.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunction"/>IsFunction</term>
+ <listitem>
+ <synopsis>IsFunction (arg)</synopsis>
+ <para>Kontrollera om argumentet är en funktion.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionOrIdentifier"/>IsFunctionOrIdentifier</term>
+ <listitem>
+ <synopsis>IsFunctionOrIdentifier (arg)</synopsis>
+ <para>Kontrollera om argumentet är en funktion eller en identifierare.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFunctionRef"/>IsFunctionRef</term>
+ <listitem>
+ <synopsis>IsFunctionRef (arg)</synopsis>
+ <para>Kontrollera om argumentet är en funktionsreferens. Detta inkluderar
variabelreferenser.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrix"/>IsMatrix</term>
+ <listitem>
+ <synopsis>IsMatrix (arg)</synopsis>
+ <para>Kontrollera om argumentet är en matris. Även om <constant>null</constant> ibland anses vara
en tom matris så anser funktionen <function>IsMatrix</function> inte att <constant>null</constant> är en
matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNull"/>IsNull</term>
+ <listitem>
+ <synopsis>IsNull (arg)</synopsis>
+ <para>Kontrollera om argumentet är ett <constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsString"/>IsString</term>
+ <listitem>
+ <synopsis>IsString (arg)</synopsis>
+ <para>Kontrollera om argumentet är en textsträng.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValue"/>IsValue</term>
+ <listitem>
+ <synopsis>IsValue (arg)</synopsis>
+ <para>Kontrollera om argumentet är ett tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Parse"/>Parse</term>
+ <listitem>
+ <synopsis>Parse (str)</synopsis>
+ <para>Tolkar men evaluerar inte en sträng. Observera att viss förberäkning sker på
tolkstadiet.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetFunctionFlags"/>SetFunctionFlags</term>
+ <listitem>
+ <synopsis>SetFunctionFlags (id,flaggor...)</synopsis>
+ <para>Ställ in flaggor för en funktion, för närvarande <literal>"PropagateMod"</literal> och
<literal>"NoModuloArguments"</literal>. Om <literal>"PropagateMod"</literal> är inställd, kommer funktionens
kropp evalueras i modulär aritmetik då funktionen är anropad inuti ett block som evaluerats med modulär
aritmetik (med <literal>mod</literal>). Om <literal>"NoModuloArguments"</literal>, evalueras funktionens
argument aldrig med modulär aritmetik.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelp"/>SetHelp</term>
+ <listitem>
+ <synopsis>SetHelp (id,kategori,beskr)</synopsis>
+ <para>Ställer in kategori- och hjälpbeskrivningsraderna för en funktion.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetHelpAlias"/>SetHelpAlias</term>
+ <listitem>
+ <synopsis>SetHelpAlias (id,alias)</synopsis>
+ <para>Konfigurerar ett hjälpalias.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-chdir"/>chdir</term>
+ <listitem>
+ <synopsis>chdir (kat)</synopsis>
+ <para>Ändrar aktuell katalog, samma som <command>cd</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CurrentTime"/>CurrentTime</term>
+ <listitem>
+ <synopsis>CurrentTime</synopsis>
+ <para>Returnerar aktuell UNIX-tid med mikrosekundsprecision som ett flyttal. Det vill säga,
returnera antalet sekunder sedan 1 januari 1970.</para>
+ <para>Version 1.0.15 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-display"/>display</term>
+ <listitem>
+ <synopsis>display (str,uttr)</synopsis>
+ <para>Visa en sträng och ett uttryck med ett kolon mellan dem.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DisplayVariables"/>DisplayVariables</term>
+ <listitem>
+ <synopsis>DisplayVariables (var1,var2,...)</synopsis>
+ <para>Visa en uppsättning variabler. Variablerna kan anges som strängar eller identifierare. Till
exempel: <programlisting>DisplayVariables(`x,`y,`z)
+ </programlisting></para>
+ <para>Om anropad utan argument (måste skicka med tom argumentlista) som
<programlisting>DisplayVariables()
+ </programlisting> så skrivs alla variabler ut inklusive ett stackspår liknande <guilabel>Visa
användarvariabler</guilabel> i den grafiska versionen.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-error"/>error</term>
+ <listitem>
+ <synopsis>error (str)</synopsis>
+ <para>Skriver ut en sträng till felflödet (till konsolen).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exit"/>exit</term>
+ <listitem>
+ <synopsis>exit</synopsis>
+ <para>Alias: <function>quit</function></para>
+ <para>Avslutar programmet.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-false"/>false</term>
+ <listitem>
+ <synopsis>false</synopsis>
+ <para>Alias: <function>False</function><function>FALSE</function></para>
+ <para>Det booleska värdet <constant>false</constant> (falskt).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-manual"/>manual</term>
+ <listitem>
+ <synopsis>manual</synopsis>
+ <para>Visar användarmanualen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-print"/>print</term>
+ <listitem>
+ <synopsis>print (str)</synopsis>
+ <para>Skriver ut ett uttryck och sedan en nyrad. Argumentet <varname>str</varname> kan vara ett
godtyckligt uttryck. Det omvandlas till en sträng innan det skrivs ut.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-printn"/>printn</term>
+ <listitem>
+ <synopsis>printn (str)</synopsis>
+ <para>Skriver ut ett uttryck utan en avslutande nyrad. Argumentet <varname>str</varname> kan vara
ett godtyckligt uttryck. Det omvandlas till en sträng innan det skrivs ut.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrintTable"/>PrintTable</term>
+ <listitem>
+ <synopsis>PrintTable (f,v)</synopsis>
+ <para>Skriv ut en tabell med värden för en funktion. Värdena är i vektorn <varname>v</varname>. Du
kan använda vektorbyggnotationen enligt följande: <programlisting>PrintTable (f,[0:10])
+ </programlisting> Om <varname>v</varname> är ett positivt heltal kommer tabellen av heltal från 1
upp till och inklusive v att användas.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-protect"/>protect</term>
+ <listitem>
+ <synopsis>protect (id)</synopsis>
+ <para>Skydda en variabel från att ändras. Detta används på de interna GEL-funktionerna för att
förhindra att de skrivs över av misstag.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ProtectAll"/>ProtectAll</term>
+ <listitem>
+ <synopsis>ProtectAll ()</synopsis>
+ <para>Skydda alla för närvarande definierade variabler, parametrar och funktioner från att ändras.
Detta används på de interna GEL-funktionerna för att förhindra dem från att skrivas över av misstag. Normalt
anser <application>Genius matematikverktyg</application> oskyddade variabler vara användardefinierade.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-set"/>set</term>
+ <listitem>
+ <synopsis>set (id,värde)</synopsis>
+ <para>Ställ in en global variabel. <varname>id</varname> kan antingen vara en sträng eller en
citerad identifierare. Till exempel: <programlisting>set(`x,1)
+ </programlisting> kommer ställa in den globala variabeln <varname>x</varname> till värdet
1.</para>
+ <para>Funktionen returnerar <varname>värde</varname>, att användas i en kedja.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetElement"/>SetElement</term>
+ <listitem>
+ <synopsis>SetElement (id,rad,kol,värde)</synopsis>
+ <para>Ställ in ett element i en global variabel som är en matris. <varname>id</varname> kan vara
antingen en sträng eller en citerad identifierare. Till exempel: <programlisting>SetElement(`x,2,3,1)
+ </programlisting> kommer att ställa in elementet i andra raden och tredje kolumnen av den globala
variabeln <varname>x</varname> till värdet 1. Om ingen global variabel med det namnet existerar, eller om den
är inställd till något som inte är en matris kommer en ny nollmatris av lämplig storlek att skapas.</para>
+ <para><varname>rad</varname> och <varname>kol</varname> kan också vara intervall, och semantiken är
densamma som för vanlig inställning av elementen med ett lika med-tecken.</para>
+ <para>Funktionen returnerar <varname>värde</varname>, att användas i en kedja.</para>
+ <para>Tillgängligt i 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetVElement"/>SetVElement</term>
+ <listitem>
+ <synopsis>SetElement (id,elt,värde)</synopsis>
+ <para>Ställ in ett element i en global variabel som är en vektor. <varname>id</varname> kan vara
antingen en sträng eller en citerad identifierare. Till exempel: <programlisting>SetElement(`x,2,1)
+ </programlisting> kommer att ställa in det andra elementet i den globala vektorvariabeln
<varname>x</varname> till värdet 1. Om ingen global variabel med det namnet existerar, eller om den är
inställd till något som inte är en vektor (matris) kommer en ny nollradvektor av lämplig storlek att
skapas.</para>
+ <para><varname>elt</varname> kan också vara ett intervall, och semantiken är densamma som för
vanlig inställning av elementen med ett lika med-tecken.</para>
+ <para>Funktionen returnerar <varname>värde</varname>, att användas i en kedja.</para>
+ <para>Tillgängligt i 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-string"/>string</term>
+ <listitem>
+ <synopsis>string (s)</synopsis>
+ <para>Skapa en sträng. Detta kommer göra en sträng av ett godtyckligt argument.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-true"/>true</term>
+ <listitem>
+ <synopsis>true</synopsis>
+ <para>Alias: <function>True</function><function>TRUE</function></para>
+ <para>Det booleska värdet <constant>true</constant> (sant).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-undefine"/>undefine</term>
+ <listitem>
+ <synopsis>undefine (id)</synopsis>
+ <para>Alias: <function>Undefine</function></para>
+ <para>Avdefiniera en variabel. Detta inkluderar lokala och globala variabler, varje värde i alla
kontextnivåer rensas. Denna funktion bör egentligen inte användas på lokala variabler. En vektor av
identifierare kan också skickas för att avdefiniera flera variabler.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UndefineAll"/>UndefineAll</term>
+ <listitem>
+ <synopsis>UndefineAll ()</synopsis>
+ <para>Avdefiniera alla oskyddade globala variabler (inklusive funktioner och parametrar). Normalt
anser <application>Genius matematikverktyg</application> skyddade variabler vara systemdefinierade funktioner
och variabler. Observera att <function>UndefineAll</function> endast tar bort den globala definitionen av
symboler, inte lokala, så den kan köras säkert inifrån andra funktioner.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-unprotect"/>unprotect</term>
+ <listitem>
+ <synopsis>unprotect (id)</synopsis>
+ <para>Skydda inte längre en variabel från att ändras.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UserVariables"/>UserVariables</term>
+ <listitem>
+ <synopsis>UserVariables ()</synopsis>
+ <para>Returnera en vektor av identifierar för användardefinierade (oskyddade) globala
variabelnamn.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-wait"/>wait</term>
+ <listitem>
+ <synopsis>wait (sek)</synopsis>
+ <para>Väntar ett angivet antal sekunder. <varname>sek</varname> måste vara icke-negativ. Noll
accepteras och inget händer i detta fall, förutom att möjligen användargränssnittshändelser behandlas.</para>
+ <para>Sedan version 1.0.18 kan <varname>sek</varname> vara ett icke-heltal, så
<userinput>wait(0.1)</userinput> kommer vänta en tiondels sekund.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-version"/>version</term>
+ <listitem>
+ <synopsis>version</synopsis>
+ <para>Returnerar versionen för Genius som en horisontell 3-vektor med huvudversion först, sedan
mindre version och slutligen patchnivå.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-warranty"/>warranty</term>
+ <listitem>
+ <synopsis>warranty</synopsis>
+ <para>Ger garantiinformationen.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="genius-gel-function-parameters">
+ <title>Parametrar</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ChopTolerance"/>ChopTolerance</term>
+ <listitem>
+ <synopsis>ChopTolerance = tal</synopsis>
+ <para><function>Chop</function>-funktionens tolerans.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousNumberOfTries"/>ContinuousNumberOfTries</term>
+ <listitem>
+ <synopsis>ContinuousNumberOfTries = tal</synopsis>
+ <para>Hur många iterationer för att försöka hitta gränsvärdet för kontinuitet och
gränsvärden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousSFS"/>ContinuousSFS</term>
+ <listitem>
+ <synopsis>ContinuousSFS = tal</synopsis>
+ <para>Hur många efter varandra följande steg att vara inom tolerans för
kontinuitetsberäkning.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ContinuousTolerance"/>ContinuousTolerance</term>
+ <listitem>
+ <synopsis>ContinuousTolerance = tal</synopsis>
+ <para>Toleransen för kontinuiteten för funktioner och för att beräkna gränsvärdet.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeNumberOfTries"/>DerivativeNumberOfTries</term>
+ <listitem>
+ <synopsis>DerivativeNumberOfTries = tal</synopsis>
+ <para>Hur många iterationer för att försöka hitta gränsvärdet för derivatan.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeSFS"/>DerivativeSFS</term>
+ <listitem>
+ <synopsis>DerivativeSFS = tal</synopsis>
+ <para>Hur många efter varandra följande steg att vara inom tolerans för beräkning av
derivata.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DerivativeTolerance"/>DerivativeTolerance</term>
+ <listitem>
+ <synopsis>DerivativeTolerance = tal</synopsis>
+ <para>Toleransen för att beräkna derivatorna för funktioner.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunctionTolerance"/>ErrorFunctionTolerance</term>
+ <listitem>
+ <synopsis>ErrorFunctionTolerance = tal</synopsis>
+ <para>Toleransen för funktionen <link
linkend="gel-function-ErrorFunction"><function>ErrorFunction</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FloatPrecision"/>FloatPrecision</term>
+ <listitem>
+ <synopsis>FloatPrecision = tal</synopsis>
+ <para>Flyttalsprecision.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FullExpressions"/>FullExpressions</term>
+ <listitem>
+ <synopsis>FullExpressions = boolean</synopsis>
+ <para>Skriv ut fullständiga uttryck, även om det tar mer än en rad.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistributionTolerance"/>GaussDistributionTolerance</term>
+ <listitem>
+ <synopsis>GaussDistributionTolerance = tal</synopsis>
+ <para>Toleransen för funktionen <link
linkend="gel-function-GaussDistribution"><function>GaussDistribution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerOutputBase"/>IntegerOutputBase</term>
+ <listitem>
+ <synopsis>IntegerOutputBase = tal</synopsis>
+ <para>Bas för heltalsutdata.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimeMillerRabinReps"/>IsPrimeMillerRabinReps</term>
+ <listitem>
+ <synopsis>IsPrimeMillerRabinReps = tal</synopsis>
+ <para>Antal extra Miller-Rabin-test att köra på ett tal innan det deklareras som ett primtal i
<link linkend="gel-function-IsPrime"><function>IsPrime</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLegends"/>LinePlotDrawLegends</term>
+ <listitem>
+ <synopsis>LinePlotDrawLegends = true</synopsis>
+ <para>Säger till genius att rita ut förklaringar för <link
linkend="genius-gel-function-list-plotting">linjegrafsfunktioner</link> som <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawAxisLabels"/>LinePlotDrawAxisLabels</term>
+ <listitem>
+ <synopsis>LinePlotDrawAxisLabels = true</synopsis>
+ <para>Säger till genius att rita ut axeletiketter för <link
linkend="genius-gel-function-list-plotting">linjegrafsfunktioner</link> som <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotVariableNames"/>LinePlotVariableNames</term>
+ <listitem>
+ <synopsis>LinePlotVariableNames = ["x","y","z","t"]</synopsis>
+ <para>Säger till genius vilka variabelnamn som används som standardnamn för <link
linkend="genius-gel-function-list-plotting">linjegrafsfunktioner</link> som <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link> och dylikt.</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWindow"/>LinePlotWindow</term>
+ <listitem>
+ <synopsis>LinePlotWindow = [x1,x2,y1,y2]</synopsis>
+ <para>Ställer in gränserna för <link
linkend="genius-gel-function-list-plotting">linjegrafsfunktioner</link> som <link
linkend="gel-function-LinePlot"><function>LinePlot</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxDigits"/>MaxDigits</term>
+ <listitem>
+ <synopsis>MaxDigits = tal</synopsis>
+ <para>Maximalt antal siffror att visa.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaxErrors"/>MaxErrors</term>
+ <listitem>
+ <synopsis>MaxErrors = tal</synopsis>
+ <para>Maximalt antal fel att visa.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MixedFractions"/>MixedFractions</term>
+ <listitem>
+ <synopsis>MixedFractions = boolean</synopsis>
+ <para>Om true (sant) skrivs blandade bråk ut.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralFunction"/>NumericalIntegralFunction</term>
+ <listitem>
+ <synopsis>NumericalIntegralFunction = funktion</synopsis>
+ <para>Funktionen som används för numerisk integration i <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegralSteps"/>NumericalIntegralSteps</term>
+ <listitem>
+ <synopsis>NumericalIntegralSteps = tal</synopsis>
+ <para>Steg att utföra i <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopExponent"/>OutputChopExponent</term>
+ <listitem>
+ <synopsis>OutputChopExponent = tal</synopsis>
+ <para>Då ett annat tal i objektet som skrivs ut (en matris eller ett värde) är större än
10<superscript>-OutputChopWhenExponent</superscript>, och talet som skrivs ut är mindre än
10<superscript>-OutputChopExponent</superscript> visas <computeroutput>0.0</computeroutput> istället för
talet.</para>
+<para>Utdata klipps aldrig om <function>OutputChopExponent</function> är noll. De måste vara ett
icke-negativt heltal.</para>
+<para>Om du vill att utdata alltid ska klippas enligt <function>OutputChopExponent</function>, ställ då in
<function>OutputChopWhenExponent</function> till något större än eller lika med
<function>OutputChopExponent</function>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputChopWhenExponent"/>OutputChopWhenExponent</term>
+ <listitem>
+ <synopsis>OutputChopWhenExponent = tal</synopsis>
+ <para>När utdata ska klippas. Se <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OutputStyle"/>OutputStyle</term>
+ <listitem>
+ <synopsis>OutputStyle = sträng</synopsis>
+ <para>Utdatastil, detta kan vara <literal>normal</literal>, <literal>latex</literal>,
<literal>mathml</literal> eller <literal>troff</literal>.</para>
+ <para>Detta påverkar främst hur matriser och bråk skrivs ut och är användbart då du vill klistra in
i dokument. Till exempel kan du ställa in detta till latex med: <programlisting>OutputStyle = "latex"
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ResultsAsFloats"/>ResultsAsFloats</term>
+ <listitem>
+ <synopsis>ResultsAsFloats = boolean</synopsis>
+ <para>Konvertera alla resultat till flyttal innan de skrivs ut.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ScientificNotation"/>ScientificNotation</term>
+ <listitem>
+ <synopsis>ScientificNotation = boolean</synopsis>
+ <para>Använd vetenskaplig notation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldTicks"/>SlopefieldTicks</term>
+ <listitem>
+ <synopsis>SlopefieldTicks = [vertikalt,horisontellt]</synopsis>
+ <para>Ställer in antalet vertikala och horisontella skalstreck i en riktningsfältsgraf. (Se <link
linkend="gel-function-SlopefieldPlot"><function>SlopefieldPlot</function></link>).</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductNumberOfTries"/>SumProductNumberOfTries</term>
+ <listitem>
+ <synopsis>SumProductNumberOfTries = tal</synopsis>
+ <para>Hur många iterationer att försöka för <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> och <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductSFS"/>SumProductSFS</term>
+ <listitem>
+ <synopsis>SumProductSFS = tal</synopsis>
+ <para>Hur många efter varandra följande steg att vara inom tolerans för <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> och <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SumProductTolerance"/>SumProductTolerance</term>
+ <listitem>
+ <synopsis>SumProductTolerance = tal</synopsis>
+ <para>Toleransen för <link
linkend="gel-function-InfiniteSum"><function>InfiniteSum</function></link> och <link
linkend="gel-function-InfiniteProduct"><function>InfiniteProduct</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLegends"/>SurfacePlotDrawLegends</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLegends = true</synopsis>
+ <para>Säger till genius att rita ut förklaringar för <link
linkend="genius-gel-function-list-plotting">ytgrafsfunktioner</link> som <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotVariableNames"/>SurfacePlotVariableNames</term>
+ <listitem>
+ <synopsis>SurfacePlotVariableNames = ["x","y","z"]</synopsis>
+ <para>Säger till genius vilka variabelnamn som används som standardnamn för <link
linkend="genius-gel-function-list-plotting">ytgrafsfunktioner</link> med <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>. Observera att
<varname>z</varname> inte avser den beroende (vertikala) axeln, utan den oberoende komplexa variabeln
<userinput>z=x+iy</userinput>.</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotWindow"/>SurfacePlotWindow</term>
+ <listitem>
+ <synopsis>SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]</synopsis>
+ <para>Ställer in gränserna för ytgrafer (Se <link
linkend="gel-function-SurfacePlot"><function>SurfacePlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldNormalized"/>VectorfieldNormalized</term>
+ <listitem>
+ <synopsis>VectorfieldNormalized = true</synopsis>
+ <para>Ska vektorfältsgrafen ha normaliserad pillängd. Om true kommer vektorfält endast visa
riktning och inte magnitud. (Se <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldTicks"/>VectorfieldTicks</term>
+ <listitem>
+ <synopsis>VectorfieldTicks = [vertikalt,horisontellt]</synopsis>
+ <para>Ställer in antalet vertikala och horisontella skalstreck i en vektorfältsgraf. (Se <link
linkend="gel-function-VectorfieldPlot"><function>VectorfieldPlot</function></link>).</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-constants">
+ <title>Konstanter</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CatalanConstant"/>CatalanConstant</term>
+ <listitem>
+ <synopsis>CatalanConstant</synopsis>
+ <para>Catalans konstant, ungefär 0.915... Den är definierad som serien där termerna är
<userinput>(-1^k)/((2*k+1)^2)</userinput>, där <varname>k</varname> går från 0 till oändligheten.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Catalan%27s_constant">Wikipedia</ulink> eller
<ulink url="http://mathworld.wolfram.com/CatalansConstant.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerConstant"/>EulerConstant</term>
+ <listitem>
+ <synopsis>EulerConstant</synopsis>
+ <para>Alias: <function>gamma</function></para>
+ <para>Eulers gammakonstant. Ibland kallad Euler-Mascheroni-konstanten.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Euler-Mascheroni_constant">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/MascheroniConstant">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Euler-MascheroniConstant.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GoldenRatio"/>GoldenRatio</term>
+ <listitem>
+ <synopsis>GoldenRatio</synopsis>
+ <para>Det gyllene snittet.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Golden_ratio">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/GoldenRatio">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/GoldenRatio.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Gravity"/>Gravity</term>
+ <listitem>
+ <synopsis>Gravity</synopsis>
+ <para>Acceleration vid fritt fall vid havsytan i meter per sekundkvadrat- Detta är den vanliga
gravitationskonstanten 9.80665. Gravitationen i dina hemtrakter kan skilja sig från denna på grund av annan
höjd och för att jorden inte är ett perfekt klot.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Standard_gravity">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-e"/>e</term>
+ <listitem>
+ <synopsis>e</synopsis>
+ <para>Basen för den naturliga logaritmen. <userinput>e^x</userinput> är den exponentiella
funktionen <link linkend="gel-function-exp"><function>exp</function></link>. Den är ungefär 2.71828182846...
Detta tal kallas ibland Eulers tal, men det finns flera tal som också kallas Eulers. Ett exempel på det är
gammakonstanten: <link linkend="gel-function-EulerConstant"><function>EulerConstant</function></link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/E_(mathematical_constant)">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/E">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/e.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-pi"/>pi</term>
+ <listitem>
+ <synopsis>pi</synopsis>
+ <para>Talet pi, det vill säga förhållandet mellan en cirkels omkrets och dess diameter. Detta är
ungefär 3,14159265359...</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Pi">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/Pi">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Pi.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-numeric">
+ <title>Numeriska funktioner</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AbsoluteValue"/>AbsoluteValue</term>
+ <listitem>
+ <synopsis>AbsoluteValue (x)</synopsis>
+ <para>Alias: <function>abs</function></para>
+ <para>Absolutbeloppet av ett tal, och om <varname>x</varname> är ett komplext tal så är detta
avståndet för <varname>x</varname> till origo. Detta är ekvivalent med <userinput>|x|</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Absolute_value">Wikipedia</ulink>, <ulink
url="http://planetmath.org/AbsoluteValue">Planetmath (absolutbelopp)</ulink>, <ulink
url="http://planetmath.org/ModulusOfComplexNumber">Planetmath (modulus)</ulink>, <ulink
url="http://mathworld.wolfram.com/AbsoluteValue.html">Mathworld (absolutbelopp)</ulink> eller <ulink
url="http://mathworld.wolfram.com/ComplexModulus.html">Mathworld (komplex modulus)</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Chop"/>Chop</term>
+ <listitem>
+ <synopsis>Chop (x)</synopsis>
+ <para>Ersätt väldigt litet tal med noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplexConjugate"/>ComplexConjugate</term>
+ <listitem>
+ <synopsis>ComplexConjugate (z)</synopsis>
+ <para>Alias: <function>conj</function><function>Conj</function></para>
+ <para>Beräknar komplexkonjugatet av det komplexa talet <varname>z</varname>. Om
<varname>z</varname> är en vektor eller matris konjugeras alla dess element.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Complex_conjugate">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Denominator"/>Denominator</term>
+ <listitem>
+ <synopsis>Denominator (x)</synopsis>
+ <para>Hämta nämnaren för ett rationellt tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Denominator">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FractionalPart"/>FractionalPart</term>
+ <listitem>
+ <synopsis>FractionalPart (x)</synopsis>
+ <para>Returnera bråkdelen av ett tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fractional_part">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Im"/>Im</term>
+ <listitem>
+ <synopsis>Im (z)</synopsis>
+ <para>Alias: <function>ImaginaryPart</function></para>
+ <para>Hämta den imaginära delen av ett komplext tal. Till exempel ger
<userinput>Re(3+4i)</userinput> svaret 4.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Imaginary_part">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IntegerQuotient"/>IntegerQuotient</term>
+ <listitem>
+ <synopsis>IntegerQuotient (m,n)</synopsis>
+ <para>Division utan rest.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplex"/>IsComplex</term>
+ <listitem>
+ <synopsis>IsComplex (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett komplext (icke-reellt) tal. Observera att vi menar
icke-reellt tal. Det vill säga <userinput>IsComplex(3)</userinput> ger false, medan
<userinput>IsComplex(3-1i)</userinput> ger true.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsComplexRational"/>IsComplexRational</term>
+ <listitem>
+ <synopsis>IsComplexRational (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett möjligtvis komplext rationellt tal. Det vill säga om både
real- och imaginärdelarna anges som rationella tal. Givetvis betyder rationell helt enkelt ”inte lagrad som
ett flyttal”.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsFloat"/>IsFloat</term>
+ <listitem>
+ <synopsis>IsFloat (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett reellt flyttal (icke-komplext).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsGaussInteger"/>IsGaussInteger</term>
+ <listitem>
+ <synopsis>IsGaussInteger (tal)</synopsis>
+ <para>Alias: <function>IsComplexInteger</function></para>
+ <para>Kontrollera om argumentet är ett möjligtvis komplext heltal. Det vill säga ett komplext
heltal är ett heltal på formen <userinput>n+1i*m</userinput> där <varname>n</varname> och
<varname>m</varname> är heltal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInteger"/>IsInteger</term>
+ <listitem>
+ <synopsis>IsInteger (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett heltal (icke-komplext).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNonNegativeInteger"/>IsNonNegativeInteger</term>
+ <listitem>
+ <synopsis>IsNonNegativeInteger (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett icke-negativt reellt heltal. Det vill säga antingen ett
positivt heltal eller noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveInteger"/>IsPositiveInteger</term>
+ <listitem>
+ <synopsis>IsPositiveInteger (tal)</synopsis>
+ <para>Alias: <function>IsNaturalNumber</function></para>
+ <para>Kontrollera om argumentet är ett positivt reellt heltal. Observera att vi accepterar
konventionen att 0 inte är ett naturligt tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsRational"/>IsRational</term>
+ <listitem>
+ <synopsis>IsRational (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett rationellt tal (icke-komplext). Rationellt betyder förstås
endast ”inte lagrat som ett flyttal”.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsReal"/>IsReal</term>
+ <listitem>
+ <synopsis>IsReal (tal)</synopsis>
+ <para>Kontrollera om argumentet är ett reellt tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Numerator"/>Numerator</term>
+ <listitem>
+ <synopsis>Numerator (x)</synopsis>
+ <para>Hämta täljaren för ett rationellt tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Numerator">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Re"/>Re</term>
+ <listitem>
+ <synopsis>Re (z)</synopsis>
+ <para>Alias: <function>RealPart</function></para>
+ <para>Hämta den reella delen av ett komplext tal. Till exempel ger <userinput>Re(3+4i)</userinput>
svaret 3.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Real_part">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Sign"/>Sign</term>
+ <listitem>
+ <synopsis>Sign (x)</synopsis>
+ <para>Alias: <function>sign</function></para>
+ <para>Returnera tecknet för ett tal. Det vill säga returnerar <literal>-1</literal> om värdet är
negativt, <literal>0</literal> om värdet är noll och <literal>1</literal> om värdet är positivt. Om
<varname>x</varname> är ett komplext värde så returnerar <function>Sign</function> riktningen eller 0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ceil"/>ceil</term>
+ <listitem>
+ <synopsis>ceil (x)</synopsis>
+ <para>Alias: <function>Ceiling</function></para>
+ <para>Hämta det minsta heltalet större än eller lika med <varname>n</varname>. Exempel:
<screen><prompt>genius></prompt> <userinput>ceil(1.1)</userinput>
+= 2
+<prompt>genius></prompt> <userinput>ceil(-1.1)</userinput>
+= -1
+</screen></para>
+ <para>Observera att du bör vara försiktig och notera att flyttal lagras binärt och därför kanske
inte är vad du förväntar dig. Till exempel har vi <userinput>ceil(420/4.2)</userinput> som returnerar 101
istället för det förväntade 100. Detta är för att 4.2 faktiskt är något mindre än 4.2. Använd
bråkrepresentationen <userinput>42/10</userinput> om du vill ha exakt aritmetik.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-exp"/>exp</term>
+ <listitem>
+ <synopsis>exp (x)</synopsis>
+ <para>Exponentialfunktionen. Detta är funktionen <userinput>e^x</userinput> där
<varname>e</varname> är <link linkend="gel-function-e">basen för den naturliga logaritmen</link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Exponential_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/ExponentialFunction.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-float"/>float</term>
+ <listitem>
+ <synopsis>float (x)</synopsis>
+ <para>Gör ett tal till ett flyttalsvärde. Det vill säga returnerar flyttalsrepresentationen av
talet <varname>x</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-floor"/>floor</term>
+ <listitem>
+ <synopsis>floor (x)</synopsis>
+ <para>Alias: <function>Floor</function></para>
+ <para>Hämta det största heltalet mindre än eller lika med <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ln"/>ln</term>
+ <listitem>
+ <synopsis>ln (x)</synopsis>
+ <para>Den naturliga logaritmen, logaritmen med bas <varname>e</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Natural_logarithm">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/LogarithmFunction">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/NaturalLogarithm.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log"/>log</term>
+ <listitem>
+ <synopsis>log (x)</synopsis>
+ <synopsis>log (x,b)</synopsis>
+ <para>Logaritm för <varname>x</varname> med basen <varname>b</varname> (anropar <link
linkend="gel-function-DiscreteLog"><function>DiscreteLog</function></link> om i moduloläge), om bas inte är
angiven används <link linkend="gel-function-e"><varname>e</varname></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log10"/>log10</term>
+ <listitem>
+ <synopsis>log10 (x)</synopsis>
+ <para>Logaritmen av <varname>x</varname> bas 10.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-log2"/>log2</term>
+ <listitem>
+ <synopsis>log2 (x)</synopsis>
+ <para>Alias: <function>lg</function></para>
+ <para>Logaritmen av <varname>x</varname> bas 2.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-max"/>max</term>
+ <listitem>
+ <synopsis>max (a,arg...)</synopsis>
+ <para>Alias: <function>Max</function><function>Maximum</function></para>
+ <para>Returnera maximum av argument eller matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-min"/>min</term>
+ <listitem>
+ <synopsis>min (a,arg...)</synopsis>
+ <para>Alias: <function>Min</function><function>Minimum</function></para>
+ <para>Returnera minimum av argument eller matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rand"/>rand</term>
+ <listitem>
+ <synopsis>rand (storlek...)</synopsis>
+ <para>Generera slumpmässigt flyttal i intervallet <literal>[0,1)</literal>. Om storlek är angiven
returneras en matris (om två tal anges) eller en vektor (om ett tal anges) av den angivna storleken.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-randint"/>randint</term>
+ <listitem>
+ <synopsis>randint (max,storlek...)</synopsis>
+ <para>Generera slumpmässigt heltal i intervallet <literal>[0,1)</literal>. Om storlek är angiven
returneras en matris (om två tal anges) eller en vektor (om ett tal anges) av den angivna storleken. Till
exempel, <screen><prompt>genius></prompt> <userinput>randint(4)</userinput>
+= 3
+<prompt>genius></prompt> <userinput>randint(4,2)</userinput>
+=
+[0 1]
+<prompt>genius></prompt> <userinput>randint(4,2,3)</userinput>
+=
+[2 2 1
+ 0 0 3]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-round"/>round</term>
+ <listitem>
+ <synopsis>round (x)</synopsis>
+ <para>Alias: <function>Round</function></para>
+ <para>Avrunda ett tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sqrt"/>sqrt</term>
+ <listitem>
+ <synopsis>sqrt (x)</synopsis>
+ <para>Alias: <function>SquareRoot</function></para>
+ <para>Kvadratroten. Vid operation modulo något heltal kommer den returnera antingen
<constant>null</constant> eller en vektor av kvadratrötterna. Exempel: <screen><prompt>genius></prompt>
<userinput>sqrt(2)</userinput>
+= 1.41421356237
+<prompt>genius></prompt> <userinput>sqrt(-1)</userinput>
+= 1i
+<prompt>genius></prompt> <userinput>sqrt(4) mod 7</userinput>
+=
+[2 5]
+<prompt>genius></prompt> <userinput>2*2 mod 7</userinput>
+= 4
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Square_root">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/SquareRoot">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-trunc"/>trunc</term>
+ <listitem>
+ <synopsis>trunc (x)</synopsis>
+ <para>Alias: <function>Truncate</function><function>IntegerPart</function></para>
+ <para>Trunkera talet till ett heltal (returnera heltalsdelen).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-trigonometry">
+ <title>Trigonometri</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-acos"/>acos</term>
+ <listitem>
+ <synopsis>acos (x)</synopsis>
+ <para>Alias: <function>arccos</function></para>
+ <para>arccos-funktionen (invers cos).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acosh"/>acosh</term>
+ <listitem>
+ <synopsis>acosh (x)</synopsis>
+ <para>Alias: <function>arccosh</function></para>
+ <para>arccosh-funktionen (invers cosh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acot"/>acot</term>
+ <listitem>
+ <synopsis>acot (x)</synopsis>
+ <para>Alias: <function>arccot</function></para>
+ <para>arccot-funktionen (invers cot).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acoth"/>acoth</term>
+ <listitem>
+ <synopsis>acoth (x)</synopsis>
+ <para>Alias: <function>arccoth</function></para>
+ <para>arccoth-funktionen (invers coth).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsc"/>acsc</term>
+ <listitem>
+ <synopsis>acsc (x)</synopsis>
+ <para>Alias: <function>arccsc</function></para>
+ <para>Inversa cosekantfunktionen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-acsch"/>acsch</term>
+ <listitem>
+ <synopsis>acsch (x)</synopsis>
+ <para>Alias: <function>arccsch</function></para>
+ <para>Inversa hyperboliska cosekantfunktionen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asec"/>asec</term>
+ <listitem>
+ <synopsis>asec (x)</synopsis>
+ <para>Alias: <function>arcsec</function></para>
+ <para>Inversa sekantfunktionen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asech"/>asech</term>
+ <listitem>
+ <synopsis>asech (x)</synopsis>
+ <para>Alias: <function>arcsech</function></para>
+ <para>Inversa hyperboliska sekantfunktionen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asin"/>asin</term>
+ <listitem>
+ <synopsis>asin (x)</synopsis>
+ <para>Alias: <function>arcsin</function></para>
+ <para>arcsin-funktionen (invers sin).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-asinh"/>asinh</term>
+ <listitem>
+ <synopsis>asinh (x)</synopsis>
+ <para>Alias: <function>arcsinh</function></para>
+ <para>arcsinh-funktionen (invers sinh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan"/>atan</term>
+ <listitem>
+ <synopsis>atan (x)</synopsis>
+ <para>Alias: <function>arctan</function></para>
+ <para>Beräknar arcustangensfunktionen (invers tangens).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Arctangent">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atanh"/>atanh</term>
+ <listitem>
+ <synopsis>atanh (x)</synopsis>
+ <para>Alias: <function>arctanh</function></para>
+ <para>arctanh-funktionen (invers tanh).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-atan2"/>atan2</term>
+ <listitem>
+ <synopsis>atan2 (y, x)</synopsis>
+ <para>Alias: <function>arctan2</function></para>
+ <para>Beräknar arctan2-funktionen. Om <userinput>x>0</userinput> returnerar den
<userinput>atan(y/x)</userinput>. If <userinput>x<0</userinput> returnerar den <userinput>sign(y) * (pi -
atan(|y/x|)</userinput>. Då <userinput>x=0</userinput> returnerar den <userinput>sign(y) *
+ pi/2</userinput>. <userinput>atan2(0,0)</userinput> returnerar 0 snarare än att misslyckas.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Atan2">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/InverseTangent.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cos"/>cos</term>
+ <listitem>
+ <synopsis>cos (x)</synopsis>
+ <para>Beräknar cosinusfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cosh"/>cosh</term>
+ <listitem>
+ <synopsis>cosh (x)</synopsis>
+ <para>Beräknar funktionen för hyperbolisk cosinus.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cot"/>cot</term>
+ <listitem>
+ <synopsis>cot (x)</synopsis>
+ <para>Cotangensfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-coth"/>coth</term>
+ <listitem>
+ <synopsis>coth (x)</synopsis>
+ <para>Hyperboliska cotangensfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csc"/>csc</term>
+ <listitem>
+ <synopsis>csc (x)</synopsis>
+ <para>Cosekantfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-csch"/>csch</term>
+ <listitem>
+ <synopsis>csch (x)</synopsis>
+ <para>Hyperboliska cosekantfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sec"/>sec</term>
+ <listitem>
+ <synopsis>sec (x)</synopsis>
+ <para>Sekantfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sech"/>sech</term>
+ <listitem>
+ <synopsis>sech (x)</synopsis>
+ <para>Hyperboliska sekantfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sin"/>sin</term>
+ <listitem>
+ <synopsis>sin (x)</synopsis>
+ <para>Beräknar sinusfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinh"/>sinh</term>
+ <listitem>
+ <synopsis>sinh (x)</synopsis>
+ <para>Beräknar funktionen för hyperbolisk sinus.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tan"/>tan</term>
+ <listitem>
+ <synopsis>tan (x)</synopsis>
+ <para>Beräknar tangensfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trigonometric_functions">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/DefinitionsInTrigonometry">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-tanh"/>tanh</term>
+ <listitem>
+ <synopsis>tanh (x)</synopsis>
+ <para>Hyperboliska tangensfunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hyperbolic_function">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HyperbolicFunctions">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-number-theory">
+ <title>Talteori</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AreRelativelyPrime"/>AreRelativelyPrime</term>
+ <listitem>
+ <synopsis>AreRelativelyPrime (a,b)</synopsis>
+ <para>Är de reella heltalen <varname>a</varname> och <varname>b</varname> relativt prima?
Returnerar <constant>true</constant> eller <constant>false</constant>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Coprime_integers">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/RelativelyPrime">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/RelativelyPrime.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BernoulliNumber"/>BernoulliNumber</term>
+ <listitem>
+ <synopsis>BernoulliNumber (n)</synopsis>
+ <para>Returnerar det <varname>n</varname>:e Bernoullitalet.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bernoulli_number">Wikipedia</ulink> eller
<ulink url="http://mathworld.wolfram.com/BernoulliNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ChineseRemainder"/>ChineseRemainder</term>
+ <listitem>
+ <synopsis>ChineseRemainder (a,m)</synopsis>
+ <para>Alias: <function>CRT</function></para>
+ <para>Hitta det <varname>x</varname> som löser systemet givet av vektorn <varname>a</varname>
modulo elementen i <varname>m</varname> med den kinesiska restsatsen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Chinese_remainder_theorem">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/ChineseRemainderTheorem">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/ChineseRemainderTheorem.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CombineFactorizations"/>CombineFactorizations</term>
+ <listitem>
+ <synopsis>CombineFactorizations (a,b)</synopsis>
+ <para>Givet två faktoriseringar, ange faktoriseringen av produkten.</para>
+ <para>Se <link linkend="gel-function-Factorize">Factorize</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertFromBase"/>ConvertFromBase</term>
+ <listitem>
+ <synopsis>ConvertFromBase (v,b)</synopsis>
+ <para>Konvertera en vektor av värden som indikerar potenser av b till ett tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvertToBase"/>ConvertToBase</term>
+ <listitem>
+ <synopsis>ConvertToBase (n,b)</synopsis>
+ <para>Konvertera ett tal till en vektor av potenser för element i bas <varname>b</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteLog"/>DiscreteLog</term>
+ <listitem>
+ <synopsis>DiscreteLog (n,b,q)</synopsis>
+ <para>Hitta diskret logaritm av <varname>n</varname> bas <varname>b</varname> i
F<subscript>q</subscript>, den ändliga kroppen av ordning <varname>q</varname>, där <varname>q</varname> är
ett primtal, med Silver-Pohlig-Hellman-algoritmen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Discrete_logarithm">Wikipedia</ulink>, <ulink
url="http://planetmath.org/DiscreteLogarithm">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/DiscreteLogarithm.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Divides"/>Divides</term>
+ <listitem>
+ <synopsis>Divides (m,n)</synopsis>
+ <para>Kontrollerar delbarhet (om <varname>m</varname> delar <varname>n</varname>).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulerPhi"/>EulerPhi</term>
+ <listitem>
+ <synopsis>EulerPhi (n)</synopsis>
+ <para>Beräkna Eulers φ-funktion för <varname>n</varname>, det vill säga antalet heltal mellan 1
och <varname>n</varname> som är relativt prima till <varname>n</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Euler_phi">Wikipedia</ulink>, <ulink
url="http://planetmath.org/EulerPhifunction">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/TotientFunction.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExactDivision"/>ExactDivision</term>
+ <listitem>
+ <synopsis>ExactDivision (n,d)</synopsis>
+ <para>Returnera <userinput>n/d</userinput> men endast om <varname>d</varname> delar
<varname>n</varname>. Om <varname>d</varname> inte delar <varname>n</varname> kommer denna funktion returnera
skräpvärden. Detta är mycket snabbare för väldigt stora tal än operationen <userinput>n/d</userinput>, men
självklart bara användbart om du vet att divisionen är exakt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorize"/>Factorize</term>
+ <listitem>
+ <synopsis>Factorize (n)</synopsis>
+ <para>Returnera faktoriseringen av ett tal som en matris. Den första raden är primtalen i
faktoriseringen (inklusive 1) och den andra raden är exponenterna. Till exempel:
<screen><prompt>genius></prompt> <userinput>Factorize(11*11*13)</userinput>
+=
+[1 11 13
+ 1 2 1]</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Factorization">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factors"/>Factors</term>
+ <listitem>
+ <synopsis>Factors (n)</synopsis>
+ <para>Returnera alla faktorer av <varname>n</varname> i en vektor. Detta inkluderar även alla
icke-primtalsfaktorer. Det inkluderar 1 och talet självt. Så för att till exempel skriva ut alla perfekta tal
(de som är summan av sina faktorer) upp till talet 1000 kan du göra följande (detta är förstås väldigt
ineffektivt) <programlisting>for n=1 to 1000 do (
+ if MatrixSum (Factors(n)) == 2*n then
+ print(n)
+)
+</programlisting></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FermatFactorization"/>FermatFactorization</term>
+ <listitem>
+ <synopsis>FermatFactorization (n,försök)</synopsis>
+ <para>Försök med Fermatfaktorisering av <varname>n</varname> till
<userinput>(t-s)*(t+s)</userinput>, returnerar <varname>t</varname> och <varname>s</varname> som en vektor om
möjligt, annars <constant>null</constant>. <varname>försök</varname> anger antalet försök innan vi ger
upp.</para>
+ <para>Detta är en rätt bra faktorisering om ditt tal är produkten av två faktorer som ligger
väldigt nära varandra.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fermat_factorization">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindPrimitiveElementMod"/>FindPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindPrimitiveElementMod (q)</synopsis>
+ <para>Hitta det första primitiva elementet i F<subscript>q</subscript>, den finita gruppen av
ordning <varname>q</varname>. Givetvis måste <varname>q</varname> vara ett primtal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRandomPrimitiveElementMod"/>FindRandomPrimitiveElementMod</term>
+ <listitem>
+ <synopsis>FindRandomPrimitiveElementMod (q)</synopsis>
+ <para>Hitta ett slumpmässigt primitivt element i F<subscript>q</subscript>, den ändliga gruppen av
ordning <varname>q</varname> (q måste vara ett primtal).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculus"/>IndexCalculus</term>
+ <listitem>
+ <synopsis>IndexCalculus (n,b,q,S)</synopsis>
+ <para>Beräkna diskret logaritm av n bas <varname>b</varname> i F<subscript>q</subscript>, den
ändliga gruppen av ordning <varname>q</varname> (<varname>q</varname> ett primtal) med faktorbas
<varname>S</varname>. <varname>S</varname> ska vara en kolumn av primtal, möjligen med en andra kolumn
förberäknad av <link
linkend="gel-function-IndexCalculusPrecalculation"><function>IndexCalculusPrecalculation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexCalculusPrecalculation"/>IndexCalculusPrecalculation</term>
+ <listitem>
+ <synopsis>IndexCalculusPrecalculation (b,q,S)</synopsis>
+ <para>Kör förberäkningssteget av <link
linkend="gel-function-IndexCalculus"><function>IndexCalculus</function></link> för logaritmer bas
<varname>b</varname> i F<subscript>q</subscript>, den ändliga gruppen av ordning <varname>q</varname>
(<varname>q</varname> ett primtal) för faktorbasen <varname>S</varname> (där <varname>S</varname> är en
kolumnvektor av primtal). Logaritmerna kommer vara förberäknade och returneras i den andra kolumnen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsEven"/>IsEven</term>
+ <listitem>
+ <synopsis>IsEven (n)</synopsis>
+ <para>Testar om ett heltal är jämnt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMersennePrimeExponent"/>IsMersennePrimeExponent</term>
+ <listitem>
+ <synopsis>IsMersennePrimeExponent (p)</synopsis>
+ <para>Testar om ett positivt heltal <varname>p</varname> är en Mersenneprimtalsexponent. Det vill
säga om 2<superscript>p</superscript>-1 är ett primtal. Det gör detta genom att slå upp det i en tabell med
kända värden, vilken är relativt kort. Se även <link
linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> och <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>, <ulink
url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>, <ulink
url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> eller <ulink
url="http://www.mersenne.org/">GIMPS</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNthPower"/>IsNthPower</term>
+ <listitem>
+ <synopsis>IsNthPower (m,n)</synopsis>
+ <para>Testar om ett rationellt tal <varname>m</varname> är lika med något heltal upphöjt till
<varname>n</varname>. Se även <link linkend="gel-function-IsPerfectPower">IsPerfectPower</link> och <link
linkend="gel-function-IsPerfectSquare">IsPerfectSquare</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsOdd"/>IsOdd</term>
+ <listitem>
+ <synopsis>IsOdd (n)</synopsis>
+ <para>Testar om ett heltal är udda.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectPower"/>IsPerfectPower</term>
+ <listitem>
+ <synopsis>IsPerfectPower (n)</synopsis>
+ <para>Kontrollera om ett heltal är en perfekt potens, a<superscript>b</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPerfectSquare"/>IsPerfectSquare</term>
+ <listitem>
+ <synopsis>IsPerfectSquare (n)</synopsis>
+ <para>Kontrollera om ett heltal är en perfekt kvadrat av ett heltal. Talet måste vara ett heltal.
Negativa heltal kan givetvis aldrig vara perfekta kvadrater av heltal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrime"/>IsPrime</term>
+ <listitem>
+ <synopsis>IsPrime (n)</synopsis>
+ <para>Testar om heltal är primtal. För tal mindre än 2.5e10 är svaret deterministiskt (om
Riemann-hypotesen är sann). För större tal beror sannolikheten för ett falskt positivt svar på <link
linkend="gel-function-IsPrimeMillerRabinReps"><function>IsPrimeMillerRabinReps</function></link>. Det vill
säga sannolikheten för ett falskt positivt värde är 1/4 upphöjt till
<function>IsPrimeMillerRabinReps</function>. Standardvärdet 22 ger en sannolikhet på ungefär 5.7e-14.</para>
+ <para>Om <constant>false</constant> returneras kan du vara säker på att talet är sammansatt. Om du
vill vara fullständigt säker på att du har ett primtal kan du använda <link
linkend="gel-function-MillerRabinTestSure"><function>MillerRabinTestSure</function></link> men det kan ta
mycket längre tid.</para>
+ <para>Se <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPrimitiveMod"/>IsPrimitiveMod</term>
+ <listitem>
+ <synopsis>IsPrimitiveMod (g,q)</synopsis>
+ <para>Kontrollera om <varname>g</varname> är primitiv i F<subscript>q</subscript>, den finita
gruppen av ordning <varname>q</varname>, där <varname>q</varname> är ett primtal. Om <varname>q</varname>
inte är ett primtal kommer resultat vara felaktiga.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-IsPrimitiveModWithPrimeFactors"/>IsPrimitiveModWithPrimeFactors</term>
+ <listitem>
+ <synopsis>IsPrimitiveModWithPrimeFactors (g,q,f)</synopsis>
+ <para>Kontrollera om <varname>g</varname> är primitiv i F<subscript>q</subscript>, den finita
gruppen av ordning <varname>q</varname>, där <varname>q</varname> är ett primtal och <varname>f</varname> är
en vektor av primtalsfaktorer av <varname>q</varname>-1. Om <varname>q</varname> inte är ett primtal kommer
resultat vara felaktiga.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPseudoprime"/>IsPseudoprime</term>
+ <listitem>
+ <synopsis>IsPseudoprime (n,b)</synopsis>
+ <para>Om <varname>n</varname> är ett pseudoprimtal för basen <varname>b</varname> men inte ett
primtal, det vill säga om <userinput>b^(n-1) == 1 mod n</userinput>. Detta anropar <link
linkend="gel-function-PseudoprimeTest"><function>PseudoprimeTest</function></link></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsStrongPseudoprime"/>IsStrongPseudoprime</term>
+ <listitem>
+ <synopsis>IsStrongPseudoprime (n,b)</synopsis>
+ <para>Testa om <varname>n</varname> är ett starkt pseudoprimtal för basen <varname>b</varname> men
inte ett primtal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Jacobi"/>Jacobi</term>
+ <listitem>
+ <synopsis>Jacobi (a,b)</synopsis>
+ <para>Alias: <function>JacobiSymbol</function></para>
+ <para>Beräkna Jacobi-symbolen (a/b) (b måste vara udda).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JacobiKronecker"/>JacobiKronecker</term>
+ <listitem>
+ <synopsis>JacobiKronecker (a,b)</synopsis>
+ <para>Alias: <function>JacobiKroneckerSymbol</function></para>
+ <para>Beräkna Jacobi-symbolen (a/b) med Kronecker-tillägget (a/2)=(2/a) när a är udda, eller
(a/2)=0 när a är jämnt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeastAbsoluteResidue"/>LeastAbsoluteResidue</term>
+ <listitem>
+ <synopsis>LeastAbsoluteResidue (a,n)</synopsis>
+ <para>Returnera residualen av <varname>a</varname> mod <varname>n</varname> med det minsta
absolutbeloppet (i intervallet -n/2 till n/2).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Legendre"/>Legendre</term>
+ <listitem>
+ <synopsis>Legendre (a,p)</synopsis>
+ <para>Alias: <function>LegendreSymbol</function></para>
+ <para>Beräkna Legendre-symbolen (a/p).</para>
+ <para>Se <ulink url="http://planetmath.org/LegendreSymbol">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/LegendreSymbol.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasLehmer"/>LucasLehmer</term>
+ <listitem>
+ <synopsis>LucasLehmer (p)</synopsis>
+ <para>Testa om 2<superscript>p</superscript>-1 är ett Mersenne-primtal med Lucas-Lehmer-testet. Se
även <link linkend="gel-function-MersennePrimeExponents">MersennePrimeExponents</link> och <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link>.</para>
+ <para>Se <ulink
url="https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test">Wikipedia</ulink>, <ulink
url="http://planetmath.org/LucasLhemer">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Lucas-LehmerTest.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LucasNumber"/>LucasNumber</term>
+ <listitem>
+ <synopsis>LucasNumber (n)</synopsis>
+ <para>Returnerar det <varname>n</varname>:e Lucas-talet.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Lucas_number">Wikipedia</ulink>, <ulink
url="http://planetmath.org/LucasNumbers">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/LucasNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MaximalPrimePowerFactors"/>MaximalPrimePowerFactors</term>
+ <listitem>
+ <synopsis>MaximalPrimePowerFactors (n)</synopsis>
+ <para>Returnera alla maximala potenser av primtalsfaktorer för ett tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MersennePrimeExponents"/>MersennePrimeExponents</term>
+ <listitem>
+ <synopsis>MersennePrimeExponents</synopsis>
+ <para>En vektor av kända Mersenne-primtalsexponenter, det vill säga en lista över positiva heltal
<varname>p</varname> så att 2<superscript>p</superscript>-1 är ett primtal. Se även <link
linkend="gel-function-IsMersennePrimeExponent">IsMersennePrimeExponent</link> och <link
linkend="gel-function-LucasLehmer">LucasLehmer</link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Mersenne_prime">Wikipedia</ulink>, <ulink
url="http://planetmath.org/MersenneNumbers">Planetmath</ulink>, <ulink
url="http://mathworld.wolfram.com/MersennePrime.html">Mathworld</ulink> eller <ulink
url="http://www.mersenne.org/">GIMPS</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTest"/>MillerRabinTest</term>
+ <listitem>
+ <synopsis>MillerRabinTest (n,reps)</synopsis>
+ <para>Använd Miller-Rabin-primalitetstestet på <varname>n</varname>, <varname>reps</varname>
gånger. Sannolikheten för falska positiva är <userinput>(1/4)^reps</userinput>. Det är troligen vanligen
bättre att använda <link linkend="gel-function-IsPrime"><function>IsPrime</function></link> eftersom det är
snabbare och bättre för mindre heltal.</para>
+ <para>Se <ulink
url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MillerRabinTestSure"/>MillerRabinTestSure</term>
+ <listitem>
+ <synopsis>MillerRabinTestSure (n)</synopsis>
+ <para>Använd Miller-Rabin-primalitetstestet på <varname>n</varname> med tillräckliga baser för
att, givet den allmänna Riemann-hypotesen, resultatet ska vara deterministiskt.</para>
+ <para>Se <ulink
url="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Wikipedia</ulink>, <ulink
url="http://planetmath.org/MillerRabinPrimeTest">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Rabin-MillerStrongPseudoprimeTest.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ModInvert"/>ModInvert</term>
+ <listitem>
+ <synopsis>ModInvert (n,m)</synopsis>
+ <para>Returnerar inversen av n mod m.</para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/ModularInverse.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMu"/>MoebiusMu</term>
+ <listitem>
+ <synopsis>MoebiusMu (n)</synopsis>
+ <para>Returnera Möbiusfunktionen µ(n) beräknad i <varname>n</varname>. Det vill säga, returnerar 0
om <varname>n</varname> inte är en produkt av distinkta primtal och <userinput>(-1)^k</userinput> om det är
en produkt av <varname>k</varname> distinkta primtal.</para>
+ <para>Se <ulink url="http://planetmath.org/MoebiusFunction">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/MoebiusFunction.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextPrime"/>NextPrime</term>
+ <listitem>
+ <synopsis>NextPrime (n)</synopsis>
+ <para>Returnerar det minsta primtalet större än <varname>n</varname>. Negativer av primtal anses
vara primtal så för att få det föregående primtalet kan du använda
<userinput>-NextPrime(-n)</userinput>.</para>
+ <para>Denna funktion använder GMP:s <function>mpz_nextprime</function>, som i sin tur använder det
probabilistiska Miller-Rabin-testet (Se även <link
linkend="gel-function-MillerRabinTest"><function>MillerRabinTest</function></link>). Sannolikheten för att få
falska positiva går inte att ställa in, men är låg nog för alla praktiska användningsområden.</para>
+ <para>Se <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PadicValuation"/>PadicValuation</term>
+ <listitem>
+ <synopsis>PadicValuation (n,p)</synopsis>
+ <para>Returnera den p-adiska beräkningen (antal efterföljande nollor i bas
<varname>p</varname>).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/P-adic_order">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/PAdicValuation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PowerMod"/>PowerMod</term>
+ <listitem>
+ <synopsis>PowerMod (a,b,m)</synopsis>
+ <para>Beräkna <userinput>a^b mod m</userinput>. <varname>b</varname>-potensen av
<varname>a</varname> modulo <varname>m</varname>. Det är inte nödvändigt att använda denna funktion eftersom
den används automatiskt i moduloläge. Därför går <userinput>a^b mod m</userinput> precis lika snabbt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Prime"/>Prime</term>
+ <listitem>
+ <synopsis>Prime (n)</synopsis>
+ <para>Alias: <function>prime</function></para>
+ <para>Returnera det <varname>n</varname>:e primtalet (upp till en gräns).</para>
+ <para>Se <ulink url="http://planetmath.org/PrimeNumber">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/PrimeNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PrimeFactors"/>PrimeFactors</term>
+ <listitem>
+ <synopsis>PrimeFactors (n)</synopsis>
+ <para>Returnera alla primtalsfaktorer för ett tal som en vektor.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Prime_factor">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/PrimeFactor.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PseudoprimeTest"/>PseudoprimeTest</term>
+ <listitem>
+ <synopsis>PseudoprimeTest (n,b)</synopsis>
+ <para>Pseudoprimtalstest, returnerar <constant>true</constant> om och endast om <userinput>b^(n-1)
== 1 mod n</userinput></para>
+ <para>Se <ulink url="http://planetmath.org/Pseudoprime">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Pseudoprime.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RemoveFactor"/>RemoveFactor</term>
+ <listitem>
+ <synopsis>RemoveFactor (n,m)</synopsis>
+ <para>Tar bort alla förekomster av faktorn <varname>m</varname> från talet <varname>n</varname>.
Det vill säga dividerar med den största potensen av <varname>m</varname> som delar
<varname>n</varname>.</para>
+ <para>Se <ulink url="http://planetmath.org/Divisibility">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Factor.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SilverPohligHellmanWithFactorization"/>SilverPohligHellmanWithFactorization</term>
+ <listitem>
+ <synopsis>SilverPohligHellmanWithFactorization (n,b,q,f)</synopsis>
+ <para>Hitta diskret logaritm av <varname>n</varname> bas <varname>b</varname> i
F<subscript>q</subscript>, den finita gruppen av ordning <varname>q</varname>, där <varname>q</varname> är
ett primtal med Silver-Pohlig-Hellman-algoritmen, givet att <varname>f</varname> är faktoriseringen av
<varname>q</varname>-1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SqrtModPrime"/>SqrtModPrime</term>
+ <listitem>
+ <synopsis>SqrtModPrime (n,p)</synopsis>
+ <para>Hitta kvadratrot av <varname>n</varname> mod <varname>p</varname> (där <varname>p</varname>
är ett primtal). Null returneras om inte en kvadratisk rest.</para>
+ <para>Se <ulink url="http://planetmath.org/QuadraticResidue">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/QuadraticResidue.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StrongPseudoprimeTest"/>StrongPseudoprimeTest</term>
+ <listitem>
+ <synopsis>StrongPseudoprimeTest (n,b)</synopsis>
+ <para>Kör det starka pseudoprimtalstestet bas <varname>b</varname> på <varname>n</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Strong_pseudoprime">Wikipedia</ulink>, <ulink
url="http://planetmath.org/StrongPseudoprime">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/StrongPseudoprime.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-gcd"/>gcd</term>
+ <listitem>
+ <synopsis>gcd (a,arg...)</synopsis>
+ <para>Alias: <function>GCD</function></para>
+ <para>Största gemensamma delare av heltal. Du kan mata in så många heltal som du vill i
argumentlistan, eller så kan du ange en vektor eller en matris av heltal. Om du anger mer än en matris av
samma storlek kommer SGD att utföras elementvis.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Greatest_common_divisor">Wikipedia</ulink>,
<ulink url="http://planetmath.org/GreatestCommonDivisor">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/GreatestCommonDivisor.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-lcm"/>lcm</term>
+ <listitem>
+ <synopsis>lcm (a,arg...)</synopsis>
+ <para>Alias: <function>LCM</function></para>
+ <para>Minsta gemensamma multipel av heltal. Du kan mata in så många heltal som du vill i
argumentlistan, eller så kan du ange en vektor eller en matris av heltal. Om du anger mer än en matris av
samma storlek kommer MGM att utföras elementvis.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Least_common_multiple">Wikipedia</ulink>,
<ulink url="http://planetmath.org/LeastCommonMultiple">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/LeastCommonMultiple.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-matrix">
+ <title>Matrismanipulation</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix"/>ApplyOverMatrix</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix (a,funk)</synopsis>
+ <para>Tillämpa en funktion över alla poster av en matris och returnera en matris av
resultaten.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ApplyOverMatrix2"/>ApplyOverMatrix2</term>
+ <listitem>
+ <synopsis>ApplyOverMatrix2 (a,b,funk)</synopsis>
+ <para>Tillämpa en funktion över alla poster av två matriser (eller ett värde och en matris) och
returnera en matris av resultaten.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnsOf"/>ColumnsOf</term>
+ <listitem>
+ <synopsis>ColumnsOf (M)</synopsis>
+ <para>Hämtar kolumnerna i en matris som en horisontell vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ComplementSubmatrix"/>ComplementSubmatrix</term>
+ <listitem>
+ <synopsis>ComplementSubmatrix (m,r,c)</synopsis>
+ <para>Ta bort kolumn(er) och rad(er) från en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompoundMatrix"/>CompoundMatrix</term>
+ <listitem>
+ <synopsis>CompoundMatrix (k,A)</synopsis>
+ <para>Beräkna den k:e compound-matrisen av A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CountZeroColumns"/>CountZeroColumns</term>
+ <listitem>
+ <synopsis>CountZeroColumns (M)</synopsis>
+ <para>Räkna antalet nollkolumner i en matris. Till exempel då du kolumnreducerat en matris kan du
använda detta för att hitta nulliteten. Se <link linkend="gel-function-cref"><function>cref</function></link>
och <link linkend="gel-function-Nullity"><function>Nullity</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteColumn"/>DeleteColumn</term>
+ <listitem>
+ <synopsis>DeleteColumn (M,kol)</synopsis>
+ <para>Ta bort en kolumn i en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeleteRow"/>DeleteRow</term>
+ <listitem>
+ <synopsis>DeleteRow (M,rad)</synopsis>
+ <para>Ta bort en rad i en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiagonalOf"/>DiagonalOf</term>
+ <listitem>
+ <synopsis>DiagonalOf (M)</synopsis>
+ <para>Hämtar diagonalposterna i en matris som en kolumnvektor.</para>
+ <para>Se <ulink
url="https://en.wikipedia.org/wiki/Diagonal_of_a_matrix#Matrices">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DotProduct"/>DotProduct</term>
+ <listitem>
+ <synopsis>DotProduct (u,v)</synopsis>
+ <para>Hämta skalärprodukten av två vektorer. Vektorerna måste vara av samma storlek. Inga konjugat
tas så detta är en bilinjär form även om vi arbetar över de komplexa talen; detta är den bilinjära
skalärprodukten, inte den seskvilinjära skalärprodukten. Se <link
linkend="gel-function-HermitianProduct">HermitianProduct</link> för den vanliga seskvilinjära inre
produkten.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Dot_product">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/DotProduct">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ExpandMatrix"/>ExpandMatrix</term>
+ <listitem>
+ <synopsis>ExpandMatrix (M)</synopsis>
+ <para>Expanderar en matris precis som vi gör med ociterade matrisindata. Det vill säga vi
expanderar alla interna matriser som block. Detta är ett sätt att konstruera matriser från mindre matriser
och detta görs vanligen automatiskt vid inmatning om inte matrisen är citerad.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HermitianProduct"/>HermitianProduct</term>
+ <listitem>
+ <synopsis>HermitianProduct (u,v)</synopsis>
+ <para>Alias: <function>InnerProduct</function></para>
+ <para>Hämta den hermiteska produkten av två vektorer. Vektorerna måste vara av samma storlek.
Detta är en seskvilinjär form som använder identitetsmatrisen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Sesquilinear_form">Wikipedia</ulink> eller
<ulink url="http://mathworld.wolfram.com/HermitianInnerProduct.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-I"/>I</term>
+ <listitem>
+ <synopsis>I (n)</synopsis>
+ <para>Alias: <function>eye</function></para>
+ <para>Returnera identitetsmatris av given storlek, det vill säga
<varname>n</varname>×<varname>n</varname>. Om <varname>n</varname> är noll returneras
<constant>null</constant>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Identity_matrix">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/IdentityMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IndexComplement"/>IndexComplement</term>
+ <listitem>
+ <synopsis>IndexComplement (vek,mstorl)</synopsis>
+ <para>Returnera indexkomplementet av en vektor med index. Allt är i basen ett. Till exempel för
vektorn <userinput>[2,3]</userinput> och storlek <userinput>5</userinput> returnerar vi
<userinput>[1,4,5]</userinput>. Om <varname>mstorl</varname> är 0, returnerar vi alltid
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDiagonal"/>IsDiagonal</term>
+ <listitem>
+ <synopsis>IsDiagonal (M)</synopsis>
+ <para>Är en matris diagonal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIdentity"/>IsIdentity</term>
+ <listitem>
+ <synopsis>IsIdentity (x)</synopsis>
+ <para>Kontrollera om en matris är identitetsmatrisen. Returnerar automatiskt
<constant>false</constant> om matrisen inte är kvadratisk. Fungerar också på tal, i vilket fall den är
ekvivalent med <userinput>x==1</userinput>. Då <varname>x</varname> är <constant>null</constant> (vi kan
tänka oss detta som en 0×0-matris), genereras inget fel och <constant>false</constant> returneras.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsLowerTriangular"/>IsLowerTriangular</term>
+ <listitem>
+ <synopsis>IsLowerTriangular (M)</synopsis>
+ <para>Är en matris nedåt triangulär. Det vill säga, är alla poster ovanför diagonalen noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixInteger"/>IsMatrixInteger</term>
+ <listitem>
+ <synopsis>IsMatrixInteger (M)</synopsis>
+ <para>Kontrollera om en matris är en matris med heltal (icke-komplex).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixNonnegative"/>IsMatrixNonnegative</term>
+ <listitem>
+ <synopsis>IsMatrixNonnegative (M)</synopsis>
+ <para>Kontrollera om en matris är icke-negativ, det vill säga om varje element är icke-negativt.
Förväxla inte positiva matriser med positivt semidefinita matriser.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixPositive"/>IsMatrixPositive</term>
+ <listitem>
+ <synopsis>IsMatrixPositive (M)</synopsis>
+ <para>Kontrollera om en matris är positiv, det vill säga om varje element är positivt (och därmed
reellt). Specifikt är inget element 0. Förväxla inte positiva matriser med positivt definita matriser.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Positive_matrix">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixRational"/>IsMatrixRational</term>
+ <listitem>
+ <synopsis>IsMatrixRational (M)</synopsis>
+ <para>Kontrollera om en matris är en matris med rationella (icke-komplexa) tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixReal"/>IsMatrixReal</term>
+ <listitem>
+ <synopsis>IsMatrixReal (M)</synopsis>
+ <para>Kontrollera om en matris är en matris med reella (icke-komplexa) tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsMatrixSquare"/>IsMatrixSquare</term>
+ <listitem>
+ <synopsis>IsMatrixSquare (M)</synopsis>
+ <para>Kontrollera om en matris är kvadratisk, det vill säga att dess bredd är samma som dess
höjd.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUpperTriangular"/>IsUpperTriangular</term>
+ <listitem>
+ <synopsis>IsUpperTriangular (M)</synopsis>
+ <para>Är en matris uppåt triangulär? Det vill säga, en matris är uppåt triangulär om alla poster
nedanför diagonalen är noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsValueOnly"/>IsValueOnly</term>
+ <listitem>
+ <synopsis>IsValueOnly (M)</synopsis>
+ <para>Kontrollera om en matris är en matris med endast tal. Många interna funktioner utför denna
kontroll. Värden kan vara godtyckliga tal, inklusive komplexa tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsVector"/>IsVector</term>
+ <listitem>
+ <synopsis>IsVector (v)</synopsis>
+ <para>Är argument en horisontell eller vertikal vektor. Genius skiljer inte mellan en matris och
en vektor, och en vektor är bara en 1×<varname>n</varname>- eller <varname>n</varname>×1-matrix.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsZero"/>IsZero</term>
+ <listitem>
+ <synopsis>IsZero (x)</synopsis>
+ <para>Kontrollera om en matris består av endast nollor. Fungerar också på tal, i vilket fall det
är ekvivalent med <userinput>x==0</userinput>. Då <varname>x</varname> är <constant>null</constant> (vi kan
tänka oss det som en 0×0-matris), genereras inget fel och <constant>true</constant> returneras eftersom
villkoret är tomt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LowerTriangular"/>LowerTriangular</term>
+ <listitem>
+ <synopsis>LowerTriangular (M)</synopsis>
+ <para>Returnerar en kopia av matrisen <varname>M</varname> där alla poster ovanför diagonalen
satts till noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeDiagonal"/>MakeDiagonal</term>
+ <listitem>
+ <synopsis>MakeDiagonal (v,arg...)</synopsis>
+ <para>Alias: <function>diag</function></para>
+ <para>Skapa diagonalmatris från en vektor. Alternativt kan du skicka med värdena att placera i
diagonalen som argument. Därmed är <userinput>MakeDiagonal([1,2,3])</userinput> samma som
<userinput>MakeDiagonal(1,2,3)</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Diagonal_matrix">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/DiagonalMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeVector"/>MakeVector</term>
+ <listitem>
+ <synopsis>MakeVector (A)</synopsis>
+ <para>Skapa en kolumnvektor från matris genom att lägga kolumner ovanpå varandra. Returnerar
<constant>null</constant> då den får <constant>null</constant> som indata.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixProduct"/>MatrixProduct</term>
+ <listitem>
+ <synopsis>MatrixProduct (A)</synopsis>
+ <para>Beräkna produkten av alla element i en matris eller vektor. Det vill säga vi multiplicerar
alla element och returnerar ett tal som är produkten av alla element.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSum"/>MatrixSum</term>
+ <listitem>
+ <synopsis>MatrixSum (A)</synopsis>
+ <para>Beräkna summan av alla element i en matris eller vektor. Det vill säga vi adderar alla
element och returnerar ett tal som är summan av alla element.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MatrixSumSquares"/>MatrixSumSquares</term>
+ <listitem>
+ <synopsis>MatrixSumSquares (A)</synopsis>
+ <para>Beräkna summan av kvadraterna av alla element i en matris eller vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroColumns"/>NonzeroColumns</term>
+ <listitem>
+ <synopsis>NonzeroColumns (M)</synopsis>
+ <para>Returnerar en radvektor av indexen för nollskilda kolumner i matrisen
<varname>M</varname>.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonzeroElements"/>NonzeroElements</term>
+ <listitem>
+ <synopsis>NonzeroElements (v)</synopsis>
+ <para>Returnerar en radvektor av indexen för nollskilda element i vektorn
<varname>v</varname>.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OuterProduct"/>OuterProduct</term>
+ <listitem>
+ <synopsis>OuterProduct (u,v)</synopsis>
+ <para>Hämta den yttre produkten av två vektorer. Det vill säga anta att <varname>u</varname> och
<varname>v</varname> är vertikala vektorer, då är den yttre produkten <userinput>v * u.'</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ReverseVector"/>ReverseVector</term>
+ <listitem>
+ <synopsis>ReverseVector (v)</synopsis>
+ <para>Vänd på elementen i en vektor. Returnera <constant>null</constant> om
<constant>null</constant> ges</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSum"/>RowSum</term>
+ <listitem>
+ <synopsis>RowSum (m)</synopsis>
+ <para>Beräkna summan av varje rad i en matris och returnera en vertikal vektor med
resultatet.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSumSquares"/>RowSumSquares</term>
+ <listitem>
+ <synopsis>RowSumSquares (m)</synopsis>
+ <para>Beräkna summan av kvadraterna för varje rad i en matris och returnera en vertikal vektor med
resultaten.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowsOf"/>RowsOf</term>
+ <listitem>
+ <synopsis>RowsOf (M)</synopsis>
+ <para>Hämtar raderna i en matris som en vertikal vektor. Varje element i vektorn är en horisontell
vektor som är motsvarande rad i <varname>M</varname>. Denna funktion är användbar om du vill köra en slinga
över raderna i en matris. Till exempel som i <userinput>for r in RowsOf(M) do
+radfunktion(r)</userinput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMatrixSize"/>SetMatrixSize</term>
+ <listitem>
+ <synopsis>SetMatrixSize (M,rader,kolumner)</synopsis>
+ <para>Skapa ny matris av given storlek från en gammal. Det vill säga en ny matris kommer
returneras till vilken den gamla kopieras. Poster som inte ryms tas bort och extra utrymme fylls med nollor.
Om <varname>rader</varname> eller <varname>kolumner</varname> är noll returneras
<constant>null</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ShuffleVector"/>ShuffleVector</term>
+ <listitem>
+ <synopsis>ShuffleVector (v)</synopsis>
+ <para>Flytta runt element i en vektor. Returnera <constant>null</constant> om
<constant>null</constant> ges.</para>
+ <para>Version 1.0.13 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SortVector"/>SortVector</term>
+ <listitem>
+ <synopsis>SortVector (v)</synopsis>
+ <para>Sortera vektorelement i stigande ordning.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroColumns"/>StripZeroColumns</term>
+ <listitem>
+ <synopsis>StripZeroColumns (M)</synopsis>
+ <para>Ta bort alla kolumner med endast nollor i <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StripZeroRows"/>StripZeroRows</term>
+ <listitem>
+ <synopsis>StripZeroRows (M)</synopsis>
+ <para>Ta bort alla rader med endast nollor i <varname>M</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Submatrix"/>Submatrix</term>
+ <listitem>
+ <synopsis>Submatrix (m,r,c)</synopsis>
+ <para>Returnera kolumn(er) och rad(er) från en matris. Detta är ekvivalent med
<userinput>m@(r,c)</userinput>. <varname>r</varname> och <varname>c</varname> ska vara vektorer av rader och
kolumner (eller enskilda tal om endast en rad eller kolumn behövs).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SwapRows"/>SwapRows</term>
+ <listitem>
+ <synopsis>SwapRows (m,rad1,rad2)</synopsis>
+ <para>Byt plats på två rader i en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UpperTriangular"/>UpperTriangular</term>
+ <listitem>
+ <synopsis>UpperTriangular (M)</synopsis>
+ <para>Returnerar en kopia av matrisen <varname>M</varname> där alla poster under diagonalen satts
till noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-columns"/>columns</term>
+ <listitem>
+ <synopsis>columns (M)</synopsis>
+ <para>Hämta antalet kolumner i en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-elements"/>elements</term>
+ <listitem>
+ <synopsis>elements (M)</synopsis>
+ <para>Hämta det totala antalet element i en matris. Detta är antalet kolumner gånger antalet
rader.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ones"/>ones</term>
+ <listitem>
+ <synopsis>ones (rader,kolumner...)</synopsis>
+ <para>Skapa en matris med ettor överallt (eller en radvektor om endast ett argument ges).
Returnerar <constant>null</constant> om antingen rader eller kolumner är noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rows"/>rows</term>
+ <listitem>
+ <synopsis>rows (M)</synopsis>
+ <para>Hämta antalet rader i en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-zeros"/>zeros</term>
+ <listitem>
+ <synopsis>zeros (rader,kolumner...)</synopsis>
+ <para>Skapa en matris med nollor överallt (eller en radvektor om endast ett argument ges).
Returnerar <constant>null</constant> om antingen rader eller kolumner är noll.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-linear-algebra">
+ <title>Linjär algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AuxiliaryUnitMatrix"/>AuxiliaryUnitMatrix</term>
+ <listitem>
+ <synopsis>AuxiliaryUnitMatrix (n)</synopsis>
+ <para>Hämta hjälpenhetsmatrisen av storlek <varname>n</varname>. Detta är en kvadratisk matris med
bara nollor, förutom element i överdiagonalen (i,i+1) som har värdet 1. Det är Jordanblockmatrisen med ett
egenvärde som är noll.</para>
+ <para>Se <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> eller
<ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> för mer information om Jordans
normalform.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearForm"/>BilinearForm</term>
+ <listitem>
+ <synopsis>BilinearForm (v,A,w)</synopsis>
+ <para>Beräkna (v,w) med avseende på den bilinjära formen given av matrisen A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BilinearFormFunction"/>BilinearFormFunction</term>
+ <listitem>
+ <synopsis>BilinearFormFunction (A)</synopsis>
+ <para>Returnera en funktion som beräknar två vektorer med avseende på den bilinjära formen given
av A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CharacteristicPolynomial"/>CharacteristicPolynomial</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomial (M)</synopsis>
+ <para>Alias: <function>CharPoly</function></para>
+ <para>Hämta det karakteristiska polynomet som en vektor. Det vill säga returnera koefficienterna
för polynomet med den konstanta termen först. Detta är polynomet som definieras av
<userinput>det(M-xI)</userinput>. Rötterna för detta polynom är egenvärdena för <varname>M</varname>. Se även
<link linkend="gel-function-CharacteristicPolynomialFunction">CharacteristicPolynomialFunction</link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CharacteristicPolynomialFunction"/>CharacteristicPolynomialFunction</term>
+ <listitem>
+ <synopsis>CharacteristicPolynomialFunction (M)</synopsis>
+ <para>Hämta det karakteristiska polynomet som en funktion. Detta är polynomet som definieras av
<userinput>det(M-xI)</userinput>. Rötterna för detta polynom är egenvärdena för <varname>M</varname>. Se även
<link linkend="gel-function-CharacteristicPolynomial">CharacteristicPolynomial</link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Characteristic_polynomial">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/CharacteristicEquation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ColumnSpace"/>ColumnSpace</term>
+ <listitem>
+ <synopsis>ColumnSpace (M)</synopsis>
+ <para>Hämta en basmatris för kolumnrummet för en matris. Det vill säga returnera en matris vars
kolumner är basen för kolumnrummet av <varname>M</varname>. Det vill säga rummet som spänns upp av kolumnerna
i <varname>M</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> för
mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CommutationMatrix"/>CommutationMatrix</term>
+ <listitem>
+ <synopsis>CommutationMatrix (m, n)</synopsis>
+ <para>Returnera kommutationsmatrisen <userinput>K(m,n)</userinput> som är den unika
<userinput>m*n</userinput>×<userinput>m*n</userinput>-matrisen så att <userinput>K(m,n) * MakeVector(A) =
MakeVector(A.')</userinput> för alla <varname>m</varname>×<varname>n</varname>-matriser
<varname>A</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CompanionMatrix"/>CompanionMatrix</term>
+ <listitem>
+ <synopsis>CompanionMatrix (p)</synopsis>
+ <para>Följeslagarmatris av ett polynom (som en vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConjugateTranspose"/>ConjugateTranspose</term>
+ <listitem>
+ <synopsis>ConjugateTranspose (M)</synopsis>
+ <para>Konjugattransponatet av en matris (adjungerad matris). Detta är det samma som
<userinput>.'</userinput>-operatorn.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Conjugate_transpose">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/ConjugateTranspose">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Convolution"/>Convolution</term>
+ <listitem>
+ <synopsis>Convolution (a,b)</synopsis>
+ <para>Alias: <function>convol</function></para>
+ <para>Beräkna faltningen av två horisontella vektorer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ConvolutionVector"/>ConvolutionVector</term>
+ <listitem>
+ <synopsis>ConvolutionVector (a,b)</synopsis>
+ <para>Beräkna faltning av två horisontella vektorer. Returnera resultatet som en vektor och inte
adderade.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CrossProduct"/>CrossProduct</term>
+ <listitem>
+ <synopsis>CrossProduct (v,w)</synopsis>
+ <para>CrossProduct (kryssprodukt) av två vektorer i R<superscript>3</superscript> som en
kolumnvektor.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Cross_product">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DeterminantalDivisorsInteger"/>DeterminantalDivisorsInteger</term>
+ <listitem>
+ <synopsis>DeterminantalDivisorsInteger (M)</synopsis>
+ <para>Hämta determinantdelarna av en heltalsmatris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSum"/>DirectSum</term>
+ <listitem>
+ <synopsis>DirectSum (M,N...)</synopsis>
+ <para>Direkt summa av matriser.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink>
för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirectSumMatrixVector"/>DirectSumMatrixVector</term>
+ <listitem>
+ <synopsis>DirectSumMatrixVector (v)</synopsis>
+ <para>Direkt summa av en vektor av matriser.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Matrix_addition#directsum">Wikipedia</ulink>
för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvalues"/>Eigenvalues</term>
+ <listitem>
+ <synopsis>Eigenvalues (M)</synopsis>
+ <para>Alias: <function>eig</function></para>
+ <para>Hämta egenvärdena för en kvadratisk matris. Fungerar för närvarande endast för upp till
matriser av storlek upp till 4×4-matriser eller triangulära matriser (för vilka egenvärdena är på
diagonalen).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Eigenvalue">Wikipedia</ulink>, <ulink
url="http://planetmath.org/Eigenvalue">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Eigenvalue.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Eigenvectors"/>Eigenvectors</term>
+ <listitem>
+ <synopsis>Eigenvectors (M)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues)</synopsis>
+ <synopsis>Eigenvectors (M, &eigenvalues, &multipliciteter)</synopsis>
+ <para>Hämta egenvektorerna för en kvadratisk matris. Hämta valfritt även egenvärdena och deras
algebraiska multipliciteter. Fungerar för närvarande endast för matriser med storlek upp till 2×2.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Eigenvector">Wikipedia</ulink>, <ulink
url="http://planetmath.org/Eigenvector">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/Eigenvector.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GramSchmidt"/>GramSchmidt</term>
+ <listitem>
+ <synopsis>GramSchmidt (v,B...)</synopsis>
+ <para>Tillämpa Gram-Schmidt-processen (till kolumnerna) med avseende på inre produkten given av
<varname>B</varname>. Om <varname>B</varname> inte angiven används den hermiteska produkten.
<varname>B</varname> kan antingen vara en seskvilinjär funktion av två argument eller så kan det vara en som
ger en seskvilinjär form. Vektorerna kommer att göras ortonormala med avseende på <varname>B</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/GramSchmidtOrthogonalization">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HankelMatrix"/>HankelMatrix</term>
+ <listitem>
+ <synopsis>HankelMatrix (k,r)</synopsis>
+ <para>Hankelmatris, en matris vars antidiagonaler är konstanta. <varname>k</varname> är den första
raden och <varname>r</varname> är den sista kolumnen. Det antas att båda argumenten är vektorer och att det
sista elementet i <varname>c</varname> är detsamma som det första elementet i <varname>r</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hankel_matrix">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HilbertMatrix"/>HilbertMatrix</term>
+ <listitem>
+ <synopsis>HilbertMatrix (n)</synopsis>
+ <para>Hilbertmatris av ordning <varname>n</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Image"/>Image</term>
+ <listitem>
+ <synopsis>Image (T)</synopsis>
+ <para>Hämta bilden (kolumnrummet) av en linjär avbildning.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Row_and_column_spaces">Wikipedia</ulink> för
mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfNorm"/>InfNorm</term>
+ <listitem>
+ <synopsis>InfNorm (v)</synopsis>
+ <para>Hämta supremumnormen av en vektor, även kallad maximinormen eller oändlighetsnormen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InvariantFactorsInteger"/>InvariantFactorsInteger</term>
+ <listitem>
+ <synopsis>InvariantFactorsInteger (M)</synopsis>
+ <para>Hämta de invarianta faktorerna för en kvadratisk heltalsmatris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InverseHilbertMatrix"/>InverseHilbertMatrix</term>
+ <listitem>
+ <synopsis>InverseHilbertMatrix (n)</synopsis>
+ <para>Invers Hilbertmatris av ordning <varname>n</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hilbert_matrix">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/HilbertMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsHermitian"/>IsHermitian</term>
+ <listitem>
+ <synopsis>IsHermitian (M)</synopsis>
+ <para>Är en matris hermitesk. Det vill säga lika med sitt konjugattransponat.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hermitian_matrix">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/HermitianMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInSubspace"/>IsInSubspace</term>
+ <listitem>
+ <synopsis>IsInSubspace (v,W)</synopsis>
+ <para>Testa om en vektor är i ett underrum.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertible"/>IsInvertible</term>
+ <listitem>
+ <synopsis>IsInvertible (n)</synopsis>
+ <para>Är en matris (eller tal) inverterbar (En heltalsmatris är inverterbar om och endast om den
är inverterbar över heltalen).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsInvertibleField"/>IsInvertibleField</term>
+ <listitem>
+ <synopsis>IsInvertibleField (n)</synopsis>
+ <para>Är en matris (eller ett tal) inverterbar över en kropp.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsNormal"/>IsNormal</term>
+ <listitem>
+ <synopsis>IsNormal (M)</synopsis>
+ <para>Är <varname>M</varname> en normal matris. Det vill säga är <userinput>M*M' ==
M'*M</userinput>.</para>
+ <para>Se <ulink url="http://planetmath.org/NormalMatrix">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/NormalMatrix.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveDefinite"/>IsPositiveDefinite</term>
+ <listitem>
+ <synopsis>IsPositiveDefinite (M)</synopsis>
+ <para>Är <varname>M</varname> en hermitesk positivt definit matris. Det vill säga om
<userinput>HermitianProduct(M*v,v)</userinput> alltid är strikt positiv för varje vektor
<varname>v</varname>. <varname>M</varname> måste vara kvadratisk och hermitesk för att vara positivt definit.
Kontrollen som utförs är att varje principal-undermatris har en icke-negativ determinant. (Se <link
linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Observera att vissa författare (till exempel Mathworld) inte kräver att <varname>M</varname>
är hermitesk, och då är villkoret på realdelen av den inre produkten, men vi delar inte denna åskådning. Om
du vill utföra denna kontroll, se bara på den hermiteska delen av matrisen <varname>M</varname> enligt
följande: <userinput>IsPositiveSemidefinite(M+M')</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Positive-definite_matrix">Wikipedia</ulink>,
<ulink url="http://planetmath.org/PositiveDefinite">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/PositiveDefiniteMatrix.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPositiveSemidefinite"/>IsPositiveSemidefinite</term>
+ <listitem>
+ <synopsis>IsPositiveSemidefinite (M)</synopsis>
+ <para>Är <varname>M</varname> en hermitesk positivt semidefinit matris. Det vill säga om
<userinput>HermitianProduct(M*v,v)</userinput> alltid är icke-negativ för varje vektor <varname>v</varname>.
<varname>M</varname> måste vara kvadratisk och hermitesk för att vara positivt semidefinit. Kontrollen som
utförs är att varje principal-undermatris har en icke-negativ determinant. (Se <link
linkend="gel-function-HermitianProduct">HermitianProduct</link>)</para>
+ <para>Observera att vissa författare inte kräver att <varname>M</varname> är hermitesk, och då är
villkoret på realdelen av den inre produkten, men vi delar inte denna åskådning. Om du vill utföra denna
kontroll, se bara på den hermiteska delen av matrisen <varname>M</varname> enligt följande:
<userinput>IsPositiveSemidefinite(M+M')</userinput>.</para>
+ <para>Se <ulink url="http://planetmath.org/PositiveSemidefinite">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/PositiveSemidefiniteMatrix.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSkewHermitian"/>IsSkewHermitian</term>
+ <listitem>
+ <synopsis>IsSkewHermitian (M)</synopsis>
+ <para>Är en matris skevhermitesk. Det vill säga är konjugattransponatet lika med den negativa
matrisen.</para>
+ <para>Se <ulink url="http://planetmath.org/SkewHermitianMatrix">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsUnitary"/>IsUnitary</term>
+ <listitem>
+ <synopsis>IsUnitary (M)</synopsis>
+ <para>Är en matris unitär? Det vill säga, är <userinput>M'*M</userinput> och
<userinput>M*M'</userinput> lika med identiteten.</para>
+ <para>Se <ulink url="http://planetmath.org/UnitaryTransformation">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/UnitaryMatrix.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-JordanBlock"/>JordanBlock</term>
+ <listitem>
+ <synopsis>JordanBlock (n,lambda)</synopsis>
+ <para>Alias: <function>J</function></para>
+ <para>Hämta Jordanblocket som motsvarar egenvärdet <varname>lambda</varname> med multiplicitet
<varname>n</varname>.</para>
+ <para>Se <ulink url="http://planetmath.org/JordanCanonicalFormTheorem">Planetmath</ulink> eller
<ulink url="http://mathworld.wolfram.com/JordanBlock.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Kernel"/>Kernel</term>
+ <listitem>
+ <synopsis>Kernel (T)</synopsis>
+ <para>Hämta kärnan (nollrummet) av en linjär avbildning.</para>
+ <para>(Se <link linkend="gel-function-NullSpace">NullSpace</link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerProduct"/>KroneckerProduct</term>
+ <listitem>
+ <synopsis>KroneckerProduct (M, N)</synopsis>
+ <para>Alias: <function>TensorProduct</function></para>
+ <para>Beräkna Kroneckerprodukten (tensorprodukt i standardbas) av två matriser.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Kronecker_product">Wikipedia</ulink>, <ulink
url="http://planetmath.org/KroneckerProduct">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/KroneckerProduct.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LUDecomposition"/>LUDecomposition</term>
+ <listitem>
+ <synopsis>LUDecomposition (A, L, U)</synopsis>
+ <para>Hämta LU-faktoriseringen av <varname>A</varname>, det vill säga hitta en nedåt triangulär
matris och uppåt triangulär matris vilkas produkt är <varname>A</varname>. Lagra resultatet i
<varname>L</varname> och <varname>U</varname> som ska vara referenser. Det returnerar
<constant>true</constant> om det lyckas. Anta till exempel att A är en kvadratisk matris, då kommer du efter
att köra: <screen><prompt>genius></prompt> <userinput>LUDecomposition(A,&L,&U)</userinput>
+</screen> ha den nedre matrisen lagrad i en variabel som kallas <varname>L</varname> och den övre matrisen i
en variabel som kallas <varname>U</varname>.</para>
+ <para>Detta är LU-faktoriseringen av en matris, även känd som Crout- och/eller
Cholesky-faktorisering. (ISBN 0-201-11577-8 pp.99-103) Den uppåt triangulära matrisen har värdet 1 (ett) på
diagonalen. Detta är inte Doolittles metod som har ettorna diagonalt på nedermatrisen.</para>
+ <para>Alla matriser har inte LU-faktoriseringar, till exempel har <userinput>[0,1;1,0]</userinput>
inte det och denna funktion returnerar <constant>false</constant> i det fallet och ställer in
<varname>L</varname> och <varname>U</varname> till <constant>null</constant>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/LU_decomposition">Wikipedia</ulink>, <ulink
url="http://planetmath.org/LUDecomposition">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/LUDecomposition.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Minor"/>Minor</term>
+ <listitem>
+ <synopsis>Minor (M,i,j)</synopsis>
+ <para>Hämta <varname>i</varname>-<varname>j</varname>-underdeterminanten (minoren) av en
matris.</para>
+ <para>Se <ulink url="http://planetmath.org/Minor">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NonPivotColumns"/>NonPivotColumns</term>
+ <listitem>
+ <synopsis>NonPivotColumns (M)</synopsis>
+ <para>Returnera kolumnerna som inte är pivotkolumnerna av en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Norm"/>Norm</term>
+ <listitem>
+ <synopsis>Norm (v,p...)</synopsis>
+ <para>Alias: <function>norm</function></para>
+ <para>Hämta p-normen (eller 2-normen om inget p är angivet) för en vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NullSpace"/>NullSpace</term>
+ <listitem>
+ <synopsis>NullSpace (T)</synopsis>
+ <para>Hämta nollrummet för en matris. Det vill säga kärnan för den linjära avbildningen som
matrisen representerar. Detta returneras som en matris vars kolumnrum är nollrummet av
<varname>T</varname>.</para>
+ <para>Se <ulink url="http://planetmath.org/Nullspace">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Nullity"/>Nullity</term>
+ <listitem>
+ <synopsis>Nullity (M)</synopsis>
+ <para>Alias: <function>nullity</function></para>
+ <para>Hämta nulliteten av en matris. Det vill säga returnera nollrummets dimension; dimensionen på
kärnan av <varname>M</varname>.</para>
+ <para>Se <ulink url="http://planetmath.org/Nullity">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OrthogonalComplement"/>OrthogonalComplement</term>
+ <listitem>
+ <synopsis>OrthogonalComplement (M)</synopsis>
+ <para>Hämta det ortogonala komplementet till kolumnrummet.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PivotColumns"/>PivotColumns</term>
+ <listitem>
+ <synopsis>PivotColumns (M)</synopsis>
+ <para>Returnera pivotkolumner för en matris, det vill säga kolumner som börjar med 1 i
radreducerad trappstegsform, returnerar också raden där de förekommer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Projection"/>Projection</term>
+ <listitem>
+ <synopsis>Projection (v,W,B...)</synopsis>
+ <para>Projicering av vektor <varname>v</varname> till underrum <varname>W</varname> med avseende på
inre produkt given av <varname>B</varname>. Om <varname>B</varname> ej angiven används den vanliga hermiteska
produkten. <varname>B</varname> kan antingen vara en seskvilinjär funktion av två argument eller så kan det
vara en matris som ger en seskvilinjär form.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QRDecomposition"/>QRDecomposition</term>
+ <listitem>
+ <synopsis>QRDecomposition (A, Q)</synopsis>
+ <para>Hämta QR-faktoriseringen av en kvadratisk matris <varname>A</varname>, returnerar den uppåt
triangulära matrisen <varname>R</varname> och ställer in <varname>Q</varname> till den ortogonala (unitära)
matrisen. <varname>Q</varname> bör vara en referens eller <constant>null</constant> om de inte vill att något
ska returneras. Till exempel: <screen><prompt>genius></prompt> <userinput>R =
QRDecomposition(A,&Q)</userinput>
+</screen> Du kommer att ha den uppåt triangulära matrisen lagrad i en variabel kallad <varname>R</varname>
och den ortogonala (unitära) matrisen lagrad i <varname>Q</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/QR_decomposition">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/QRDecomposition">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/QRDecomposition.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotient"/>RayleighQuotient</term>
+ <listitem>
+ <synopsis>RayleighQuotient (A,x)</synopsis>
+ <para>Returnera Rayleighkvoten (även kallad Rayleigh-Ritz-kvoten eller förhållandet) av en matris
och en vektor.</para>
+ <para>Se <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RayleighQuotientIteration"/>RayleighQuotientIteration</term>
+ <listitem>
+ <synopsis>RayleighQuotientIteration (A,x,epsilon,maxiter,vekref)</synopsis>
+ <para>Hitta egenvärdena av <varname>A</varname> med Rayleighkvot-iterationsmetoden.
<varname>x</varname> är en gissning av en egenvektor och kan vara slumpmässig. Den ska ha nollskild
imaginärdel om den ska ha någon chans att hitta komplexa egenvärden. Koden kommer köras som mest
<varname>maxiter</varname> iterationer och returnera <constant>null</constant> om vi inte kan få ett mindre
fel än <varname>epsilon</varname>. <varname>vekref</varname> ska antingen vara <constant>null</constant>
eller en referens till en variabel där egenvektorn ska lagras.</para>
+ <para>Se <ulink url="http://planetmath.org/RayleighQuotient">Planetmath</ulink> för mer
information om Rayleighkvot.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rank"/>Rank</term>
+ <listitem>
+ <synopsis>Rank (M)</synopsis>
+ <para>Alias: <function>rank</function></para>
+ <para>Hämta rangen av en matris.</para>
+ <para>Se <ulink url="http://planetmath.org/SylvestersLaw">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RosserMatrix"/>RosserMatrix</term>
+ <listitem>
+ <synopsis>RosserMatrix ()</synopsis>
+ <para>Returnerar Rossermatrisen som är ett klassiskt testproblem för symmetriska egenvärden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation2D"/>Rotation2D</term>
+ <listitem>
+ <synopsis>Rotation2D (vinkel)</synopsis>
+ <para>Alias: <function>RotationMatrix</function></para>
+ <para>Returnera matrisen som motsvarar rotation runt origo i R<superscript>2</superscript>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DX"/>Rotation3DX</term>
+ <listitem>
+ <synopsis>Rotation3DX (vinkel)</synopsis>
+ <para>Returnera matrisen som motsvarar rotation runt origo i R<superscript>3</superscript> kring
x-axeln.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DY"/>Rotation3DY</term>
+ <listitem>
+ <synopsis>Rotation3DY (vinkel)</synopsis>
+ <para>Returnera matrisen som motsvarar rotation runt origo i R<superscript>3</superscript> kring
y-axeln.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Rotation3DZ"/>Rotation3DZ</term>
+ <listitem>
+ <synopsis>Rotation3DZ (vinkel)</synopsis>
+ <para>Returnera matrisen som motsvarar rotation runt origo i R<superscript>3</superscript> kring
z-axeln.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowSpace"/>RowSpace</term>
+ <listitem>
+ <synopsis>RowSpace (M)</synopsis>
+ <para>Hämta en basmatris för radrummet av en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearForm"/>SesquilinearForm</term>
+ <listitem>
+ <synopsis>SesquilinearForm (v,A,w)</synopsis>
+ <para>Beräkna (v,w) med avseende på den seskvilinjära formen given av matrisen A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SesquilinearFormFunction"/>SesquilinearFormFunction</term>
+ <listitem>
+ <synopsis>SesquilinearFormFunction (A)</synopsis>
+ <para>Returnera en funktion som beräknar två vektorer med avseende på den seskvilinjära formen
given av A.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormField"/>SmithNormalFormField</term>
+ <listitem>
+ <synopsis>SmithNormalFormField (A)</synopsis>
+ <para>Returnerar Smiths normalform för en matris över kroppar (kommer i slutet ha 1:or på
diagonalen).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SmithNormalFormInteger"/>SmithNormalFormInteger</term>
+ <listitem>
+ <synopsis>SmithNormalFormInteger (M)</synopsis>
+ <para>Returnerar Smiths normalform för kvadratiska heltalsmatriser över heltal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Smith_normal_form">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SolveLinearSystem"/>SolveLinearSystem</term>
+ <listitem>
+ <synopsis>SolveLinearSystem (M,V,arg...)</synopsis>
+ <para>Lös det linjära systemet Mx=V, returnera lösningen V om det finns en unik lösning, returnera
<constant>null</constant> annars. Två extra referensparametrar kan valfritt användas för att få tag i de
reducerade M och V.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ToeplitzMatrix"/>ToeplitzMatrix</term>
+ <listitem>
+ <synopsis>ToeplitzMatrix (k, r...)</synopsis>
+ <para>Returnera Toeplitzmatrisen skapad med den första kolumnen k och (valfritt) den första raden
r. Om endast kolumnen k anges så konjugeras den och den icke-konjugerade versionen används som den första
raden för att ge en hermitesk matris (givetvis om det första elementet är reellt).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Toeplitz_matrix">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/ToeplitzMatrix">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Trace"/>Trace</term>
+ <listitem>
+ <synopsis>Trace (M)</synopsis>
+ <para>Alias: <function>trace</function></para>
+ <para>Beräkna spåret av en matris. Det vill säga summan av de diagonala elementen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Trace_(linear_algebra)">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/Trace">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Transpose"/>Transpose</term>
+ <listitem>
+ <synopsis>Transpose (M)</synopsis>
+ <para>Transponatet av en matris. Detta är det samma som <userinput>.'</userinput>-operatorn.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Transpose">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/Transpose">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VandermondeMatrix"/>VandermondeMatrix</term>
+ <listitem>
+ <synopsis>VandermondeMatrix (v)</synopsis>
+ <para>Alias: <function>vander</function></para>
+ <para>Returnera Vandermondematrisen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Vandermonde_matrix">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorAngle"/>VectorAngle</term>
+ <listitem>
+ <synopsis>VectorAngle (v,w,B...)</synopsis>
+ <para>Vinkeln av två vektorer med avseende på en inre produkt given av <varname>B</varname>. Om
<varname>B</varname> inte är angiven används den vanliga hermiteska produkten. <varname>B</varname> kan
antingen vara en seskvilinjär funktion av två argument eller så kan det vara en matris som ger en
seskvilinjär form.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSpaceDirectSum"/>VectorSpaceDirectSum</term>
+ <listitem>
+ <synopsis>VectorSpaceDirectSum (M,N)</synopsis>
+ <para>Den direkta summan av vektorrummen M och N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceIntersection"/>VectorSubspaceIntersection</term>
+ <listitem>
+ <synopsis>VectorSubspaceIntersection (M,N)</synopsis>
+ <para>Snitt av underrummen angivna av M och N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorSubspaceSum"/>VectorSubspaceSum</term>
+ <listitem>
+ <synopsis>VectorSubspaceSum (M,N)</synopsis>
+ <para>Summan av vektorrummen M och N, det vill säga {w | w=m+n, m i M, n i N}.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-adj"/>adj</term>
+ <listitem>
+ <synopsis>adj (m)</synopsis>
+ <para>Alias: <function>Adjugate</function></para>
+ <para>Hämta den klassiska adjunkten (transponatet av kofaktormatrisen) av en matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cref"/>cref</term>
+ <listitem>
+ <synopsis>cref (M)</synopsis>
+ <para>Alias: <function>CREF</function><function>ColumnReducedEchelonForm</function></para>
+ <para>Beräkna den kolumnreducerade trappstegsformen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-det"/>det</term>
+ <listitem>
+ <synopsis>det (M)</synopsis>
+ <para>Alias: <function>Determinant</function></para>
+ <para>Hämta determinanten av en matris.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Determinant">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/Determinant2">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ref"/>ref</term>
+ <listitem>
+ <synopsis>ref (M)</synopsis>
+ <para>Alias: <function>REF</function><function>RowEchelonForm</function></para>
+ <para>Hämta trappstegsformen av en matris. Det vill säga tillämpa gausselimination men inte
bakåtaddition till <varname>M</varname>. Pivotraderna divideras så att alla pivoter blir 1.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Row_echelon_form">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/RowEchelonForm">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rref"/>rref</term>
+ <listitem>
+ <synopsis>rref (M)</synopsis>
+ <para>Alias: <function>RREF</function><function>ReducedRowEchelonForm</function></para>
+ <para>Hämta den radreducerade trappstegsformen av en matris. Det vill säga tillämpa
gausselimination tillsammans med bakåtaddition till <varname>M</varname>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Reduced_row_echelon_form">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/ReducedRowEchelonForm">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-combinatorics">
+ <title>Kombinatorik</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Catalan"/>Catalan</term>
+ <listitem>
+ <synopsis>Catalan (n)</synopsis>
+ <para>Hämta det <varname>n</varname>:e Catalantalet.</para>
+ <para>Se <ulink url="http://planetmath.org/CatalanNumbers">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Combinations"/>Combinations</term>
+ <listitem>
+ <synopsis>Combinations (k,n)</synopsis>
+ <para>Hämta alla kombinationer av k tal från 1 till n som en vektor av vektorer. (Se även <link
linkend="gel-function-NextCombination">NextCombination</link>)</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DoubleFactorial"/>DoubleFactorial</term>
+ <listitem>
+ <synopsis>DoubleFactorial (n)</synopsis>
+ <para>Semifakultet: <userinput>n(n-2)(n-4)...</userinput></para>
+ <para>Se <ulink url="http://planetmath.org/DoubleFactorial">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Factorial"/>Factorial</term>
+ <listitem>
+ <synopsis>Factorial (n)</synopsis>
+ <para>Fakultet: <userinput>n(n-1)(n-2)...</userinput></para>
+ <para>Se <ulink url="http://planetmath.org/Factorial">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FallingFactorial"/>FallingFactorial</term>
+ <listitem>
+ <synopsis>FallingFactorial (n,k)</synopsis>
+ <para>Fallande fakultet: <userinput>(n)_k = n(n-1)...(n-(k-1))</userinput></para>
+ <para>Se <ulink url="http://planetmath.org/FallingFactorial">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Fibonacci"/>Fibonacci</term>
+ <listitem>
+ <synopsis>Fibonacci (x)</synopsis>
+ <para>Alias: <function>fib</function></para>
+ <para>Beräkna det <varname>n</varname>:e Fibonaccitalet. Det vill säga numret som definieras
rekursivt av <userinput>Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)</userinput> och
<userinput>Fibonacci(1) = Fibonacci(2) = 1</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fibonacci_number">Wikipedia</ulink> eller
<ulink url="http://planetmath.org/FibonacciSequence">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/FibonacciNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FrobeniusNumber"/>FrobeniusNumber</term>
+ <listitem>
+ <synopsis>FrobeniusNumber (v,arg...)</synopsis>
+ <para>Beräkna Frobeniustalet. Det vill säga beräkna det största tal som inte kan anges som en
icke-negativ linjär heltalskombination av en given vektor av icke-negativa tal. Vektorn kan ges som separata
tal eller en ensam vektor. Alla angivna tal ska ha SGD 1.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Coin_problem">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FrobeniusNumber.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaloisMatrix"/>GaloisMatrix</term>
+ <listitem>
+ <synopsis>GaloisMatrix (kombineringsregel)</synopsis>
+ <para>Galois-matris givet en linjär kombineringsregel (a_1*x_1+...+a_n*x_n=x_(n+1)).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GreedyAlgorithm"/>GreedyAlgorithm</term>
+ <listitem>
+ <synopsis>GreedyAlgorithm (n,v)</synopsis>
+ <para>Hitta vektorn <varname>c</varname> av icke-negativa heltal så att skalärprodukten med
<varname>v</varname> är lika med n. Om inte möjligt returneras <constant>null</constant>.
<varname>v</varname> bör anges sorterad i ökande ordning och bestå av icke-negativa heltal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Greedy_algorithm">Wikipedia</ulink> eller
<ulink url="http://mathworld.wolfram.com/GreedyAlgorithm.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HarmonicNumber"/>HarmonicNumber</term>
+ <listitem>
+ <synopsis>HarmonicNumber (n,r)</synopsis>
+ <para>Alias: <function>HarmonicH</function></para>
+ <para>Harmoniskt tal, det <varname>n</varname>:e harmoniska talet av ordning <varname>r</varname>.
Det vill säga summan av <userinput>1/k^r</userinput> för <varname>k</varname> från 1 till n. Ekvivalent med
<userinput>sum k = 1 to n do 1/k^r</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Harmonic_number">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Hofstadter"/>Hofstadter</term>
+ <listitem>
+ <synopsis>Hofstadter (n)</synopsis>
+ <para>Hofstadters funktion q(n) definierad av q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Hofstadter_sequence">Wikipedia</ulink> för mer
information. Sekvensen är <ulink url="https://oeis.org/A005185">A005185 i OEIS</ulink>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinearRecursiveSequence"/>LinearRecursiveSequence</term>
+ <listitem>
+ <synopsis>LinearRecursiveSequence (frövärden,kombineringsregel,n)</synopsis>
+ <para>Beräkna linjär rekursiv sekvens med Galois-stegning.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Multinomial"/>Multinomial</term>
+ <listitem>
+ <synopsis>Multinomial (v,arg...)</synopsis>
+ <para>Beräkna multinomialkoefficienter. Tar en vektor av <varname>k</varname> icke-negativa heltal
och beräknar multinomialkoefficienten. Denna motsvarar koefficienten i det homogena polynomet i
<varname>k</varname> variabler med motsvarande potenser.</para>
+ <para>Formeln för <userinput>Multinomial(a,b,c)</userinput> kan skrivas som:
<programlisting>(a+b+c)! / (a!b!c!)
+</programlisting> Med andra ord, om vi bara skulle ha två element så är
<userinput>Multinomial(a,b)</userinput> samma sak som <userinput>Binomial(a+b,a)</userinput> eller
<userinput>Binomial(a+b,b)</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Multinomial_theorem">Wikipedia</ulink>, <ulink
url="http://planetmath.org/MultinomialTheorem">Planetmath</ulink> eller <ulink
url="http://mathworld.wolfram.com/MultinomialCoefficient.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NextCombination"/>NextCombination</term>
+ <listitem>
+ <synopsis>NextCombination (v,n)</synopsis>
+ <para>Hämta kombination som skulle komma efter v i anrop till kombinationer, första kombination
skulle vara <userinput>[1:k]</userinput>. Denna funktion är användbar om du har många kombinationer att gå
igenom och du inte vill slösa minne med att lagra dem alla.</para>
+ <para>Till exempel med Combinations skulle du vanligen skriva en slinga som: <screen><userinput>for
n in Combinations (4,6) do (
+ EnFunktion (n)
+);</userinput>
+</screen> Men med NextCombination skulle du skriva något som: <screen><userinput>n:=[1:4];
+do (
+ EnFunktion (n)
+) while not IsNull(n:=NextCombination(n,6));</userinput>
+</screen> Se även <link linkend="gel-function-Combinations">Combinations</link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Combination">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Pascal"/>Pascal</term>
+ <listitem>
+ <synopsis>Pascal (i)</synopsis>
+ <para>Hämta Pascals triangel som en matris. Detta kommer att returnera en
(<varname>i</varname>+1)×(<varname>i</varname>+1) nedåt diagonal matris som är Pascals triangel efter
<varname>i</varname> iterationer.</para>
+ <para>Se <ulink url="http://planetmath.org/PascalsTriangle">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Permutations"/>Permutations</term>
+ <listitem>
+ <synopsis>Permutations (k,n)</synopsis>
+ <para>Hämta alla permutationer av <varname>k</varname> tal från 1 till <varname>n</varname> som en
vektor av vektorer.</para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RisingFactorial"/>RisingFactorial</term>
+ <listitem>
+ <synopsis>RisingFactorial (n,k)</synopsis>
+ <para>Alias: <function>Pochhammer</function></para>
+ <para>(Pochhammer) Stigande fakultet: (n)_k = n(n+1)…(n+(k-1)).</para>
+ <para>Se <ulink url="http://planetmath.org/RisingFactorial">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberFirst"/>StirlingNumberFirst</term>
+ <listitem>
+ <synopsis>StirlingNumberFirst (n,m)</synopsis>
+ <para>Alias: <function>StirlingS1</function></para>
+ <para>Stirlingtal av första slaget.</para>
+ <para>Se <ulink url="http://planetmath.org/StirlingNumbersOfTheFirstKind">Planetmath</ulink> eller
<ulink url="http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StirlingNumberSecond"/>StirlingNumberSecond</term>
+ <listitem>
+ <synopsis>StirlingNumberSecond (n,m)</synopsis>
+ <para>Alias: <function>StirlingS2</function></para>
+ <para>Stirlingtal av andra slaget.</para>
+ <para>Se <ulink url="http://planetmath.org/StirlingNumbersSecondKind">Planetmath</ulink> eller
<ulink url="http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Subfactorial"/>Subfactorial</term>
+ <listitem>
+ <synopsis>Subfactorial (n)</synopsis>
+ <para>Derangemang: n! gånger sum_{k=0}^n (-1)^k/k!.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Triangular"/>Triangular</term>
+ <listitem>
+ <synopsis>Triangular (n)</synopsis>
+ <para>Beräkna det <varname>n</varname>:e triangeltalet.</para>
+ <para>Se <ulink url="http://planetmath.org/TriangularNumbers">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nCr"/>nCr</term>
+ <listitem>
+ <synopsis>nCr (n,r)</synopsis>
+ <para>Alias: <function>Binomial</function></para>
+ <para>Beräkna kombinationer, det vill säga binomialkoefficienten. <varname>n</varname> kan vara
ett godtyckligt reellt tal.</para>
+ <para>Se <ulink url="http://planetmath.org/Choose">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-nPr"/>nPr</term>
+ <listitem>
+ <synopsis>nPr (n,r)</synopsis>
+ <para>Beräkna antalet permutationer av storlek <varname>r</varname> av tal från 1 till
<varname>n</varname>.</para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/Permutation.html">Mathworld</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Permutation">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-calculus">
+ <title>Kalkyl</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-CompositeSimpsonsRule"/>CompositeSimpsonsRule</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRule (f,a,b,n)</synopsis>
+ <para>Integration av f med sammansatt Simpsons regel på intervallet [a,b] med n underintervall med
fel högst max(f'''')*h^4*(b-a)/180, observera att n ska vara jämn.</para>
+ <para>Se <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-CompositeSimpsonsRuleTolerance"/>CompositeSimpsonsRuleTolerance</term>
+ <listitem>
+ <synopsis>CompositeSimpsonsRuleTolerance (f,a,b,FjärdederivataBegränsning,Tolerans)</synopsis>
+ <para>Integration av f med sammansatt Simpsons regel på intervallet [a,b] med antalet steg
beräknat av fjärdederivatans begränsning och den önskade toleransen.</para>
+ <para>Se <ulink url="http://planetmath.org/SimpsonsRule">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Derivative"/>Derivative</term>
+ <listitem>
+ <synopsis>Derivative (f,x0)</synopsis>
+ <para>Försök att beräkna derivata genom att först försöka symboliskt och sedan numeriskt.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EvenPeriodicExtension"/>EvenPeriodicExtension</term>
+ <listitem>
+ <synopsis>EvenPeriodicExtension (f,L)</synopsis>
+ <para>Returnera en funktion som är den jämna periodiska utvidgningen av <function>f</function> med
halvperiod <varname>L</varname>. Det vill säga en funktion definierad på intervallet
<userinput>[0,L]</userinput> utvidgad att vara jämn på <userinput>[-L,L]</userinput> och sedan utvidgad för
att vara periodisk med perioden <userinput>2*L</userinput>.</para>
+ <para>Se även <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> och
<link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FourierSeriesFunction"/>FourierSeriesFunction</term>
+ <listitem>
+ <synopsis>FourierSeriesFunction (a,b,L)</synopsis>
+ <para>Returnera en funktion som är en Fourierserie med koefficienterna angivna av vektorerna
<varname>a</varname> (sinus) och <varname>b</varname> (cosinus). Observera att <userinput>a@(1)</userinput>
är den konstanta koefficienten! Det vill säga, <userinput>a@(n)</userinput> avser termen
<userinput>cos(x*(n-1)*pi/L)</userinput>, medan <userinput>b@(n)</userinput> avser termen
<userinput>sin(x*n*pi/L)</userinput>. Antingen <varname>a</varname> eller <varname>b</varname> kan vara
<constant>null</constant>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct"/>InfiniteProduct</term>
+ <listitem>
+ <synopsis>InfiniteProduct (funk,start,ökn)</synopsis>
+ <para>Försök beräkna en oändlig produkt för en funktion med en parameter.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteProduct2"/>InfiniteProduct2</term>
+ <listitem>
+ <synopsis>InfiniteProduct2 (func,arg,start,ökn)</synopsis>
+ <para>Försök beräkna en oändlig produkt för en funktion med dubbel parameter med
func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum"/>InfiniteSum</term>
+ <listitem>
+ <synopsis>InfiniteSum (funk,start,ökn)</synopsis>
+ <para>Försök beräkna en oändlig summa för en funktion med en parameter.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-InfiniteSum2"/>InfiniteSum2</term>
+ <listitem>
+ <synopsis>InfiniteSum2 (func,arg,start,ökn)</synopsis>
+ <para>Försök beräkna en oändlig summa för en funktion med dubbel parameter med func(arg,n).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsContinuous"/>IsContinuous</term>
+ <listitem>
+ <synopsis>IsContinuous (f,x0)</synopsis>
+ <para>Testa och se om en reellvärd funktion är kontinuerlig vid x0 genom att beräkna gränsvärdet
där.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsDifferentiable"/>IsDifferentiable</term>
+ <listitem>
+ <synopsis>IsDifferentiable (f,x0)</synopsis>
+ <para>Testa för differentierbarhet genom att approximera vänster- och högergränsvärden och
jämföra.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LeftLimit"/>LeftLimit</term>
+ <listitem>
+ <synopsis>LeftLimit (f,x0)</synopsis>
+ <para>Beräkna vänstergränsvärdet för en reellvärd funktion vid x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Limit"/>Limit</term>
+ <listitem>
+ <synopsis>Limit (f,x0)</synopsis>
+ <para>Beräkna gränsvärdet för en reellvärd funktion vid x0. Försöker beräkna både vänster- och
högergränsvärden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MidpointRule"/>MidpointRule</term>
+ <listitem>
+ <synopsis>MidpointRule (f,a,b,n)</synopsis>
+ <para>Integration med mittpunktsregeln.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalDerivative"/>NumericalDerivative</term>
+ <listitem>
+ <synopsis>NumericalDerivative (f,x0)</synopsis>
+ <para>Alias: <function>NDerivative</function></para>
+ <para>Försök beräkna numerisk derivata.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesCoefficients"/>NumericalFourierSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesCoefficients (f,L,N)</synopsis>
+ <para>Returnera en vektor av vektorer <userinput>[a,b]</userinput> där <varname>a</varname> är
cosinuskoefficienterna och <varname>b</varname> är sinuskoefficienterna för Fourierserien av
<function>f</function> med halvperiod <varname>L</varname> (det vill säga definierad på
<userinput>[-L,L]</userinput> och utvidgad periodiskt) med koefficienter upp till <varname>N</varname>:e
deltonen beräknade numeriskt. Koefficienterna beräknas med numerisk integration med <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSeriesFunction"/>NumericalFourierSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSeriesFunction (f,L,N)</synopsis>
+ <para>Returnera en funktion som är Fourierserien av <function>f</function> med halvperiod
<varname>L</varname> (det vill säga definierad på <userinput>[-L,L]</userinput> och utvidgad periodiskt) med
koefficienter upp till <varname>N</varname>:e deltonen beräknade numeriskt. Detta är den trigonometriska
reella serien som byggs upp av sinus och cosinus. Koefficienterna beräknas med numerisk integration med <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierSeries.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesCoefficients"/>NumericalFourierCosineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Returnera en vektor av koefficienter för cosinus-Fourierserien av <function>f</function> med
halvperiod <varname>L</varname>. Det vill säga vi tar <function>f</function> definierad på
<userinput>[0,L]</userinput> och tar den jämna periodiska utvidgningen och beräknar Fourierserien, som endast
har cosinustermer. Serien beräknas upp till <varname>N</varname>:e deltonen. Koefficienterna beräknas med
numerisk integration med <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>. Observera att
<userinput>a@(1)</userinput> är den konstanta koefficienten! Det vill säga, <userinput>a@(n)</userinput>
avser termen <userinput>cos(x*(n-1)*pi/L)</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierCosineSeriesFunction"/>NumericalFourierCosineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierCosineSeriesFunction (f,L,N)</synopsis>
+ <para>Returnera en funktion som är cosinus-Fourierserien av <function>f</function> med halvperiod
<varname>L</varname>. Det vill säga vi tar <function>f</function> definierad på <userinput>[0,L]</userinput>
och tar den jämna periodiska utvidgningen och beräknar Fourierserien, som endast har cosinustermer. Serien
beräknas upp till <varname>N</varname>:e deltonen. Koefficienterna beräknas med numerisk integration med
<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierCosineSeries.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesCoefficients"/>NumericalFourierSineSeriesCoefficients</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesCoefficients (f,L,N)</synopsis>
+ <para>Returnera en vektor av koefficienter för sinus-Fourierserien av <function>f</function> med
halvperiod <varname>L</varname>. Det vill säga vi tar <function>f</function> definierad på
<userinput>[0,L]</userinput> och tar den udda periodiska utvidgningen och beräknar Fourierserien, som endast
har sinustermer. Serien beräknas upp till <varname>N</varname>:e deltonen. Koefficienterna beräknas med
numerisk integration med <link
linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-NumericalFourierSineSeriesFunction"/>NumericalFourierSineSeriesFunction</term>
+ <listitem>
+ <synopsis>NumericalFourierSineSeriesFunction (f,L,N)</synopsis>
+ <para>Returnera en funktion som är sinus-Fourierserien av <function>f</function> med halvperiod
<varname>L</varname>. Det vill säga vi tar <function>f</function> definierad på <userinput>[0,L]</userinput>
och tar den udda periodiska utvidgningen och beräknar Fourierserien, som endast har sinustermer. Serien
beräknas upp till <varname>N</varname>:e deltonen. Koefficienterna beräknas med numerisk integration med
<link linkend="gel-function-NumericalIntegral"><function>NumericalIntegral</function></link>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Fourier_series">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/FourierSineSeries.html">Mathworld</ulink> för mer information.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalIntegral"/>NumericalIntegral</term>
+ <listitem>
+ <synopsis>NumericalIntegral (f,a,b)</synopsis>
+ <para>Integration efter regel inställd i NumericalIntegralFunction av f från a till b med
NumericalIntegralSteps steg.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLeftDerivative"/>NumericalLeftDerivative</term>
+ <listitem>
+ <synopsis>NumericalLeftDerivative (f,x0)</synopsis>
+ <para>Försök beräkna numerisk vänsterderivata.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalLimitAtInfinity"/>NumericalLimitAtInfinity</term>
+ <listitem>
+ <synopsis>NumericalLimitAtInfinity (_f,step_fun,tolerans,upprepade_som_ger_lyckat,N)</synopsis>
+ <para>Försök beräkna gränsvärdet av f(step_fun(i)) medan i går från 1 till N.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NumericalRightDerivative"/>NumericalRightDerivative</term>
+ <listitem>
+ <synopsis>NumericalRightDerivative (f,x0)</synopsis>
+ <para>Försök beräkna numerisk högerderivata.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OddPeriodicExtension"/>OddPeriodicExtension</term>
+ <listitem>
+ <synopsis>OddPeriodicExtension (f,L)</synopsis>
+ <para>Returnera en funktion som är den udda periodiska utvidgningen av <function>f</function> med
halvperiod <varname>L</varname>. Det vill säga en funktion definierad på intervallet
<userinput>[0,L]</userinput> utvidgad att vara udda på <userinput>[-L,L]</userinput> och sedan utvidgad för
att vara periodisk med perioden <userinput>2*L</userinput>.</para>
+ <para>Se även <link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link> och
<link linkend="gel-function-PeriodicExtension">PeriodicExtension</link>.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedFivePointFormula"/>OneSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Beräkna ensidig derivata med fempunktsformel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-OneSidedThreePointFormula"/>OneSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>OneSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Beräkna ensidig derivata med trepunktsformel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PeriodicExtension"/>PeriodicExtension</term>
+ <listitem>
+ <synopsis>PeriodicExtension (f,a,b)</synopsis>
+ <para>Returnera en funktion som är den periodiska utvidgningen av <function>f</function> definierad
på intervallet <userinput>[a,b]</userinput> och har perioden <userinput>b-a</userinput>.</para>
+ <para>Se även <link linkend="gel-function-OddPeriodicExtension">OddPeriodicExtension</link> och
<link linkend="gel-function-EvenPeriodicExtension">EvenPeriodicExtension</link>.</para>
+ <para>Version 1.0.7 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RightLimit"/>RightLimit</term>
+ <listitem>
+ <synopsis>RightLimit (f,x0)</synopsis>
+ <para>Beräkna högergränsvärdet för en reellvärd funktion vid x0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedFivePointFormula"/>TwoSidedFivePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedFivePointFormula (f,x0,h)</synopsis>
+ <para>Beräkna tvåsidig derivata med fempunktsformel.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TwoSidedThreePointFormula"/>TwoSidedThreePointFormula</term>
+ <listitem>
+ <synopsis>TwoSidedThreePointFormula (f,x0,h)</synopsis>
+ <para>Beräkna tvåsidig derivata med trepunktsformel.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-functions">
+ <title>Funktioner</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Argument"/>Argument</term>
+ <listitem>
+ <synopsis>Argument (z)</synopsis>
+ <para>Alias: <function>Arg</function><function>arg</function></para>
+ <para>argument (vinkel) för komplext tal.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ0"/>BesselJ0</term>
+ <listitem>
+ <synopsis>BesselJ0 (x)</synopsis>
+ <para>Besselfunktion av första slaget av ordning 0. Endast implementerad för reella tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJ1"/>BesselJ1</term>
+ <listitem>
+ <synopsis>BesselJ1 (x)</synopsis>
+ <para>Besselfunktion av första slaget av ordning 1. Endast implementerad för reella tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselJn"/>BesselJn</term>
+ <listitem>
+ <synopsis>BesselJn (n,x)</synopsis>
+ <para>Besselfunktion av första slaget av ordning <varname>n</varname>. Endast implementerad för
reella tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY0"/>BesselY0</term>
+ <listitem>
+ <synopsis>BesselY0 (x)</synopsis>
+ <para>Besselfunktion av andra slaget av ordning 0. Endast implementerad för reella tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselY1"/>BesselY1</term>
+ <listitem>
+ <synopsis>BesselY1 (x)</synopsis>
+ <para>Besselfunktion av andra slaget av ordning 1. Endast implementerad för reella tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-BesselYn"/>BesselYn</term>
+ <listitem>
+ <synopsis>BesselYn (n,x)</synopsis>
+ <para>Besselfunktion av andra slaget av ordning <varname>n</varname>. Endast implementerad för
reella tal.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Bessel_functions">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DirichletKernel"/>DirichletKernel</term>
+ <listitem>
+ <synopsis>DirichletKernel (n,t)</synopsis>
+ <para>Dirichletkärna av ordning <varname>n</varname>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DiscreteDelta"/>DiscreteDelta</term>
+ <listitem>
+ <synopsis>DiscreteDelta (v)</synopsis>
+ <para>Returnerar 1 om och endast om alla element är noll.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-ErrorFunction"/>ErrorFunction</term>
+ <listitem>
+ <synopsis>ErrorFunction (x)</synopsis>
+ <para>Alias: <function>erf</function></para>
+ <para>Felfunktionen, 2/sqrt(2) * int_0^x e^(-t^2) dt.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Error_function">Wikipedia</ulink> eller <ulink
url="http://planetmath.org/ErrorFunction">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FejerKernel"/>FejerKernel</term>
+ <listitem>
+ <synopsis>FejerKernel (n,t)</synopsis>
+ <para>Fejerkärna av ordning <varname>n</varname> beräknad vid <varname>t</varname></para>
+ <para>Se <ulink url="http://planetmath.org/FejerKernel">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GammaFunction"/>GammaFunction</term>
+ <listitem>
+ <synopsis>GammaFunction (x)</synopsis>
+ <para>Alias: <function>Gamma</function></para>
+ <para>Gammafunktionen. För närvarande bara implementerad för reella värden.</para>
+ <para>Se <ulink url="http://planetmath.org/GammaFunction">Planetmath</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Gamma_function">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-KroneckerDelta"/>KroneckerDelta</term>
+ <listitem>
+ <synopsis>KroneckerDelta (v)</synopsis>
+ <para>Returnerar 1 om och endast om alla element är lika.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertW"/>LambertW</term>
+ <listitem>
+ <synopsis>LambertW (x)</synopsis>
+ <para>Huvudgrenen av Lamberts W-funktion beräknad endast för reella värden större än eller lika med
<userinput>-1/e</userinput>. Det vill säga <function>LambertW</function> är inversen av
<userinput>x*e^x</userinput>. Även för reella värden på <varname>x</varname> är detta uttryck inte 1 till 1
och har därför två grenar över <userinput>[-1/e,0)</userinput>. Se <link
linkend="gel-function-LambertWm1"><function>LambertWm1</function></link> för den andra reella grenen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LambertWm1"/>LambertWm1</term>
+ <listitem>
+ <synopsis>LambertWm1 (x)</synopsis>
+ <para>Minus-ett-grenen av Lamberts W-funktion beräknad endast för reella värden större än eller
lika med <userinput>-1/e</userinput> och mindre än 0. Det vill säga <function>LambertWm1</function> är den
andra grenen av inversen av <userinput>x*e^x</userinput>. Se <link
linkend="gel-function-LambertW"><function>LambertW</function></link> för huvudgrenen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Lambert_W_function">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MinimizeFunction"/>MinimizeFunction</term>
+ <listitem>
+ <synopsis>MinimizeFunction (funk,x,ökn)</synopsis>
+ <para>Hitta det första värdet där f(x)=0.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusDiskMapping"/>MoebiusDiskMapping</term>
+ <listitem>
+ <synopsis>MoebiusDiskMapping (a,z)</synopsis>
+ <para>Möbiusavbildning av skivan till sig själv som avbildar a till 0.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMapping"/>MoebiusMapping</term>
+ <listitem>
+ <synopsis>MoebiusMapping (z,z2,z3,z4)</synopsis>
+ <para>Möbiusavbildning som använder dubbelförhållandet som tar z2,z3,z4 till 1, 0 respektive
oändligheten.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToInfty"/>MoebiusMappingInftyToInfty</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToInfty (z,z2,z3)</synopsis>
+ <para>Möbiusavbildning som använder dubbelförhållandet som tar oändligheten till oändligheten och
z2,z3 till 1 respektive 0.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToOne"/>MoebiusMappingInftyToOne</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToOne (z,z3,z4)</synopsis>
+ <para>Möbiusavbildning som använder dubbelförhållandet som tar oändligheten till 1 och z3,z4 till
0 respektive oändligheten.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MoebiusMappingInftyToZero"/>MoebiusMappingInftyToZero</term>
+ <listitem>
+ <synopsis>MoebiusMappingInftyToZero (z,z2,z4)</synopsis>
+ <para>Möbiusavbildning som använder dubbelförhållandet som tar oändligheten till 0 och z2,z4 till
1 respektive oändligheten.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/M%C3%B6bius_transformation">Wikipedia</ulink>
eller <ulink url="http://planetmath.org/MobiusTransformation">Planetmath</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernel"/>PoissonKernel</term>
+ <listitem>
+ <synopsis>PoissonKernel (r,sigma)</synopsis>
+ <para>Poissonkärna på D(0,1) (inte normaliserad till 1, det vill säga integral av detta är
2pi).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PoissonKernelRadius"/>PoissonKernelRadius</term>
+ <listitem>
+ <synopsis>PoissonKernelRadius (r,sigma)</synopsis>
+ <para>Poissonkärna på D(0,R) (inte normaliserad till 1).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RiemannZeta"/>RiemannZeta</term>
+ <listitem>
+ <synopsis>RiemannZeta (x)</synopsis>
+ <para>Alias: <function>zeta</function></para>
+ <para>Riemanns zetafunktion. För närvarande bara implementerad för reella värden.</para>
+ <para>Se <ulink url="http://planetmath.org/RiemannZetaFunction">Planetmath</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Riemann_zeta_function">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-UnitStep"/>UnitStep</term>
+ <listitem>
+ <synopsis>UnitStep (x)</synopsis>
+ <para>Enhetsstegfunktionen är 0 för x<0, 1 annars. Detta är integralen för Diracs
delta-funktion. Också kallad Heavisidefunktionen.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Unit_step">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-cis"/>cis</term>
+ <listitem>
+ <synopsis>cis (x)</synopsis>
+ <para><function>cis</function>-funktionen, detta är samma sak som
<userinput>cos(x)+1i*sin(x)</userinput></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-deg2rad"/>deg2rad</term>
+ <listitem>
+ <synopsis>deg2rad (x)</synopsis>
+ <para>Konvertera grader till radianer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-rad2deg"/>rad2deg</term>
+ <listitem>
+ <synopsis>rad2deg (x)</synopsis>
+ <para>Konvertera radianer till grader.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-sinc"/>sinc</term>
+ <listitem>
+ <synopsis>sinc (x)</synopsis>
+ <para>Beräknar den onormaliserade sinc-funktionen, det vill säga <userinput>sin(x)/x</userinput>.
Om du vill ha den normaliserade funktionen, anropa <userinput>sinc(pi*x)</userinput>.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Sinc">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-equation-solving">
+ <title>Ekvationslösning</title>
+ <variablelist>
+
+ <varlistentry>
+ <term><anchor id="gel-function-CubicFormula"/>CubicFormula</term>
+ <listitem>
+ <synopsis>CubicFormula (p)</synopsis>
+ <para>Beräkna rötter för ett tredjegradspolynom med formel. Polynomet ska anges som en vektor av
koefficienter. Det vill säga <userinput>4*x^3 + 2*x + 1</userinput> motsvarar vektorn
<userinput>[1,2,0,4]</userinput>. Returnerar en kolumnvektor av de tre lösningarna. Den första lösningen är
alltid den reella eftersom ett tredjegradspolynom alltid har en reell lösning.</para>
+ <para>Se <ulink url="http://planetmath.org/CubicFormula">Planetmath</ulink>, <ulink
url="http://mathworld.wolfram.com/CubicFormula.html">Mathworld</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Cubic_equation">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethod"/>EulersMethod</term>
+ <listitem>
+ <synopsis>EulersMethod (f,x0,y0,x1,n)</synopsis>
+ <para>Använd Eulers klassiska metod för att numeriskt lösa y'=f(x,y) för initialt
<varname>x0</varname>, <varname>y0</varname> som går till <varname>x1</varname> med <varname>n</varname>
inkrement, returnerar <varname>y</varname> vid <varname>x1</varname>. Om du inte explicit vill använda Eulers
metod bör du verkligen överväga att använda <link linkend="gel-function-RungeKutta">RungeKutta</link> för
lösning av ODE.</para>
+ <para>System kan lösas genom att helt enkelt låta <varname>y</varname> vara en (kolumn)vektor
överallt. Det vill säga, <varname>y0</varname> kan vara en vektor i vilket fall <varname>f</varname> bör ta
ett tal <varname>x</varname> och en vektor av samma storlek som det andra argumentet och bör returnera en
vektor av samma storlek.</para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> eller
<ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-EulersMethodFull"/>EulersMethodFull</term>
+ <listitem>
+ <synopsis>EulersMethodFull (f,x0,y0,x1,n)</synopsis>
+ <para>Använd Eulers klassiska metod för att numeriskt lösa y'=f(x,y) för initialt
<varname>x0</varname>, <varname>y0</varname> som går till <varname>x1</varname> med <varname>n</varname>
inkrement, returnerar en (<userinput>n+1</userinput>)×2-matris med <varname>x</varname>- och
<varname>y</varname>-värdena. Om du inte explicit vill använda Eulers metod bör du verkligen överväga att
använda <link linkend="gel-function-RungeKuttaFull">RungeKuttaFull</link> för lösning av ODE. Lämplig för att
koppla ihop med <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> eller <link
linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponentiell tillväxt");</userinput>
+</screen></para>
+ <para>System kan lösas genom att helt enkelt låta <varname>y</varname> vara en (kolumn)vektor
överallt. Det vill säga, <varname>y0</varname> kan vara en vektor i vilket fall <varname>f</varname> bör ta
ett tal <varname>x</varname> och en vektor av samma storlek som det andra argumentet och bör returnera en
vektor av samma storlek.</para>
+ <para>Utdata för ett system är fortfarande en n×2-matris där den andra posten är en vektor. Om du
vill rita linjen, se till att använda radvektorer och platta sedan till matrisen med <link
linkend="gel-function-ExpandMatrix">ExpandMatrix</link> och välj de rätta kolumnerna. Exempel:
<screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","Första");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Andra");</userinput>
+</screen></para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/EulerForwardMethod.html">Mathworld</ulink> eller
<ulink url="https://en.wikipedia.org/wiki/Eulers_method">Wikipedia</ulink> för mer information.</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootBisection"/>FindRootBisection</term>
+ <listitem>
+ <synopsis>FindRootBisection (f,a,b,TOL,N)</synopsis>
+ <para>Hitta rot för en funktion med bisektionsmetoden. <varname>a</varname> och
<varname>b</varname> är det ursprungliga gissningsintervallet, <userinput>f(a)</userinput> och
<userinput>f(b)</userinput> måste ha olika tecken. <varname>TOL</varname> är den önskade toleransen och
<varname>N</varname> är gränsen för hur många iterationer att köra, 0 betyder ingen gräns. Funktionen
returnerar en vektor <userinput>[lyckad,värde,iteration]</userinput>, där <varname>lyckad</varname> är ett
booleskt värde som indikerar om den lyckats, <varname>värde</varname> är det sista beräknade värdet, och
<varname>iteration</varname> är antalet utförda iterationer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootFalsePosition"/>FindRootFalsePosition</term>
+ <listitem>
+ <synopsis>FindRootFalsePosition (f,a,b,TOL,N)</synopsis>
+ <para>Hitta rot för en funktion med regula falsi-metoden. <varname>a</varname> och
<varname>b</varname> är det ursprungliga gissningsintervallet, <userinput>f(a)</userinput> och
<userinput>f(b)</userinput> måste ha olika tecken. <varname>TOL</varname> är den önskade toleransen och
<varname>N</varname> är gränsen för hur många iterationer att köra, 0 betyder ingen gräns. Funktionen
returnerar en vektor <userinput>[lyckad,värde,iteration]</userinput>, där <varname>lyckad</varname> är ett
booleskt värde som indikerar om den lyckats, <varname>värde</varname> är det sista beräknade värdet, och
<varname>iteration</varname> är antalet utförda iterationer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootMullersMethod"/>FindRootMullersMethod</term>
+ <listitem>
+ <synopsis>FindRootMullersMethod (f,x0,x1,x2,TOL,N)</synopsis>
+ <para>Hitta rot för en funktion med Mullers metod. <varname>TOL</varname> är den önskade
toleransen och <varname>N</varname> är gränsen för antal iterationer att köra, 0 betyder ingen gräns.
Funktionen returnerar en vektor <userinput>[lyckad,värde,iteration]</userinput>, där
<varname>lyckad</varname> är ett booleskt värde som indikerar om den lyckats, <varname>värde</varname> är det
sista beräknade värdet, och <varname>iteration</varname> är antalet utförda iterationer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-FindRootSecant"/>FindRootSecant</term>
+ <listitem>
+ <synopsis>FindRootSecant (f,a,b,TOL,N)</synopsis>
+ <para>Hitta rot för en funktion med sekantmetoden. <varname>a</varname> och <varname>b</varname>
är det ursprungliga gissningsintervallet, <userinput>f(a)</userinput> och <userinput>f(b)</userinput> måste
ha olika tecken. <varname>TOL</varname> är den önskade toleransen och <varname>N</varname> är gränsen för hur
många iterationer att köra, 0 betyder ingen gräns. Funktionen returnerar en vektor
<userinput>[lyckad,värde,iteration]</userinput>, där <varname>lyckad</varname> är ett booleskt värde som
indikerar om den lyckats, <varname>värde</varname> är det sista beräknade värdet, och
<varname>iteration</varname> är antalet utförda iterationer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-HalleysMethod"/>HalleysMethod</term>
+ <listitem>
+ <synopsis>HalleysMethod (f,df,ddf,gissning,epsilon,maxn)</synopsis>
+ <para>Hitta nollpunkter med Halleys metod. <varname>f</varname> är funktionen,
<varname>df</varname> är derivatan av <varname>f</varname>, och <varname>ddf</varname> är andraderivatan av
<varname>f</varname>. <varname>gissning</varname> är den ursprungliga gissningen. Funktionen returnerar efter
att två på varandra följande värden är inom <varname>epsilon</varname> från varandra, eller efter
<varname>maxn</varname> försök, i vilket fall funktionen returnerar sedan <constant>null</constant> vilket
indikerar misslyckande.</para>
+ <para>Se även <link linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>
och <link linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Exempel för att hitta kvadratroten av 10: <screen><prompt>genius></prompt>
<userinput>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</userinput>
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Halley%27s_method">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethod"/>NewtonsMethod</term>
+ <listitem>
+ <synopsis>NewtonsMethod (f,df,gissning,epsilon,maxn)</synopsis>
+ <para>Hitta nollor med Newtons metod. <varname>f</varname> är funktionen och <varname>df</varname>
är derivatan av <varname>f</varname>. <varname>gissning</varname> är den ursprungliga gissningen. Funktionen
returnerar efter två på varandra följande värden inom <varname>epsilon</varname> från varandra, eller efter
<varname>maxn</varname> försök, i vilket fall funktionen returnerar <constant>null</constant> vilket
indikerar misslyckande.</para>
+ <para>Se även <link
linkend="gel-function-NewtonsMethodPoly"><function>NewtonsMethodPoly</function></link> och <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>.</para>
+ <para>Exempel för att hitta kvadratroten av 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</userinput>
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> för mer
information.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolynomialRoots"/>PolynomialRoots</term>
+ <listitem>
+ <synopsis>PolynomialRoots (p)</synopsis>
+ <para>Beräkna rötter för ett polynom (grad 1 till 4) med en av formlerna för sådana polynom.
Polynomet ska anges som en vektor av koefficienter. Det vill säga <userinput>4*x^3 + 2*x + 1</userinput>
motsvarar vektorn <userinput>[1,2,0,4]</userinput>. Returnerar en kolumnvektor av lösningarna.</para>
+ <para>Funktionsanropen <link linkend="gel-function-QuadraticFormula">QuadraticFormula</link>, <link
linkend="gel-function-CubicFormula">CubicFormula</link> och <link
linkend="gel-function-QuarticFormula">QuarticFormula</link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuadraticFormula"/>QuadraticFormula</term>
+ <listitem>
+ <synopsis>QuadraticFormula (p)</synopsis>
+ <para>Beräkna rötter för ett andragradspolynom med formel. Polynomet ska anges som en vektor av
koefficienter. Det vill säga <userinput>3*x^2 + 2*x + 1</userinput> motsvarar vektorn
<userinput>[1,2,3]</userinput>. Returnerar en kolumnvektor av de två lösningarna.</para>
+ <para>Se <ulink url="http://planetmath.org/QuadraticFormula">Planetmath</ulink>, <ulink
url="http://mathworld.wolfram.com/QuadraticFormula.html">Mathworld</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Quadratic_formula">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-QuarticFormula"/>QuarticFormula</term>
+ <listitem>
+ <synopsis>QuarticFormula (p)</synopsis>
+ <para>Beräkna rötter för ett fjärdegradspolynom med formel. Polynomet ska anges som en vektor av
koefficienter. Det vill säga <userinput>5*x^4 + 2*x + 1</userinput> motsvarar vektorn
<userinput>[1,2,0,0,5]</userinput>. Returnerar en kolumnvektor av de fyra lösningarna.</para>
+ <para>Se <ulink url="http://planetmath.org/QuarticFormula">Planetmath</ulink>, <ulink
url="http://mathworld.wolfram.com/QuarticEquation.html">Mathworld</ulink> eller <ulink
url="https://en.wikipedia.org/wiki/Quartic_equation">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKutta"/>RungeKutta</term>
+ <listitem>
+ <synopsis>RungeKutta (f,x0,y0,x1,n)</synopsis>
+ <para>Använd klassisk icke-adaptiv Runge-Kuttametod av fjärde ordningen för att numeriskt lösa
y'=f(x,y) för initialt <varname>x0</varname>, <varname>y0</varname> som går till <varname>x1</varname> med
<varname>n</varname> inkrement, returnerar <varname>y</varname> vid <varname>x1</varname>.</para>
+ <para>System kan lösas genom att helt enkelt låta <varname>y</varname> vara en (kolumn)vektor
överallt. Det vill säga, <varname>y0</varname> kan vara en vektor i vilket fall <varname>f</varname> bör ta
ett tal <varname>x</varname> och en vektor av samma storlek som det andra argumentet och bör returnera en
vektor av samma storlek.</para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> eller
<ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RungeKuttaFull"/>RungeKuttaFull</term>
+ <listitem>
+ <synopsis>RungeKuttaFull (f,x0,y0,x1,n)</synopsis>
+ <para>Använd klassisk icke-adaptiv Runge-Kuttametod av fjärde ordningen för att numeriskt lösa
y'=f(x,y) för initialt <varname>x0</varname>, <varname>y0</varname> som går till <varname>x1</varname> med
<varname>n</varname> inkrement, returnerar en (<userinput>n+1</userinput>)×2-matris med <varname>x</varname>-
och <varname>y</varname>-värdena. Lämplig för att koppla ihop med <link
linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link> eller <link
linkend="gel-function-LinePlotDrawPoints">LinePlotDrawPoints</link>.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponentiell tillväxt");</userinput>
+</screen></para>
+ <para>System kan lösas genom att helt enkelt låta <varname>y</varname> vara en (kolumn)vektor
överallt. Det vill säga, <varname>y0</varname> kan vara en vektor i vilket fall <varname>f</varname> bör ta
ett tal <varname>x</varname> och en vektor av samma storlek som det andra argumentet och bör returnera en
vektor av samma storlek.</para>
+ <para>Utdata för ett system är fortfarande en n×2-matris där den andra posten är en vektor. Om du
vill rita linjen, se till att använda radvektorer och platta sedan till matrisen med <link
linkend="gel-function-ExpandMatrix">ExpandMatrix</link> och välj de rätta kolumnerna. Exempel:
<screen><prompt>genius></prompt> <userinput>LinePlotClear();</userinput>
+<prompt>genius></prompt> <userinput>lines =
RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</userinput>
+<prompt>genius></prompt> <userinput>lines = ExpandMatrix(lines);</userinput>
+<prompt>genius></prompt> <userinput>firstline = lines@(,[1,2]);</userinput>
+<prompt>genius></prompt> <userinput>secondline = lines@(,[1,3]);</userinput>
+<prompt>genius></prompt> <userinput>LinePlotWindow = [0,10,-2,2];</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(firstline,"color","blue","legend","Första");</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Andra");</userinput>
+</screen></para>
+ <para>Se <ulink url="http://mathworld.wolfram.com/Runge-KuttaMethod.html">Mathworld</ulink> eller
<ulink url="https://en.wikipedia.org/wiki/Runge-Kutta_methods">Wikipedia</ulink> för mer information.</para>
+ <para>Version 1.0.10 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-statistics">
+ <title>Statistik</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Average"/>Average</term>
+ <listitem>
+ <synopsis>Average (m)</synopsis>
+ <para>Alias: <function>average</function><function>Mean</function><function>mean</function></para>
+ <para>Beräkna medel (aritmetiskt medelvärde) för en hel matris.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussDistribution"/>GaussDistribution</term>
+ <listitem>
+ <synopsis>GaussDistribution (x,sigma)</synopsis>
+ <para>Integral av GaussFunction från 0 till <varname>x</varname> (area under normalkurvan).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> eller
<ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-GaussFunction"/>GaussFunction</term>
+ <listitem>
+ <synopsis>GaussFunction (x,sigma)</synopsis>
+ <para>Gauss normaliserade distributionsfunktion (normalkurvan).</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Normal_distribution">Wikipedia</ulink> eller
<ulink url="http://mathworld.wolfram.com/NormalDistribution.html">Mathworld</ulink> för mer
information.</para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Median"/>Median</term>
+ <listitem>
+ <synopsis>Median (m)</synopsis>
+ <para>Alias: <function>median</function></para>
+ <para>Beräkna median för en hel matris.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PopulationStandardDeviation"/>PopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>PopulationStandardDeviation (m)</synopsis>
+ <para>Alias: <function>stdevp</function></para>
+ <para>Beräkna populationsstandardavvikelsen för en hel matris.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowAverage"/>RowAverage</term>
+ <listitem>
+ <synopsis>RowAverage (m)</synopsis>
+ <para>Alias: <function>RowMean</function></para>
+ <para>Beräkna medel för varje rad i en matris. Det vill säga beräkna aritmetiskt medelvärde.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Mean">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/ArithmeticMean.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowMedian"/>RowMedian</term>
+ <listitem>
+ <synopsis>RowMedian (m)</synopsis>
+ <para>Beräkna median för varje rad i en matris och returnera en kolumnvektor över
medianerna.</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Median">Wikipedia</ulink> eller <ulink
url="http://mathworld.wolfram.com/StatisticalMedian.html">Mathworld</ulink> för mer information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-RowPopulationStandardDeviation"/>RowPopulationStandardDeviation</term>
+ <listitem>
+ <synopsis>RowPopulationStandardDeviation (m)</synopsis>
+ <para>Alias: <function>rowstdevp</function></para>
+ <para>Beräkna populationsstandardavvikelserna för rader i en matris och returnera en vertikal
vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-RowStandardDeviation"/>RowStandardDeviation</term>
+ <listitem>
+ <synopsis>RowStandardDeviation (m)</synopsis>
+ <para>Alias: <function>rowstdev</function></para>
+ <para>Beräkna standardavvikelserna för rader av en matris och returnera en vertikal vektor.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StandardDeviation"/>StandardDeviation</term>
+ <listitem>
+ <synopsis>StandardDeviation (m)</synopsis>
+ <para>Alias: <function>stdev</function></para>
+ <para>Beräkna standardavvikelsen för en hel matris.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-polynomials">
+ <title>Polynom</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-AddPoly"/>AddPoly</term>
+ <listitem>
+ <synopsis>AddPoly (p1,p2)</synopsis>
+ <para>Addera två polynom (vektorer).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-DividePoly"/>DividePoly</term>
+ <listitem>
+ <synopsis>DividePoly (p,q,&r)</synopsis>
+ <para>Dividera två polynom (som vektorer) med lång division. Returnerar kvoten av de två
polynomen. Det valfria argumentet <varname>r</varname> används för att returnera resten. Rester kommer ha
lägre grad än <varname>q</varname>.</para>
+ <para>Se <ulink url="http://planetmath.org/PolynomialLongDivision">Planetmath</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsPoly"/>IsPoly</term>
+ <listitem>
+ <synopsis>IsPoly (p)</synopsis>
+ <para>Kontrollera om en vektor är användbar som ett polynom.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MultiplyPoly"/>MultiplyPoly</term>
+ <listitem>
+ <synopsis>MultiplyPoly (p1,p2)</synopsis>
+ <para>Multiplicera två polynom (som vektorer).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-NewtonsMethodPoly"/>NewtonsMethodPoly</term>
+ <listitem>
+ <synopsis>NewtonsMethodPoly (poly,gissning,epsilon,maxn)</synopsis>
+ <para>Hitta en rot av ett polynom med Newtons metod. <varname>poly</varname> är polynomet som en
vektor och <varname>gissning</varname> är den ursprungliga gissningen. Funktionen returnerar efter två på
varandra följande värden inom <varname>epsilon</varname> från varandra, eller efter <varname>maxn</varname>
försök, i vilket fall funktionen returnerar <constant>null</constant> vilket indikerar misslyckande.</para>
+ <para>Se även <link
linkend="gel-function-NewtonsMethod"><function>NewtonsMethod</function></link>.</para>
+ <para>Exempel för att hitta kvadratroten av 10: <screen><prompt>genius></prompt>
<userinput>NewtonsMethodPoly([-10,0,1],3,10^-10,100)</userinput>
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Newtons_method">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Poly2ndDerivative"/>Poly2ndDerivative</term>
+ <listitem>
+ <synopsis>Poly2ndDerivative (p)</synopsis>
+ <para>Ta andraderivata av polynom (som vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyDerivative"/>PolyDerivative</term>
+ <listitem>
+ <synopsis>PolyDerivative (p)</synopsis>
+ <para>Ta derivata av polynom (som vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToFunction"/>PolyToFunction</term>
+ <listitem>
+ <synopsis>PolyToFunction (p)</synopsis>
+ <para>Skapa funktion av ett polynom (som en vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PolyToString"/>PolyToString</term>
+ <listitem>
+ <synopsis>PolyToString (p,var...)</synopsis>
+ <para>Skapa sträng av ett polynom (som en vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SubtractPoly"/>SubtractPoly</term>
+ <listitem>
+ <synopsis>SubtractPoly (p1,p2)</synopsis>
+ <para>Subtrahera två polynom (som vektorer).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-TrimPoly"/>TrimPoly</term>
+ <listitem>
+ <synopsis>TrimPoly (p)</synopsis>
+ <para>Ta bort nollor från ett polynom (som vektor).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-set-theory">
+ <title>Mängdlära</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-Intersection"/>Intersection</term>
+ <listitem>
+ <synopsis>Intersection (X,Y)</synopsis>
+ <para>Returnerar det mängdteoretiska snittet av X och Y (X och Y är vektorer som föreställer att
vara mängder).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsIn"/>IsIn</term>
+ <listitem>
+ <synopsis>IsIn (x,X)</synopsis>
+ <para>Returnerar <constant>true</constant> (sant) om elementet x är i mängden X (där X är en vektor
som föreställer att vara en mängd).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-IsSubset"/>IsSubset</term>
+ <listitem>
+ <synopsis>IsSubset (X, Y)</synopsis>
+ <para>Returnerar <constant>true</constant> (sant) om X är en delmängd av Y (X och Y är vektorer som
föreställer att vara mängder).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MakeSet"/>MakeSet</term>
+ <listitem>
+ <synopsis>MakeSet (X)</synopsis>
+ <para>Returnerar en mängd där varje element i X förekommer endast en gång.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SetMinus"/>SetMinus</term>
+ <listitem>
+ <synopsis>SetMinus (X,Y)</synopsis>
+ <para>Returnerar den mängdteoretiska differensen X-Y (X och Y är vektorer som föreställer att vara
mängder).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-Union"/>Union</term>
+ <listitem>
+ <synopsis>Union (X,Y)</synopsis>
+ <para>Returnerar den mängdteoretiska unionen av X och Y (X och Y är vektorer som föreställer att
vara mängder).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-commutative-algebra">
+ <title>Kommutativ algebra</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayBound"/>MacaulayBound</term>
+ <listitem>
+ <synopsis>MacaulayBound (c,d)</synopsis>
+ <para>För en Hilbertfunktion som är c för grad d, givet Macaulay-gränsen för Hilbertfunktionen av
grad d+1 (c^<d>-operatorn från Greens bevis).</para>
+ <para>Version 1.0.15 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayLowerOperator"/>MacaulayLowerOperator</term>
+ <listitem>
+ <synopsis>MacaulayLowerOperator (c,d)</synopsis>
+ <para>c_<d>-operatorn från Greens bevis för Macaulays sats.</para>
+ <para>Version 1.0.15 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-MacaulayRep"/>MacaulayRep</term>
+ <listitem>
+ <synopsis>MacaulayRep (c,d)</synopsis>
+ <para>Returnera den d:e Macaulayrepresentationen av ett positivt heltal c.</para>
+ <para>Version 1.0.15 och framåt.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-miscellaneous">
+ <title>Diverse</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ASCIIToString"/>ASCIIToString</term>
+ <listitem>
+ <synopsis>ASCIIToString (vek)</synopsis>
+ <para>Konvertera en vektor av ASCII-värden till en sträng. Se även <link
linkend="gel-function-StringToASCII"><function>StringToASCII</function></link>.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>ASCIIToString([97,98,99])</userinput>
+= "abc"
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-AlphabetToString"/>AlphabetToString</term>
+ <listitem>
+ <synopsis>AlphabetToString (vek,alfabet)</synopsis>
+ <para>Konvertera en vektor med alfabetsvärdena 0 och uppåt (positioner i alfabetssträngen) till en
sträng. En <constant>null</constant>-vektor resulterar i en tom sträng. Se även <link
linkend="gel-function-StringToAlphabet"><function>StringToAlphabet</function></link>.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>AlphabetToString([1,2,3,0,0],"abcd")</userinput>
+= "bcdaa"
+<prompt>genius></prompt> <userinput>AlphabetToString(null,"abcd")</userinput>
+= ""
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToASCII"/>StringToASCII</term>
+ <listitem>
+ <synopsis>StringToASCII (str)</synopsis>
+ <para>Konvertera en sträng till en (rad)vektor av ASCII-värden. Se även <link
linkend="gel-function-ASCIIToString"><function>ASCIIToString</function></link>.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>StringToASCII("abc")</userinput>
+= [97, 98, 99]
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/ASCII">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-StringToAlphabet"/>StringToAlphabet</term>
+ <listitem>
+ <synopsis>StringToAlphabet (str,alfabet)</synopsis>
+ <para>Konvertera en sträng till en (rad)vektor med alfabetsvärden 0 och uppåt (positioner i
alfabetssträngen), -1 för okända bokstäver. En tom sträng resulterar i <constant>null</constant>. Se även
<link linkend="gel-function-AlphabetToString"><function>AlphabetToString</function></link>.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>StringToAlphabet("cca","abcd")</userinput>
+= [2, 2, 0]
+<prompt>genius></prompt> <userinput>StringToAlphabet("ccag","abcd")</userinput>
+= [2, 2, 0, -1]
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-symbolic">
+ <title>Symboliska operationer</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivative"/>SymbolicDerivative</term>
+ <listitem>
+ <synopsis>SymbolicDerivative (f)</synopsis>
+ <para>Försök att symboliskt differentiera funktionen f, där f är en funktion av en variabel.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>SymbolicDerivative(sin)</userinput>
+= (`(x)=cos(x))
+<prompt>genius></prompt> <userinput>SymbolicDerivative(`(x)=7*x^2)</userinput>
+= (`(x)=(7*(2*x)))
+</screen></para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicDerivativeTry"/>SymbolicDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicDerivativeTry (f)</synopsis>
+ <para>Försök att symboliskt differentiera funktionen f, där f är en funktion av en variabel,
returnerar <constant>null</constant> vid misslyckande men är tyst. (Se <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivative"/>SymbolicNthDerivative</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivative (f,n)</synopsis>
+ <para>Försök att symboliskt differentiera en funktion n gånger. (Se <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SymbolicNthDerivativeTry"/>SymbolicNthDerivativeTry</term>
+ <listitem>
+ <synopsis>SymbolicNthDerivativeTry (f,n)</synopsis>
+ <para>Försök att symboliskt differentiera en funktion n gånger tyst, och returnera
<constant>null</constant> vid misslyckande (Se <link
linkend="gel-function-SymbolicNthDerivative"><function>SymbolicNthDerivative</function></link>)</para>
+ <para>Se <ulink url="https://en.wikipedia.org/wiki/Derivative">Wikipedia</ulink> för mer
information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor
id="gel-function-SymbolicTaylorApproximationFunction"/>SymbolicTaylorApproximationFunction</term>
+ <listitem>
+ <synopsis>SymbolicTaylorApproximationFunction (f,x0,n)</synopsis>
+ <para>Försök att konstruera Taylorapproximationsfunktionen kring x0 till n:e graden. (Se <link
linkend="gel-function-SymbolicDerivative"><function>SymbolicDerivative</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-gel-function-list-plotting">
+ <title>Grafritning</title>
+ <variablelist>
+ <varlistentry>
+ <term><anchor id="gel-function-ExportPlot"/>ExportPlot</term>
+ <listitem>
+ <synopsis>ExportPlot (fil,typ)</synopsis>
+ <synopsis>ExportPlot (fil)</synopsis>
+ <para>Exportera innehållet för graffönstret till en fil. Typen är en sträng som anger filtypen att
använda, "png", "eps" eller "ps". Om typen inte är angiven antas den vara ändelsen, i vilket fall ändelsen
måste vara ".png", ".eps", eller ".ps".</para>
+ <para>Observera att filer skrivs över utan att du tillfrågas.</para>
+ <para>Vid lyckad export returneras true. I annat fall skrivs ett fel ut och ett undantag
flaggas.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>ExportPlot("fil.png")</userinput>
+<prompt>genius></prompt> <userinput>ExportPlot("/katalog/fil","eps")</userinput>
+</screen></para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlot"/>LinePlot</term>
+ <listitem>
+ <synopsis>LinePlot (funk1,funk2,funk3,...)</synopsis>
+ <synopsis>LinePlot (funk1,funk2,funk3,x1,x2)</synopsis>
+ <synopsis>LinePlot (funk1,funk2,funk3,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlot (funk1,funk2,funk3,[x1,x2])</synopsis>
+ <synopsis>LinePlot (funk1,funk2,funk3,[x1,x2,y1,y2])</synopsis>
+ <para>Rita en funktion (eller flera) med en linjegraf. De första (upp till 10) argumenten är
funktioner, sedan kan du valfritt ange gränserna för graffönstret som <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Om gränser inte anges kommer de aktuellt
inställda gränserna att användas (Se <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>) Om y-gränserna inte anges
beräknas funktionerna och sedan används max- och minvärdena.</para>
+ <para>Parametern <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> styr om
förklaringen ritas ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>LinePlot(sin,cos)</userinput>
+<prompt>genius></prompt> <userinput>LinePlot(`(x)=x^2,-1,1,0,1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotClear"/>LinePlotClear</term>
+ <listitem>
+ <synopsis>LinePlotClear ()</synopsis>
+ <para>Visa linjegrafsfönstret och rensa bort funktioner och alla andra linjer som ritades.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotCParametric"/>LinePlotCParametric</term>
+ <listitem>
+ <synopsis>LinePlotCParametric (funk,...)</synopsis>
+ <synopsis>LinePlotCParametric (funk,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotCParametric (funk,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <para>Rita en parametrisk komplexvärd funktion med en linjegraf. Först kommer funktionen som
returnerar <computeroutput>x+iy</computeroutput> sedan valfritt <varname>t</varname>-gränserna som
<userinput>t1,t2,tinc</userinput>, sedan valfritt gränserna som <userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Om istället strängen "fit"
anges för x- och y-gränserna kommer gränserna vara den största utsträckningen för grafen</para>
+ <para>Parametern <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> styr om
förklaringen ritas ut.</para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawLine"/>LinePlotDrawLine</term>
+ <listitem>
+ <synopsis>LinePlotDrawLine (x1,y1,x2,y2,...)</synopsis>
+ <synopsis>LinePlotDrawLine (v,...)</synopsis>
+ <para>Rita en linje från <varname>x1</varname>,<varname>y1</varname> till
<varname>x2</varname>,<varname>y2</varname>. <varname>x1</varname>,<varname>y1</varname>,
<varname>x2</varname>,<varname>y2</varname> kan ersättas med en <varname>n</varname>×2-matris för ett längre
polygontåg. Alternativt kan vektorn <varname>v</varname> vara en kolumnvektor med komplexa tal, det vill säga
en <varname>n</varname>×1-matris och varje komplext tal anses då vara en punkt i planet.</para>
+ <para>Extra parametrar kan läggas till för att ange linjefärg, tjocklek, pilar, graffönstret eller
förklaring. Du kan göra detta genom att lägga till en argumentsträng <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput>, <userinput>"arrow"</userinput> eller
<userinput>"legend"</userinput>, och efter detta ange färgen, tjockleken, fönstret som en 4-vektor, piltyp
eller förklaringen. (Pil och fönster är från version 1.0.6 och framåt.)</para>
+ <para>Om linjen ska behandlas som en fylld polygon som är fylld med den angivna färgen kan du ange
argumentet <userinput>"filled"</userinput>. Sedan version 1.0.22 och framåt.</para>
+ <para>Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som
GTK kommer känna igen, som <userinput>"red"</userinput>, <userinput>"blue"</userinput>,
<userinput>"yellow"</userinput>, o.s.v... Alternativt kan färgen anges i RGB-format som
<userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput> eller <userinput>"#rrrrggggbbbb"</userinput>,
där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan sedan
version 1.0.18 färgen också anges som en reell vektor som anger de röda gröna och blåa komponenterna där
komponenterna är mellan 0 och 1, t.ex. <userinput>[1.0,0.5,0.1]</userinput>.</para>
+ <para>Fönstret ska som vanligt anges som <userinput>[x1,x2,y1,y2]</userinput>, eller kan
alternativt anges som en sträng <userinput>"fit"</userinput> i vilket fall x-intervallet kommer ställas in
precis och y-intervallet med fem procents gränser kring linjen.</para>
+ <para>Pilspecifikation ska vara <userinput>"origin"</userinput>, <userinput>"end"</userinput>,
<userinput>"both"</userinput> eller <userinput>"none"</userinput>.</para>
+ <para>Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill
säga om förklaringar skrivs ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawLine([0,0;1,1],"arrow","end")</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Lösningen")</userinput>
+<prompt>genius></prompt> <userinput>for r=0.0 to 1.0 by 0.1 do
LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")</userinput>
+</screen></para>
+ <para>Till skillnad från många andra funktioner som inte bryr sig om de tar en kolumn- eller
radvektor så måste på grund av möjliga tvetydigheter punkter som anges som en vektor av komplexa tal alltid
anges som en kolumnvektor.</para>
+ <para>Att ange <varname>v</varname> som en kolumnvektor med komplexa tal är implementerat från
version 1.0.22 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotDrawPoints"/>LinePlotDrawPoints</term>
+ <listitem>
+ <synopsis>LinePlotDrawPoints (x,y,...)</synopsis>
+ <synopsis>LinePlotDrawPoints (v,...)</synopsis>
+ <para>Rita en punkt vid <varname>x</varname>,<varname>y</varname>. Indata kan vara en
<varname>n</varname>×2-matris för <varname>n</varname> olika punkter. Denna funktion har i stort sett samma
indata som <link linkend="gel-function-LinePlotDrawLine">LinePlotDrawLine</link>. Alternativt kan vektorn
<varname>v</varname> vara en kolumnvektor med komplexa tal, det vill säga en <varname>n</varname>×1-matris
och varje komplext tal anses då vara en punkt i planet.</para>
+ <para>Extra parametrar kan läggas till för att ange färg, tjocklek, graffönstret eller förklaring.
Du kan göra detta genom att lägga till en argumentsträng <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput> eller <userinput>"legend"</userinput>,
och efter detta ange färgen, tjockleken, fönstret som en 4-vektor eller förklaringen.</para>
+ <para>Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som
GTK kommer känna igen, som <userinput>"red"</userinput>, <userinput>"blue"</userinput>,
<userinput>"yellow"</userinput>, o.s.v... Alternativt kan färgen anges i RGB-format som
<userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput> eller <userinput>"#rrrrggggbbbb"</userinput>,
där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan färgen
också anges som en reell vektor som anger de röda gröna och blåa komponenterna där komponenterna är mellan 0
och 1.</para>
+ <para>Fönstret ska som vanligt anges som <userinput>[x1,x2,y1,y2]</userinput>, eller kan
alternativt anges som en sträng <userinput>"fit"</userinput> i vilket fall x-intervallet kommer ställas in
precis och y-intervallet med fem procents gränser kring linjen.</para>
+ <para>Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill
säga om förklaringar skrivs ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>LinePlotDrawPoints(0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([0,0;1,-1;-1,-1])</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Lösningen")</userinput>
+<prompt>genius></prompt> <userinput>LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)</userinput>
+<prompt>genius></prompt>
<userinput>LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","7:e
enhetsrötterna")</userinput>
+</screen></para>
+ <para>Till skillnad från många andra funktioner som inte bryr sig om de tar en kolumn- eller
radvektor så måste på grund av möjliga tvetydigheter punkter som anges som en vektor av komplexa tal alltid
anges som en kolumnvektor. Notera därför i sista exemplet transponatet av vektorn <userinput>0:6</userinput>
för att göra den till en kolumvektor.</para>
+ <para>Tillgängligt från version 1.0.18 och framåt. Att ange <varname>v</varname> som en
kolumnvektor med komplexa tal är implementerat från version 1.0.22 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotMouseLocation"/>LinePlotMouseLocation</term>
+ <listitem>
+ <synopsis>LinePlotMouseLocation ()</synopsis>
+ <para>Returnerar en radvektor för en punkt på linjegrafen som motsvarar den aktuella positionen
för musen. Om linjegrafen inte är synlig skrivs ett fel ut och <constant>null</constant> returneras. I detta
fall bör du köra <link linkend="gel-function-LinePlot"><function>LinePlot</function></link> eller <link
linkend="gel-function-LinePlotClear"><function>LinePlotClear</function></link> för att ställa graffönstret i
linjegrafsläget. Se även <link
linkend="gel-function-LinePlotWaitForClick"><function>LinePlotWaitForClick</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotParametric"/>LinePlotParametric</term>
+ <listitem>
+ <synopsis>LinePlotParametric (xfunk,yfunk,...)</synopsis>
+ <synopsis>LinePlotParametric (xfunk,yfunk,t1,t2,tinc)</synopsis>
+ <synopsis>LinePlotParametric (xfunk,yfunk,t1,t2,tinc,x1,x2,y1,y2)</synopsis>
+ <synopsis>LinePlotParametric (xfunk,yfunk,t1,t2,tinc,[x1,x2,y1,y2])</synopsis>
+ <synopsis>LinePlotParametric (xfunk,yfunk,t1,t2,tinc,"fit")</synopsis>
+ <para>Rita en parametrisk funktion med en linjegraf. Först kommer funktionerna för
<varname>x</varname> och <varname>y</varname>, sedan valfritt <varname>t</varname>-gränserna som
<userinput>t1,t2,tinc</userinput>, sedan valfritt gränserna som <userinput>x1,x2,y1,y2</userinput>.</para>
+ <para>Om x- och y-gränser inte anges kommer de aktuellt inställda gränserna att användas (Se <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>). Om istället strängen "fit"
anges för x- och y-gränserna kommer gränserna vara den största utsträckningen för grafen</para>
+ <para>Parametern <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> styr om
förklaringen ritas ut.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-LinePlotWaitForClick"/>LinePlotWaitForClick</term>
+ <listitem>
+ <synopsis>LinePlotWaitForClick ()</synopsis>
+ <para>Om i linjegrafsläge så inväntas ett klick på linjegrafsfönstret och platsen för klicket
returneras som en radvektor. Om fönstret är stängt returnerar funktionen omedelbart
<constant>null</constant>. Om fönstret inte är i linjegrafsläge ställs det i det läget och visas om det inte
visats. Se även <link
linkend="gel-function-LinePlotMouseLocation"><function>LinePlotMouseLocation</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasFreeze"/>PlotCanvasFreeze</term>
+ <listitem>
+ <synopsis>PlotCanvasFreeze ()</synopsis>
+ <para>Frys tillfälligt ritande av grafens rityta. Användbart om du behöver rita ett gäng element
och vill fördröja ritande av allt för att undvika flimmer i en animering. Efter att allt har ritats bör du
anropa <link linkend="gel-function-PlotCanvasThaw"><function>PlotCanvasThaw</function></link>.</para>
+ <para>Ritytan töas alltid upp efter att en exekvering avslutas. så den kommer aldrig att förbli
frusen. Till exempel töas ritytan automatiskt ögonblicket då en ny kommandorad visas. Observera också att
anrop för att frysa och töa upp kan nästas på ett säkert sätt.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotCanvasThaw"/>PlotCanvasThaw</term>
+ <listitem>
+ <synopsis>PlotCanvasThaw ()</synopsis>
+ <para>Töa upp ritytan för graf som frystes av <link
linkend="gel-function-PlotCanvasFreeze"><function>PlotCanvasFreeze</function></link> och rita om ritytan
omedelbart. Ritytan töas också alltid upp efter att ett program slutat exekvera.</para>
+ <para>Version 1.0.18 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-PlotWindowPresent"/>PlotWindowPresent</term>
+ <listitem>
+ <synopsis>PlotWindowPresent ()</synopsis>
+ <para>Visa och höj graffönstret, skapa det om nödvändigt. Normalt skapas fönstret då en av
graffunktionerna anropas, men det höjs inte alltid om det råkar vara under andra fönster. Denna funktion är
därför bra att anropa i skript där graffönstret kan ha skapats tidigare, och nu är dolt bakom konsolen eller
andra fönster.</para>
+ <para>Version 1.0.19 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldClearSolutions"/>SlopefieldClearSolutions</term>
+ <listitem>
+ <synopsis>SlopefieldClearSolutions ()</synopsis>
+ <para>Rensar bort lösningarna som ritats av funktionen <link
linkend="gel-function-SlopefieldDrawSolution"><function>SlopefieldDrawSolution</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldDrawSolution"/>SlopefieldDrawSolution</term>
+ <listitem>
+ <synopsis>SlopefieldDrawSolution (x, y, dx)</synopsis>
+ <para>Då en riktningsfältsgraf är aktiv, rita en lösning med de angivna startvillkoren. Den
vanliga Runge-Kutta-metoden används med ökning <varname>dx</varname>. Lösningarna stannar i grafen tills en
annan graf visas eller tills du anropar <link
linkend="gel-function-SlopefieldClearSolutions"><function>SlopefieldClearSolutions</function></link>. Du kan
också använda det grafiska gränssnittet för att rita lösningar och ange startvillkor med musen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SlopefieldPlot"/>SlopefieldPlot</term>
+ <listitem>
+ <synopsis>SlopefieldPlot (funk)</synopsis>
+ <synopsis>SlopefieldPlot (funk,x1,x2,y1,y2)</synopsis>
+ <para>Rita ett riktningsfält. Funktionen <varname>funk</varname> ska ta två reella tal
<varname>x</varname> och <varname>y</varname> eller ett ensamt komplext tal. Valfritt kan du ange gränserna
för graffönstret som <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>,
<varname>y2</varname>. Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Parametern <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> styr om
förklaringen ritas ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlot"/>SurfacePlot</term>
+ <listitem>
+ <synopsis>SurfacePlot (funk)</synopsis>
+ <synopsis>SurfacePlot (funk,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlot (funk,x1,x2,y1,y2)</synopsis>
+ <synopsis>SurfacePlot (funk,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlot (funk,[x1,x2,y1,y2])</synopsis>
+ <para>Rita en ytfunktion som antingen tar två argument eller ett komplext tal. Först kommer
funktionen sedan valfritt gränser som <varname>x1</varname>, <varname>x2</varname>, <varname>y1</varname>,
<varname>y2</varname>, <varname>z1</varname>, <varname>z2</varname>. Om gränser inte anges kommer de aktuellt
inställda gränserna att användas (Se <link
linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>). Genius kan för
närvarande endast rita ut en ensam ytgraf.</para>
+ <para>Om z-gränserna inte är angivna kommer maximum- och minimumvärdena för funktionen att
användas.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>SurfacePlot(|sin|,-1,1,-1,1,0,1.5)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotClear"/>SurfacePlotClear</term>
+ <listitem>
+ <synopsis>SurfacePlotClear ()</synopsis>
+ <para>Visa ytgrafsfönstret och rensa ut funktioner och alla andra linjer som ritats.</para>
+ <para>Tillgängligt i version 1.0.19 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotData"/>SurfacePlotData</term>
+ <listitem>
+ <synopsis>SurfacePlotData (data)</synopsis>
+ <synopsis>SurfacePlotData (data,etikett)</synopsis>
+ <synopsis>SurfacePlotData (data,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,etikett,x1,x2,y1,y2,z1,z2)</synopsis>
+ <synopsis>SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotData (data,etikett,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <para>Rita en yta från data. Data är en n×3-matris vars rader är x-, y- och z-koordinaterna. Data
kan också helt enkelt vara en vektor vars längd är en multipel av 3 och därmed innehåller tripplarna av x, y,
z. Data ska innehålla minst 3 punkter.</para>
+ <para>Valfritt kan vi ange etiketten och valfritt även gränserna. Om gränserna inte anges beräknas
de från data, <link linkend="gel-function-SurfacePlotWindow"><function>SurfacePlotWindow</function></link>
används inte, om du vill använda det, skicka med det explicit. Om ingen etikett anges används en tom
etikett.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,"Mina data")</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,-1,1,-1,1,0,10)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(data,SurfacePlotWindow)</userinput>
+</screen></para>
+ <para>Här är ett exempel på hur vi kan rita med polära koordinater, i synnerhet hur funktionen
<userinput>-r^2 * theta</userinput> ritas: <screen><prompt>genius></prompt> <userinput>d:=null; for r=0 to
1 by 0.1 do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotData(d)</userinput>
+</screen></para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDataGrid"/>SurfacePlotDataGrid</term>
+ <listitem>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2],etikett)</synopsis>
+ <synopsis>SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],etikett)</synopsis>
+ <para>Rita en yta från vanliga rektangulära data. Data ges i en n×m-matris där raderna är
x-koordinaten och kolumnerna är y-koordinaten. x-koordinaten delas in i n-1 lika stora delintervall och
y-koordinaten delas in i m-1 lika stora delintervall. Gränserna <varname>x1</varname> och
<varname>x2</varname> ger intervallet på x-axeln som vi använder, och gränserna <varname>y1</varname> och
<varname>y2</varname> ger intervallet på y-axeln som vi använder. Om gränserna <varname>z1</varname> och
<varname>z2</varname> inte anges beräknas de från data (till att vara extremvärdena från data).</para>
+ <para>Valfritt kan vi ange etiketten, om etikett inte anges används en tom etikett.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(data,[-1,1,-1,1],"Mina data")</userinput>
+<prompt>genius></prompt> <userinput>d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) =
(0.1*i-1)^2-(0.1*j)^2;</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDataGrid(d,[-1,1,0,1],"halv sadel")</userinput>
+</screen></para>
+ <para>Version 1.0.16 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawLine"/>SurfacePlotDrawLine</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)</synopsis>
+ <synopsis>SurfacePlotDrawLine (v,...)</synopsis>
+ <para>Rita en linje från <varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname> till
<varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname>.
<varname>x1</varname>,<varname>y1</varname>,<varname>z1</varname>,
<varname>x2</varname>,<varname>y2</varname>,<varname>z2</varname> kan ersättas med en
<varname>n</varname>×3-matris för ett längre polygontåg.</para>
+ <para>Extra parametrar kan läggas till för att ange linjefärg, tjocklek, graffönster eller
förklaring. Du kan göra detta genom att lägga till en argumentsträng <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput> eller <userinput>"legend"</userinput>,
och efter detta ange färgen, tjockleken, fönstret som en 6-vektor eller förklaringen.</para>
+ <para>Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som
GTK kommer känna igen, som <userinput>"red"</userinput>, <userinput>"blue"</userinput>,
<userinput>"yellow"</userinput>, o.s.v... Alternativt kan färgen anges i RGB-format som
<userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput> eller <userinput>"#rrrrggggbbbb"</userinput>,
där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan sedan
version 1.0.18 färgen också anges som en reell vektor som anger de röda gröna och blåa komponenterna där
komponenterna är mellan 0 och 1, t.ex. <userinput>[1.0,0.5,0.1]</userinput>.</para>
+ <para>Fönstret ska som vanligt anges som <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, eller kan
alternativt anges som en sträng <userinput>"fit"</userinput> i vilket fall x-intervallet kommer ställas in
precis och y-intervallet med fem procents gränser kring linjen.</para>
+ <para>Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill
säga om förklaringar skrivs ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])</userinput>
+</screen></para>
+ <para>Tillgängligt i version 1.0.19 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-SurfacePlotDrawPoints"/>SurfacePlotDrawPoints</term>
+ <listitem>
+ <synopsis>SurfacePlotDrawPoints (x,y,z,...)</synopsis>
+ <synopsis>SurfacePlotDrawPoints (v,...)</synopsis>
+ <para>Rita en punkt vid <varname>x</varname>,<varname>y</varname>,<varname>z</varname>. Indata kan
vara en <varname>n</varname>×3-matris för <varname>n</varname> olika punkter. Denna funktion har i huvudsak
samma indata som <link linkend="gel-function-SurfacePlotDrawLine">SurfacePlotDrawLine</link>.</para>
+ <para>Extra parametrar kan läggas till för att ange linjefärg, tjocklek, graffönster eller
förklaring. Du kan göra detta genom att lägga till en argumentsträng <userinput>"color"</userinput>,
<userinput>"thickness"</userinput>, <userinput>"window"</userinput> eller <userinput>"legend"</userinput>,
och efter detta ange färgen, tjockleken, fönstret som en 6-vektor eller förklaringen.</para>
+ <para>Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som
GTK kommer känna igen, som <userinput>"red"</userinput>, <userinput>"blue"</userinput>,
<userinput>"yellow"</userinput>, o.s.v... Alternativt kan färgen anges i RGB-format som
<userinput>"#rgb"</userinput>, <userinput>"#rrggbb"</userinput> eller <userinput>"#rrrrggggbbbb"</userinput>,
där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan färgen
också anges som en reell vektor som anger de röda gröna och blåa komponenterna där komponenterna är mellan 0
och 1.</para>
+ <para>Fönstret ska som vanligt anges som <userinput>[x1,x2,y1,y2,z1,z2]</userinput>, eller kan
alternativt anges som en sträng <userinput>"fit"</userinput> i vilket fall x-intervallet kommer ställas in
precis och y-intervallet med fem procents gränser kring linjen.</para>
+ <para>Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill
säga om förklaringar skrivs ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt>
<userinput>SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)</userinput>
+<prompt>genius></prompt> <userinput>SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])</userinput>
+</screen></para>
+ <para>Tillgängligt i version 1.0.19 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldClearSolutions"/>VectorfieldClearSolutions</term>
+ <listitem>
+ <synopsis>VectorfieldClearSolutions ()</synopsis>
+ <para>Rensar bort lösningarna som ritats av funktionen <link
linkend="gel-function-VectorfieldDrawSolution"><function>VectorfieldDrawSolution</function></link>.</para>
+ <para>Version 1.0.6 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldDrawSolution"/>VectorfieldDrawSolution</term>
+ <listitem>
+ <synopsis>VectorfieldDrawSolution (x, y, dt, tlen)</synopsis>
+ <para>Då en verktorfältsgraf är aktiv, rita en lösning med de angivna startvillkoren. Den vanliga
Runge-Kutta-metoden används med ökning <varname>dt</varname> under ett intervall med längden
<varname>tlen</varname>. Lösningarna stannar i grafen tills en annan graf visas eller tills du anropar <link
linkend="gel-function-VectorfieldClearSolutions"><function>VectorfieldClearSolutions</function></link>. Du
kan också använda det grafiska gränssnittet för att rita lösningar och ange startvillkor med musen.</para>
+ <para>Version 1.0.6 och framåt.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><anchor id="gel-function-VectorfieldPlot"/>VectorfieldPlot</term>
+ <listitem>
+ <synopsis>VectorfieldPlot (funkx, funky)</synopsis>
+ <synopsis>VectorfieldPlot (funkx, funky, x1, x2, y1, y2)</synopsis>
+ <para>Rita ett tvådimensionellt vektorfält. Funktionen <varname>funkx</varname> ska vara dx/dt för
vektorfältet och funktionen <varname>funky</varname> ska vara dy/dt för vektorfältet. Funktionerna ska ta två
reella tal <varname>x</varname> och <varname>y</varname>, eller ett ensamt komplext tal. Då parametern <link
linkend="gel-function-VectorfieldNormalized"><function>VectorfieldNormalized</function></link> är
<constant>true</constant> normaliseras magnituden för vektorerna. Det vill säga endast riktningen visas, inte
magnituden.</para>
+ <para>Valfritt kan du ange gränserna för graffönstret som <varname>x1</varname>,
<varname>x2</varname>, <varname>y1</varname>, <varname>y2</varname>. Om gränser inte anges kommer de aktuellt
inställda gränserna att användas (Se <link
linkend="gel-function-LinePlotWindow"><function>LinePlotWindow</function></link>).</para>
+ <para>Parametern <link
linkend="gel-function-LinePlotDrawLegends"><function>LinePlotDrawLegends</function></link> styr om
förklaringen ritas ut.</para>
+ <para>Exempel: <screen><prompt>genius></prompt> <userinput>VectorfieldPlot(`(x,y)=x^2-y,
`(x,y)=y^2-x, -1, 1, -1, 1)</userinput>
+</screen></para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+ <!-- ============= GEL examples ============================= -->
+ <chapter id="genius-gel-example-programs">
+ <title>Exempelprogram i GEL</title>
+
+ <para>Här är en funktion som beräknar fakultet: <programlisting><![CDATA[function f(x) = if x <= 1 then
1 else (f(x-1)*x)
+]]></programlisting></para>
+ <para>Med indentering blir det: <programlisting><![CDATA[function f(x) = (
+ if x <= 1 then
+ 1
+ else
+ (f(x-1)*x)
+)
+]]></programlisting></para>
+ <para>Detta är en direkt portering av fakultetsfunktionen från manualsidan från
<application>bc</application>. Syntaxen verkar liknande som i <application>bc</application>, men skiljer sig
åt i att i GEL är det sista uttrycket det som returneras. Om funktionen <literal>return</literal> används
istället blir det: <programlisting><![CDATA[function f(x) = (
+ if (x <= 1) then return (1);
+ return (f(x-1) * x)
+)
+]]></programlisting></para>
+
+ <para>Det absolut enklaste sättet att definiera en fakultetsfunktion är att använda produktloopen enligt
följande. Detta är inte bara kortast och snabbast, utan också troligen den mest läsbara versionen.
<programlisting>function f(x) = prod k=1 to x do k
+</programlisting></para>
+
+ <para>Här är ett större exempel som i stort omdefinierar den inbyggda funktionen <link
linkend="gel-function-ref"><function>ref</function></link> för att beräkna trappstegsformen för en matris.
Funktionen <function>ref</function> är inbyggd och mycket snabbare, men detta exempel demonstrerar några av
de mer komplexa funktionerna i GEL. <programlisting><![CDATA[# Calculate the row-echelon form of a matrix
+function MyOwnREF(m) = (
+ if not IsMatrix(m) or not IsValueOnly(m) then
+ (error("MyOwnREF: argument not a value only matrix");bailout);
+ s := min(rows(m), columns(m));
+ i := 1;
+ d := 1;
+ while d <= s and i <= columns(m) do (
+
+ # This just makes the anchor element non-zero if at
+ # all possible
+ if m@(d,i) == 0 then (
+ j := d+1;
+ while j <= rows(m) do (
+ if m@(j,i) == 0 then
+ (j=j+1;continue);
+ a := m@(j,);
+ m@(j,) := m@(d,);
+ m@(d,) := a;
+ j := j+1;
+ break
+ )
+ );
+ if m@(d,i) == 0 then
+ (i:=i+1;continue);
+
+ # Here comes the actual zeroing of all but the anchor
+ # element rows
+ j := d+1;
+ while j <= rows(m)) do (
+ if m@(j,i) != 0 then (
+ m@(j,) := m@(j,)-(m@(j,i)/m@(d,i))*m@(d,)
+ );
+ j := j+1
+ );
+ m@(d,) := m@(d,) * (1/m@(d,i));
+ d := d+1;
+ i := i+1
+ );
+ m
+)
+]]></programlisting></para>
+
+ </chapter>
+
+ <!-- ============= Customization ============================ -->
+ <chapter id="genius-prefs">
+ <title>Inställningar</title>
+
+ <para>För att konfigurera <application>Genius matematikverktyg</application>, välj
<menuchoice><guimenu>Inställningar</guimenu><guimenuitem>Inställningar</guimenuitem></menuchoice>. Det finns
flera grundläggande parametrar som tillhandahålls av miniräknaren utöver de som tillhandahålls av
standardbiblioteket. Dessa kontrollerar hur miniräknaren beter sig.</para>
+
+ <note>
+ <title>Ändra inställningar med GEL</title>
+ <para>Många av inställningarna i Genius är helt enkelt globala variabler, och kan evalueras och
tilldelas till på samma sätt som vanliga variabler. Se <xref linkend="genius-gel-variables"/> om evaluering
och tilldelning till variabler, och <xref linkend="genius-gel-function-parameters"/> för en lista över
inställningar som kan ändras på detta sätt.</para>
+ <para>Som ett exempel kan du ställa in det maximala antalet siffror i ett resultat till 12 genom att
skriva: <programlisting>MaxDigits = 12
+</programlisting></para>
+ </note>
+
+ <sect1 id="genius-prefs-output">
+ <title>Utdata</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximalt antal siffror att skriva ut</guilabel>
+ </term>
+ <listitem>
+ <para>Maximalt antal siffror i ett resultat (<link
linkend="gel-function-MaxDigits"><function>MaxDigits</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Resultat som flyttal</guilabel>
+ </term>
+ <listitem>
+ <para>Om resultaten alltid ska skrivas ut som flyttal (<link
linkend="gel-function-ResultsAsFloats"><function>ResultsAsFloats</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Flyttal i vetenskaplig notation</guilabel>
+ </term>
+ <listitem>
+ <para>Om flyttal ska vara i vetenskaplig notation (<link
linkend="gel-function-ScientificNotation"><function>ScientificNotation</function></link>)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Skriv alltid ut fullständiga uttryck</guilabel>
+ </term>
+ <listitem>
+ <para>Ska vi skriva ut fullständiga uttryck för icke-numeriska returvärden (längre än en
rad) (<link linkend="gel-function-FullExpressions"><function>FullExpressions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Använd blandade bråk</guilabel>
+ </term>
+ <listitem>
+ <para>Om bråk ska skrivas ut som blandade bråk som exempelvis ”1 1/3” snarare än ”4/3”.
(<link linkend="gel-function-MixedFractions"><function>MixedFractions</function></link>)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Visa 0.0 när flyttal är mindre än 10^-x (0=klipp aldrig)</guilabel>
+ </term>
+ <listitem>
+ <para>Hur utmatning klipps. Men bara när andra tal i närheten är stora. Se dokumentationen för
parametern <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Klipp endast tal när ett annat tal är större än 10^-x</guilabel>
+ </term>
+ <listitem>
+ <para>När utmatning ska klippas. Detta ställs in av parametern <link
linkend="gel-function-OutputChopWhenExponent"><function>OutputChopWhenExponent</function></link>. Se
dokumentationen för parametern <link
linkend="gel-function-OutputChopExponent"><function>OutputChopExponent</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Kom ihåg utdatainställningar mellan sessioner</guilabel>
+ </term>
+ <listitem>
+ <para>Ska utdatainställningar i ramen <guilabel>Utdatainställningar för tal/uttryck</guilabel>
kommas ihåg till nästa session. Gäller inte för ramen <guilabel>Utdatainställningar för
fel/information</guilabel>.</para>
+ <para>Om ej ikryssad kommer antingen standardinställningen eller tidigare sparade inställningar
användas varje gång Genius startas. Observera att inställningar sparas i slutet på sessionen, så om du vill
ändra standardinställningen kryssa i denna ruta, starta om <application>Genius matematikverktyg</application>
och kryssa sedan ur den igen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Visa felmeddelanden i en dialog</guilabel>
+ </term>
+ <listitem>
+ <para>Om inställd kommer fel att visas i en separat dialog, om ej inställd kommer felen att skrivas
ut i konsolen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Visa informationsmeddelanden i en dialog</guilabel>
+ </term>
+ <listitem>
+ <para>Om inställd kommer informationsmeddelandena att visas i en separat dialog, om ej inställd
kommer informationsmeddelandena att skrivas ut i konsolen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Maximalt antal fel att visa</guilabel>
+ </term>
+ <listitem>
+ <para>Det maximala antalet fel att returnera vid en evaluering (<link
linkend="gel-function-MaxErrors"><function>MaxErrors</function></link>). Om du ställer in detta till 0 kommer
alla fel alltid att returneras. Om en slinga orsakar många fel så är det vanligen osannolikt att du kommer
att kunna tolka mer än några få av dessa, så att se en lång lista av fel är vanligen inte till någon större
hjälp.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Utöver dessa inställningar finns det några inställningar som endast kan ändras genom att ställa
in dem i arbetsytans konsol. För andra som kan påverka utmatningen se <xref
linkend="genius-gel-function-parameters"/>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <function>IntegerOutputBase</function>
+ </term>
+ <listitem>
+ <para>Basen som kommer användas för utskrift av heltal</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <function>OutputStyle</function>
+ </term>
+ <listitem>
+ <para>En sträng, kan vara <literal>"normal"</literal>, <literal>"latex"</literal>,
<literal>"mathml"</literal> eller <literal>"troff"</literal> och den kommer påverka hur matriser (och kanske
andra saker) skrivs ut, användbart då du vill klistra in i dokument. Normal stil är den av människor läsbara
utskriftsstilen som är standard för <application>Genius matematikverktyg</application>. De andra stilarna är
för textsättning i LaTeX, MathML (XML) eller i Troff.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-precision">
+ <title>Precision</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Flyttalsprecision</guilabel>
+ </term>
+ <listitem>
+ <para>Flyttalsprecisionen i bitar (<link
linkend="gel-function-FloatPrecision"><function>FloatPrecision</function></link>). Observera att ändra denna
endast påverkar nya beräknade kvantiteter. Gamla värden som är lagrade i variabler är uppenbarligen
fortfarande i den gamla precisionen och om du vill ha dem mer exakta måste du räkna ut dem på nytt. Undantag
till detta är systemkonstanterna som <link linkend="gel-function-pi"><function>pi</function></link> eller
<link linkend="gel-function-e"><function>e</function></link>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <guilabel>Kom ihåg precisionsinställning mellan sessioner</guilabel>
+ </term>
+ <listitem>
+ <para>Ska precisionsinställningen kommas ihåg för nästa session. Om ej ikryssad används antingen
standardinställningen eller någon tidigare sparad inställning varje gång Genius startar. Observera att
inställningar sparas i slutet på varje session, så om du vill ändra standardinställningen kryssa i denna
ruta, starta om genius och kryssa sedan ur den igen.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-terminal">
+ <title>Terminal</title>
+
+ <para>Terminalen avser konsolen i arbetsytan.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Tidigare rader sparade</guilabel>
+ </term>
+ <listitem>
+ <para>Rader historik i terminalen.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Typsnitt</guilabel>
+ </term>
+ <listitem>
+ <para>Typsnittet att använda i terminalen.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Svart på vitt</guilabel>
+ </term>
+ <listitem>
+ <para>Om svart text på vit bakgrund ska användas i terminalen.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <guilabel>Blinkande markör</guilabel>
+ </term>
+ <listitem>
+ <para>Om markören i terminalen ska blinka då terminalen är fokuserad. Detta kan ibland vara
irriterande och det genererar meningslös trafik om du fjärranvänder Genius.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="genius-prefs-memory">
+ <title>Minne</title>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <guilabel>Maximalt antal noder att allokera</guilabel>
+ </term>
+ <listitem>
+ <para>Internt stoppas alla data i små noder i minnet. Detta ger en gräns för det största antalet
noder som kan allokeras för beräkningar. Denna gräns förhindrar problemet med att få slut minne om du av
misstag gör något som använder för mycket minne, som en rekursion utan slut. Detta skulle kunna sakta ner din
dator och göra det svårt att ens avbryta programmet.</para>
+ <para>Då gränsen har nåtts frågar <application>Genius matematikverktyg</application> om du vill
avbryta beräkningen eller om du vill fortsätta. Om du fortsätter kommer ingen gräns att tillämpas och det
kommer vara möjligt att köra tills din dator få slut minne. Gränsen kommer att tillämpas igen nästa gång du
kör ett program eller uttryck på konsolen oavsett hur du besvarade frågan.</para>
+ <para>Att ställa in gränsen till noll innebär att det inte finns någon gräns för mängden minne som
genius använder.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect1>
+
+ </chapter>
+
+<!-- ============= About ====================================== -->
+ <chapter id="genius-about">
+ <title>Om <application>Genius matematikverktyg</application></title>
+
+ <para><application>Genius matematikverktyg</application> skrevs av Jiří (George) Lebl (<email>jirka 5z
com</email>). Historien för <application>Genius matematikverktyg</application> går tillbaka till sent i 1997.
Det var det första miniräknarprogrammet för GNOME, men sedan växte det bortom att bara vara en miniräknare
för skrivbordet. För att hitta mer information om <application>Genius matematikverktyg</application>, besök
<ulink url="http://www.jirka.org/genius.html" type="http">Genius webbsida</ulink>.</para>
+ <para>För att rapportera ett fel eller lämna ett förslag för detta program eller denna handbok, skicka
ett e-postmeddelande till mig (upphovsmannen) eller skicka ett meddelande till sändlistan (se
webbsidan).</para>
+
+ <para>Detta program distribueras under villkoren i GNU General Public License, publicerad av Free
Software Foundation, antingen version 3 eller (om du så vill) någon senare version. En kopia av denna licens
kan hittas på denna <ulink url="http://www.gnu.org/copyleft/gpl.html" type="http">länk</ulink> eller i filen
COPYING inkluderad med källkoden i detta program.</para>
+
+ <para>Jiří Lebl fick under diverse delar av utvecklingen stöd för arbetet av NSF-stipendierna DMS
0900885, DMS 1362337, the University of Illinois at Urbana-Champaign, the University of California at San
Diego, the University of Wisconsin-Madison och Oklahoma State University. Programvaran har använts både för
undervisning och forskning.</para>
+
+ </chapter>
+
+</book>
diff --git a/help/sv/html/index.html b/help/sv/html/index.html
index 84a2e7f..a1e3689 100644
--- a/help/sv/html/index.html
+++ b/help/sv/html/index.html
@@ -57,6 +57,6 @@
EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
THE POSSIBILITY OF SUCH DAMAGES.
</p></li></ol></div><p>
- </p></div></div><div><div class="legalnotice"><a name="idm45627246786624"></a><p
class="legalnotice-title"><b>Återkoppling</b></p><p>För att rapportera ett fel eller komma med ett förslag
för programmet <span class="application">Genius matematikverktyg</span> eller denna handbok, besök <a
class="ulink" href="http://www.jirka.org/genius.html" target="_top">webbsidan för Genius</a> eller skicka mig
ett e-postmeddelande på <code class="email"><<a class="email" href="mailto:jirka 5z com">jirka 5z
com</a>></code>.</p></div></div><div><div class="revhistory"><table style="border-style:solid;
width:100%;" summary="Revisionshistorik"><tr><th align="left" valign="top"
colspan="2"><b>Revisionshistorik</b></th></tr><tr><td align="left">Revision 0.2</td><td
align="left">September 2016</td></tr><tr><td align="left" colspan="2">
+ </p></div></div><div><div class="legalnotice"><a name="idm51"></a><p
class="legalnotice-title"><b>Återkoppling</b></p><p>För att rapportera ett fel eller komma med ett förslag
för programmet <span class="application">Genius matematikverktyg</span> eller denna handbok, besök <a
class="ulink" href="http://www.jirka.org/genius.html" target="_top">webbsidan för Genius</a> eller skicka mig
ett e-postmeddelande på <code class="email"><<a class="email" href="mailto:jirka 5z com">jirka 5z
com</a>></code>.</p></div></div><div><div class="revhistory"><table style="border-style:solid;
width:100%;" summary="Revisionshistorik"><tr><th align="left" valign="top"
colspan="2"><b>Revisionshistorik</b></th></tr><tr><td align="left">Revision 0.2</td><td
align="left">September 2016</td></tr><tr><td align="left" colspan="2">
<p class="author">Jiri (George) Lebl <code class="email"><<a class="email"
href="mailto:jirka 5z com">jirka 5z com</a>></code></p>
</td></tr></table></div></div><div><div class="abstract"><p
class="title"><b>Sammanfattning</b></p><p>Handbok för Genius
matteverktyg.</p></div></div></div><hr></div><div class="toc"><p><b>Innehållsförteckning</b></p><dl
class="toc"><dt><span class="chapter"><a href="ch01.html">1. Introduktion</a></span></dt><dt><span
class="chapter"><a href="ch02.html">2. Komma igång</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch02.html#genius-to-start">För att starta <span class="application">Genius
matematikverktyg</span></a></span></dt><dt><span class="sect1"><a href="ch02s02.html">Då du startar
Genius</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Grundläggande
användning</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#genius-usage-workarea">Använda
arbetsytan</a></span></dt><dt><span class="sect1"><a href="ch03s02.html">För att skapa ett nytt
program</a></span></dt><dt><span class="sect1"><a href="ch03s03.html">Att ö
ppna eller köra ett program</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4.
Grafritning</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch04.html#genius-line-plots">Linjegrafer</a></span></dt><dt><span class="sect1"><a
href="ch04s02.html">Parametriska grafer</a></span></dt><dt><span class="sect1"><a
href="ch04s03.html">Riktningsfältsgrafer</a></span></dt><dt><span class="sect1"><a
href="ch04s04.html">Vektorfältsgrafer</a></span></dt><dt><span class="sect1"><a
href="ch04s05.html">Ytgrafer</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5.
Grunderna i GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch05.html#genius-gel-values">Värden</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-numbers">Tal</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-booleans">Booleska värden</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-
strings">Strängar</a></span></dt><dt><span class="sect2"><a
href="ch05.html#genius-gel-values-null">Null</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s02.html">Använda variabler</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s02.html#genius-gel-variables-setting">Ställa in variabler</a></span></dt><dt><span
class="sect2"><a href="ch05s02.html#genius-gel-variables-built-in">Inbyggda
variabler</a></span></dt><dt><span class="sect2"><a href="ch05s02.html#genius-gel-previous-result">Variabel
för föregående resultat</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch05s03.html">Använda
funktioner</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-defining">Definiera funktioner</a></span></dt><dt><span
class="sect2"><a href="ch05s03.html#genius-gel-functions-variable-argument-lists">Variabla
argumentlistor</a></span></dt><dt><span class="sect2"><a href="ch05s03.html#genius-gel-functions-passing-fu
nctions">Skicka funktioner till funktioner</a></span></dt><dt><span class="sect2"><a
href="ch05s03.html#genius-gel-functions-operations">Operationer på
funktioner</a></span></dt></dl></dd><dt><span class="sect1"><a
href="ch05s04.html">Avskiljare</a></span></dt><dt><span class="sect1"><a
href="ch05s05.html">Kommentarer</a></span></dt><dt><span class="sect1"><a
href="ch05s06.html">Moduloberäkning</a></span></dt><dt><span class="sect1"><a href="ch05s07.html">Lista över
GEL-operatorer</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Programmering med
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch06.html#genius-gel-conditionals">Villkor</a></span></dt><dt><span class="sect1"><a
href="ch06s02.html">Slingor</a></span></dt><dd><dl><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-while">While-slingor</a></span></dt><dt><span class="sect2"><a
href="ch06s02.html#genius-gel-loops-for">For-slingor</a></span></dt><dt><span class="s
ect2"><a href="ch06s02.html#genius-gel-loops-foreach">Foreach-slingor</a></span></dt><dt><span
class="sect2"><a href="ch06s02.html#genius-gel-loops-break-continue">Break och
Continue</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch06s03.html">Summor och
produkter</a></span></dt><dt><span class="sect1"><a
href="ch06s04.html">Jämförelseoperatorer</a></span></dt><dt><span class="sect1"><a
href="ch06s05.html">Globala variabler och räckvidd för variabler</a></span></dt><dt><span class="sect1"><a
href="ch06s06.html">Parametervariabler</a></span></dt><dt><span class="sect1"><a
href="ch06s07.html">Returnera</a></span></dt><dt><span class="sect1"><a
href="ch06s08.html">Referenser</a></span></dt><dt><span class="sect1"><a
href="ch06s09.html">Vvärden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7.
Avancerad programmering med GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch07.html#genius-gel-error-handling">Felhantering</a></span>
</dt><dt><span class="sect1"><a href="ch07s02.html">Toppnivåsyntax</a></span></dt><dt><span class="sect1"><a
href="ch07s03.html">Returnera funktioner</a></span></dt><dt><span class="sect1"><a
href="ch07s04.html">Verkligt lokala variabler</a></span></dt><dt><span class="sect1"><a
href="ch07s05.html">Uppstartsprocedur för GEL</a></span></dt><dt><span class="sect1"><a
href="ch07s06.html">Läsa in program</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8.
Matriser i GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch08.html#genius-gel-matrix-support">Mata in matriser</a></span></dt><dt><span class="sect1"><a
href="ch08s02.html">Konjugattransponat och transponatoperator</a></span></dt><dt><span class="sect1"><a
href="ch08s03.html">Linjär algebra</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch09.html">9.
Polynom i GEL</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch09.html#genius-gel-polynomials-using">Använda polynom<
/a></span></dt></dl></dd><dt><span class="chapter"><a href="ch10.html">10. Mängdlära i
GEL</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch10.html#genius-gel-sets-using">Använda
mängder</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch11.html">11. Lista över
GEL-funktioner</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch11.html#genius-gel-function-list-commands">Kommandon</a></span></dt><dt><span class="sect1"><a
href="ch11s02.html">Grundläggande</a></span></dt><dt><span class="sect1"><a
href="ch11s03.html">Parametrar</a></span></dt><dt><span class="sect1"><a
href="ch11s04.html">Konstanter</a></span></dt><dt><span class="sect1"><a href="ch11s05.html">Numeriska
funktioner</a></span></dt><dt><span class="sect1"><a
href="ch11s06.html">Trigonometri</a></span></dt><dt><span class="sect1"><a
href="ch11s07.html">Talteori</a></span></dt><dt><span class="sect1"><a
href="ch11s08.html">Matrismanipulation</a></span></dt><dt><span class="sect1"><a h
ref="ch11s09.html">Linjär algebra</a></span></dt><dt><span class="sect1"><a
href="ch11s10.html">Kombinatorik</a></span></dt><dt><span class="sect1"><a
href="ch11s11.html">Kalkyl</a></span></dt><dt><span class="sect1"><a
href="ch11s12.html">Funktioner</a></span></dt><dt><span class="sect1"><a
href="ch11s13.html">Ekvationslösning</a></span></dt><dt><span class="sect1"><a
href="ch11s14.html">Statistik</a></span></dt><dt><span class="sect1"><a
href="ch11s15.html">Polynom</a></span></dt><dt><span class="sect1"><a
href="ch11s16.html">Mängdlära</a></span></dt><dt><span class="sect1"><a href="ch11s17.html">Kommutativ
algebra</a></span></dt><dt><span class="sect1"><a href="ch11s18.html">Diverse</a></span></dt><dt><span
class="sect1"><a href="ch11s19.html">Symboliska operationer</a></span></dt><dt><span class="sect1"><a
href="ch11s20.html">Grafritning</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch12.html">12.
Exempelprogram i GEL</a></span></dt><dt><span class="cha
pter"><a href="ch13.html">13. Inställningar</a></span></dt><dd><dl><dt><span class="sect1"><a
href="ch13.html#genius-prefs-output">Utdata</a></span></dt><dt><span class="sect1"><a
href="ch13s02.html">Precision</a></span></dt><dt><span class="sect1"><a
href="ch13s03.html">Terminal</a></span></dt><dt><span class="sect1"><a
href="ch13s04.html">Minne</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch14.html">14. Om <span
class="application">Genius matematikverktyg</span></a></span></dt></dl></div><div
class="list-of-figures"><p><b>Figurförteckning</b></p><dl><dt>2.1. <a
href="ch02s02.html#mainwindow-fig"><span class="application">Genius
matematikverktyg</span>-fönstret</a></dt><dt>4.1. <a href="ch04.html#lineplot-fig">Skapa
graf-fönster</a></dt><dt>4.2. <a href="ch04.html#lineplot2-fig">Graffönster</a></dt><dt>4.3. <a
href="ch04s02.html#paramplot-fig">Flik för parametriska grafer</a></dt><dt>4.4. <a
href="ch04s02.html#paramplot2-fig">Parametrisk graf</a></dt><d
t>4.5. <a href="ch04s05.html#surfaceplot-fig">Ytgraf</a></dt></dl></div></div><div
class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">
</td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n"
href="ch01.html">Nästa</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%"
align="center"> </td><td width="40%" align="right" valign="top"> Kapitel 1.
Introduktion</td></tr></table></div></body></html>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]