Εγχειρίδιο για το εργαλείο μαθηματικών.

# Εγχειρίδιο Genius

1997-2021
Jiří (George) Lebl
2004
Kai Willadsen

Χορηγείται άδεια αντιγραφής, διανομής και/ή τροποποίησης του παρόντος εγγράφου υπό τους όρους της έκδοσης 1.1 της Ελεύθερης Άδειας Τεκμηρίωσης GNU (GFDL), ή οποιασδήποτε μεταγενέστερης έκδοσής αυτής από το Ίδρυμα Ελεύθερου Λογισμικού (FSF), χωρίς αμετάβλητες ενότητες, κείμενα εμπροσθοφύλλου και κείμενα οπισθοφύλλου. Αντίγραφο της άδειας GFDL είναι διαθέσιμο στον ακόλουθο σύνδεσμο, ή στο αρχείο COPYING-DOCS που διανέμεται μαζί με το παρόν εγχειρίδιο.

Αυτό το εγχειρίδιο αποτελεί μέρος της συλλογής εγχειριδίων του GNOME που διανέμονται υπό τους όρους της GFDL. Αν επιθυμείτε να διανείμετε το παρόν εγχειρίδιο ξεχωριστά από τη συλλογή, οφείλετε να προσθέσετε στο εγχειρίδιο αντίγραφο της άδειας χρήσης, όπως προβλέπεται στην ενότητα 6 της άδειας.

Πολλές από τις ονομασίες που χρησιμοποιούνται από εταιρείες για την διαφοροποίηση των προϊόντων και υπηρεσιών τους έχουν καταχωρηθεί ως εμπορικά σήματα. Σε όποιο σημείο της τεκμηρίωσης GNOME τυχόν εμφανίζονται αυτές οι ονομασίες, και εφόσον τα μέλη του Έργου τεκμηρίωσης GNOME έχουν λάβει γνώση αυτών των εμπορικών σημάτων, οι ονομασίες ή τα αρχικά αυτών θα γράφονται με κεφαλαίους χαρακτήρες.

DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT:

1. 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

2. 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.

Jiří
Lebl
Oklahoma State University

     jiri.lebl@gmail.com

Kai
Willadsen
University of Queensland, Australia

     kaiw@itee.uq.edu.au

0.2
October 2021

Jiri (George) Lebl jiri.lebl@gmail.com

This manual describes version 1.0.27 of Genius.

## Aνάδραση

To report a bug or make a suggestion regarding the Genius Mathematics Tool application or this manual, please visit the Genius Web page or email me at jiri.lebl@gmail.com.

## Εισαγωγή

The Genius Mathematics Tool application is a general calculator for use as a desktop calculator, an educational tool in mathematics and other STEM fields, and has found use in research. The language used in Genius Mathematics Tool 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. Genius Mathematics Tool 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 parameters.

Genius Mathematics Tool 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. Parametric plots of curves are also supported. It can plot slope fields, vector fields and draw their solutions. The plots can be exported to several formats. The command line version does not require GNOME, but does not implement any feature that requires the graphical interface, such as plotting

Parts of this manual describe the graphical version of the calculator. The language that both versions use is the same, it is simply the graphical features such as plotting that are unique to the GUI version.

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.

## Ξεκίνημα

### Για να ξεκινήσετε το εργαλείο μαθηματικών Genius

You can start Genius Mathematics Tool in the following ways:

Το μενού Εφαρμογές

  Ανάλογα με το λειτουργικό σας σύστημα και την έκδοση, το στοιχείο μενού για το Εργαλείο μαθηματικών Genius μπορεί να εμφανιστεί σε διαφορετικές θέσεις. Μπορεί να είναι στο Εκπαίδευση, Βοηθήματα, Γραφείο, Επιστήμη, ή παρόμοια υπομενού, ανάλογα με την συγκεκριμένη διαμόρφωση. Το στοιχείου μενού που ψάχνετε είναι Εργαλείο μαθηματικών Genius. Μόλις το εντοπίσετε αυτό το στοιχείο μενού πατήστε το για να ξεκινήσετε το Εργαλείο μαθηματικών Genius.

Ο διάλογος Εκτέλεση

  Ανάλογα με την εγκατάσταση του συστήματός σας, το στοιχείο μενού μπορεί να μην είναι διαθέσιμο. Αν δεν είναι, μπορείτε να ανοίξετε τον διάλογο εκτέλεσης και να εκτελέσετε την `gnome-genius`.

Γραμμή εντολών

  Για να ξεκινήσετε την έκδοση GNOME του Εργαλείο μαθηματικών Genius εκτελέστε την `gnome-genius` από την γραμμή εντολών.

  Για να ξεκινήσετε μόνο την έκδοση της γραμμής εντολών, εκτελέστε την ακόλουθη εντολή: `genius`. Αυτή η έκδοση δεν περιλαμβάνει το γραφικό περιβάλλον και κάποιες λειτουργίες όπως η σχεδίαση δεν θα είναι διαθέσιμες.

### Όταν ξεκινάτε το Genius

Όταν ξεκινάτε την έκδοση GNOME του Εργαλείο μαθηματικών Genius, το εικονιζόμενο παράθυρο στο εμφανίζεται.

#### Το παράθυρο Εργαλείο μαθηματικών Genius

Shows Genius Mathematics Tool main window. Contains titlebar, menubar, toolbar and working area. Menubar contains File, Edit, Calculator, Examples, Programs, Settings, and Help menus.

Το παράθυρο Εργαλείο μαθηματικών Genius περιέχει τα παρακάτω στοιχεία:

Γραμμή μενού.

  Τα μενού στη γραμμή μενού περιέχουν όλες τις εντολές που χρειάζεστε για να δουλέψετε με αρχεία στο Εργαλείο μαθηματικών Genius. Το μενού Αρχείο περιέχει στοιχεία για φόρτωση και αποθήκευση στοιχείων καθώς και δημιουργία νέων προγραμμάτων. Η εντολή φόρτωση και εκτέλεση... δεν ανοίγει ένα νέο παράθυρο για το πρόγραμμα, αλλά απλά εκτελεί άμεσα το πρόγραμμα. Είναι ισοδύναμη με την εντολή `φόρτωση`.

  The Calculator 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 Calculator allows plotting functions using a user friendly dialog box.

  The Examples 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 Genius Mathematics Tool or some mathematical concept.

  The Programs menu lists the currently open programs and allows you to switch between them.

  Τα άλλα μενού έχουν τις ίδιες οικείες συναρτήσεις όπως στις άλλες εφαρμογές.

Εργαλειοθήκη.

  Η εργαλειοθήκη περιέχει ένα υποσύνολο των εντολών που μπορείτε να προσπελάσετε από τη γραμμή μενού.

Περιοχή εργασίας

  Η περιοχή εργασίας είναι η πρωτεύουσα μέθοδος αλληλεπίδρασης με την εφαρμογή.

  Η περιοχή εργασίας αρχικά έχει μόνο την καρτέλα κονσόλα, που είναι ο κύριος τρόπος αλληλεπίδρασης με την αριθμομηχανή. Εδώ πληκτρολογείτε παραστάσεις και τα αποτελέσματα επιστρέφονται αμέσως μετά το πάτημα του πλήκτρου εισαγωγής.

  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.

## Βασική χρήση

### Χρήση της περιοχής εργασίας

Κανονικά, αλληλεπιδράτε με την αριθμομηχανή στην καρτέλα κονσόλα της περιοχής εργασίας. Αν τρέχετε την κειμενική μόνο έκδοση, τότε η κονσόλα θα είναι το μόνο πράγμα που είναι διαθέσιμο σε σας. Αν θέλετε να χρησιμοποιήσετε το Εργαλείο μαθηματικών Genius ως αριθμομηχανή μόνο, πληκτρολογήστε απλά την παράστασή σας εδώ και η επιστρεφόμενη τιμή θα υπολογιστεί.

To evaluate an expression, type it into the Console work area and press enter. Expressions are written in a language called GEL. The most simple GEL expressions just looks like mathematics. For example

    genius> 30*70 + 67^3.0 + ln(7) * (88.8/100)

or

    genius> 62734 + 812634 + 77^4 mod 5

or

    genius> | sin(37) - e^7 |

or

    genius> sum n=1 to 70 do 1/n

(Last is the harmonic sum from 1 to 70)

To get a list of functions and commands, type:

    genius> help

If you wish to get more help on a specific function, type:

    genius> help FunctionName

To view this manual, type:

    genius> manual

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 `path/to/program.gel`, type

    genius> load path/to/program.gel

Genius Mathematics Tool keeps track of the current directory. To list files in the current directory type `ls`, to change directory do `cd directory` as in the UNIX command shell.

### Για να δημιουργήσετε ένα νέο πρόγραμμα

If you wish to enter several more complicated commands, or perhaps write a complicated function using the GEL language, you can create a new program; really just a file with many commands.

To start writing a new program, choose File New Program. A new tab will appear in the work area. You can write a GEL program in this work area. Once you have written your program you can run it by Calculator Run (or the Run toolbar button). This will execute your program and will display any output on the Console 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. Calculator Run will always run the currently selected program even if you are on the Console tab. The currently selected program has its tab in bold type. To select a program, just click on its tab.

To save the program you've just written, choose File Save As.... Similarly as in other programs you can choose File Save 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 File Save All Unsaved.

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.

### Για το άνοιγμα και την εκτέλεση ενός προγράμματος

Για να ανοίξετε ένα αρχείο, επιλέξτε Αρχείο Άνοιγμα. Μια νέα καρτέλα που περιέχει το αρχείο θα εμφανιστεί στην περιοχή εργασίας. Μπορείτε να την χρησιμοποιήσετε για να επεξεργαστείτε το αρχείο.

Για να εκτελέσετε ένα πρόγραμμα από ένα αρχείο, επιλέξτε Αρχείο Φόρτωση και εκτέλεση.... Αυτό θα τρέξει το πρόγραμμα χωρίς να το ανοίξει σε ξεχωριστή καρτέλα. Αυτό είναι ισοδύναμο με την εντολή `φόρτωση`.

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 File Reload from Disk 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.

## Γραφική παράσταση

Η υποστήριξη σχεδίασης είναι διαθέσιμη μόνο στην γραφική έκδοση GNOME. Όλες οι προσβάσιμες σχεδιάσεις από τη γραφική διεπαφή είναι διαθέσιμες από το παράθυρο Δημιουργία σχεδίου. Μπορείτε να προσπελάσετε αυτό το παράθυρο είτε πατώντας στο κουμπί Γραφική παράσταση στην εργαλειοθήκη είτε επιλέγοντας Γραφική παράσταση από το μενού Αριθμομηχανή. Μπορείτε επίσης να προσπελάσετε τη λειτουργία γραφικής παράστασης χρησιμοποιώντας τις συναρτήσεις σχεδίασης της γλώσσας GEL. Δείτε για να βρείτε πώς να εισάγετε εκφράσεις που καταλαβαίνει το Genius.

### Γραμμικές γραφικές παραστάσεις

To graph real-valued functions of one variable, open the Create Plot window. You can also use the `LinePlot` function on the command line (see its documentation). And by the words line plot, we mean plots in the plane, as opposed to surface plots, which are in three dimensions.

Μόλις πατήσετε το κουμπί Γραφική παράσταση, ανοίγει ένα παράθυρο με κάποια σημειωματάρια σε αυτό. Πρέπει να είσαστε στην καρτέλα σημειωματαρίου Συνάρτηση γραμμικής γραφικής παράστασης και μέσα σε αυτό να είσαστε στην καρτέλα σημειωματαρίου Συναρτήσεις / εκφράσεις. Δείτε .

#### Δημιουργία παραθύρου γραφικής παράστασης

Shows the line plotting window.

Type expressions with `x` as the independent variable into the textboxes. Alternatively you can give names of functions such as `cos` rather then having to type `cos(x)`. 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. In the boxes for the ranges, simple expressions are allowed, such as `2*pi` or `10^3`. The `y` (dependent) range can be set automatically by turning on the Fit dependent axis checkbox. The names of the variables can also be changed. Pressing the Plot button produces the graph shown in .

The variables can be renamed by clicking the Change variable names... 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.

#### Παράθυρο γραφικής παράστασης

The graph produced.

Από εκεί μπορείτε να τυπώσετε τη γραφική παράσταση, να δημιουργήσετε ενθυλακωμένη postscript ή μια έκδοση PNG της γραφικής παράστασης ή να αλλάξετε την εστίαση. Αν ο εξαρτημένος άξονας δεν ορίστηκε σωστά, μπορείτε να κάνετε το Genius να τον προσαρμόσει, βρίσκοντας τα ακρότατα των συναρτήσεων γραφημάτων.

Για τη σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της συνάρτησης `LinePlot`.

### Παραμετρικές γραφικές παραστάσεις

Στο παράθυρο δημιουργίας γραφικών παραστάσεων, μπορείτε επίσης να επιλέξετε την καρτέλα σημειωματαρίου Παραμετρικά για να δημιουργήσετε παραμετρικές γραφικές παραστάσεις δύο διαστάσεων. Με αυτόν τον τρόπο μπορείτε να σχεδιάσετε μια συνάρτηση με μια μοναδική παράμετρο. Μπορείτε είτε να ορίσετε τα σημεία ως `x` και `y`, είτε να δώσετε έναν μοναδικό μιγαδικό αριθμό ως μια συνάρτηση της μεταβλητής `t`. Η περιοχή της μεταβλητής `t` δίνεται ρητά και η συνάρτηση παίρνει δείγματα σύμφωνα με τη δοσμένη αύξηση. Η περιοχή `x` και `y` μπορεί να οριστεί αυτόματα ενεργοποιώντας το πλαίσιο ελέγχου Προσαρμογή εξαρτημένου άξονα, ή μπορεί να οριστεί ρητά. Δείτε .

#### Καρτέλα παραμετρικών γραφικών παραστάσεων

Parametric plotting tab in the Create Plot window.

Ένα παράδειγμα των παραμετρικών γραφικών παραστάσεων δίνεται στο . Παρόμοιες πράξεις μπορούν να γίνουν σε τέτοια γραφήματα όπως μπορούν να γίνουν σε άλλες γραμμικές γραφικές παραστάσεις. Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της συνάρτησης `LinePlotParametric` ή `LinePlotCParametric`.

#### Παραμετρικές γραφικές παραστάσεις

Parametric plot produced

### Γραφικές παραστάσεις πεδίου κλίσεων

Στο παράθυρο δημιουργίας γραφικής παράστασης, μπορείτε επίσης να επιλέξετε την καρτέλα σημειωματαρίου πεδίου κλίσης για τη δημιουργία μιας δισδιάστατης γραφικής παράστασης πεδίου κλίσης. Παρόμοιες πράξεις μπορούν να γίνουν σε τέτοια γραφήματα όπως μπορούν να γίνουν στις άλλες γραμμικές γραφικές παραστάσεις. Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της συνάρτησης `SlopefieldPlot`.

Όταν ένα πεδίο κλίσης είναι ενεργό, υπάρχει ένα πρόσθετο διαθέσιμο μενού επίλυσης, μέσα από το οποίο μπορείτε να εμφανίσετε τον διάλογο επίλυσης. Εδώ μπορείτε να έχετε συγκεκριμένες λύσεις για γραφικές παραστάσεις σε δεδομένες αρχικές συνθήκες. Μπορείτε είτε να ορίσετε εσωτερικές συνθήκες στον διάλογο, ή μπορείτε να πατήσετε στη γραφική παράσταση άμεσα για να ορίσετε το αρχικό σημείο. Ενώ ο διάλογος επίλυσης είναι ενεργός, η εστίαση πατώντας και μεταφέροντας δεν δουλεύει. Πρέπει να κλείσετε πρώτα τον διάλογο, αν θέλετε να εστιάσετε χρησιμοποιώντας το ποντίκι.

Ο επιλύτης χρησιμοποιεί την τυπική μέθοδο Runge-Kutta. Οι γραφικές παραστάσεις θα μείνουν στην οθόνη μέχρι να καθαριστούν. Ο επιλύτης θα σταματήσει όποτε φτάσει στα όρια του παραθύρου σχεδίασης. Η εστίαση δεν αλλάζει τα όρια ή τις παραμέτρους των λύσεων, θα πρέπει να καθαρίσετε και να τις επανασχεδιάσετε με κατάλληλες παραμέτρους. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση `SlopefieldDrawSolution` για να σχεδιάσετε λύσεις από τη γραμμή εντολών ή προγραμμάτων.

### Γραφικές παραστάσεις διανυσματικού πεδίου

Στο παράθυρο δημιουργίας γραφικής παράστασης, μπορείτε να επιλέξετε επίσης την καρτέλα σημειωματαρίου διανυσματικό πεδίο για να δημιουργήσετε μια δισδιάστατη γραφική παράσταση διανυσματικού πεδίου. Παρόμοιες λειτουργίες μπορούν να γίνουν σε τέτοια γραφήματα όπως μπορούν να γίνουν σε άλλες γραμμικές γραφικές παραστάσεις. Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών δείτε την τεκμηρίωση της συνάρτησης `VectorfieldPlot`.

Από προεπιλογή η κατεύθυνση και το μέγεθος του διανυσματικού πεδίου εμφανίζονται. Για να εμφανίσετε μόνο την κατεύθυνση και όχι το μέγεθος, σημειώστε το κατάλληλο πλαίσιο ελέγχου για να κανονικοποιήσετε τα μήκη των διανυσμάτων.

Όταν ένα πεδίο κλίσης είναι ενεργό, υπάρχει ένα πρόσθετο διαθέσιμο μενού επιλύτη, μέσα από το οποίο μπορείτε να εμφανίσετε τον διάλογο επίλυσης. Εδώ μπορείτε να έχετε συγκεκριμένες λύσεις για γραφικές παραστάσεις σε δεδομένες αρχικές συνθήκες. Μπορείτε είτε να ορίσετε εσωτερικές συνθήκες στον διάλογο, ή μπορείτε να πατήσετε στη γραφική παράσταση άμεσα για να ορίσετε το αρχικό σημείο. Ενώ ο διάλογος επίλυσης είναι ενεργός, η εστίαση πατώντας και μεταφέροντας δεν δουλεύει. Πρέπει να κλείσετε πρώτα τον διάλογο, αν θέλετε να εστιάσετε χρησιμοποιώντας το ποντίκι.

Ο επιλύτης χρησιμοποιεί την τυπική μέθοδο Runge-Kutta. Οι γραφικές παραστάσεις θα μείνουν στην οθόνη μέχρι να καθαριστούν. Η εστίαση δεν αλλάζει τα όρια ή τις παραμέτρους των λύσεων, θα πρέπει να καθαρίσετε και να τις επανασχεδιάσετε με κατάλληλες παραμέτρους. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση `VectorfieldDrawSolution` για να σχεδιάσετε λύσεις από τη γραμμή εντολών ή προγραμμάτων.

### Γραφικές παραστάσεις επιφάνειας

Η Genius μπορεί να σχεδιάσει επίσης επιφάνειες. Επιλέξτε την καρτέλα γραφική παράσταση επιφάνειας στο κύριο σημειωματάριο του παραθύρου Δημιουργία γραφικής παράστασης. Εδώ μπορείτε να ορίσετε μια μοναδική έκφραση που πρέπει να χρησιμοποιήσει είτε τις `x` και `y` ως πραγματικές ανεξάρτητες μεταβλητές ή την `z` ως μιγαδική μεταβλητή (όπου `x` είναι το πραγματικό τμήμα της `z` και `y` είναι το φανταστικό τμήμα). Για παράδειγμα για να σχεδιάσετε το μέτρο της συνάρτησης συνημιτόνου για μιγαδικές παραμέτρους, μπορείτε να εισάγετε `|cos(z)|`. Αυτό θα είναι ισοδύναμο με `|cos(x+1i*y)|`. Δείτε . Για σχεδίαση χρησιμοποιώντας τη γραμμή εντολών, δείτε την τεκμηρίωση της συνάρτησης `SurfacePlot`.

The `z` range can be set automatically by turning on the Fit dependent axis checkbox. The variables can be renamed by clicking the Change variable names... 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.

#### Γραφικές παραστάσεις επιφάνειας

Modulus of the complex cosine function.

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 Rotate axis... in the View menu. The View 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 Start rotate animation, to start a continuous slow rotation. This is especially good if using Genius Mathematics Tool to present to an audience.

## Βασικά της GEL

GEL σημαίνει γλώσσα επέκτασης Genius. Είναι η γλώσσα που χρησιμοποιείτε για να γράψετε προγράμματα στη Genius. Ένα πρόγραμμα στη GEL είναι απλά μια παράσταση που υπολογίζει έναν αριθμό. Το Εργαλείο μαθηματικών Genius μπορεί να χρησιμοποιηθεί ως μια απλή αριθμομηχανή, ή ως ένα ισχυρό θεωρητικό εργαλείο αναζήτησης. Η σύνταξη πρέπει να έχει όσο πιο ρηχή καμπύλη μάθησης γίνεται, ειδικά για χρήση ως αριθμομηχανή.

### Τιμές

Οι τιμές στην GEL μπορεί να είναι αριθμοί, Λογικές τιμές ή συμβολοσειρές. Η GEL θεωρεί επίσης πίνακες ως τιμές. Οι τιμές μπορεί να χρησιμοποιηθούν σε υπολογισμούς, εκχωρημένες σε μεταβλητές και να επιστραφούν από τις συναρτήσεις, μεταξύ άλλων χρήσεων.

#### Αριθμοί

Integers are the first type of number in GEL. Integers are written in the normal way.

    1234

Hexadecimal and octal numbers can be written using C notation. For example:

    0x123ABC
    01234

Or you can type numbers in an arbitrary base using `<base>\<number>`. Digits higher than 10 use letters in a similar way to hexadecimal. For example, a number in base 23 could be written:

    23\1234ABCD

The second type of GEL number is rationals. Rationals are simply achieved by dividing two integers. So one could write:

    3/4

to get three quarters. Rationals also accept mixed fraction notation. So in order to get one and three tenths you could write:

    1 3/10

The next type of number is floating point. These are entered in a similar fashion to C notation. You can use `E`, `e` or `@` as the exponent delimiter. Note that using the exponent delimiter gives a float even if there is no decimal point in the number. Examples:

    1.315
    7.887e77
    7.887e-77
    .3
    0.3
    77e5

When Genius prints a floating point number it will always append a `.0` 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 `.0`.

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 `i`. Here are examples of entering complex numbers:

    1+2i
    8.01i
    77*e^(1.3i)

Κατά την εισαγωγή φανταστικών αριθμών, ένας αριθμός πρέπει να είναι μπροστά από το `i`. Αν χρησιμοποιήσετε `i` αυτό καθεαυτό, η Genius θα το ερμηνεύσει ως αναφορά στη μεταβλητή `i`. Αν χρειάζεται να αναφέρετε το `i` αυτό καθεαυτό, χρησιμοποιήστε `1i` στη θέση του.

Για να χρησιμοποιήσετε μικτή σημειογραφία κλάσματος με φανταστικούς αριθμούς, πρέπει να έχετε το μικτό κλάσμα σε παρενθέσεις. (δηλαδή, `(1 2/5)i`)

#### Λογικές τιμές

Η Genius επίσης υποστηρίζει εγγενείς λογικές τιμές. Οι δύο σταθερές λογικών τιμών ορίζονται ως `true` και `false`· αυτά τα αναγνωριστικά μπορούν να χρησιμοποιηθούν όπως κάθε άλλη μεταβλητή. Μπορείτε επίσης να χρησιμοποιήσετε τα αναγνωριστικά `True`, `TRUE`, `False` και `FALSE` ως παραλλαγές για τα παραπάνω.

Σε οποιαδήποτε θέση όπου αναμένεται παράσταση λογικών τιμών, μπορείτε να χρησιμοποιήσετε μια λογική τιμή ή οποιαδήποτε παράσταση παράγει ή έναν αριθμό ή μια λογική τιμή. Αν η Genius χρειάζεται να υπολογίσει έναν αριθμό ως λογική τιμή θα ερμηνεύσει το 0 ως `ψευδή` και οποιοδήποτε άλλο αριθμό ως `αληθή`.

In addition, you can do arithmetic with Boolean values. For example:

    ( (1 + true) - false ) * true

is the same as:

    ( (true or true) or not false ) and true

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:

    1 == true

always evaluates to `true` since 1 will be converted to `true` before being compared to `true`.

#### Συμβολοσειρές

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:

    a=2+3;"The result is: "+a

will create the string:

    The result is: 5

You can also use C-like escape sequences such as `\n`,`\t`,`\b`,`\a` and `\r`. To get a `\` or `"` into the string you can quote it with a `\`. For example:

    "Slash: \\ Quotes: \" Tabs: \t1\t2\t3"

will make a string:

    Slash: \ Quotes: " Tabs: 	1	2	3

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 `print` or `printn` functions.

In addition, you can use the library function `string` to convert anything to a string. For example:

    string(22)

will return

    "22"

Strings can also be compared with `==` (equal), `!=` (not equal) and `<=>` (comparison) operators

#### Null

There is a special value called `null`. No operations can be performed on it, and nothing is printed when it is returned. Therefore, `null` is useful when you do not want output from an expression. The value `null` can be obtained as an expression when you type `.`, the constant `null` or nothing. By nothing we mean that if you end an expression with a separator `;`, it is equivalent to ending it with a separator followed by a `null`.

Example:

    x=5;.
    x=5;

Κάποιες συναρτήσεις επιστρέφουν `null`, όταν καμιά τιμή δεν μπορεί να επιστραφεί ή όταν συμβαίνει ένα σφάλμα. Επίσης η `null` χρησιμοποιείται ως ένα κενό διάνυσμα ή πίνακας, ή μια κενή αναφορά.

### Χρήση μεταβλητών

Syntax:

    VariableName

Example:

    genius> e
    = 2.71828182846

Για να αξιολογηθεί μια μεταβλητή αυτή καθεαυτή, εισάγετε απλώς το όνομα της μεταβλητής. Αυτή θα επιστρέψει την τιμή της μεταβλητής. Μπορείτε να χρησιμοποιήσετε μια μεταβλητή οπουδήποτε θα μπορούσατε κανονικά να χρησιμοποιήσετε έναν αριθμό ή την συμβολοσειρά. Επιπλέον, οι μεταβλητές είναι απαραίτητες όταν ορίζονται συναρτήσεις που παίρνουν ορίσματα (δείτε ).

#### Χρήση συμπλήρωσης καρτέλας

Μπορείτε να χρησιμοποιήσετε την συμπλήρωση καρτέλας για να πάρετε την Genius για να συμπληρωθούν τα ονόματα των μεταβλητών για σας. Δοκιμάστε την πληκτρολόγηση των πρώτων λίγων γραμμάτων του ονόματος και πατήστε `καρτέλα`.

#### Τα ονόματα των μεταβλητών είναι με διάκριση πεζών/κεφαλαίων

Τα ονόματα των μεταβλητών είναι με διάκριση πεζών/κεφαλαίων. Αυτό σημαίνει ότι οι μεταβλητές με όνομα `hello`, `HELLO` and `Hello` είναι όλες διαφορετικές μεταβλητές.

#### Ορισμός μεταβλητών

Syntax:

    <identifier> = <value>
    <identifier> := <value>

Example:

    x = 3
    x := 3

To assign a value to a variable, use the `=` or `:=` operators. These operators set the value of the variable and return the value you set, so you can do things like

    a = b = 5

This will set `b` to 5 and then also set `a` to 5.

Οι τελεστές `=` και `:=` μπορούν να χρησιμοποιηθούν και οι δύο για να ορίσουν μεταβλητές. Η διαφορά μεταξύ τους είναι ότι ο τελεστής `:=` δρα πάντα ως μια ανάθεση τελεστή, ενώ ο τελεστής `=` μπορεί να ερμηνευτεί ως δοκιμή για ισότητα όταν χρησιμοποιείται σε ένα περιεχόμενο όπου μια παράσταση λογικής τιμής αναμένεται.

Για περισσότερες πληροφορίες σχετικά με την εμβέλεια των μεταβλητών, δηλαδή, πότε είναι ορατές οι μεταβλητές, δείτε .

#### Ενσωματωμένες μεταβλητές

GEL has a number of built-in ‘variables’, such as `e`, `pi` or `GoldenRatio`. 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 for a full list. Note that `i` 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 `1i`.

#### Προηγούμενη μεταβλητή αποτελέσματος

The `Ans` and `ans` 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:

    Ans+389

### Χρησιμοποίηση συναρτήσεων

Syntax:

    FunctionName(argument1, argument2, ...)

Example:

    Factorial(5)
    cos(2*pi)
    gcd(921,317)

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.

Υπάρχουν πολλές ενσωματωμένες συναρτήσεις, όπως οι `sin`, `cos` και `tan`. Μπορείτε να χρησιμοποιήσετε την ενσωματωμένη εντολή `help` για να πάρετε έναν κατάλογο διαθέσιμων συναρτήσεων, ή δείτε για έναν πλήρη κατάλογο.

#### Χρήση συμπλήρωσης καρτέλας

Μπορείτε να χρησιμοποιήσετε την συμπλήρωση καρτέλας για να βάλετε την Genius να συμπληρώσει τα ονόματα των συναρτήσεων για σας. Δοκιμάστε την πληκτρολόγηση των πρώτων λίγων γραμμάτων του ονόματος και πατήστε `Καρτέλα`.

#### Τα ονόματα των συναρτήσεων είναι με διάκριση πεζών/κεφαλαίων

Τα ονόματα των συναρτήσεων είναι με διάκριση πεζών/κεφαλαίων. Αυτό σημαίνει ότι οι συναρτήσεις με όνομα `dosomething`, `DOSOMETHING` και `DoSomething` είναι όλες διαφορετικές συναρτήσεις.

#### Ορισμός συναρτήσεων

Syntax:

    function <identifier>(<comma separated arguments>) = <function body>
    <identifier> = (`() = <function body>)

The ``` is the backquote character, and signifies an anonymous function. By setting it to a variable name you effectively define a function.

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:

    function addup(a,b,c) = a+b+c

then `addup(1,4,9)` yields 14

#### Κατάλογοι ορισμάτων μεταβλητής

If you include `...` 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 `null`. Otherwise, it will be a horizontal vector containing all the arguments. For example:

    function f(a,b...) = b

Then `f(1,2,3)` yields `[2,3]`, while `f(1)` yields a `null`.

#### Πέρασμα συναρτήσεων σε συναρτήσεις

Στο Genius, είναι δυνατό να περάσετε μια συνάρτηση ως ένα όρισμα σε μια άλλη συνάρτηση. Αυτό μπορεί να γίνει χρησιμοποιώντας είτε ‘κόμβους συνάρτησης’ ή ανώνυμες συναρτήσεις.

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:

    function f(a,b) = a(b)+1;
    function b(x) = x*x;
    f(b,2)

To pass functions that are not defined, you can use an anonymous function (see ). That is, you want to pass a function without giving it a name. Syntax:

    function(<comma separated arguments>) = <function body>
    `(<comma separated arguments>) = <function body>

Example:

    function f(a,b) = a(b)+1;
    f(`(x) = x*x,2)

This will return 5.

#### Πράξεις σε συναρτήσεις

Some functions allow arithmetic operations, and some single argument functions such as `exp` or `ln`, to operate on the function. For example,

    exp(sin*cos+4)

will return a function that takes `x` and returns `exp(sin(x)*cos(x)+4)`. It is functionally equivalent to typing

    `(x) = exp(sin(x)*cos(x)+4)

This operation can be useful when quickly defining functions. For example to create a function called `f` to perform the above operation, you can just type:

    f = exp(sin*cos+4)

It can also be used in plotting. For example, to plot sin squared you can enter:

    LinePlot(sin^2)

Δεν μπορούν όλες οι συναρτήσεις να χρησιμοποιηθούν κατ' αυτόν τον τρόπο. Για παράδειγμα, όταν χρησιμοποιείτε μια δυαδική πράξη οι συναρτήσεις πρέπει να παίρνουν τον ίδιο αριθμό ορισμάτων.

### Διαχωριστικό

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 `;` 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:

    3 ; 5

This expression will yield 5.

This will require some parenthesizing to make it unambiguous sometimes, especially if the `;` is not the top most primitive. This slightly differs from other programming languages where the `;` 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 `;` is found at the end of a parenthesis or a block, genius will append a null to it as if you would have written `;null`. This is useful in case you do not want to return a value from a loop, or if you handle the return differently.

If you are typing expressions in a program file you do not have to add a semicolon. In this case genius will simply print the return value whenever it executes the expression. This is the same as when typing on the command line. However, do note that if you are defining a function, the body of the function is a single expression. Usually, therefore, if a function body is long, you will need to enclose it in parentheses.

### Σχόλια

GEL is similar to other scripting languages in that `#` 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,

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

### Μετρικός υπολογισμός

Genius implements modular arithmetic. To use it you just add "mod <integer>" after the expression. Example: `2^(5!) * 3^(6!) mod 5` It could be possible to do modular arithmetic by computing with integers and then modding in the end with the `%` operator, which simply gives the remainder, but that may be time consuming if not impossible when working with larger numbers. For example, `10^(10^10) % 6` will simply not work (the exponent will be too large), while `10^(10^10) mod 6` is instantaneous. The first expression first tries to compute the integer `10^(10^10)` and then find remainder after division by 6, while the second expression evaluates everything modulo 6 to begin with.

The inverses of numbers mod some integer are computed by writing them as rational numbers (as long as the desired inverse exists, of course). Examples:

    10^-1 mod 101
    1/10 mod 101

Modular evaluation also works with matrices including taking inverses, powers, and dividing. Example:

    A = [1,2;3,4]
    B = A^-1 mod 5
    A*B mod 5

This should yield the identity matrix as B will be the inverse of A mod 5.

Some functions such as `sqrt` or `log` 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:

    genius> sqrt(4) mod 7
    =
    [2, 5]
    genius> 2*2 mod 7
    = 4

`sqrt` will actually return all the possible square roots.

Μην συνδέετε τελεστές mod, απλά τοποθετήστε τους στο τέλος του υπολογισμού, όλοι οι υπολογισμοί στην παράσταση στα αριστερά θα εκτελεστούν σε αριθμητική mod. Αν βάλετε μια mod μέσα σε μια mod, θα πάρετε απροσδόκητα αποτελέσματα. Αν θέλετε απλά να πάρετε υπόλοιπο ενός απλού αριθμού και να ελέγξετε ακριβώς πότε παίρνονται υπόλοιπα, καλύτερα να χρησιμοποιήσετε τον τελεστή `%`. Όταν χρειάζεται να συνδέσετε αρκετές παραστάσεις σε αριθμητική υπολοίπων με διαφορετικούς διαιρέτες, μπορεί να είναι καλύτερο να χωρίσετε απλά την παράσταση σε αρκετές και να χρησιμοποιήσετε προσωρινές μεταβλητές για να αποφύγετε ένα mod μέσα σε ένα mod.

### Κατάλογος τελεστών GEL

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.

`a;b`

  Το διαχωριστικό, δίνει και την `a` και την `b`, αλλά επιστρέφει μόνο το αποτέλεσμα της `b`.

`a=b`

  Ο τελεστής ανάθεσης. Αυτός αναθέτει τη `b` στη `a` (η `a` πρέπει να είναι μια έγκυρη lvalue) (σημειώστε όμως ότι αυτός ο τελεστής μπορεί να μεταφραστεί σε `==` αν χρησιμοποιηθεί σε μια θέση όπου αναμένεται παράσταση λογικής τιμής)

`a:=b`

  Ο τελεστής ανάθεσης. Εκχωρεί την `b` στην `a` (η `a` πρέπει να είναι μια έγκυρη lvalue). Αυτός είναι διαφορετικός από τον `=`, επειδή δεν μεταφράζεται ποτέ σε μια `==`.

`|a|`

  Absolute value. In case the expression is a complex number the result will be the modulus (distance from the origin). For example: `|3 * e^(1i*pi)|` returns 3.

  Δείτε Mathworld για περισσότερες πληροφορίες.

`a^b`

  Εκθετοποίηση, ανυψώνει μια `a` στη δύναμη `b`.

`a.^b`

  Εκθετοποίηση στοιχείου κατά στοιχείο. Ανυψώνει κάθε στοιχείο ενός πίνακα `a` στη δύναμη `b`. Ή αν η `b` είναι ένας πίνακας του ίδιου μεγέθους όπως η `a`, τότε κάνει την πράξη στοιχείο κατά στοιχείο. Αν η `a` είναι ένας αριθμός και η `b` είναι ένας πίνακας, τότε δημιουργεί έναν πίνακα του ίδιου μεγέθους όπως η `b` με τη `a` υψωμένη σε όλες τις διαφορετικές δυνάμεις στην `b`.

`a+b`

  Πρόσθεση. Προσθέτει δύο αριθμούς, πίνακες, συναρτήσεις ή συμβολοσειρές. Αν προσθέτετε μια συμβολοσειρά σε ο,τιδήποτε το αποτέλεσμα θα είναι απλά μια συμβολοσειρά. Αν ο ένας είναι ένας τετραγωνικός πίνακας και ο άλλος ένας αριθμός, τότε ο αριθμός πολλαπλασιάζεται με τον ταυτοτικό πίνακα.

`a-b`

  Αφαίρεση. Αφαιρεί δύο αριθμούς, πίνακες ή συναρτήσεις.

`a*b`

  Πολλαπλασιασμός. Αυτός είναι ο κανονικός πίνακας πολλαπλασιασμού.

`a.*b`

  Πολλαπλασιασμός στοιχείο με στοιχείο αν οι `a` και `b` είναι πίνακες.

`a/b`

  Διαίρεση. Όταν οι `a` και `b` είναι μόνο αριθμοί, αυτή είναι η κανονική διαίρεση. Όταν είναι πίνακες, τότε αυτή είναι ισοδύναμη με `a*b^-1`.

`a./b`

  Element by element division. Same as `a/b` for numbers, but operates element by element on matrices.

`a\b`

  Οπίσθια διαίρεση. Είναι η ίδια με `b/a`.

`a.\b`

  Οπίσθια διαίρεση στοιχείου με στοιχείο.

`a%b`

  The mod operator. This does not turn on the modular mode, but just returns the remainder of integer division `a/b`.

`a.%b`

  Element by element mod operator. Returns the remainder after element by element integer division `a./b`.

`a mod b`

  Τελεστής υπολογισμού υπολοίπων. Η παράσταση `a` υπολογίζει το modulo `b`. Δείτε . Κάποιες συναρτήσεις και κάποιοι τελεστές συμπεριφέρονται διαφορετικά με το ισοϋπόλοιπο ενός ακεραίου.

`a!`

  Παραγοντικός τελεστής. Αυτό είναι παρόμοιο με `1*...*(n-2)*(n-1)*n`.

`a!!`

  Διπλός παραγοντικός τελεστής. Αυτός είναι παρόμοιος με `1*...*(n-4)*(n-2)*n`.

`a==b`

  Τελεστής ισότητας. Επιστρέφει `αληθές` ή `ψευδές` ανάλογα με το αν οι `a` και `b` είναι ίσες ή όχι.

`a!=b`

  Τελεστής ανισότητας, επιστρέφει `αληθές` αν η `a` δεν είναι ίση με την `b`, αλλιώς επιστρέφει `ψευδές`.

`a<>b`

  Εναλλακτικός τελεστής ανισότητας, επιστρέφει `αληθές` αν η `a` δεν είναι ίση με την `b`, αλλιώς επιστρέφει `ψευδές`.

`a<=b`

  Τελεστής μικρότερος από ή ίσος, επιστρέφει `αληθές` αν `a` είναι μικρότερο από ή ίσο με `b`, αλλιώς επιστρέφει `ψευδές`. Αυτοί μπορούν να συνδεθούν όπως στο `a <= b <= c` (μπορούν επίσης να συνδυαστούν με τον τελεστή λιγότερο από).

`a>=b`

  Greater than or equal operator, returns `true` if `a` is greater than or equal to `b` else returns `false`. These can be chained as in `a >= b >= c` (and they can also be combined with the greater than operator).

`a<b`

  Less than operator, returns `true` if `a` is less than `b` else returns `false`. These can be chained as in `a < b < c` (they can also be combined with the less than or equal to operator).

`a>b`

  Greater than operator, returns `true` if `a` is greater than `b` else returns `false`. These can be chained as in `a > b > c` (they can also be combined with the greater than or equal to operator).

`a<=>b`

  Τελεστής σύγκρισης. Αν `a` είναι ίσο με `b` επιστρέφει 0, αν `a` είναι μικρότερο από `b` επιστρέφει -1 και αν `a` είναι μεγαλύτερο από `b` επιστρέφει 1.

`a and b`

  Λογικό και. Επιστρέφει αληθές αν αμφότερα τα `a` και `b` είναι αληθή, αλλιώς επιστρέφει ψευδές. Αν είναι δοσμένοι οι αριθμοί, οι μη μηδενικοί αριθμοί αντιμετωπίζονται ως αληθείς.

`a or b`

  Logical or. Returns true if either `a` or `b` is true, else returns false. If given numbers, nonzero numbers are treated as true.

`a xor b`

  Logical xor. Returns true if exactly one of `a` or `b` is true, else returns false. If given numbers, nonzero numbers are treated as true.

`not a`

  Logical not. Returns the logical negation of `a`.

`-a`

  Negation operator. Returns the negative of a number or a matrix (works element-wise on a matrix).

`&a`

  Αναφορά μεταβλητής (για το πέρασμα μιας αναφοράς σε μια μεταβλητή). Δείτε .

`*a`

  Αποαναφορά μεταβλητής (για πρόσβαση σε μια αναφερθείσα μεταβλητή). Δείτε .

`a'`

  Αναστροφή συζυγούς πίνακα. Δηλαδή, οι γραμμές και οι στήλες εναλλάσσονται και παίρνουμε τον συζυγή μιγαδικό όλων των καταχωρίσεων. Δηλαδή αν τα στοιχεία i,j της `a` είναι x+iy, τότε τα στοιχεία j,i του `a'` είναι x-iy.

`a.'`

  Η αναστροφή πίνακα, δεν παίρνει τον συζυγή μιγαδικό των καταχωρίσεων. Δηλαδή, τα στοιχεία i,j της `a` γίνονται τα στοιχεία του `a.'`.

`a@(b,c)`

  Get element of a matrix in row `b` and column `c`. If `b`, `c` are vectors, then this gets the corresponding rows, columns or submatrices.

`a@(b,)`

  Λήψη γραμμής ενός πίνακα (ή πολλαπλών γραμμών αν το `b` είναι ένα διάνυσμα).

`a@(b,:)`

  Ίδιο με το παραπάνω.

`a@(,c)`

  Λήψη στήλης ενός πίνακα (ή στηλών αν το `c` είναι ένα διάνυσμα).

`a@(:,c)`

  Ίδιο με το παραπάνω.

`a@(b)`

  Λήψη ενός στοιχείου από έναν πίνακα αντιμετωπίζοντας τον ως διάνυσμα. Αυτό θα διατρέξει τον πίνακα κατά τη γραμμή.

`a:b`

  Build a vector from `a` to `b` (or specify a row, column region for the `@` operator). For example to get rows 2 to 4 of matrix `A` we could do

      A@(2:4,)

  as `2:4` will return a vector `[2,3,4]`.
`a:b:c`

  Build a vector from `a` to `c` with `b` as a step. That is for example

      genius> 1:2:9
      =
      `[1, 3, 5, 7, 9]

  When the numbers involved are floating point numbers, for example `1.0:0.4:3.0`, 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 `2^-20` 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 `float` if you wish to get floating point numbers in the end. For example `1:2/5:3` does the right thing and `float(1:2/5:3)` even gives you floating point numbers and is ever so slightly more precise than `1.0:0.4:3.0`.

`(a)i`

  Make `a` into an imaginary number (multiply `a` by the imaginary). Normally the imaginary number `i` is written as `1i`. So the above is equal to

      (a)*1i

``a`

  Βάλτε ` σε ένα αναγνωριστικό έτσι ώστε να μην υπολογιστεί. Ή βάλτε ` σε έναν πίνακα, έτσι ώστε να μην επεκταθεί.

`a swapwith b`

  Εναλλαγή τιμής του `a` με την τιμή του `b`. Πρός το παρόν δεν λειτουργεί σε περιοχές στοιχείων πίνακα. Επιστρέφει `null`. Διαθέσιμο από την έκδοση 1.0.13.

`increment a`

  Αύξηση της μεταβλητής `a` κατά 1. Αν η `a` είναι ένας πίνακας, τότε αυξάνεται κάθε στοιχείο. Αυτό είναι ισοδύναμο με το `a=a+1`, αλλά είναι κάπως γρηγορότερο. Επιστρέφει `null`. Διαθέσιμο από την έκδοση 1.0.13.

`increment a by b`

  Αυξάνει τη μεταβλητή `a` κατά `b`. Αν η `a` είναι ένας πίνακας, τότε αυξάνεται κάθε στοιχείο. Αυτό είναι ισοδύναμο με το `a=a+b`, αλλά είναι κάπως γρηγορότερο. Επιστρέφει `null`. Διαθέσιμο από την έκδοση 1.0.13.

Ο τελεστής @() καθιστά τον: τελεστή πιο χρήσιμο. Με αυτό μπορείτε να ορίσετε περιοχές ενός πίνακα. Έτσι ώστε a@(2:4,6) είναι οι γραμμές 2,3,4 της στήλης 6. Ή a@(,1:2) θα σας πάρει τις πρώτες δύο στήλες ενός πίνακα. Μπορείτε επίσης να αναθέσετε στον τελεστή @(), όσο η δεξιά τιμή είναι ο πίνακας που ταιριάζει στην περιοχή σε μέγεθος, ή αν είναι οποιουδήποτε άλλου τύπου τιμής.

Οι τελεστές σύγκρισης (εκτός από τον τελεστή <=> που συμπεριφέρεται κανονικά), δεν είναι αυστηρά δυαδικοί τελεστές, μπορούν στην πραγματικότητα να ομαδοποιηθούν με τον κανονικό μαθηματικό τρόπο, π.χ.: (1<x<=y<5) είναι μια επιτρεπτή παράσταση λογικών τιμών και σημαίνει απλά αυτό που πρέπει, δηλαδή (1<x and x≤y and y<5)

Ο μοναδιαίος τελεστής μείον λειτουργεί με διαφορετικό τρόπο ανάλογα με το πού εμφανίζεται. Αν εμφανίζεται πριν από ένα αριθμό έχει στενή προτεραιότητα, αν εμφανίζεται μπροστά από μια παράσταση έχει μικρότερη προτεραιότητα από τη δύναμη και τους παραγοντικούς τελεστές. Έτσι για παράδειγμα `-1^k` είναι στην πραγματικότητα `(-1)^k`, αλλά `-foo(1)^k` είναι στην πραγματικότητα `-(foo(1)^k)`. Γιαυτό να προσέχετε τη χρήση του και αν αμφιβάλετε, προσθέστε παρενθέσεις.

## Προγραμματισμός με GEL

### Εξαρτήσεις

Syntax:

    if <expression1> then <expression2> [else <expression3>]

If `else` is omitted, then if the `expression1` yields `false` or 0, `NULL` is returned.

Examples:

    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 )

Note that `=` will be translated to `==` if used inside the expression for `if`, so

    if a=5 then a=a-1

will be interpreted as:

    if a==5 then a:=a-1

### Βρόχοι

#### Βρόχοι While

Syntax:

    while <expression1> do <expression2>
    until <expression1> do <expression2>
    do <expression2> while <expression1>
    do <expression2> until <expression1>

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 `NULL` if no iteration was done. In the boolean expression, `=` is translated into `==` just as for the `if` statement.

#### Βρόχοι For

Syntax:

    for <identifier> = <from> to <to> do <body>
    for <identifier> = <from> to <to> by <increment> do <body>

Loop with identifier being set to all values from `<from>` to `<to>`, 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 `<from>` if body was never evaluated. The variable is guaranteed to be initialized after a loop, so you can safely use it. Also the `<from>`, `<to>` and `<increment>` must be non complex values. The `<to>` is not guaranteed to be hit, but will never be overshot, for example the following prints out odd numbers from 1 to 19:

    for i = 1 to 20 by 2 do print(i)

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

    for x = 0 to 1 by 0.1 do print(x)

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:

    for x = 0 to 1 by 1/10 do print(x)

This check is done only from version 1.0.16 onwards, so execution of your code may differ on older versions.

#### Βρόχοι Foreach

Syntax:

    for <identifier> in <matrix> do <body>

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:

    for n in [1,2:3,4] do print(n)

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,

    for n in RowsOf ([1,2:3,4]) do print(n)

will print out [1,2] and then [3,4].

#### Break και Continue (διακοπή και συνέχιση)

You can also use the `break` and `continue` commands in loops. The continue `continue` command will restart the current loop at its next iteration, while the `break` command exits the current loop.

    while(<expression1>) do (
      if(<expression2>) break
      else if(<expression3>) continue;
      <expression4>
    )

### Sums και Products (αθροίσματα και γινόμενα)

Syntax:

    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>

If you substitute `for` with `sum` or `prod`, then you will get a sum or a product instead of a `for` loop. Instead of returning the last value, these will return the sum or the product of the values respectively.

Αν δεν εκτελεστεί κανένα σώμα (για παράδειγμα `sum i=1 to 0 do ...`) τότε το `sum` επιστρέφει 0 και το `prod` επιστρέφει 1 όπως είναι η τυπική σύμβαση.

Για αριθμούς κινητής υποδιαστολής η ίδια στρογγυλοποίηση προστασίας σφάλματος γίνεται όπως στον βρόχο for. Δείτε .

### Τελεστές σύγκρισης

Οι παρακάτω τυπικοί τελεστές σύγκρισης υποστηρίζονται στο GEL και έχουν την προφανή σημασία: `==`, `>=`, `<=`, `!=`, `<>`, `<`, `>`. Επιστρέφουν `αληθές` ή `ψευδές`. Οι τελεστές `!=` και `<>` είναι το ίδιο πράγμα και σημαίνουν "δεν είναι ίσο με". Η GEL επίσης υποστηρίζει τον τελεστή `<=>`, που επιστρέφει -1 αν το αριστερό μέλος είναι μικρότερο, 0 αν και τα δύο μέλη είναι ίσα, 1 αν το αριστερό μέλος είναι μεγαλύτερο.

Normally `=` is translated to `==` if it happens to be somewhere where GEL is expecting a condition such as in the if condition. For example

    if a=b then c
    if a==b then c

are the same thing in GEL. However you should really use `==` or `:=` when you want to compare or assign respectively if you want your code to be easy to read and to avoid mistakes.

Όλοι οι τελεστές σύγκρισης (εκτός από τον τελεστή `<=>` που συμπεριφέρεται κανονικά), δεν είναι αυστηρά δυαδικοί τελεστές, μπορούν στην πραγματικότητα να ομαδοποιηθούν με τον κανονικό μαθηματικό τρόπο, π.χ.: (`1<x<=y<5`) είναι μια επιτρεπτή παράσταση λογικών τιμών και σημαίνει ακριβώς αυτό που πρέπει, δηλαδή (1<x and x≤y and y<5)

Για να δημιουργήσετε λογικές παραστάσεις χρησιμοποιήστε τις λέξεις `not`, `and`, `or`, `xor`. Οι τελεστές `or` και `and` είναι ειδικές οντότητες επειδή υπολογίζουν τα ορίσματά τους ένα προς ένα, έτσι το συνηθισμένο κόλπο για υπό όρο υπολογισμό δουλεύει εδώ επίσης. Για παράδειγμα, `1 or a=1` δεν θα ορίσουν `a=1` αφού το πρώτο όρισμα ήταν αληθές.

### Καθολικές μεταβλητές και εμβέλεια μεταβλητών

GEL is a dynamically scoped language. We will explain what this means below. That is, normal variables and functions are dynamically scoped. The exception are parameter variables, which are always global.

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 `f` defines a variable `a` and then calls function `g`. Then function `g` can reference `a`. But once `f` returns, the variable `a` goes out of scope. For example, the following code will print out 5. The function `g` cannot be called on the top level (outside `f` as `a` will not be defined).

    function f() = (a:=5; g());
    function g() = print(a);
    f();

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:

    function f() = (a:=5; g());
    function g() = print(a);
    a:=10;
    f();

This code will still print out 5. But if you call `g` outside of `f` then you will get a printout of 10. Note that setting `a` to 5 inside `f` does not change the value of `a` at the top (global) level, so if you now check the value of `a` it will still be 10.

Τα ορίσματα συναρτήσεων είναι ακριβώς όπως οι μεταβλητές που ορίστηκαν μέσα στη συνάρτηση, εκτός από το ότι είναι αρχικοποιημένες με την τιμή που περάστηκε στη συνάρτηση. Πέρα από αυτό το σημείο, αντιμετωπίζονται ακριβώς όπως όλες οι άλλες μεταβλητές που ορίστηκαν μέσα στη συνάρτηση.

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:

    genius> function f(x) = sin(x)^2
    = (`(x)=(sin(x)^2))
    genius> function f(x) = sin(x)^2
    = (`(x)=(sin(x)^2))
    genius> function g(x) = ((function sin(x)=x^10);f(x))
    = (`(x)=((sin:=(`(x)=(x^10)));f(x)))
    genius> g(10)
    = 1e20

Functions and variables defined at the top level are considered global. They are visible from anywhere. As we said the following function `f` will not change the value of `a` to 5.

    a=6;
    function f() = (a:=5);
    f();

Sometimes, however, it is necessary to set a global variable from inside a function. When this behavior is needed, use the `set` function. Passing a string or a quoted identifier to this function sets the variable globally (on the top level). For example, to set `a` to the value 3 you could call:

    set(`a,3)

or:

    set("a",3)

Η συνάρτηση `set` ορίζει πάντα την καθολική ανωτάτου επιπέδου. Δεν υπάρχει τρόπος να οριστεί μια τοπική μεταβλητή σε κάποια συνάρτηση από μια υπορουτίνα. Αν αυτό απαιτείται, πρέπει να χρησιμοποιηθεί το πέρασμα με αναφορά.

See also the `SetElement` and `SetVElement` functions.

Για να ανακεφαλαιώσουμε σε μια πιο τεχνική γλώσσα: Η Genius λειτουργεί με διαφορετικά αριθμημένα περιεχόμενα. Το ανώτατο επίπεδο είναι το περιεχόμενο 0 (μηδέν). Όποτε μια συνάρτηση εισέρχεται, το περιεχόμενο αυξάνεται και όταν η συνάρτηση επιστρέφει το περιεχόμενο μειώνεται. Μια συνάρτηση ή μια μεταβλητή είναι πάντα ορατή από όλα τα περιεχόμενα με υψηλότερη αρίθμηση. Όταν μια μεταβλητή ορίζεται σε ένα περιεχόμενο χαμηλότερης αρίθμησης, τότε ο ορισμός αυτής της μεταβλητής επιδρά στη δημιουργία μιας νέας τοπικής μεταβλητής με τον τρέχοντα αριθμό περιεχομένου και αυτή η μεταβλητή θα είναι τώρα ορατή από όλα τα περιεχόμενα με υψηλότερη αρίθμηση.

Υπάρχουν επίσης αληθινές τοπικές μεταβλητές, που δεν φαίνονται από οπουδήποτε εκτός από το τρέχον περιεχόμενο. Επίσης όταν επιστρέφονται συναρτήσεις με τιμή μπορεί να αναφέρονται σε μεταβλητές μη ορατές από υψηλότερο περιεχόμενο και αυτό μπορεί να είναι ένα πρόβλημα. Δείτε τις ενότητες Αληθείς τοπικές μεταβλητές και Επιστροφή συναρτήσεων.

### Μεταβλητές παραμέτρων

As we said before, there exist special variables called parameters that exist in all scopes. To declare a parameter called `foo` with the initial value 1, we write

    parameter foo = 1

From then on, `foo` is a strictly global variable. Setting `foo` inside any function will modify the variable in all contexts, that is, functions do not have a private copy of parameters.

When you undefine a parameter using the `undefine` function, it stops being a parameter.

Some parameters are built-in and modify the behavior of genius.

### Επιστροφή

Κανονικά, μια συνάρτηση είναι μία ή πολλές παραστάσεις χωρισμένες με ; και η τιμή της τελευταίας παράστασης επιστρέφεται. Αυτό είναι θαυμάσιο για απλές συναρτήσεις, αλλά μερικές φορές δεν θέλετε μια συνάρτηση νε επιστρέφει το τελευταίο υπολογισμένο πράγμα. Μπορείτε, για παράδειγμα, να θέλετε να επιστρέψετε από το μέσο μιας συνάρτησης. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί `return`. Η `return` παίρνει ένα όρισμα, που είναι η τιμή για επιστροφή.

Example:

    function f(x) = (
      y=1;
      while true do (
        if x>50 then return y;
        y=y+1;
        x=x+1
      )
    )

### Αναφορές

Μπορεί να είναι απαραίτητο για μερικές συναρτήσεις να επιστραφούν περισσότερες από μία τιμές. Αυτό μπορεί να επιτευχθεί επιστρέφοντας ένα διάνυσμα τιμών, αλλά πολλές φορές, είναι βολικό να χρησιμοποιήσετε το πέρασμα μιας αναφοράς σε μια μεταβλητή. Περνάτε μια αναφορά σε μια μεταβλητή σε μια συνάρτηση και η συνάρτηση θα ορίσει τη μεταβλητή για σας χρησιμοποιώντας μια αποαναφορά. Δεν πρέπει να χρησιμοποιείτε αναφορές μόνο για αυτόν το σκοπό, αλλά αυτή είναι η κύρια χρήση τους.

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 `A` with initial eigenvector guess `x`, and store the computed eigenvector into the variable named `v`:

    RayleighQuotientIteration (A,x,0.001,100,&v)

Οι λεπτομέρειες του πώς δουλεύουν οι αναφορές και η σύνταξη είναι παρόμοιες με τη γλώσσα C. Ο τελεστής `&` αναφέρεται σε μια μεταβλητή και το `*` αποαναφέρει μια μεταβλητή. Αμφότεροι μπορούν να εφαρμοστούν μόνο σε ένα αναγνωριστικό, έτσι το `**a` δεν είναι επιτρεπτή παράσταση στο GEL.

References are best explained by an example:

    a=1;
    b=&a;
    *b=2;

now `a` contains 2. You can also reference functions:

    function f(x) = x+1;
    t=&f;
    *t(3)

gives us 4.

### Lvalues (αριστερές τιμές)

An lvalue is the left hand side of an assignment. In other words, an lvalue is what you assign something to. Valid lvalues are:

`a`

  Identifier. Here we would be setting the variable of name `a`.

`*a`

  Dereference of an identifier. This will set whatever variable `a` points to.

`a@(<region>)`

  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.

Examples:

    a:=4
    *tmp := 89
    a@(1,1) := 5
    a@(4:8,3) := [1,2,3,4,5]'

Note that both `:=` and `=` can be used interchangeably. Except if the assignment appears in a condition. It is thus always safer to just use `:=` when you mean assignment, and `==` when you mean comparison.

## Προχωρημένος προγραμματισμός με GEL

### Χειρισμός σφάλματος

Αν εντοπίσετε ένα σφάλμα στη συνάρτησή σας, μπορείτε να το αποφύγετε. Για φυσιολογικά σφάλματα, όπως εσφαλμένους τύπους ορισμάτων, μπορείτε να παραλείψετε να υπολογίσετε τη συνάρτηση προσθέτοντας την δήλωση `bailout`. Αν κάτι πήγε πραγματικά εσφαλμένα και θέλετε να τερματίσετε πλήρως τον τρέχοντα υπολογισμό, μπορείτε να χρησιμοποιήσετε το `exception`.

For example if you want to check for arguments in your function. You could use the following code.

    function f(M) = (
      if not IsMatrix (M) then (
        error ("M not a matrix!");
        bailout
      );
      ...
    )

### Σύνταξη ανωτάτου επιπέδου

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

For example,

    function f(x)=x^2
    f(3)

will print first the result of setting a function (a representation of the function, in this case `(`(x)=(x^2))`) and then the expected 9. To avoid this, enter a separator after the function definition.

    function f(x)=x^2;
    f(3)

If you need to put a separator into your function then you have to surround with parenthesis. For example:

    function f(x)=(
      y=1;
      for j=1 to x do
        y = y+j;
      y^2
    );

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.

    if Something() then
      DoSomething()
    else
      DoSomethingElse()

The problem is that after Genius Mathematics Tool 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, Genius Mathematics Tool will go on to the next line, it will see `else`, and it will produce a parsing error. To fix this, use parentheses. Genius Mathematics Tool will not be satisfied until it has found that all parentheses are closed.

    if Something() then (
      DoSomething()
    ) else (
      DoSomethingElse()
    )

### Επιστροφή συναρτήσεων

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.

    function f() = (
      k = 5;
      `(x) = (x+k)
    )

Notice that the function adds `k` to `x`. You could use this as follows.

    g = f();
    g(5)

And `g(5)` should return 10.

One thing to note is that the value of `k` that is used is the one that's in effect when the `f` returns. For example:

    function f() = (
      k := 5;
      function r(x) = (x+k);
      k := 10;
      r
    )

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 `f` returns. This is consistent with how you would expect the function `r` to work inside the function `f` 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 `f`, and at the top level you define `k` to be say 5. Then when you run `f`, the function `r` will not put `k` into the private dictionary because it was global (toplevel) at the time of definition of `r`.

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

    function f() = (
      k := 5;
      function r(x) [k] = (x+k);
      k := 10;
      r
    )

will return a function that when called will add 5 to its argument. The local copy of `k` was created when the function was defined.

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 `f` to see the value of `k` from the toplevel despite there being a local variable of the same name during definition. So the code

    function f() = (
      k := 5;
      function r(x) [] = (x+k);
      r
    );
    k := 10;
    g = f();
    g(10)

will return 20 and not 15, which would happen if `k` with a value of 5 was added to the private dictionary.

### Αληθείς τοπικές μεταβλητές

When passing functions into other functions, the normal scoping of variables might be undesired. For example:

    k := 10;
    function r(x) = (x+k);
    function f(g,x) = (
      k := 5;
      g(x)
    );
    f(r,1)

you probably want the function `r` when passed as `g` into `f` to see `k` as 10 rather than 5, so that the code returns 11 and not 6. However, as written, the function when executed will see the `k` that is equal to 5. There are two ways to solve this. One would be to have `r` get `k` in a private dictionary using the square bracket notation section Returning Functions.

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 `k` as a local variable in the function `f`. To do this add a `local` 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,

    function f(g,x) = (
      local g,x,k;
      k := 5;
      g(x)
    );

Then the code will work as expected and prints out 11. Note that the `local` statement initializes all the referenced variables (except for function arguments) to a `null`.

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. So the following definition of `f` will also work:

    function f(g,x) = (
      local *;
      k := 5;
      g(x)
    );

Είναι μια καλή πρακτική όλες οι συναρτήσεις που παίρνουν άλλες συναρτήσεις ως ορίσματα να χρησιμοποιούν τοπικές μεταβλητές. Με αυτόν το τρόπο η μεταβιβαζόμενη συνάρτηση δεν βλέπει λεπτομέρειες υλοποίησης και δεν μπερδεύεται.

### Διαδικασία έναρξης GEL

Αρχικά το πρόγραμμα αναζητά το εγκατεστημένο αρχείο βιβλιοθήκης (τη μεταγλωττισμένη έκδοση `lib.cgel`) στον εγκατεστημένο κατάλογο, έπειτα ψάχνει στον τρέχοντα κατάλογο και έπειτα προσπαθεί να φορτώσει το αμεταγλώττιστο αρχείο που λέγεται `~/.geniusinit`.

Αν ποτέ αλλάξετε την εγκατεστημένη θέση της βιβλιοθήκης, θα πρέπει πρώτα να τη μεταγλωττίσετε με `genius --compile loader.gel > lib.cgel`

### Φόρτωση προγραμμάτων

Sometimes you have a larger program you wrote into a file and want to read that file into Genius Mathematics Tool. In these situations, you have two options. You can keep the functions you use most inside the `~/.geniusinit` file. Or if you want to load up a file in a middle of a session (or from within another file), you can type `load <list of filenames>` 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:

    load program1.gel program2.gel
    load "Weird File Name With SPACES.gel"

There are also `cd`, `pwd` and `ls` commands built in. `cd` will take one argument, `ls` will take an argument that is like the glob in the UNIX shell (i.e., you can use wildcards). `pwd` takes no arguments. For example:

    cd directory_with_gel_programs
    ls *.gel

## Πίνακες στη GEL

Genius has support for vectors and matrices and possesses a sizable library of matrix manipulation and linear algebra functions.

### Εισαγωγή πινάκων

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

    [1,2,3;4,5,6;7,8,9]

or

    [1, 2, 3
     4, 5, 6
     7, 8, 9]

Do not use both ';' and return at once on the same line though.

You can also use the matrix expansion functionality to enter matrices. For example you can do:

    a = [ 1, 2, 3
          4, 5, 6
          7, 8, 9]
    b = [ a,  10
          11, 12]

and you should get

    [1,   2,  3, 10
     4,   5,  6, 10
     7,   8,  9, 10
     11, 11, 11, 12]

similarly you can build matrices out of vectors and other stuff like that.

Another thing is that non-specified spots are initialized to 0, so

    [1, 2, 3
     4, 5
     6]

will end up being

    [1, 2, 3
     4, 5, 0
     6, 0, 0]

Όταν υπολογίζονται πίνακες, υπολογίζονται και διατρέχονται κατά την έννοια της γραμμής. Αυτό είναι ακριβώς όπως ο τελεστής `M@(j)` που διατρέχει τον πίνακα κατά την έννοια της γραμμής.

Προσέξτε τη χρήση επιστροφών για εκφράσεις μέσα σε αγκύλες `[ ]`, επειδή έχουν μια ελαφρώς διαφορετική έννοια εδώ. Θα ξεκινήσετε μια νέα γραμμή.

### Συζυγής αντιστροφή και τελεστής αντιστροφής

You can conjugate transpose a matrix by using the `'` operator. That is the entry in the `i`th column and the `j`th row will be the complex conjugate of the entry in the `j`th column and the `i`th row of the original matrix. For example:

    [1,2,3]*[4,5,6]'

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 `.'` operator. For example:

    [1,2,3]*[4,5,6i].'

Σημειώστε ότι ο κανονικός ανάστροφος, δηλαδή ο τελεστής `.'`, είναι πολύ γρηγορότερος και δεν θα δημιουργήσει ένα νέο αντίγραφο του πίνακα στη μνήμη. Η αναστροφή του συζυγή δεν δημιουργεί ένα νέο αντίγραφο δυστυχώς. Συνιστάται να χρησιμοποιείτε πάντα τον τελεστή `.'` όταν δουλεύετε με πραγματικούς πίνακες και διανύσματα.

### Γραμμική Άλγεβρα

Η Genius υλοποιεί πολλές χρήσιμες ρουτίνες χειρισμού γραμμικής άλγεβρας και πινάκων. Δείτε γραμμική άλγεβρα και τις ενότητες Χειρισμός πίνακα του καταλόγου συναρτήσεων GEL.

Οι υλοποιούμενες ρουτίνες γραμμικής άλγεβρας στο GEL δεν έρχονται προς το παρόν από ένα καλά ελεγμένο αριθμητικό πακέτο και έτσι δεν πρέπει να χρησιμοποιηθούν για κρίσιμους αριθμητικούς υπολογισμούς. Από την άλλη μεριά, η Genius υλοποιεί πολύ καλά πολλές πράξεις γραμμικής άλγεβρας με ρητούς και ακέραιους συντελεστές. Αυτές είναι έμφυτα ακριβείς και στην πραγματικότητα θα σας δώσουν πολύ καλύτερα αποτελέσματα από τις συνηθισμένες ρουτίνες διπλής ακρίβειας για γραμμική άλγεβρα.

Για παράδειγμα, είναι χωρίς νόημα να υπολογίσετε την τάξη και μηδενικό χώρο ενός πίνακα κινητής υποδιαστολής αφού για όλους τους πρακτικούς σκοπούς, χρειάζεται να θεωρήσουμε ότι ο πίνακας έχει κάποια μικρά σφάλματα. Είναι πιθανό να πάρετε ένα διαφορετικό αποτέλεσμα από αυτό που περιμένετε. Το πρόβλημα είναι κάτω από μια μικρή διαταραχή κάθε πίνακας είναι πλήρους τάξης και αντιστρέψιμος. Αν ο πίνακας όμως είναι ρητών αριθμών, τότε η τάξη και ο μηδενικός χώρος είναι πάντα ακριβείς.

Γενικά, όταν η Genius υπολογίζει τη βάση συγκεκριμένου διανυσματικού χώρου (για παράδειγμα με την `NullSpace`) θα δώσει τη βάση ως πίνακα, στον οποίον οι στήλες είναι τα διανύσματα της βάσης. Δηλαδή, όταν η Genius μιλά για έναν γραμμικό υπόχωρο σημαίνει ένας πίνακας του οποίου ο χώρος στηλών είναι ο δοσμένος γραμμικός υπόχωρος.

Θα πρέπει να σημειωθεί ότι η Genius μπορεί να θυμάται συγκεκριμένες ιδιότητες ενός πίνακα. Για παράδειγμα, θα θυμάται ότι ο πίνακας είναι σε ανηγμένη μορφή γραμμής. Αν γίνουν πολλές κλήσεις σε συναρτήσεις που χρησιμοποιούν εσωτερικά ανηγμένη μορφή γραμμής του πίνακα, μπορούμε απλά να μειώσουμε τη γραμμή του πίνακα προκαταβολικά μια φορά. Διαδοχικές κλήσεις στο `rref` θα είναι πολύ γρήγορες.

## Πολυώνυμα στην GEL

Προς το παρόν η Genius μπορεί να χειριστεί πολυώνυμα μιας μεταβλητής γραμμένα ως διανύσματα και να κάνει μερικές βασικές πράξεις με αυτές. Είναι προγραμματισμένο να επεκτείνει αυτήν την υποστήριξη παραπέρα.

### Χρήση πολυωνύμων

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,

    [1,2,3]

translates to a polynomial of

    1 + 2*x + 3*x^2

You can add, subtract and multiply polynomials using the `AddPoly`, `SubtractPoly`, and `MultiplyPoly` functions respectively. You can print a polynomial using the `PolyToString` function. For example,

    PolyToString([1,2,3],"y")

gives

    3*y^2 + 2*y + 1

You can also get a function representation of the polynomial so that you can evaluate it. This is done by using `PolyToFunction`, which returns an anonymous function.

    f = PolyToFunction([0,1,1])
    f(2)

Είναι επίσης δυνατό να βρείτε ρίζες πολυωνύμων βαθμών 1 μέχρι 4 χρησιμοποιώντας τη συνάρτηση `PolynomialRoots`, που καλεί τη συνάρτηση κατάλληλου τύπου. Πολυώνυμα μεγαλύτερου βαθμού πρέπει να μετατραπούν σε συναρτήσεις και να επιλυθούν αριθμητικά χρησιμοποιώντας μια συνάρτηση όπως οι `FindRootBisection`, `FindRootFalsePosition`, `FindRootMullersMethod`, ή `FindRootSecant`.

Δείτε στον κατάλογο συναρτήσεων για τις υπόλοιπες συναρτήσεις που δρουν σε πολυώνυμα.

## Θεωρία συνόλων στη GEL

Η Genius έχει κάποια βασική θεωρητική λειτουργικότητα συνόλων ενσωματωμένη. Προς το παρόν ένα σύνολο είναι απλά ένα διάνυσμα (ή πίνακας). Κάθε ξεχωριστό αντικείμενο αντιμετωπίζεται ως διαφορετικό στοιχείο.

### Χρήση συνόλων

Ακριβώς όπως τα διανύσματα, τα αντικείμενα στα σύνολα μπορούν να περιλαμβάνουν αριθμούς, συμβολοσειρές `null`, πίνακες και διανύσματα. Σχεδιάζεται στο μέλλον να υπάρχει ένας αποκλειστικός τύπος για σύνολα, αντί να χρησιμοποιούνται διανύσματα. Σημειώστε ότι οι αριθμοί κινητής υποδιαστολής είναι διακριτοί από τους ακέραιους, ακόμα κι αν εμφανίζονται το ίδιο. Δηλαδή η Genius θα θεωρήσει τις `0` και `0.0` ως δύο διαφορετικά στοιχεία. Η `null` αντιμετωπίζεται ως ένα κενό σύνολο.

To build a set out of a vector, use the `MakeSet` function. Currently, it will just return a new vector where every element is unique.

    genius> MakeSet([1,2,2,3])
    = [1, 2, 3]

Similarly there are functions `Union`, `Intersection`, `SetMinus`, which are rather self explanatory. For example:

    genius> Union([1,2,3], [1,2,4])
    = [1, 2, 4, 3]

Note that no order is guaranteed for the return values. If you wish to sort the vector you should use the `SortVector` function.

For testing membership, there are functions `IsIn` and `IsSubset`, which return a boolean value. For example:

    genius> IsIn (1, [0,1,2])
    = true

The input `IsIn(x,X)` is equivalent to `IsSubset([x],X)`. Note that since the empty set is a subset of every set, `IsSubset(null,X)` is always true.

## Κατάλογος συναρτήσεων της GEL

To get help on a specific function from the console type:

    help FunctionName

### Εντολές

help

      βοήθεια

      βοήθεια FunctionName

  Εμφάνιση βοήθειας (ή βοήθεια για μια συνάρτηση/εντολή).

load

      load "file.gel"

  Load a file into the interpreter. The file will execute as if it were typed onto the command line.

cd

      cd /directory/name

  Αλλαγή καταλόγου εργασίας σε `/directory/name`.

pwd

      pwd

  Εμφάνιση του τρέχοντος καταλόγου εργασίας.

ls

      ls

  Λίστα αρχείων στον τρέχοντα κατάλογο.

plugin

      plugin plugin_name

  Φόρτωση ενός προσθέτου. Το πρόσθετο πρέπει να εγκατασταθεί στο σύστημα στο σωστό κατάλογο.

### Βασικά

AskButtons

      AskButtons (query)

      AskButtons (query, button1, ...)

  Ερωτά και παρουσιάζει έναν κατάλογο κουμπιών στον χρήστη (ή ένα μενού επιλογών σε κατάσταση κειμένου). Επιστρέφει τον δείκτη με βάση το 1 του πατημένου κουμπιού. Δηλαδή, επιστρέφει 1 αν το πρώτο κουμπί πατήθηκε, 2 αν το δεύτερο κουμπί πατήθηκε και ούτω καθεξής. Αν ο χρήστης κλείσει το παράθυρο (ή απλά πατήσει εισαγωγή στην κατάσταση κειμένου), τότε η `null` επιστρέφεται. Η εκτέλεση του προγράμματος εμποδίζεται μέχρι να απαντήσει ο χρήστης.

  Version 1.0.10 onwards.

AskString

      AskString (query)

      AskString (query, default)

  Asks a question and lets the user enter a string, which it then returns. If the user cancels or closes the window, then `null` is returned. The execution of the program is blocked until the user responds. If `default` is given, then it is pre-typed in for the user to just press enter on (version 1.0.6 onwards).

Compose

      Compose (f,g)

  Σύνθεση δύο συναρτήσεων και επιστροφή μιας συνάρτησης που είναι η σύνθεση των `f` και `g`.

ComposePower

      ComposePower (f,n,x)

  Compose and execute a function with itself `n` times, passing `x` as argument. Returning `x` if `n` equals 0. Example:

      genius> function f(x) = x^2 ;
      genius> ComposePower (f,3,7)
      = 5764801
      genius> f(f(f(7)))
      = 5764801

Evaluate

      Evaluate (str)

  Αναλύει και υπολογίζει μια συμβολοσειρά.

GetCurrentModulo

      GetCurrentModulo

  Λήψη του τρέχοντος ισοϋπόλοιπου από το περιεχόμενο έξω από τη συνάρτηση. Δηλαδή, αν εκτελέστηκε έξω από την συνάρτηση σε modulo (χρησιμοποιώντας `mod`), τότε αυτό επιστρέφει ποιο ήταν αυτό το modulo. Κανονικά το καλούμενο σώμα της συνάρτησης δεν εκτελείται σε αριθμητική υπολοίπων και αυτή η ενσωματωμένη συνάρτηση κάνει δυνατή την ενημέρωση των συναρτήσεων GEL αριθμητικής υπολοίπων.

Identity

      Identity (x)

  Identity function, returns its argument. It is equivalent to `function Identity(x)=x`.

IntegerFromBoolean

      IntegerFromBoolean (bval)

  Κάνει τον ακέραιο (0 για `ψευδή` ή 1 για `αληθή`) από μια λογική τιμή. Η `bval` μπορεί επίσης να είναι ένας αριθμός οπότε μια μη μηδενική τιμή θα ερμηνευτεί ως `αληθής` και το μηδέν θα ερμηνευτεί ως `ψευδής`.

IsBoolean

      IsBoolean (arg)

  Ελέγχει αν το όρισμα είναι λογική τιμή (και όχι αριθμός).

IsDefined

      IsDefined (id)

  Ελέγχει αν ένα αναγνωριστικό ορίζεται. Θα πρέπει να περάσετε μια συμβολοσειρά ή και αναγνωριστικό. Αν περάσετε έναν πίνακα, κάθε καταχώριση θα υπολογιστεί ξεχωριστά και ο πίνακας πρέπει να περιέχει συμβολοσειρές ή αναγνωριστικά.

IsFunction

      IsFunction (arg)

  Ελέγχει αν το όρισμα είναι συνάρτηση.

IsFunctionOrIdentifier

      IsFunctionOrIdentifier (arg)

  Ελέγχει αν το όρισμα είναι συνάρτηση ή ένα αναγνωριστικό.

IsFunctionRef

      IsFunctionRef (arg)

  Ελέγχει αν το όρισμα είναι μια συνάρτηση αναφοράς. Αυτό περιλαμβάνει αναφορές μεταβλητών.

IsMatrix

      IsMatrix (arg)

  Ελέγχει αν ένα όρισμα είναι ένας πίνακας. Αν και η `null` θεωρείται μερικές φορές ως κενός πίνακας, η συνάρτηση `IsMatrix` δεν θεωρεί την `null` ως πίνακα.

IsNull

      IsNull (arg)

  Ελέγχει αν το όρισμα είναι μια `null`.

IsString

      IsString (arg)

  Ελέγχει αν το όρισμα είναι μια συμβολοσειρά κειμένου.

IsValue

      IsValue (arg)

  Ελέγχει αν το όρισμα είναι αριθμός.

Parse

      Parse (str)

  Αναλύει, αλλά δεν υπολογίζει μια συμβολοσειρά. Σημειώστε ότι, συγκεκριμένος προϋπολογισμός γίνεται κατά τη διάρκεια του σταδίου ανάλυσης.

SetFunctionFlags

      SetFunctionFlags (id,flags...)

  Ορίζει σημαίες για μια συνάρτηση, προς το παρόν `"PropagateMod"` and `"NoModuloArguments"`. Αν η `"PropagateMod"` οριστεί, τότε το σώμα της συνάρτησης υπολογίζεται σε αριθμητική υπολοίπων, όταν η συνάρτηση καλείται μέσα σε μια ομάδα που υπολογίστηκε χρησιμοποιώντας αριθμητική υπολοίπων (χρησιμοποιώντας `mod`). Αν είναι `"NoModuloArguments"`, τότε τα ορίσματα της συνάρτησης δεν υπολογίζονται ποτέ χρησιμοποιώντας αριθμητική υπολοίπων.

SetHelp

      SetHelp (id,category,desc)

  Ορισμός της γραμμής περιγραφής κατηγορίας και βοήθειας για μια συνάρτηση.

SetHelpAlias

      SetHelpAlias (id,alias)

  Εγκαθιστά μια παραλλαγή βοήθειας.

chdir

      chdir (dir)

  Αλλάζει τον τρέχοντα κατάλογο, το ίδιο με `cd`.

CurrentTime

      CurrentTime

  Επιστρέφει τον τρέχοντα χρόνο UNIX με ακρίβεια μικροδευτερολέπτου ως έναν αριθμό κινητής υποδιαστολής. Δηλαδή, επιστρέφει τον αριθμό των δευτερολέπτων από την 1η Ιανουαρίου 1970.

  Version 1.0.15 onwards.

display

      display (str,expr)

  Εμφανίζει μια συμβολοσειρά και μια έκφραση με άνω-κάτω τελεία για να τις διακρίνει.

DisplayVariables

      DisplayVariables (var1,var2,...)

  Display set of variables. The variables can be given as strings or identifiers. For example:

      DisplayVariables(`x,`y,`z)

  If called without arguments (must supply empty argument list) as

      DisplayVariables()

  then all variables are printed including a stacktrace similar to Show user variables in the graphical version.

  Version 1.0.18 onwards.

error

      error (str)

  Εμφανίζει μια συμβολοσειρά στη ροή σφάλματος (στην κονσόλα).

exit

      exit

  Παραλλαγές: `quit`

  Φεύγει από το πρόγραμμα.

false

      false

  Aliases: `False` `FALSE`

  Η λογική τιμή `ψευδές`.

manual

      manual

  Προβολή του εγχειριδίου χρήστη.

print

      print (str)

  Εμφανίζει μια παράσταση και έπειτα δίνει μια νέα γραμμή. Το όρισμα `str` μπορεί να είναι οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.

printn

      printn (str)

  Εμφανίζει μια παράσταση χωρίς μια τελική νέα γραμμή. Το όρισμα `str` μπορεί να είναι οποιαδήποτε παράσταση. Γίνεται συμβολοσειρά πριν την εμφάνιση.

PrintTable

      PrintTable (f,v)

  Print a table of values for a function. The values are in the vector `v`. You can use the vector building notation as follows:

      PrintTable (f,[0:10])

  If `v` is a positive integer, then the table of integers from 1 up to and including v will be used.

  Version 1.0.18 onwards.

protect

      protect (id)

  Προστατεύει μια μεταβλητή από τροποποίηση. Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η τυχαία αντικατάστασή τους.

ProtectAll

      ProtectAll ()

  Προστατεύει όλες τις τρέχουσες ορισμένες μεταβλητές, παραμέτρους και συναρτήσεις από τροποποίηση. Αυτό χρησιμοποιείται στις εσωτερικές συναρτήσεις GEL για να αποφευχθεί η τυχαία αντικατάστασή τους. Κανονικά το Εργαλείο μαθηματικών Genius θεωρεί απροστάτευτες τις μεταβλητές που όρισε ο χρήστης.

  Version 1.0.7 onwards.

set

      set (id,val)

  Set a global variable. The `id` can be either a string or a quoted identifier. For example:

      set(`x,1)

  will set the global variable `x` to the value 1.

  The function returns the `val`, to be usable in chaining.

SetElement

      SetElement (id,row,col,val)

  Set an element of a global variable which is a matrix. The `id` can be either a string or a quoted identifier. For example:

      SetElement(`x,2,3,1)

  will set the second row third column element of the global variable `x` 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.

  The `row` and `col` can also be ranges, and the semantics are the same as for regular setting of the elements with an equals sign.

  The function returns the `val`, to be usable in chaining.

  Available from 1.0.18 onwards.

SetVElement

      SetElement (id,elt,val)

  Set an element of a global variable which is a vector. The `id` can be either a string or a quoted identifier. For example:

      SetElement(`x,2,1)

  will set the second element of the global vector variable `x` 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.

  The `elt` can also be a range, and the semantics are the same as for regular setting of the elements with an equals sign.

  The function returns the `val`, to be usable in chaining.

  Available from 1.0.18 onwards.

string

      string (s)

  Δημιουργία συμβολοσειράς. Αυτή θα δημιουργήσει μια συμβολοσειρά από οποιοδήποτε όρισμα.

true

      true

  Aliases: `True` `TRUE`

  Η λογική τιμή `true`.

undefine

      undefine (id)

  Παραλλαγές: `Undefine`

  Αποκαθορισμός μεταβλητής. Αυτό περιλαμβάνει τοπικές και καθολικές, κάθε τιμή σε όλα τα επίπεδα περιεχομένου καθαρίζεται. Αυτή η συνάρτηση πρέπει πραγματικά να μην χρησιμοποιηθεί σε τοπικές μεταβλητές. Ένα διάνυσμα αναγνωριστικών μπορεί επίσης να περαστεί για αποκαθορισμό πολλών μεταβλητών.

UndefineAll

      UndefineAll ()

  Αποκαθορίζει όλες τις απροστάτευτες καθολικές μεταβλητές (συμπεριλαμβάνοντας συναρτήσεις και παραμέτρους). Κανονικά το Εργαλείο μαθηματικών Genius θεωρεί τις προστατευμένες μεταβλητές ως ορισμένες από το σύστημα συναρτήσεις και μεταβλητές. Σημειώστε ότι η `UndefineAll` αφαιρεί μόνο τον καθολικό ορισμό των συμβόλων και όχι των τοπικών, έτσι ώστε να μπορεί να εκτελεστεί μέσα από άλλες συναρτήσεις με ασφάλεια.

  Version 1.0.7 onwards.

unprotect

      unprotect (id)

  Αφαιρεί την προστασία μιας μεταβλητής από τροποποίηση.

UserVariables

      UserVariables ()

  Επιστρέφει ένα διάνυσμα αναγνωριστικών ορισμένων από τον χρήστη (απροστάτευτων) καθολικών μεταβλητών.

  Version 1.0.7 onwards.

wait

      wait (secs)

  Περιμένει ορισμένα δευτερόλεπτα. Η `secs` πρέπει να είναι μη αρνητική. Το μηδέν γίνεται δεκτό και τίποτα δεν συμβαίνει σε αυτήν την περίπτωση, εκτός από το ότι πιθανά συμβάντα διεπαφής χρήστη επεξεργάζονται.

  Since version 1.0.18, `secs` can be a noninteger number, so `wait(0.1)` will wait for one tenth of a second.

version

      version

  Επιστρέφει την έκδοση του Genius ως ένα οριζόντιο διάνυσμα 3 με πρώτη την κύρια έκδοση, έπειτα την δευτερεύουσα και τελικά το επίπεδο διόρθωσης.

warranty

      warranty

  Δίνει τις πληροφορίες εγγύησης.

### Παράμετροι

ChopTolerance

      ChopTolerance = number

  Ανοχή της συνάρτησης `Chop`.

ContinuousNumberOfTries

      ContinuousNumberOfTries = number

  Αριθμός επαναλήψεων για την εύρεση του ορίου για τη συνέχεια και τα όρια.

ContinuousSFS

      ContinuousSFS = number

  Αριθμός διαδοχικών βημάτων για να είναι μέσα στην ανοχή για τον υπολογισμό της συνέχειας.

ContinuousTolerance

      ContinuousTolerance = number

  Η ανοχή για συνέχεια των συναρτήσεων και για υπολογισμό του ορίου.

DerivativeNumberOfTries

      DerivativeNumberOfTries = number

  Αριθμός επαναλήψεων για την εύρεση του ορίου για την παράγωγο.

DerivativeSFS

      DerivativeSFS = number

  Αριθμός διαδοχικών βημάτων για να είναι μέσα στην ανοχή για τον υπολογισμό της παραγώγου.

DerivativeTolerance

      DerivativeTolerance = number

  Ανοχή για τον υπολογισμό των παραγώγων των συναρτήσεων.

ErrorFunctionTolerance

      ErrorFunctionTolerance = number

  Ανοχή της `ErrorFunction`.

FloatPrecision

      FloatPrecision = number

  Ακρίβεια κινητής υποδιαστολής.

FullExpressions

      FullExpressions = boolean

  Εμφάνιση πλήρων εκφράσεων, ακόμα κι αν είναι περισσότερες από μία γραμμή.

GaussDistributionTolerance

      GaussDistributionTolerance = number

  Ανοχή της συνάρτησης `GaussDistribution`.

IntegerOutputBase

      IntegerOutputBase = number

  Βάση εξόδου ακεραίων.

IsPrimeMillerRabinReps

      IsPrimeMillerRabinReps = number

  Αριθμός των πρόσθετων δοκιμών Miller-Rabin που θα εκτελεστούν σε έναν αριθμό πριν τη δήλωση του ως πρώτου στην `IsPrime`.

LinePlotDrawLegends

      LinePlotDrawLegends = true

  Λέει στο Genius να σχεδιάσει τα υπομνήματα για τις συναρτήσεις γραφικής παράστασης γραμμής όπως `LinePlot`.

LinePlotDrawAxisLabels

      LinePlotDrawAxisLabels = true

  Λέει στο Genius να σχεδιάσει τις ετικέτες του άξονα για τις συναρτήσεις γραφικής παράστασης γραμμής όπως `LinePlot`.

  Version 1.0.16 onwards.

LinePlotVariableNames

      LinePlotVariableNames = ["x","y","z","t"]

  Λέει στο Genius ποια ονόματα μεταβλητών χρησιμοποιούνται ως προεπιλεγμένα ονόματα για τις συναρτήσεις γραφικής παράστασης γραμμής όπως `LinePlot` και παρόμοιες.

  Version 1.0.10 onwards.

LinePlotWindow

      LinePlotWindow = [x1,x2,y1,y2]

  Ορίζει τα όρια για τις συναρτήσεις γραφικής παράστασης γραμμής όπως `LinePlot`.

MaxDigits

      MaxDigits = number

  Μέγιστα αριθμός ψηφίων που θα εμφανίζονται.

MaxErrors

      MaxErrors = number

  Μέγιστος αριθμός σφαλμάτων που θα εμφανίζονται.

MixedFractions

      MixedFractions = boolean

  Αν είναι αληθές, εμφανίζονται μικτά κλάσματα.

NumericalIntegralFunction

      NumericalIntegralFunction = function

  Η χρησιμοποιούμενη συνάρτηση για αριθμητική ολοκλήρωση στη `NumericalIntegral`.

NumericalIntegralSteps

      NumericalIntegralSteps = number

  Βήματα για εκτέλεση στη `NumericalIntegral`.

OutputChopExponent

      OutputChopExponent = number

  Όταν ένας άλλος αριθμός στο αντικείμενο εμφανίζεται (πίνακας ή τιμή) που είναι μεγαλύτερος από 10-OutputChopWhenExponent και ο εμφανιζόμενος αριθμός είναι μικρότερος από 10-OutputChopExponent, τότε εμφανίζεται ο `0.0` αντί για τον αριθμό.

  Η έξοδος δεν είναι ποτέ κομμένη αν η `OutputChopExponent` είναι μηδέν. Πρέπει να είναι ένας μη αρνητικός ακέραιος.

  Αν θέλετε η έξοδος να περικόπτεται πάντα σύμφωνα με την `OutputChopExponent`, τότε ορίστε την `OutputChopWhenExponent`, σε κάτι μεγαλύτερο από ή ίσο με `OutputChopExponent`.

OutputChopWhenExponent

      OutputChopWhenExponent = number

  Πότε να περικόψετε την έξοδο. Δείτε `OutputChopExponent`.

OutputStyle

      OutputStyle = string

  Η τεχνοτροπία εξόδου μπορεί να είναι `κανονική`, `latex`, `mathml` ή `troff`.

  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:

      OutputStyle = "latex"

ResultsAsFloats

      ResultsAsFloats = boolean

  Μετατροπή όλων των αποτελεσμάτων σε αριθμούς κινητής υποδιαστολής πριν την εμφάνιση.

ScientificNotation

      ScientificNotation = boolean

  Χρήση επιστημονικής σημειογραφίας.

SlopefieldTicks

      SlopefieldTicks = [vertical,horizontal]

  Ορίζει τον αριθμό των κάθετων και οριζόντιων υποδιαιρέσεων σε μια γραφική παράσταση πεδίου κλίσης. (Δείτε `SlopefieldPlot`).

  Version 1.0.10 onwards.

SumProductNumberOfTries

      SumProductNumberOfTries = number

  Πόσες επαναλήψεις να δοκιμαστούν για `InfiniteSum` και `InfiniteProduct`.

SumProductSFS

      SumProductSFS = number

  Πόσα διαδοχικά βήματα να γίνουν μέσα στην ανοχή για `InfiniteSum` και `InfiniteProduct`.

SumProductTolerance

      SumProductTolerance = number

  Ανοχή για `InfiniteSum` και `InfiniteProduct`.

SurfacePlotDrawLegends

      SurfacePlotDrawLegends = true

  Λέει στο Genius να σχεδιάσει τα υπομνήματα για τις συναρτήσεις γραφικής παράστασης επιφάνειας όπως `SurfacePlot`.

  Version 1.0.16 onwards.

SurfacePlotVariableNames

      SurfacePlotVariableNames = ["x","y","z"]

  Tells genius which variable names are used as default names for surface plotting functions using `SurfacePlot`. Note that the `z` does not refer to the dependent (vertical) axis, but to the independent complex variable `z=x+iy`.

  Version 1.0.10 onwards.

SurfacePlotWindow

      SurfacePlotWindow = [x1,x2,y1,y2,z1,z2]

  Ορίζει τα όρια για τη γραφική παράσταση επιφάνειας (Δείτε `SurfacePlot`).

VectorfieldNormalized

      VectorfieldNormalized = true

  Αν θα πρέπει η γραφική παράσταση του διανυσματικού πεδίου να έχει κανονικοποιημένο μήκος βέλους. Αν είναι αληθές, τα διανυσματικά πεδία θα εμφανίσουν μόνο την κατεύθυνση και όχι το μέγεθος. (Δείτε `VectorfieldPlot`).

VectorfieldTicks

      VectorfieldTicks = [vertical,horizontal]

  Ορίζει τον αριθμό των κάθετων και οριζόντιων υποδιαιρέσεων σε μια γραφική παράσταση διανυσματικού πεδίου. (Δείτε `VectorfieldPlot`).

  Version 1.0.10 onwards.

### Σταθερές

CatalanConstant

      CatalanConstant

  Η σταθερά του Catalan, περίπου 0.915... Ορίζεται να είναι η σειρά, όπου οι όροι είναι `(-1^k)/((2*k+1)^2)`, με την `k` να κυμαίνεται από 0 μέχρι το άπειρο.

  See Wikipedia or Mathworld for more information.

EulerConstant

      EulerConstant

  Παραλλαγές: `gamma`

  Euler's constant gamma. Sometimes called the Euler-Mascheroni constant.

  See Wikipedia or Planetmath or Mathworld for more information.

GoldenRatio

      GoldenRatio

  Η χρυσή τομή.

  See Wikipedia or Planetmath or Mathworld for more information.

Gravity

      Gravity

  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.

  See Wikipedia for more information.

e

      e

  The base of the natural logarithm. `e^x` is the exponential function `exp`. 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: `EulerConstant`.

  See Wikipedia or Planetmath or Mathworld for more information.

pi

      pi

  Ο αριθμός π, που είναι ο λόγος της περιφέρειας ενός κύκλου προς τη διάμετρό του. Αυτός είναι περίπου 3.14159265359...

  See Wikipedia or Planetmath or Mathworld for more information.

### Αριθμητικό

AbsoluteValue

      AbsoluteValue (x)

  Παραλλαγές: `abs`

  Absolute value of a number and if `x` is a complex value the modulus of `x`. I.e. this the distance of `x` to the origin. This is equivalent to `|x|`.

  See Wikipedia, Planetmath (absolute value), Planetmath (modulus), Mathworld (absolute value) or Mathworld (complex modulus) for more information.

Chop

      Chop (x)

  Αντικατάσταση πολύ μικρού αριθμού με μηδέν.

ComplexConjugate

      ComplexConjugate (z)

  Aliases: `conj` `Conj`

  Υπολογίζει τον μιγαδικό συζυγή του μιγαδικού αριθμού `z`. Αν η `z` είναι ένα διάνυσμα ή πίνακας, όλα τα στοιχεία του παίρνουν συζυγή.

  See Wikipedia for more information.

Denominator

      Denominator (x)

  Λήψη του παρανομαστή ενός ρητού αριθμού.

  See Wikipedia for more information.

FractionalPart

      FractionalPart (x)

  Επιστροφή του κλασματικού μέρους ενός αριθμού.

  See Wikipedia for more information.

Im

      Im (z)

  Παραλλαγές: `ImaginaryPart`

  Get the imaginary part of a complex number. For example `Re(3+4i)` yields 4.

  See Wikipedia for more information.

IntegerQuotient

      IntegerQuotient (m,n)

  Διαίρεση χωρίς υπόλοιπο.

IsComplex

      IsComplex (num)

  Check if argument is a complex (non-real) number. Do note that we really mean nonreal number. That is, `IsComplex(3)` yields false, while `IsComplex(3-1i)` yields true.

IsComplexRational

      IsComplexRational (num)

  Ελέγχει αν το όρισμα είναι πιθανόν μιγαδικός ρητός αριθμός. Δηλαδή, αν και το πραγματικό και το φανταστικό μέρος δίνονται ως ρητοί αριθμοί. Φυσικά ρητός σημαίνει απλά "μη αποθηκευμένος ως αριθμός κινητής υποδιαστολής."

IsFloat

      IsFloat (num)

  Check if argument is a real floating point number (non-complex).

IsGaussInteger

      IsGaussInteger (num)

  Παραλλαγές: `IsComplexInteger`

  Check if argument is a possibly complex integer. That is a complex integer is a number of the form `n+1i*m` where `n` and `m` are integers.

IsInteger

      IsInteger (num)

  Ελέγχει αν το όρισμα είναι ένας ακέραιος (μη μιγαδικός).

IsNonNegativeInteger

      IsNonNegativeInteger (num)

  Check if argument is a non-negative real integer. That is, either a positive integer or zero.

IsPositiveInteger

      IsPositiveInteger (num)

  Παραλλαγές: `IsNaturalNumber`

  Ελέγχει αν το όρισμα είναι θετικός πραγματικός ακέραιος. Σημειώστε ότι δεχόμαστε τη σύμβαση ότι το 0 δεν είναι φυσικός αριθμός.

IsRational

      IsRational (num)

  Ελέγχει αν το όρισμα είναι ένας ρητός αριθμός (μη μιγαδικός). Φυσικά ρητός σημαίνει απλά "μη αποθηκευμένος ως αριθμός κινητής υποδιαστολής."

IsReal

      IsReal (num)

  Ελέγχει αν το όρισμα είναι ένας πραγματικός αριθμός.

Numerator

      Numerator (x)

  Λήψη του αριθμητή ενός ρητού αριθμού.

  See Wikipedia for more information.

Re

      Re (z)

  Παραλλαγές: `RealPart`

  Get the real part of a complex number. For example `Re(3+4i)` yields 3.

  See Wikipedia for more information.

Sign

      Sign (x)

  Παραλλαγές: `sign`

  Επιστρέφει το πρόσημο ενός αριθμού. Δηλαδή επιστρέφει `-1` αν η τιμή είναι αρνητική, `0` αν η τιμή είναι μηδέν και `1` αν η τιμή είναι θετική. Αν `x` είναι μια μιγαδική τιμή τότε η `Sign` επιστρέφει την κατεύθυνση ή 0.

ceil

      ceil (x)

  Παραλλαγές: `Ceiling`

  Get the lowest integer more than or equal to `n`. Examples:

      genius> ceil(1.1)
      = 2
      genius> ceil(-1.1)
      = -1

  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 `ceil(420/4.2)` returns 101 instead of the expected 100. This is because 4.2 is actually very slightly less than 4.2. Use rational representation `42/10` if you want exact arithmetic.

exp

      exp (x)

  Η εκθετική συνάρτηση. Αυτή είναι η συνάρτηση `e^x` όπου `e` είναι η βάση του φυσικού λογαρίθμου.

  See Wikipedia or Planetmath or Mathworld for more information.

float

      float (x)

  Δημιουργεί αριθμό τιμής κινητής υποδιαστολής. Δηλαδή επιστρέφει την αναπαράσταση κινητής υποδιαστολής του αριθμού `x`.

floor

      floor (x)

  Παραλλαγές: `Floor`

  Παίρνει τον μεγαλύτερο ακέραιο που είναι μικρότερος από ή ίσος με `n`.

ln

      ln (x)

  Ο φυσικός λογάριθμος, ο λογάριθμος με βάση το `e`.

  See Wikipedia or Planetmath or Mathworld for more information.

log

      log (x)

      log (x,b)

  Ο λογάριθμος του `x` με βάση `b` (καλεί `DiscreteLog` αν είναι σε κατάσταση modulo), αν η βάση δεν δίνεται, `e` χρησιμοποιείται.

log10

      log10 (x)

  Ο λογάριθμος της `x` με βάση 10.

log2

      log2 (x)

  Παραλλαγές: `lg`

  Ο λογάριθμος του `x` με βάση 2.

max

      max (a,args...)

  Aliases: `Max` `Maximum`

  Επιστρέφει το μέγιστο των ορισμάτων ή πίνακα.

min

      min (a,args...)

  Aliases: `Min` `Minimum`

  Επιστρέφει το ελάχιστο των ορισμάτων ή πίνακα.

rand

      rand (size...)

  Δημιουργεί τυχαίο αριθμό κινητής υποδιαστολής στην περιοχή `[0,1)`. Αν το μέγεθος δίνεται, τότε ένας πίνακας (αν δύο αριθμοί ορίζονται) ή ένα διάνυσμα (αν ορίζεται ένας αριθμός) του δοσμένου μεγέθους επιστρέφεται.

randint

      randint (max,size...)

  Generate random integer in the range `[0,max)`. 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,

      genius> randint(4)
      = 3
      genius> randint(4,2)
      =
      [0      1]
      genius> randint(4,2,3)
      =
      [2      2       1
       0      0       3]

round

      round (x)

  Παραλλαγές: `Round`

  Στρογγυλοποίηση αριθμού.

sqrt

      sqrt (x)

  Παραλλαγές: `SquareRoot`

  The square root. When operating modulo some integer will return either a `null` or a vector of the square roots. Examples:

      genius> sqrt(2)
      = 1.41421356237
      genius> sqrt(-1)
      = 1i
      genius> sqrt(4) mod 7
      =
      [2      5]
      genius> 2*2 mod 7
      = 4

  See Wikipedia or Planetmath for more information.

trunc

      trunc (x)

  Aliases: `Truncate` `IntegerPart`

  Περικοπή αριθμού σε ακέραιο (επιστροφή του ακέραιου μέρους).

### Τριγωνομετρία

acos

      acos (x)

  Παραλλαγές: `arccos`

  Η συνάρτηση arccos (τόξο συνημιτόνου).

acosh

      acosh (x)

  Παραλλαγές: `arccosh`

  Η συνάρτηση arccosh (τόξο υπερβολικού συνημιτόνου).

acot

      acot (x)

  Παραλλαγές: `arccot`

  Η συνάρτηση arccot (τόξο συνεφαπτομένης).

acoth

      acoth (x)

  Παραλλαγές: `arccoth`

  Η συνάρτηση arccoth (τόξο υπερβολικής συνεφαπτομένης).

acsc

      acsc (x)

  Παραλλαγές: `arccsc`

  Η συνάρτηση τόξου συντέμνουσας.

acsch

      acsch (x)

  Παραλλαγές: `arccsch`

  Η συνάρτηση τόξου υπερβολικής συντέμνουσας.

asec

      asec (x)

  Παραλλαγές: `arcsec`

  Η συνάρτηση τόξου τέμνουσας.

asech

      asech (x)

  Παραλλαγές: `arcsech`

  Η συνάρτηση τόξου υπερβολικής τέμνουσας.

asin

      asin (x)

  Παραλλαγές: `arcsin`

  Η συνάρτηση arcsin (τόξο ημιτόνου).

asinh

      asinh (x)

  Παραλλαγές: `arcsinh`

  Η συνάρτηση arcsinh (τόξο υπερβολικού ημιτόνου).

atan

      atan (x)

  Παραλλαγές: `arctan`

  Υπολογίζει τη συνάρτηση arctan (τόξο εφαπτομένης).

  See Wikipedia or Mathworld for more information.

atanh

      atanh (x)

  Παραλλαγές: `arctanh`

  Η συνάρτηση arctanh (τόξο υπερβολικής εφαπτομένης).

atan2

      atan2 (y, x)

  Παραλλαγές: `arctan2`

  Calculates the arctan2 function. If `x>0` then it returns `atan(y/x)`. If `x<0` then it returns `sign(y) * (pi - atan(|y/x|)`. When `x=0` it returns `sign(y) * pi/2`. `atan2(0,0)` returns 0 rather than failing.

  See Wikipedia or Mathworld for more information.

cos

      cos (x)

  Υπολογίζει τη συνάρτηση του συνημιτόνου.

  See Wikipedia or Planetmath for more information.

cosh

      cosh (x)

  Υπολογίζει την συνάρτηση υπερβολικού συνημιτόνου.

  See Wikipedia or Planetmath for more information.

cot

      cot (x)

  Η συνάρτηση συνεφαπτομένης.

  See Wikipedia or Planetmath for more information.

coth

      coth (x)

  Η συνάρτηση υπερβολικής συνεφαπτομένης.

  See Wikipedia or Planetmath for more information.

csc

      csc (x)

  Η συνάρτηση συντέμνουσας.

  See Wikipedia or Planetmath for more information.

csch

      csch (x)

  Η συνάρτηση υπερβολικής συντέμνουσας.

  See Wikipedia or Planetmath for more information.

sec

      sec (x)

  Η συνάρτηση τέμνουσας.

  See Wikipedia or Planetmath for more information.

sech

      sech (x)

  Η συνάρτηση υπερβολικής τέμνουσας.

  See Wikipedia or Planetmath for more information.

sin

      sin (x)

  Υπολογίζει τη συνάρτηση του ημιτόνου.

  See Wikipedia or Planetmath for more information.

sinh

      sinh (x)

  Υπολογίζει την συνάρτηση υπερβολικού ημιτόνου.

  See Wikipedia or Planetmath for more information.

tan

      tan (x)

  Υπολογίζει τη συνάρτηση της εφαπτομένης.

  See Wikipedia or Planetmath for more information.

tanh

      tanh (x)

  Η συνάρτηση υπερβολικής εφαπτομένης.

  See Wikipedia or Planetmath for more information.

### Θεωρία αριθμών

AreRelativelyPrime

      AreRelativelyPrime (a,b)

  Είναι οι πραγματικοί ακέραιοι `a` και `b` σχετικοί πρώτοι; Επιστρέφει `αληθές` ή `ψευδές`.

  See Wikipedia or Planetmath or Mathworld for more information.

BernoulliNumber

      BernoulliNumber (n)

  Επιστρέφει τον `n`στό αριθμό Bernoulli.

  See Wikipedia or Mathworld for more information.

ChineseRemainder

      ChineseRemainder (a,m)

  Παραλλαγές: `CRT`

  Εύρεση του `x` που επιλύει το δοσμένο σύστημα με το διάνυσμα `a` και modulo τα στοιχεία του `m`, χρησιμοποιώντας το θεώρημα υπολοίπου του Κινέζου.

  See Wikipedia or Planetmath or Mathworld for more information.

CombineFactorizations

      CombineFactorizations (a,b)

  Με δεδομένες δύο παραγοντοποιήσεις, δίνει την παραγοντοποίηση του γινομένου.

  Δείτε παραγοντοποίηση.

ConvertFromBase

      ConvertFromBase (v,b)

  Μετατρέπει ένα διάνυσμα τιμών που δείχνει δυνάμεις του b στον αριθμό a.

ConvertToBase

      ConvertToBase (n,b)

  Μετατρέπει έναν αριθμό σε ένα διάνυσμα δυνάμεων για στοιχεία στη βάση `b`.

DiscreteLog

      DiscreteLog (n,b,q)

  Βρίσκει τον διακριτό λογάριθμο της `n` με βάση `b` στην Fq, το πεπερασμένο πεδίο τάξης `q`, όπου η `q` είναι ένας πρώτος, χρησιμοποιώντας τον αλγόριθμο Silver-Pohlig-Hellman.

  See Wikipedia, Planetmath, or Mathworld for more information.

Divides

      Divides (m,n)

  Ελέγχει τη διαιρετότητα (αν η `m` διαιρεί την `n`).

EulerPhi

      EulerPhi (n)

  Υπολογίζει τη συνάρτηση φι του Όιλερ για την `n`, δηλαδή τον αριθμό των ακεραίων μεταξύ 1 και `n` που είναι σχετικά πρώτοι με την `n`.

  See Wikipedia, Planetmath, or Mathworld for more information.

ExactDivision

      ExactDivision (n,d)

  Return `n/d` but only if `d` divides `n`. If `d` does not divide `n` then this function returns garbage. This is a lot faster for very large numbers than the operation `n/d`, but it is only useful if you know that the division is exact.

Factorize

      Factorize (n)

  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:

      genius> Factorize(11*11*13)
      =
      [1      11      13
       1      2       1]

  See Wikipedia for more information.

Factors

      Factors (n)

  Return all factors of `n` in a vector. This includes all the non-prime factors as well. It includes 1 and the number itself. So to print all the perfect numbers (those that are sums of their factors) up to the number 1000 you could do (this is clearly very inefficient)

      for n=1 to 1000 do (
          if MatrixSum (Factors(n)) == 2*n then
              print(n)
      )

FermatFactorization

      FermatFactorization (n,tries)

  Δοκιμάζει την παραγοντοποίηση Φερμά της `n` στο `(t-s)*(t+s)`, επιστρέφει τις `t` και `s` ως ένα διάνυσμα αν είναι δυνατό, αλλιώς `null`. Η `tries` καθορίζει τον αριθμό των προσπαθειών πριν να σταματήσει.

  Αυτή είναι μια αρκετά καλή παραγοντοποίηση, αν ο αριθμός σας είναι το γινόμενο δύο παραγόντων που είναι πολύ κοντά μεταξύ τους.

  See Wikipedia for more information.

FindPrimitiveElementMod

      FindPrimitiveElementMod (q)

  Βρίσκει το πρώτο βασικό στοιχείο στην Fq, την πεπερασμένη ομάδα της τάξης `q`. Φυσικά η `q` πρέπει να είναι πρώτος.

FindRandomPrimitiveElementMod

      FindRandomPrimitiveElementMod (q)

  Βρίσκει ένα τυχαίο βασικό στοιχείο στην Fq, την πεπερασμένη ομάδα της τάξης `q` (το q πρέπει να είναι πρώτος).

IndexCalculus

      IndexCalculus (n,b,q,S)

  Υπολογίζει τη διακριτή λογαριθμική βάση `b` του n στο Fq, την πεπερασμένη ομάδα της τάξης `q` (`q` είναι ένας πρώτος), χρησιμοποιώντας τη βάση του συντελεστή `S`. Η `S` πρέπει να είναι μια στήλη πρώτων πιθανόν με μια δεύτερη στήλη προϋπολογισμένη από την `IndexCalculusPrecalculation`.

IndexCalculusPrecalculation

      IndexCalculusPrecalculation (b,q,S)

  Εκτελεί το βήμα προϋπολογισμού του `IndexCalculus` για λογαρίθμους με βάση `b` στο Fq, την πεπερασμένη ομάδα της τάξης `q` (`q` είναι ένας πρώτος), για τη βάση συντελεστή `S` (όπου `S` είναι ένα διάνυσμα στήλης πρώτων). Οι λογάριθμοι θα προϋπολογιστούν και θα επιστραφούν στη δεύτερη στήλη.

IsEven

      IsEven (n)

  Ελέγχει αν ο ακέραιος είναι άρτιος.

IsMersennePrimeExponent

      IsMersennePrimeExponent (p)

  Ελέγχει αν ο θετικός ακέραιος `p` είναι ένας εκθέτης πρώτου Μερσέν. Δηλαδή, αν 2p-1 είναι ένας πρώτος. Το κάνει αναζητώντας τον σε έναν πίνακα γνωστών τιμών που είναι σχετικά σύντομος. Δείτε επίσης MersennePrimeExponents και LucasLehmer.

  See Wikipedia, Planetmath, Mathworld or GIMPS for more information.

IsNthPower

      IsNthPower (m,n)

  Ελέγχει αν ένας ρητός αριθμός `m` είναι μια τέλεια `n`στή δύναμη. Δείτε επίσης IsPerfectPower και IsPerfectSquare.

IsOdd

      IsOdd (n)

  Έλεγχος αν ο ακέραιος είναι περιττός.

IsPerfectPower

      IsPerfectPower (n)

  Check an integer for being any perfect power, ab.

IsPerfectSquare

      IsPerfectSquare (n)

  Check an integer for being a perfect square of an integer. The number must be an integer. Negative integers are never perfect squares of integers.

IsPrime

      IsPrime (n)

  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 `IsPrimeMillerRabinReps`. That is the probability of false positive is 1/4 to the power `IsPrimeMillerRabinReps`. The default value of 22 yields a probability of about 5.7e-14.

  If `false` 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 `MillerRabinTestSure` but it may take a lot longer.

  See Planetmath or Mathworld for more information.

IsPrimitiveMod

      IsPrimitiveMod (g,q)

  Ελέγχει αν το `g` είναι βασικό στην Fq, η πεπερασμένη ομάδα της τάξης `q`, όπου `q` είναι ένας πρώτος. Αν το `q` δεν είναι πρώτος τα αποτελέσματα είναι ψευδή.

IsPrimitiveModWithPrimeFactors

      IsPrimitiveModWithPrimeFactors (g,q,f)

  Ελέγχει αν το `g` είναι βασικό στην Fq, την πεπερασμένη ομάδα της τάξης `q`, όπου `q` είναι ένας πρώτος και το `f` είναι ένα διάνυσμα πρώτων παραγόντων του `q`-1. Αν το `q` δεν είναι πρώτος τα αποτελέσματα είναι ψευδή.

IsPseudoprime

      IsPseudoprime (n,b)

  Αν το `n` είναι ένας ψευδοπρώτος με βάση `b` αλλά όχι ένας πρώτος, δηλαδή αν `b^(n-1) == 1 mod n`. Αυτό καλεί την `PseudoprimeTest`

IsStrongPseudoprime

      IsStrongPseudoprime (n,b)

  Ελέγχει αν το `n` είναι ένας ισχυρός ψευδοπρώτος με βάση `b`, αλλά όχι πρώτος.

Jacobi

      Jacobi (a,b)

  Παραλλαγές: `JacobiSymbol`

  Υπολογίζει το σύμβολο Τζακόμπι (a/b) (το b πρέπει να είναι περιττός).

JacobiKronecker

      JacobiKronecker (a,b)

  Παραλλαγές: `JacobiKroneckerSymbol`

  Υπολογίζει το σύμβολο Τζακόμπι (a/b) με την επέκταση Κρόνεκερ (a/2)=(2/a) όταν είναι περιττός, ή (a/2)=0 όταν είναι άρτιος.

LeastAbsoluteResidue

      LeastAbsoluteResidue (a,n)

  Επιστρέφει το υπόλοιπο του `a` mod `n`, με την ελάχιστη απόλυτη τιμή (στο διάστημα -n/2 έως n/2).

Legendre

      Legendre (a,p)

  Παραλλαγές: `LegendreSymbol`

  Υπολογίζει το σύμβολο Λεζάντρ (a/p).

  See Planetmath or Mathworld for more information.

LucasLehmer

      LucasLehmer (p)

  Ελέγχει αν 2p-1 είναι ένας πρώτος Μερσέν χρησιμοποιώντας τη δοκιμή Lucas-Lehmer. Δείτε επίσης MersennePrimeExponents και IsMersennePrimeExponent.

  See Wikipedia, Planetmath, or Mathworld for more information.

LucasNumber

      LucasNumber (n)

  Επιστρέφει τον `n`στο αριθμό Lucas.

  See Wikipedia, Planetmath, or Mathworld for more information.

MaximalPrimePowerFactors

      MaximalPrimePowerFactors (n)

  Επιστρέφει όλους τους μέγιστους πρώτους παράγοντες δύναμης ενός αριθμού.

MersennePrimeExponents

      MersennePrimeExponents

  Ένα διάνυσμα με γνωστούς πρώτους εκθέτες Μερσέν, δηλαδή ένας κατάλογος θετικών ακεραίων `p` έτσι ώστε το 2p-1 να είναι πρώτος. Δείτε επίσης IsMersennePrimeExponent και LucasLehmer.

  See Wikipedia, Planetmath, Mathworld or GIMPS for more information.

MillerRabinTest

      MillerRabinTest (n,reps)

  Use the Miller-Rabin primality test on `n`, `reps` number of times. The probability of false positive is `(1/4)^reps`. It is probably usually better to use `IsPrime` since that is faster and better on smaller integers.

  See Wikipedia or Planetmath or Mathworld for more information.

MillerRabinTestSure

      MillerRabinTestSure (n)

  Use the Miller-Rabin primality test on `n` with enough bases that assuming the Generalized Riemann Hypothesis the result is deterministic.

  See Wikipedia, Planetmath, or Mathworld for more information.

ModInvert

      ModInvert (n,m)

  Επιστρέφει τον αντίστροφο του n mod m.

  Δείτε Mathworld για περισσότερες πληροφορίες.

MoebiusMu

      MoebiusMu (n)

  Επιστρέφει την συνάρτηση mu του Moebius υπολογισμένη στο `n`. Δηλαδή, επιστρέφει 0 αν το `n` δεν είναι γινόμενο διακριτών πρώτων και `(-1)^k` αν είναι γινόμενο των `k` διακριτών πρώτων.

  See Planetmath or Mathworld for more information.

NextPrime

      NextPrime (n)

  Επιστρέφει τον ελάχιστο πρώτο που είναι μεγαλύτερος από τον `n`. Οι αρνητικοί των πρώτων θεωρούνται πρώτοι και έτσι για να πάρετε τον προηγούμενο πρώτο μπορείτε να χρησιμοποιήσετε `-NextPrime(-n)`.

  Αυτή η συνάρτηση χρησιμοποιεί τη `mpz_nextprime` του GMP που με τη σειρά της χρησιμοποιεί την πιθανοθεωρητική δοκιμή Μίλερ-Ράμπιν (Δείτε επίσης `MillerRabinTest`). Η πιθανότητα ψευδούς θετικού δεν ρυθμίζεται, αλλά είναι αρκετά χαμηλή για όλους τους πρακτικούς σκοπούς.

  See Planetmath or Mathworld for more information.

PadicValuation

      PadicValuation (n,p)

  Επιστρέφει τον υπολογισμό p-adic (αριθμός των τελικών μηδενικών στη βάση `p`).

  See Wikipedia or Planetmath for more information.

PowerMod

      PowerMod (a,b,m)

  Compute `a^b mod m`. The `b`'s power of `a` modulo `m`. It is not necessary to use this function as it is automatically used in modulo mode. Hence `a^b mod m` is just as fast.

Prime

      Prime (n)

  Παραλλαγές: `prime`

  Επιστρέφει τον `n`στό πρώτο (μέχρι ένα όριο).

  See Planetmath or Mathworld for more information.

PrimeFactors

      PrimeFactors (n)

  Επιστρέφει όλους τους πρώτους παράγοντες ενός αριθμού ως διάνυσμα.

  See Wikipedia or Mathworld for more information.

PseudoprimeTest

      PseudoprimeTest (n,b)

  Pseudoprime test, returns `true` if and only if `b^(n-1) == 1 mod n`

  See Planetmath or Mathworld for more information.

RemoveFactor

      RemoveFactor (n,m)

  Αφαιρεί όλα τα στιγμιότυπα του παράγοντα `m` από τον αριθμό `n`. Δηλαδή, διαιρεί με τη μέγιστη δύναμη του `m`, που διαιρεί το `n`.

  See Planetmath or Mathworld for more information.

SilverPohligHellmanWithFactorization

      SilverPohligHellmanWithFactorization (n,b,q,f)

  Βρίσκει τους διακριτούς λογάριθμους του `n` με βάση το `b` στο Fq, την πεπερασμένη ομάδα της τάξης `q`, όπου `q` είναι ένας πρώτος που χρησιμοποιεί τον αλγόριθμο Silver-Pohlig-Hellman, με δεδομένο το `f` είναι η παραγοντοποίηση του `q`-1.

SqrtModPrime

      SqrtModPrime (n,p)

  Βρίσκει την τετραγωνική ρίζα του `n` modulo `p` (όπου το `p` είναι πρώτος). Null επιστρέφεται αν δεν είναι ένα υπόλοιπο δευτεροβάθμιας.

  See Planetmath or Mathworld for more information.

StrongPseudoprimeTest

      StrongPseudoprimeTest (n,b)

  Εκτελεί τη δοκιμή ισχυρού ψευδοπρώτου με βάση `b` στο `n`.

  See Wikipedia, Planetmath, or Mathworld for more information.

gcd

      gcd (a,args...)

  Παραλλαγές: `GCD`

  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.

  See Wikipedia, Planetmath, or Mathworld for more information.

lcm

      lcm (a,args...)

  Παραλλαγές: `LCM`

  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.

  See Wikipedia, Planetmath, or Mathworld for more information.

### Διαχείριση πινάκων

AppendElement

      AppendElement (v,elt)

  Append an element to a vector and return the vector. No expansion is done. Normally a row vector is built if starting from `null` or a 1-by-1 matrix, but if given a column vector it will properly build a column vector.

ApplyOverMatrix

      ApplyOverMatrix (a,func)

  Εφαρμόζει μια συνάρτηση σε όλες τις καταχωρίσεις ενός πίνακα και επιστρέφει έναν πίνακα των αποτελεσμάτων.

ApplyOverMatrix2

      ApplyOverMatrix2 (a,b,func)

  Εφαρμόζει μια συνάρτηση σε όλες τις καταχωρίσεις των 2 πινάκων (ή 1 τιμή και 1 πίνακα) και επιστρέφει έναν πίνακα των αποτελεσμάτων.

ColumnsOf

      ColumnsOf (M)

  Παίρνει τις στήλες ενός πίνακα ως οριζόντιο διάνυσμα.

ComplementSubmatrix

      ComplementSubmatrix (m,r,c)

  Αφαιρεί στήλες και γραμμές από έναν πίνακα.

CompoundMatrix

      CompoundMatrix (k,A)

  Υπολογίζει τον kστό σύνθετο πίνακα του Α.

CountZeroColumns

      CountZeroColumns (M)

  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 `cref` and `Nullity`.

DeleteColumn

      DeleteColumn (M,col)

  Διαγράφει μια στήλη ενός πίνακα.

DeleteRow

      DeleteRow (M,row)

  Διαγράφει μια γραμμή ενός πίνακα.

DiagonalOf

      DiagonalOf (M)

  Δίνει τις διαγώνιες καταχωρίσεις ενός πίνακα ως διάνυσμα στήλης.

  See Wikipedia for more information.

DotProduct

      DotProduct (u,v)

  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 HermitianProduct for the standard sesquilinear inner product.

  See Wikipedia or Planetmath for more information.

ExpandMatrix

      ExpandMatrix (M)

  Επεκτείνει έναν πίνακα ακριβώς όπως κάνουμε με εισόδους πίνακα χωρίς κλείσιμο εισαγωγικών. Δηλαδή, επεκτείνουμε οποιουσδήποτε εσωτερικούς πίνακες ως ομάδες. Αυτός είναι ένας τρόπος για να κατασκευάσετε πίνακες από μικρότερους και αυτό γίνεται κανονικά αυτόματα σε εισόδους εκτός και ο πίνακας είναι με εισαγωγικά.

HermitianProduct

      HermitianProduct (u,v)

  Παραλλαγές: `InnerProduct`

  Δίνει το ερμιτιανό γινόμενο δύο διανυσμάτων. Τα διανύσματα πρέπει να είναι του ίδιου μεγέθους. Αυτό είναι μια γραμμικο-ημιγραμμική μορφή χρησιμοποιώντας τον ταυτοτικό πίνακα.

  See Wikipedia or Mathworld for more information.

I

      I (n)

  Παραλλαγές: `eye`

  Επιστρέφει έναν ταυτοτικό πίνακα δοσμένου μεγέθους, δηλαδή `n` επί `n`. Αν το `n` είναι μηδέν, επιστρέφει `null`.

  See Wikipedia or Planetmath for more information.

IndexComplement

      IndexComplement (vec,msize)

  Επιστρέφει το συμπλήρωμα δείκτη ενός διανύσματος δεικτών. Ο πρώτος δείκτης είναι ένα. Για παράδειγμα για διάνυσμα `[2,3]` και μέγεθος `5`, επιστρέφει `[1,4,5]`. Αν `msize` είναι 0, επιστρέφει πάντα `null`.

IsDiagonal

      IsDiagonal (M)

  Αν είναι ένας διαγώνιος πίνακας.

  See Wikipedia or Planetmath for more information.

IsIdentity

      IsIdentity (x)

  Ελέγχει αν ένας πίνακας είναι ο ταυτοτικός πίνακας. Επιστρέφει αυτόματα `ψευδές` αν ο πίνακας δεν είναι τετραγωνικός. Δουλεύει επίσης με αριθμούς και σε αυτήν την περίπτωση είναι ισοδύναμος με `x==1`. Όταν `x` είναι `null` (μπορούμε να τον θεωρήσουμε ως έναν πίνακα 0 επί 0), δεν δημιουργείται κανένα σφάλμα και επιστρέφεται `ψευδές`.

IsLowerTriangular

      IsLowerTriangular (M)

  Αν είναι ένας κάτω τριγωνικός πίνακας. Δηλαδή, αν είναι όλες οι καταχωρίσεις πάνω από τη διαγώνιο είναι μηδέν.

IsMatrixInteger

      IsMatrixInteger (M)

  Check if a matrix is a matrix of integers (non-complex).

IsMatrixNonnegative

      IsMatrixNonnegative (M)

  Ελέγχει αν ο πίνακας είναι μη αρνητικός, δηλαδή, αν κάθε στοιχείο είναι μη αρνητικός. Μην μπερδεύετε θετικά πίνακες με θετικούς ημιορισμένους πίνακες.

  See Wikipedia for more information.

IsMatrixPositive

      IsMatrixPositive (M)

  Ελέγχει αν ένας πίνακας είναι θετικός, δηλαδή, αν κάθε στοιχείο είναι θετικό (και συνεπώς πραγματικό). Ειδικά, κανένα στοιχείο δεν είναι 0. Μην μπερδεύετε θετικούς πίνακες με θετικά ορισμένους πίνακες.

  See Wikipedia for more information.

IsMatrixRational

      IsMatrixRational (M)

  Ελέγχει αν ένας πίνακας είναι ένας πίνακας ρητών αριθμών (μη μιγαδικός).

IsMatrixReal

      IsMatrixReal (M)

  Ελέγχει αν ένας πίνακας είναι ένας πίνακας πραγματικών αριθμών (μη μιγαδικός).

IsMatrixSquare

      IsMatrixSquare (M)

  Ελέγχει αν ένας πίνακας είναι τετράγωνος, δηλαδή, αν το πλάτος του είναι ίσο με το ύψος του.

IsUpperTriangular

      IsUpperTriangular (M)

  Είναι ένας άνω τριγωνικός πίνακας; Δηλαδή, ένας πίνακας είναι άνω τριγωνικός αν όλες οι καταχωρίσεις κάτω από τη διαγώνιο είναι μηδέν.

IsValueOnly

      IsValueOnly (M)

  Ελέγχει αν ο πίνακας είναι ένας πίνακας μόνο αριθμών. Πολλές εσωτερικές συναρτήσεις κάνουν αυτόν τον έλεγχο. Οι τιμές μπορεί να είναι οποιοιδήποτε αριθμοί συμπεριλαμβανομένων μιγαδικών αριθμών.

IsVector

      IsVector (v)

  Αν είναι το όρισμα οριζόντιο ή κάθετο διάνυσμα. Η Genius δεν ξεχωρίζει μεταξύ πίνακα και διανύσματος και ένα διάνυσμα είναι απλά ένας πίνακας 1 επί `n` ή `n` επί 1.

IsZero

      IsZero (x)

  Ελέγχει αν ένας πίνακας αποτελείται όλος από μηδενικά. Δουλεύει επίσης και σε αριθμούς, οπότε είναι ισοδύναμος με `x==0`. Όταν η `x` είναι `null` (μπορούμε να σκεφτούμε ως έναν πίνακα 0 επί 0), δεν δημιουργείται κανένα σφάλμα και επιστρέφεται η `true` επειδή η συνθήκη είναι κενή.

LowerTriangular

      LowerTriangular (M)

  Επιστρέφει ένα αντίγραφο του πίνακα `M` με όλες τις καταχωρίσεις πάνω από τη διαγώνιο ορισμένες σε μηδέν.

MakeDiagonal

      MakeDiagonal (v,arg...)

  Παραλλαγές: `diag`

  Δημιουργεί έναν διαγώνιο πίνακα από ένα διάνυσμα. Εναλλακτικά μπορείτε να περάσετε στις τιμές για να βάλετε τη διαγώνιο ως ορίσματα. Έτσι `MakeDiagonal([1,2,3])` είναι το ίδιο με `MakeDiagonal(1,2,3)`.

  See Wikipedia or Planetmath for more information.

MakeVector

      MakeVector (A)

  Alias: `MakeColumnVector`

  Make column vector out of matrix by putting columns above each other. Returns `null` when given `null`. Can be used to ensure a vector is a column vector.

MakeRowVector

      MakeRowVector (A)

  Make row vector out of matrix by putting rows one after another. Returns `null` when given `null`. Can be used to ensure a vector is a row vector.

MatrixProduct

      MatrixProduct (A)

  Υπολογίζει το γινόμενο όλων των στοιχείων σε ένα πίνακα ή διάνυσμα. Δηλαδή, πολλαπλασιάζουμε όλα τα στοιχεία και επιστρέφει έναν αριθμό που είναι το γινόμενο όλων των στοιχείων.

MatrixSum

      MatrixSum (A)

  Υπολογίζει το άθροισμα όλων των στοιχείων σε ένα πίνακα ή διάνυσμα. Δηλαδή, προσθέτουμε όλα τα στοιχεία και επιστρέφει έναν αριθμό που είναι το άθροισμα όλων των στοιχείων.

MatrixSumSquares

      MatrixSumSquares (A)

  Υπολογίζει το άθροισμα των τετραγώνων όλων των στοιχείων σε έναν πίνακα ή διάνυσμα.

NonzeroColumns

      NonzeroColumns (M)

  Επιστρέφει ένα διάνυσμα γραμμής των δεικτών των μη μηδενικών στηλών στον πίνακα `M`.

  Version 1.0.18 onwards.

NonzeroElements

      NonzeroElements (v)

  Επιστρέφει ένα διάνυσμα γραμμής των δεικτών των μη μηδενικών στοιχείων του διανύσματος `v`.

  Version 1.0.18 onwards.

OuterProduct

      OuterProduct (u,v)

  Δίνει το εξωτερικό γινόμενο δύο διανυσμάτων. Δηλαδή, ας υποθέσουμε ότι `u` και `v` είναι κάθετα διανύσματα, τότε το εξωτερικό γινόμενο είναι `v * u.'`.

ReverseVector

      ReverseVector (v)

  Αντίστροφα στοιχεία σε ένα διάνυσμα. Επιστρέφει `null` αν δίνεται `null`

RowSum

      RowSum (m)

  Υπολογίζει το άθροισμα κάθε γραμμής σε έναν πίνακα και επιστρέφει ένα κάθετο διάνυσμα με το αποτέλεσμα.

RowSumSquares

      RowSumSquares (m)

  Υπολογίζει το άθροισμα των τετραγώνων κάθε γραμμής σε έναν πίνακα και επιστρέφει ένα κάθετο διάνυσμα με τα αποτελέσματα.

RowsOf

      RowsOf (M)

  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 `M`. This function is useful if you wish to loop over the rows of a matrix. For example, as `for r in RowsOf(M) do something(r)`.

SetMatrixSize

      SetMatrixSize (M,rows,columns)

  Δημιουργεί νέο πίνακα δεδομένου μεγέθους από τον παλιό. Δηλαδή, θα επιστραφεί ένας νέος πίνακας στον οποίον ο παλιός αντιγράφηκε. Οι καταχωρίσεις που δεν ταιριάζουν περικόπτονται και ο πρόσθετος χώρος συμπληρώνεται με μηδενικά. Αν `rows` ή `columns` είναι μηδέν, τότε επιστρέφεται `null`.

ShuffleVector

      ShuffleVector (v)

  Shuffle elements in a vector. Return `null` if given `null`.

  Version 1.0.13 onwards.

SortVector

      SortVector (v)

  Ταξινόμηση στοιχείων διανύσματος με αύξουσα διάταξη.

StripZeroColumns

      StripZeroColumns (M)

  Αφαιρεί όλες τις ολότελα μηδενικές στήλες του `M`.

StripZeroRows

      StripZeroRows (M)

  Αφαιρεί όλες τις ολότελα μηδενικές γραμμές του `M`.

Submatrix

      Submatrix (m,r,c)

  Επιστρέφει στήλες και γραμμές από έναν πίνακα. Αυτό είναι ακριβώς ισοδύναμο με το `m@(r,c)`. Τα `r` και `c` πρέπει να είναι διανύσματα γραμμών και στηλών (ή μεμονωμένοι αριθμοί αν χρειάζεται μόνο μια γραμμή ή στήλη).

SwapRows

      SwapRows (m,row1,row2)

  Εναλλάσσει δύο γραμμές σε έναν πίνακα.

UpperTriangular

      UpperTriangular (M)

  Επιστρέφει ένα αντίγραφο του πίνακα `M` με όλες τις καταχωρίσεις κάτω από τη διαγώνιο ορισμένες σε μηδέν.

columns

      columns (M)

  Δίνει τον αριθμό των στηλών ενός πίνακα.

elements

      elements (M)

  Δίνει τον συνολικό αριθμό των στοιχείων ενός πίνακα. Αυτός είναι ο αριθμός των στηλών επί τον αριθμό των γραμμών.

ones

      ones (rows,columns...)

  Δημιουργεί έναν πίνακα από όλους (ή ένα διάνυσμα γραμμής αν δίνεται μόνο ένα όρισμα). Επιστρέφει `null` αν οποιαδήποτε σειρά ή στήλη είναι μηδέν.

rows

      rows (M)

  Δίνει τον αριθμό των γραμμών ενός πίνακα.

zeros

      zeros (rows,columns...)

  Δημιουργεί έναν πίνακα όλων των μηδενικών (ή ένα διάνυσμα γραμμής αν δίνεται μόνο ένα όρισμα). Επιστρέφει `null` αν οποιαδήποτε σειρά ή στήλη είναι μηδέν.

### Γραμμική Άλγεβρα

AuxiliaryUnitMatrix

      AuxiliaryUnitMatrix (n)

  Δίνει τον βοηθητικό μοναδιαίο πίνακα μεγέθους `n`. Αυτός είναι ένας τετραγωνικός πίνακας με όλα μηδέν εκτός από την υπερδιαγώνιο που είναι όλα 1. Είναι ο σύνθετος πίνακας Jordan με ιδιοτιμή ενός μηδενικού.

  See Planetmath or Mathworld for more information on Jordan Canonical Form.

BilinearForm

      BilinearForm (v,A,w)

  Υπολογίζει (v,w) ως προς τη διγραμμική μορφή που δίνεται από τον πίνακα Α.

BilinearFormFunction

      BilinearFormFunction (A)

  Επιστρέφει μια συνάρτηση που υπολογίζει δύο διανύσματα ως προς τη διγραμμική μορφή που δίνεται από το Α.

CharacteristicPolynomial

      CharacteristicPolynomial (M)

  Παραλλαγές: `CharPoly`

  Δίνει το χαρακτηριστικό πολυώνυμο ως διάνυσμα. Δηλαδή, επιστρέφει τους συντελεστές του πολυωνύμου ξεκινώντας με τον σταθερό όρο. Αυτό είναι το πολυώνυμο που ορίστηκε από `det(M-xI)`. Οι ρίζες αυτού του πολυωνύμου είναι οι ιδιοτιμές του `M`. Δείτε επίσης CharacteristicPolynomialFunction.

  See Wikipedia or Planetmath for more information.

CharacteristicPolynomialFunction

      CharacteristicPolynomialFunction (M)

  Δίνει το χαρακτηριστικό πολυώνυμο ως συνάρτηση. Αυτό είναι το πολυώνυμο που ορίστηκε από το `det(M-xI)`. Οι ρίζες αυτού του πολυωνύμου είναι οι ιδιοτιμές του `M`. Δείτε επίσης CharacteristicPolynomial.

  See Wikipedia or Planetmath for more information.

ColumnSpace

      ColumnSpace (M)

  Δίνει έναν πίνακα βάσης για τον χώρο στηλών ενός πίνακα. Δηλαδή, επιστρέφει έναν πίνακα του οποίου οι στήλες είναι η βάση για τον χώρο στηλών του `M`. Αυτός είναι ο χώρος που καλύπτεται από τις στήλες του `M`.

  See Wikipedia for more information.

CommutationMatrix

      CommutationMatrix (m, n)

  Επιστρέφει τον αντιμεταθετικό πίνακα `K(m,n)` που είναι ο μοναδικός πίνακας `m*n` επί `m*n` τέτοιος ώστε `K(m,n) * MakeVector(A) = MakeVector(A.')` για όλους τους πίνακες `Α` `m` επί `n`.

CompanionMatrix

      CompanionMatrix (p)

  Συνοδός πίνακας ενός πολυωνύμου (ως διανύσματος).

ConjugateTranspose

      ConjugateTranspose (M)

  Συζυγής ανάστροφος πίνακας (συζυγής). Αυτός είναι ο ίδιος με τον τελεστή `'`.

  See Wikipedia or Planetmath for more information.

Convolution

      Convolution (a,b)

  Παραλλαγές: `convol`

  Υπολογίζει τη συνέλιξη των δύο οριζόντιων διανυσμάτων.

ConvolutionVector

      ConvolutionVector (a,b)

  Υπολογίζει τη συνέλιξη των δύο οριζόντιων διανυσμάτων. Επιστρέφει αποτέλεσμα ως διάνυσμα του οποίου τα στοιχεία δεν προστίθεται μαζί.

CrossProduct

      CrossProduct (v,w)

  Διανυσματικό γινόμενο δύο διανυσμάτων στο R3 ως διάνυσμα στήλης.

  See Wikipedia for more information.

DeterminantalDivisorsInteger

      DeterminantalDivisorsInteger (M)

  Get the determinantal divisors of an integer matrix.

DirectSum

      DirectSum (M,N...)

  Ευθύ άθροισμα των πινάκων.

  See Wikipedia for more information.

DirectSumMatrixVector

      DirectSumMatrixVector (v)

  Ευθύ άθροισμα ενός διανύσματος πινάκων.

  See Wikipedia for more information.

Eigenvalues

      Eigenvalues (M)

  Παραλλαγές: `eig`

  Δίνει τις ιδιοτιμές ενός τετραγωνικού πίνακα. Προς το παρόν δουλεύει μόνο για πίνακες μεγέθους μέχρι 4 επί 4, ή για τριγωνικούς πίνακες (για τους οποίους οι ιδιοτιμές είναι στη διαγώνιο).

  See Wikipedia, Planetmath, or Mathworld for more information.

Eigenvectors

      Eigenvectors (M)

      Eigenvectors (M, &eigenvalues)

      Eigenvectors (M, &eigenvalues, &multiplicities)

  Δίνει τα ιδιοδιανύσματα ενός τετραγωνικού πίνακα. Προαιρετικά παίρνετε επίσης τις ιδιοτιμές και τις αλγεβρικές πολλαπλότητες. Προς το παρόν δουλεύει μόνο για πίνακες μεγέθους μέχρι 2 επί 2.

  See Wikipedia, Planetmath, or Mathworld for more information.

GramSchmidt

      GramSchmidt (v,B...)

  Εφαρμόζει τη διεργασία Gram-Schmidt (στις στήλες) ως προς το εσωτερικό γινόμενο που δίνεται από το `B`. Αν το `B` δεν δίνεται, τότε χρησιμοποιείται το τυπικό ερμιτιανό γινόμενο. Το `B` μπορεί να είναι ή γραμμικο-ημιγραμμική συνάρτηση δύο ορισμάτων ή μπορεί να είναι ένας πίνακας που δίνει μια γραμμικο-ημιγραμμική μορφή. Τα διανύσματα θα γίνονται ορθοκανονικά ως προς το `B`.

  See Wikipedia or Planetmath for more information.

HankelMatrix

      HankelMatrix (c,r)

  Hankel matrix, a matrix whose skew-diagonals are constant. `c` is the first row and `r` is the last column. It is assumed that both arguments are vectors and the last element of `c` is the same as the first element of `r`.

  See Wikipedia for more information.

HilbertMatrix

      HilbertMatrix (n)

  Πίνακας Χίλμπερτ τάξης `n`.

  See Wikipedia or Planetmath for more information.

Image

      Image (T)

  Δίνει την εικόνα (διάστημα στήλης) ενός γραμμικού μετασχηματισμού.

  See Wikipedia for more information.

InfNorm

      InfNorm (v)

  Δίνει την απειρονόρμα ενός διανύσματος, μερικές φορές λέγεται νόρμα ελάχιστου άνω φράγματος ή νόρμα μεγίστου.

InvariantFactorsInteger

      InvariantFactorsInteger (M)

  Get the invariant factors of a square integer matrix.

InverseHilbertMatrix

      InverseHilbertMatrix (n)

  Αντίστροφος πίνακας Χίλμπερτ τάξης `n`.

  See Wikipedia or Planetmath for more information.

IsHermitian

      IsHermitian (M)

  Αν είναι ένας ερμιτιανός πίνακας. Δηλαδή, αν είναι ίσος με τον ανάστροφο συζυγή.

  See Wikipedia or Planetmath for more information.

IsInSubspace

      IsInSubspace (v,W)

  Ελέγχει αν ένα διάνυσμα είναι σε έναν υπόχωρο.

IsInvertible

      IsInvertible (n)

  Αν είναι ένας πίνακας (ή αριθμός) αντιστρέψιμος (ένας ακέραιος πίνακας είναι αντιστρέψιμος αν και μόνο αν είναι αντιστρέψιμος στους ακέραιους).

IsInvertibleField

      IsInvertibleField (n)

  Αν είναι ένας πίνακας (ή αριθμός) αντιστρέψιμος σε ένα πεδίο.

IsNormal

      IsNormal (M)

  Αν είναι ο `M` ένας κανονικός πίνακας. Δηλαδή, κάνει `M*M' == M'*M`.

  See Planetmath or Mathworld for more information.

IsPositiveDefinite

      IsPositiveDefinite (M)

  Αν είναι το `M` ένας ερμιτιανός θετικά ορισμένος πίνακας. Δηλαδή, αν το `HermitianProduct(M*v,v)` είναι πάντα αυστηρά θετικό για κάθε διάνυσμα `v`. Ο `M` πρέπει να είναι τετραγωνικός και ερμιτιανός για να είναι θετικά ορισμένος. Ο έλεγχος που εκτελείται είναι ότι κάθε βασικός υποπίνακας έχει μία μη αρνητική ορίζουσα. (Δείτε HermitianProduct)

  Σημειώστε ότι κάποιοι συγγραφείς (για παράδειγμα Mathworld) δεν απαιτούν ο `M` να είναι ερμιτιανός και τότε η συνθήκη είναι στο πραγματικό μέρος του εσωτερικού γινομένου, αλλά δεν παίρνουμε αυτήν την πλευρά. Αν θέλετε να εκτελέσετε αυτόν τον έλεγχο, ελέγξτε απλά το ερμητιανό μέρος του πίνακα `M` ως εξής: `IsPositiveDefinite(M+M')`.

  See Wikipedia, Planetmath, or Mathworld for more information.

IsPositiveSemidefinite

      IsPositiveSemidefinite (M)

  Αν είναι ο `M` ένας ερμιτιανός θετικά ημιορισμένος πίνακας. Δηλαδή, αν το `HermitianProduct(M*v,v)` είναι πάντα μη αρνητικό για κάθε διάνυσμα `v`. Το `M` πρέπει να είναι τετραγωνικός και ερμιτιανός για να είναι θετικά ημιορισμένος. Ο έλεγχος που εκτελείται είναι ότι κάθε βασικός υποπίνακας έχει μια μη αρνητική ορίζουσα. (Δείτε HermitianProduct)

  Σημειώστε ότι κάποιοι συγγραφείς δεν απαιτούν ο `M` να είναι ερμιτιανός και τότε η συνθήκη είναι στο πραγματικό μέρος του εσωτερικού γινομένου, αλλά δεν παίρνουμε αυτήν την πλευρά. Αν θέλετε να εκτελέσετε αυτόν τον έλεγχο, ελέγξτε απλά το ερμιτιανό μέρος του πίνακα `M` ως εξής: `IsPositiveSemidefinite(M+M')`.

  See Planetmath or Mathworld for more information.

IsSkewHermitian

      IsSkewHermitian (M)

  Αν είναι ο πίνακας λοξός ερμιτιανός. Δηάδή, αν είναι ο συζυγής ανάστροφος ίσος με τον αρνητικό του πίνακα.

  See Planetmath for more information.

IsUnitary

      IsUnitary (M)

  Είναι ένας πίνακας μοναδιαίος; Δηλαδή, αν είναι οι `M'*M` and `M*M'` ίσοι στην ταυτότητα.

  See Planetmath or Mathworld for more information.

JordanBlock

      JordanBlock (n,lambda)

  Παραλλαγές: `J`

  Δίνει το μπλοκ Jordan που αντιστοιχεί στην ιδιοτιμή `lambda` με πολλαπλότητα `n`.

  See Planetmath or Mathworld for more information.

Kernel

      Kernel (T)

  Δίνει τον πυρήνα (διάστημα κενού) ενός γραμμικού μετασχηματισμού.

  (Δείτε NullSpace)

KroneckerProduct

      KroneckerProduct (M, N)

  Παραλλαγές: `TensorProduct`

  Υπολογίζει το γινόμενο Κρόνεκερ (γινόμενο τανυστή σε τυπική βάση) δύο πινάκων.

  See Wikipedia, Planetmath or Mathworld for more information.

  Version 1.0.18 onwards.

LUDecomposition

      LUDecomposition (A, L, U)

  Get the LU decomposition of `A`, that is find a lower triangular matrix and upper triangular matrix whose product is `A`. Store the result in the `L` and `U`, which should be references. It returns `true` if successful. For example suppose that A is a square matrix, then after running:

      genius> LUDecomposition(A,&L,&U)

  You will have the lower matrix stored in a variable called `L` and the upper matrix in a variable called `U`.

  Αυτή είναι η ανάλυση LU ενός πίνακα γνωστό και ως Crout και/ή αναγωγή Σολεσκί. (ISBN 0-201-11577-8 pp.99-103) Ο άνω τριγωνικός πίνακας χαρακτηρίζει μια διαγώνιο τιμών 1 (ένα). Αυτή δεν είναι η μέθοδος του Doolittle που χαρακτηρίζει τη διαγώνιο του 1 στον κάτω πίνακα.

  Δεν έχουν όλοι οι πίνακες αναλύσεις LU, για παράδειγμα το `[0,1;1,0]` δεν έχει και αυτή η συνάρτηση επιστρέφει `false` σε αυτήν την περίπτωση και ορίζει `L` και`U` σε `null`.

  See Wikipedia, Planetmath or Mathworld for more information.

Minor

      Minor (M,i,j)

  Δίνει τον ελάσσονα `i`-`j` ενός πίνακα.

  See Planetmath for more information.

NonPivotColumns

      NonPivotColumns (M)

  Επιστρέφει τις στήλες που δεν είναι οδηγούσες στήλες ενός πίνακα.

Norm

      Norm (v,p...)

  Παραλλαγές: `norm`

  Δίνει τη νόρμα p (ή νόρμα 2 αν κανένα p δεν δίνεται) ενός διανύσματος.

NullSpace

      NullSpace (T)

  Δίνει τον μηδενικό χώρο ενός πίνακα. Δηλαδή, τον πυρήνα της γραμμικής απεικόνισης που απεικονίζει ο πίνακας. Αυτός επιστρέφεται ως ένας πίνακας του οποίου ο χώρος στηλών είναι ο μηδενικός χώρος του `T`.

  See Planetmath for more information.

Nullity

      Nullity (M)

  Παραλλαγές: `nullity`

  Δίνει την μηδενικότητα ενός πίνακα. Δηλαδή, επιστρέφει τη διάσταση του μηδενικού χώρου· η διάσταση του πυρήνα του `M`.

  See Planetmath for more information.

OrthogonalComplement

      OrthogonalComplement (M)

  Δίνει του ορθογωνίου συμπληρώματος του χώρου στήλης.

PivotColumns

      PivotColumns (M)

  Επιστρέφει τις οδηγούσες στήλες ενός πίνακα, δηλαδή τις στήλες που έχουν ένα αρχικό 1 σε ανηγμένη μορφή κατά γραμμές. Επίσης επιστρέφει τη γραμμή που αυτό συμβαίνει.

Projection

      Projection (v,W,B...)

  Προβολή του διανύσματος `v` στον υπόχωρο `W` ως προς το δοσμένο εσωτερικό γινόμενο από το `B`. Αν το `B` δεν δίνεται, τότε το τυπικό ερμιτιανό γινόμενο χρησιμοποιείται. Το `B` μπορεί ή να είναι γραμμικο-ημιγραμμική συνάρτηση των δύο ορισμάτων ή μπορεί να είναι ένας πίνακας που δίνει μια γραμμικο-ημιγραμμική μορφή.

QRDecomposition

      QRDecomposition (A, Q)

  Get the QR decomposition of a square matrix `A`, returns the upper triangular matrix `R` and sets `Q` to the orthogonal (unitary) matrix. `Q` should be a reference or `null` if you don't want any return. For example:

      genius> R = QRDecomposition(A,&Q)

  You will have the upper triangular matrix stored in a variable called `R` and the orthogonal (unitary) matrix stored in `Q`.

  See Wikipedia or Planetmath or Mathworld for more information.

RayleighQuotient

      RayleighQuotient (A,x)

  Επιστρέφει το πηλίκο Ρέιλι (λέγεται επίσης πηλίκο ή λόγος Ρέιλι-Ρίτζ) ενός πίνακα και ενός διανύσματος.

  See Planetmath for more information.

RayleighQuotientIteration

      RayleighQuotientIteration (A,x,epsilon,maxiter,vecref)

  Βρίσκει τις ιδιοτιμές του `A` χρησιμοποιώντας τη μέθοδο επανάληψης πηλίκου Ρέιλι. Το `x` είναι μια πρόβλεψη στο ιδιοδιάνυσμα και μπορεί να είναι τυχαία. Πρέπει να έχει μη μηδενικό φανταστικό μέρος, αν θα έχει κάποια πιθανότητα στην εύρεση μιγαδικών ιδιοτιμών. Ο κώδικας θα εκτελεστεί στις περισσότερες επαναλήψεις `maxiter` και θα επιστρέψει `null` αν δε μπορούμε να πάρουμε ένα σφάλμα του `epsilon`. Το `vecref` πρέπει να είναι `null` ή μια αναφορά σε μεταβλητή όπου το ιδιοδιάνυσμα πρέπει να αποθηκευτεί.

  See Planetmath for more information on Rayleigh quotient.

Rank

      Rank (M)

  Παραλλαγές: `rank`

  Δίνει την τάξη ενός πίνακα.

  See Planetmath for more information.

RosserMatrix

      RosserMatrix ()

  Επιστρέφει τον πίνακα Ρόσερ, που είναι ένα κλασικό συμμετρικό πρόβλημα δοκιμής ιδιοτιμής.

Rotation2D

      Rotation2D (angle)

  Aliases: `RotationMatrix`

  Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από το αρχικό στο R2.

Rotation3DX

      Rotation3DX (angle)

  Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από τον αρχικό στο R3 γύρω από τον άξονα x.

Rotation3DY

      Rotation3DY (angle)

  Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από τον αρχικό στο R3 γύρω από τον άξονα y.

Rotation3DZ

      Rotation3DZ (angle)

  Επιστρέφει τον πίνακα που αντιστοιχεί στην περιστροφή γύρω από τον αρχικό στο R3 γύρω από τον άξονα z.

RowSpace

      RowSpace (M)

  Δίνει έναν πίνακα βάσης για χώρο γραμμών ενός πίνακα.

SesquilinearForm

      SesquilinearForm (v,A,w)

  Υπολογίζει το (v,w) ως προς τη γραμμικο-ημιγραμμική μορφή που δίνεται από τον πίνακα Α.

SesquilinearFormFunction

      SesquilinearFormFunction (A)

  Επιστρέφει μια συνάρτηση που υπολογίζει δύο διανύσματα ως προς τη γραμμικο-ημιγραμμική μορφή που δίνεται από το Α.

SmithNormalFormField

      SmithNormalFormField (A)

  Επιστρέφει την κανονική μορφή Σμιθ ενός πίνακα για πεδία (θα τελειώνει με 1 στη διαγώνιο).

  See Wikipedia for more information.

SmithNormalFormInteger

      SmithNormalFormInteger (M)

  Return the Smith normal form for square integer matrices over integers.

  See Wikipedia for more information.

SolveLinearSystem

      SolveLinearSystem (M,V,args...)

  Επιλύει το γραμμικό σύστημα Mx=V, επιστρέφει τη λύση V αν υπάρχει μια μοναδική λύση, αλλιώς `null`. Δύο πρόσθετες παράμετροι αναφοράς μπορούν να χρησιμοποιηθούν προαιρετικά για να δώσουν τα ανηγμένα M και V.

ToeplitzMatrix

      ToeplitzMatrix (c, r...)

  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).

  See Wikipedia or Planetmath for more information.

Trace

      Trace (M)

  Παραλλαγές: `trace`

  Υπολογίζει το ίχνος ενός πίνακα. Δηλαδή, το άθροισμα των διαγώνιων στοιχείων.

  See Wikipedia or Planetmath for more information.

Transpose

      Transpose (M)

  Ανάστροφος ενός πίνακα. Αυτός είναι ο ίδιος με τον τελεστή `.'`.

  See Wikipedia or Planetmath for more information.

VandermondeMatrix

      VandermondeMatrix (v)

  Παραλλαγές: `vander`

  Επιστρέφει τον πίνακα Vandermonde.

  See Wikipedia for more information.

VectorAngle

      VectorAngle (v,w,B...)

  Η γωνία των δύο διανυσμάτων ως προς το εσωτερικό γινόμενο που δίνει ο `B`. Αν ο `B` δεν δίνεται, τότε το τυπικό ερμιτιανό γινόμενο χρησιμοποιείται. Ο `B` μπορεί είτε να είναι γραμμικο-ημιγραμμική συνάρτηση δύο ορισμάτων ή μπορεί να είναι ένας πίνακας που δίνει μια γραμμικο-ημιγραμμική μορφή.

VectorSpaceDirectSum

      VectorSpaceDirectSum (M,N)

  Το ευθύ άθροισμα των διαστημάτων διανύσματος Μ και Ν.

VectorSubspaceIntersection

      VectorSubspaceIntersection (M,N)

  Τομή των υποχώρων που δίνονται από Μ και Ν.

VectorSubspaceSum

      VectorSubspaceSum (M,N)

  Το άθροισμα των διανυσματικών χώρων M και N, δηλαδή {w | w=m+n, m στο M, n στο N}.

adj

      adj (m)

  Παραλλαγές: `Adjugate`

  Δίνει τον κλασικό συζυγή ενός πίνακα.

cref

      cref (M)

  Aliases: `CREF` `ColumnReducedEchelonForm`

  Υπολογίζει την ανηγμένη κλιμακωτή μορφή κατά στήλες.

det

      det (M)

  Παραλλαγές: `Determinant`

  Δίνει την ορίζουσα ενός πίνακα.

  See Wikipedia or Planetmath for more information.

ref

      ref (M)

  Aliases: `REF` `RowEchelonForm`

  Δίνει την μορφή κλιμακωτής γραμμής ενός πίνακα. Δηλαδή, εφαρμόζει την απαλοιφή Γκάους, αλλά όχι την πίσω πρόσθεση στο `M`. Οι οδηγούσες γραμμές διαιρούνται για να κάνουν όλους τους οδηγούς 1.

  See Wikipedia or Planetmath for more information.

rref

      rref (M)

  Aliases: `RREF` `ReducedRowEchelonForm`

  Δίνει τη ανηγμένη κλιμακωτή μορφή κατά γραμμές ενός πίνακα. Δηλαδή, εφαρμόζει την απαλοιφή Γκάους μαζί με την πίσω πρόσθεση στο `M`.

  See Wikipedia or Planetmath for more information.

### Συνδυαστική Ανάλυση

Catalan

      Catalan (n)

  Δίνει τον `n`στό αριθμό Catalan.

  See Planetmath for more information.

Combinations

      Combinations (k,n)

  Δίνει όλους τους συνδυασμούς των k αριθμών από 1 μέχρι n ως ένα διάνυσμα διανυσμάτων. (Δείτε επίσης NextCombination)

  See Wikipedia for more information.

DoubleFactorial

      DoubleFactorial (n)

  Διπλό παραγοντικό: `n(n-2)(n-4)...`

  See Planetmath for more information.

Factorial

      Factorial (n)

  Παραγοντικό: `n(n-1)(n-2)...`

  See Planetmath for more information.

FallingFactorial

      FallingFactorial (n,k)

  Μειούμενο παραγοντικό: `(n)_k = n(n-1)...(n-(k-1))`

  See Planetmath for more information.

Fibonacci

      Fibonacci (x)

  Παραλλαγές: `fib`

  Υπολογίζει τον `n`στό αριθμό Φιμπονάτσι. Δηλαδή, τον αριθμό που ορίζεται αναδρομικά από `Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)` και `Fibonacci(1) = Fibonacci(2) = 1`.

  See Wikipedia or Planetmath or Mathworld for more information.

FrobeniusNumber

      FrobeniusNumber (v,arg...)

  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.

  See Wikipedia or Mathworld for more information.

GaloisMatrix

      GaloisMatrix (combining_rule)

  Galois matrix given a linear combining rule (a_1*x_1+...+a_n*x_n=x_(n+1)).

GreedyAlgorithm

      GreedyAlgorithm (n,v)

  Βρίσκει το διάνυσμα `c` μη αρνητικών ακεραίων έτσι ώστε να παίρνει το εσωτερικό γινόμενο με το `v` να είναι ίσο με n. Αν δεν είναι δυνατό, επιστρέφει `null`. Το `v` πρέπει να δίνεται ταξινομημένο με αύξουσα διάταξη και πρέπει να αποτελείται από μη αρνητικούς ακέραιους.

  See Wikipedia or Mathworld for more information.

HarmonicNumber

      HarmonicNumber (n,r)

  Παραλλαγές: `HarmonicH`

  Harmonic Number, the `n`th harmonic number of order `r`. That is, it is the sum of `1/k^r` for `k` from 1 to n. Equivalent to `sum k = 1 to n do 1/k^r`.

  See Wikipedia for more information.

Hofstadter

      Hofstadter (n)

  Η συνάρτηση Χόφσταντερ q(n) ορίζεται από q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).

  See Wikipedia for more information. The sequence is A005185 in OEIS.

LinearRecursiveSequence

      LinearRecursiveSequence (seed_values,combining_rule,n)

  Υπολογίζει τη γραμμική κυκλική ακολουθία χρησιμοποιώντας το βηματισμό Γκαλουά.

Multinomial

      Multinomial (v,arg...)

  Υπολογίζει τους πολυωνυμικούς συντελεστές. Παίρνει ένα διάνυσμα από `k` μη αρνητικούς ακέραιους και υπολογίζει τον πολυωνυμικό συντελεστή. Αυτός αντιστοιχεί με τον συντελεστή στο ομογενές πολυώνυμο σε `k` μεταβλητές με τις αντίστοιχες δυνάμεις.

  The formula for `Multinomial(a,b,c)` can be written as:

      (a+b+c)! / (a!b!c!)

  In other words, if we would have only two elements, then `Multinomial(a,b)` is the same thing as `Binomial(a+b,a)` or `Binomial(a+b,b)`.

  See Wikipedia, Planetmath, or Mathworld for more information.

NextCombination

      NextCombination (v,n)

  Δίνει τον συνδυασμό που μπορεί να έρθει μετά το v στην κλήση στους συνδυασμούς της συνάρτησης, ο πρώτος συνδυασμός πρέπει να είναι `[1:k]`. Αυτή η συνάρτηση είναι χρήσιμη, αν έχετε πολλούς συνδυασμούς να περάσετε και δεν θέλετε να σπαταλήσετε μνήμη για να τους αποθηκεύσετε όλους.

  For example with Combinations you would normally write a loop like:

      for n in Combinations (4,6) do (
        SomeFunction (n)
      );

  But with NextCombination you would write something like:

      n:=[1:4];
      do (
        SomeFunction (n)
      ) while not IsNull(n:=NextCombination(n,6));

  See also Combinations.

  See Wikipedia for more information.

Pascal

      Pascal (i)

  Δίνει το τρίγωνο του Πασκάλ ως πίνακα. Αυτό θα επιστρέψει έναν `i`+1 επί `i`+1 κάτω διαγώνιο πίνακα που είναι το τρίγωνο Πασκάλ μετά από `i` επαναλήψεις.

  See Planetmath for more information.

Permutations

      Permutations (k,n)

  Δίνει όλες τις μεταθέσεις των `k` αριθμών από 1 μέχρι `n` ως ένα διάνυσμα διανυσμάτων.

  See Mathworld or Wikipedia for more information.

RisingFactorial

      RisingFactorial (n,k)

  Παραλλαγές: `Pochhammer`

  (Pochhammer) Rising factorial: (n)_k = n(n+1)...(n+(k-1)).

  See Planetmath for more information.

StirlingNumberFirst

      StirlingNumberFirst (n,m)

  Παραλλαγές: `StirlingS1`

  Ο αριθμός Στέρλινγκ πρώτου είδους.

  See Planetmath or Mathworld for more information.

StirlingNumberSecond

      StirlingNumberSecond (n,m)

  Παραλλαγές: `StirlingS2`

  Ο αριθμός Στέρλινγκ δεύτερου είδους.

  See Planetmath or Mathworld for more information.

Subfactorial

      Subfactorial (n)

  Subfactorial: n! times sum_{k=0}^n (-1)^k/k!.

Triangular

      Triangular (nth)

  Υπολογίζει τον `n`στό τριγωνικό αριθμό.

  See Planetmath for more information.

nCr

      nCr (n,r)

  Παραλλαγές: `Binomial`

  Υπολογίζει συνδυασμούς, δηλαδή, τον συντελεστή διωνύμου. Το `n` μπορεί να είναι οποιοσδήποτε πραγματικός αριθμός.

  See Planetmath for more information.

nPr

      nPr (n,r)

  Calculate the number of permutations of size `r` of numbers from 1 to `n`.

  See Mathworld or Wikipedia for more information.

### Μαθηματική Ανάλυση

CompositeSimpsonsRule

      CompositeSimpsonsRule (f,a,b,n)

  Ολοκλήρωση του f από τον σύνθετο κανόνα του Σίμπσον στο διάστημα [a,b] με n υποδιαστήματα με σφάλμα του max(f'''')*h^4*(b-a)/180, σημειώστε ότι το n πρέπει να είναι άρτιος.

  See Planetmath for more information.

CompositeSimpsonsRuleTolerance

      CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)

  Ολοκλήρωση της f από τον σύνθετο κανόνα Σίμπσον του διαστήματος [a,b] με τον αριθμό των υπολογιζόμενων βημάτων από το τέταρτο φράγμα παραγώγου και την επιθυμητή ανοχή.

  See Planetmath for more information.

Derivative

      Derivative (f,x0)

  Προσπαθεί να υπολογίσει την παράγωγου δοκιμάζοντας πρώτα συμβολικά και έπειτα αριθμητικά.

  See Wikipedia for more information.

EvenPeriodicExtension

      EvenPeriodicExtension (f,L)

  Επιστρέφει μια συνάρτηση που είναι άρτια περιοδική επέκταση της `f` με ημιπερίοδο `L`. Δηλαδή μια συνάρτηση που ορίστηκε στο διάστημα `[0,L]` επεκτάθηκε για να είναι άρτια στο `[-L,L]` και έπειτα επεκτάθηκε να είναι περιοδική με περίοδο `2*L`.

  Δείτε επίσης OddPeriodicExtension και PeriodicExtension.

  Version 1.0.7 onwards.

FourierSeriesFunction

      FourierSeriesFunction (a,b,L)

  Επιστρέφει μια συνάρτηση που είναι μια σειρά Φουριέ με τους συντελεστές δοσμένους από τα διανύσματα `a` (ημίτονα) and `b` (συνημίτονα). Σημειώστε ότι, το `a@(1)` είναι συντελεστής σταθεράς! Δηλαδή, το `a@(n)` αναφέρεται στον όρο `cos(x*(n-1)*pi/L)`, ενώ το `b@(n)` αναφέρεται στον όρο `sin(x*n*pi/L)`. Είτε το `a` είτε το `b` μπορεί να είναι `null`.

  See Wikipedia or Mathworld for more information.

InfiniteProduct

      InfiniteProduct (func,start,inc)

  Προσπαθεί να υπολογίσει ένα άπειρο γινόμενο για μια συνάρτηση απλής παραμέτρου.

InfiniteProduct2

      InfiniteProduct2 (func,arg,start,inc)

  Προσπαθεί να υπολογίσει ένα άπειρο γινόμενο για μια συνάρτηση διπλής παραμέτρου με func(arg,n).

InfiniteSum

      InfiniteSum (func,start,inc)

  Προσπαθεί να υπολογίσει ένα άπειρο άθροισμα για μια συνάρτηση απλής παραμέτρου.

InfiniteSum2

      InfiniteSum2 (func,arg,start,inc)

  Προσπαθεί να υπολογίσει ένα άπειρο άθροισμα για μια συνάρτηση διπλής παραμέτρου με func(arg,n).

IsContinuous

      IsContinuous (f,x0)

  Δοκιμάστε για να δείτε αν μια συνάρτηση πραγματικών τιμών είναι συνεχής στο x0 υπολογίζοντας το όριο εκεί.

IsDifferentiable

      IsDifferentiable (f,x0)

  Δοκιμή διαφορισιμότητας προσεγγίζοντας το αριστερό και δεξιό όριο και συγκρίνοντας.

LeftLimit

      LeftLimit (f,x0)

  Υπολογίζει το αριστερό όριο μιας συνάρτησης πραγματικών στο x0.

Limit

      Limit (f,x0)

  Υπολογίζει το όριο μιας συνάρτησης πραγματικών στο x0. Προσπαθεί να υπολογίσει και το αριστερό και το δεξιό όριο.

MidpointRule

      MidpointRule (f,a,b,n)

  Ολοκλήρωση με τον κανόνα μέσου.

NumericalDerivative

      NumericalDerivative (f,x0)

  Παραλλαγές: `NDerivative`

  Προσπάθεια υπολογισμού αριθμητικής παραγώγου.

  See Wikipedia for more information.

NumericalFourierSeriesCoefficients

      NumericalFourierSeriesCoefficients (f,L,N)

  Επιστρέφει ένα διάνυσμα διανυσμάτων `[a,b]` όπου το `a` είναι οι συντελεστές συνημιτόνου και το `b` είναι οι συντελεστές ημιτόνου της σειράς Φουριέ του `f` με ημιπερίοδο `L` (που ορίζεται στο `[-L,L]` και επεκτείνεται περιοδικά) με συντελεστές μέχρι τον `N`στό αρμονικό που υπολογίζεται αριθμητικά. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας το `NumericalIntegral`.

  See Wikipedia or Mathworld for more information.

  Version 1.0.7 onwards.

NumericalFourierSeriesFunction

      NumericalFourierSeriesFunction (f,L,N)

  Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ του `f` με ημιπερίοδο `L` (που ορίζεται στο `[-L,L]` και επεκτείνεται περιοδικά) με συντελεστές μέχρι τον `N`στό αρμονικό που υπολογίζεται αριθμητικά. Αυτή είναι η τριγωνομετρική πραγματική σειρά που αποτελείται από ημίτονα και συνημίτονα. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας το `NumericalIntegral`.

  See Wikipedia or Mathworld for more information.

  Version 1.0.7 onwards.

NumericalFourierCosineSeriesCoefficients

      NumericalFourierCosineSeriesCoefficients (f,L,N)

  Επιστρέφει ένα διάνυσμα συντελεστών της σειράς Φουριέ συνημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, η `f` ορισμένη στο `[0,L]` παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους συνημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`. Σημειώστε ότι το `a@(1)` είναι ο συντελεστής σταθεράς! Δηλαδή, `a@(n)` αναφέρεται στον όρο `cos(x*(n-1)*pi/L)`.

  See Wikipedia or Mathworld for more information.

  Version 1.0.7 onwards.

NumericalFourierCosineSeriesFunction

      NumericalFourierCosineSeriesFunction (f,L,N)

  Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ συνημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, παίρνουμε την `f` ορισμένη στο `[0,L]`, παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους συνημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`.

  See Wikipedia or Mathworld for more information.

  Version 1.0.7 onwards.

NumericalFourierSineSeriesCoefficients

      NumericalFourierSineSeriesCoefficients (f,L,N)

  Επιστρέφει ένα διάνυσμα συντελεστών της σειράς Φουριέ ημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, η `f` ορισμένη στο `[0,L]` παίρνει την περιττή περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους ημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`.

  See Wikipedia or Mathworld for more information.

  Version 1.0.7 onwards.

NumericalFourierSineSeriesFunction

      NumericalFourierSineSeriesFunction (f,L,N)

  Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ ημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, παίρνουμε τη `f` ορισμένη στο `[0,L]`, παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους ημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`.

  See Wikipedia or Mathworld for more information.

  Version 1.0.7 onwards.

NumericalIntegral

      NumericalIntegral (f,a,b)

  Ολοκλήρωση με τον κανόνα που ορίστηκε στο NumericalIntegralFunction του f από το a μέχρι το b χρησιμοποιώντας βήματα NumericalIntegralSteps.

NumericalLeftDerivative

      NumericalLeftDerivative (f,x0)

  Προσπαθεί να υπολογίσει την αριθμητική αριστερή παράγωγο.

NumericalLimitAtInfinity

      NumericalLimitAtInfinity (_f,step_fun,tolerance,successive_for_success,N)

  Προσπαθεί να υπολογίσει το όριο του f(step_fun(i)) καθώς το i πηγαίνει από 1 έως N.

NumericalRightDerivative

      NumericalRightDerivative (f,x0)

  Προσπαθεί να υπολογίσει την αριθμητική δεξιά παράγωγο.

OddPeriodicExtension

      OddPeriodicExtension (f,L)

  Επιστρέφει μια συνάρτηση που είναι περιττή περιοδική επέκταση της `f` με ημιπερίοδο `L`. Δηλαδή μια συνάρτηση που ορίστηκε στο διάστημα `[0,L]` επεκτάθηκε για να είναι περιττή στο `[-L,L]` και έπειτα επεκτάθηκε να είναι περιοδική με περίοδο `2*L`.

  Δείτε επίσης EvenPeriodicExtension και PeriodicExtension.

  Version 1.0.7 onwards.

OneSidedFivePointFormula

      OneSidedFivePointFormula (f,x0,h)

  Υπολογίζει τη μονόπλευρη παράγωγο χρησιμοποιώντας τον τύπο πέντε σημείων.

OneSidedThreePointFormula

      OneSidedThreePointFormula (f,x0,h)

  Υπολογίζει τη μονόπλευρη παράγωγο χρησιμοποιώντας τον τύπο τριών σημείων.

PeriodicExtension

      PeriodicExtension (f,a,b)

  Επιστρέφει μια συνάρτηση που είναι η περιοδική επέκταση της `f` ορισμένη στο διάστημα `[a,b]` και έχει περίοδο `b-a`.

  Δείτε επίσης OddPeriodicExtension και EvenPeriodicExtension.

  Version 1.0.7 onwards.

RightLimit

      RightLimit (f,x0)

  Υπολογίζει το δεξιό όριο μιας συνάρτησης πραγματικών στο x0.

TwoSidedFivePointFormula

      TwoSidedFivePointFormula (f,x0,h)

  Υπολογίζει τη δίπλευρη παράγωγο χρησιμοποιώντας τον τύπο πέντε σημείων.

TwoSidedThreePointFormula

      TwoSidedThreePointFormula (f,x0,h)

  Υπολογίζει τη δίπλευρη παράγωγο χρησιμοποιώντας τον τύπο τριών σημείων.

### Συναρτήσεις

Argument

      Argument (z)

  Aliases: `Arg` `arg`

  όρισμα (γωνία) μιγαδικού αριθμού.

BesselJ0

      BesselJ0 (x)

  Η συνάρτηση Μπεσέλ πρώτου είδους τάξης 0. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

BesselJ1

      BesselJ1 (x)

  Η συνάρτηση Μπεσέλ πρώτου είδους τάξης 1. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

BesselJn

      BesselJn (n,x)

  Η συνάρτηση Μπεσέλ πρώτου είδους τάξης `n`. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

BesselY0

      BesselY0 (x)

  Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης 0. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

BesselY1

      BesselY1 (x)

  Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης 1. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

BesselYn

      BesselYn (n,x)

  Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης `n`. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

DirichletKernel

      DirichletKernel (n,t)

  Dirichlet kernel of order `n`.

DiscreteDelta

      DiscreteDelta (v)

  Returns 1 if and only if all elements are zero.

ErrorFunction

      ErrorFunction (x)

  Παραλλαγές: `erf`

  Η συνάρτηση σφάλματος, 2/sqrt(pi) * int_0^x e^(-t^2) dt.

  See Wikipedia or Planetmath for more information.

FejerKernel

      FejerKernel (n,t)

  Ο πυρήνας Fejer τάξης `n` που υπολογίστηκε στο `t`

  See Planetmath for more information.

GammaFunction

      GammaFunction (x)

  Παραλλαγές: `Gamma`

  Η συνάρτηση γάμα. Προς το παρόν υλοποιείται μόνο για πραγματικούς.

  See Planetmath or Wikipedia for more information.

KroneckerDelta

      KroneckerDelta (v)

  Επιστρέφει 1 αν και μόνο αν όλα τα στοιχεία είναι ίσα.

LambertW

      LambertW (x)

  Ο βασικός κλάδος της συνάρτησης W Λαμπέρ υπολογίζεται μόνο για πραγματικές τιμές μεγαλύτερες ή ίσες από `-1/e`. Δηλαδή, `LambertW` είναι το αντίστροφο της παράστασης `x*e^x`. Ακόμα για πραγματικούς `x` αυτή η παράσταση δεν είναι ένα προς ένα και συνεπώς έχει δύο κλάδους στο `[-1/e,0)`. Δείτε `LambertWm1` για τον άλλο πραγματικό κλάδο.

  See Wikipedia for more information.

  Version 1.0.18 onwards.

LambertWm1

      LambertWm1 (x)

  Ο κλάδος μείον-ένα της συνάρτησης W Λαμπέρ υπολογίζεται μόνο για πραγματικές τιμές μεγαλύτερες ή ίσες με `-1/e` και μικρότερες από 0. Δηλαδή, το `LambertWm1` είναι ο δεύτερος κλάδος του αντίστροφου `x*e^x`. Δείτε `LambertW` για τον βασικό κλάδο.

  See Wikipedia for more information.

MinimizeFunction

      MinimizeFunction (func,x,incr)

  Βρίσκει την πρώτη τιμή όπου f(x)=0.

MoebiusDiskMapping

      MoebiusDiskMapping (a,z)

  Μετασχηματισμός Μέμπιους του δίσκου στον εαυτόν του, απεικονίζοντας το a στο 0.

  See Wikipedia or Planetmath for more information.

MoebiusMapping

      MoebiusMapping (z,z2,z3,z4)

  Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας z2,z3,z4 στο 1,0, και άπειρο αντίστοιχα.

  See Wikipedia or Planetmath for more information.

MoebiusMappingInftyToInfty

      MoebiusMappingInftyToInfty (z,z2,z3)

  Απεικόνιση Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο άπειρο και z2,z3 στο 1 και 0 αντίστοιχα.

  See Wikipedia or Planetmath for more information.

MoebiusMappingInftyToOne

      MoebiusMappingInftyToOne (z,z3,z4)

  Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο 1 και z3,z4 στο 0 και άπειρο αντίστοιχα.

  See Wikipedia or Planetmath for more information.

MoebiusMappingInftyToZero

      MoebiusMappingInftyToZero (z,z2,z4)

  Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο 0 και z2,z4 στο 1 και άπειρο αντίστοιχα.

  See Wikipedia or Planetmath for more information.

PoissonKernel

      PoissonKernel (r,sigma)

  Πυρήνας Πουασόν στο D(0,1) (μη κανονικοποιημένο στο 1, δηλαδή το ολοκλήρωμα αυτού είναι 2pi).

PoissonKernelRadius

      PoissonKernelRadius (r,sigma)

  Πυρήνας Πουασόν στο D(0,R) (μη κανονικοποιημένο στο 1).

RiemannZeta

      RiemannZeta (x)

  Παραλλαγές: `zeta`

  Η συνάρτηση ζήτα Ρίμαν. Προς το παρόν υλοποιείται μόνο για πραγματικούς.

  See Planetmath or Wikipedia for more information.

UnitStep

      UnitStep (x)

  Το μοναδιαίο βήμα συνάρτησης είναι 0 για x<0, 1 αλλιώς. Αυτό είναι το ολοκλήρωμα της συνάρτησης δέλτα Ντιράκ. Λέγεται επίσης συνάρτηση Χέβισαϊντ.

  See Wikipedia for more information.

cis

      cis (x)

  Η συνάρτηση `cis`, δηλαδή είναι η ίδια με τη `cos(x)+1i*sin(x)`

deg2rad

      deg2rad (x)

  Μετατρέπει βαθμούς σε ακτίνια.

rad2deg

      rad2deg (x)

  Μετατρέπει ακτίνια σε μοίρες.

sinc

      sinc (x)

  Υπολογίζει τη μη κανονικοποιημένη συνάρτηση sinc, δηλαδή την `sin(x)/x`. Αν θέλετε την κανονικοποιημένη συνάρτηση καλέστε `sinc(pi*x)`.

  See Wikipedia for more information.

  Version 1.0.16 onwards.

### Επίλυση εξίσωσης

CubicFormula

      CubicFormula (p)

  Υπολογίζει τις ρίζες ενός κυβικού (βαθμού 3) πολυωνύμου χρησιμοποιώντας τον κυβικό τύπο. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή `4*x^3 + 2*x + 1` αντιστοιχεί στο διάνυσμα `[1,2,0,4]`. Επιστρέφει ένα διάνυσμα στήλης των τριών λύσεων. Η πρώτη λύση είναι πάντα η πραγματική καθώς μια κυβική έχει πάντα μια πραγματική λύση.

  See Planetmath, Mathworld, or Wikipedia for more information.

EulersMethod

      EulersMethod (f,x0,y0,x1,n)

  Use classical Euler's method to numerically solve y'=f(x,y) for initial `x0`, `y0` going to `x1` with `n` increments, returns `y` at `x1`. Unless you explicitly want to use Euler's method, you should really think about using RungeKutta for solving ODE.

  Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το `y` να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το `y0` μπορεί να είναι ένα διάνυσμα, οπότε το `f` πρέπει να πάρει έναν αριθμό `x` και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

  See Mathworld or Wikipedia for more information.

EulersMethodFull

      EulersMethodFull (f,x0,y0,x1,n)

  Use classical Euler's method to numerically solve y'=f(x,y) for initial `x0`, `y0` going to `x1` with `n` increments, returns an `n+1` by 2 matrix with the `x` and `y` values. Unless you explicitly want to use Euler's method, you should really think about using RungeKuttaFull for solving ODE. Suitable for plugging into LinePlotDrawLine or LinePlotDrawPoints.

  Example:

      genius> LinePlotClear();
      genius> line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);
      genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");

  Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το `y` να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το `y0` μπορεί να είναι ένα διάνυσμα, οπότε το `f` πρέπει να πάρει έναν αριθμό `x` και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

  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 ExpandMatrix, and pick out the right columns. Example:

      genius> LinePlotClear();
      genius> lines = EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);
      genius> lines = ExpandMatrix(lines);
      genius> firstline = lines@(,[1,2]);
      genius> secondline = lines@(,[1,3]);
      genius> LinePlotWindow = [0,10,-2,2];
      genius> LinePlotDrawLine(firstline,"color","blue","legend","First");
      genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");

  See Mathworld or Wikipedia for more information.

  Version 1.0.10 onwards.

FindRootBisection

      FindRootBisection (f,a,b,TOL,N)

  Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο διχοτόμησης. Τα `a` και `b` είναι το αρχικό διάστημα πρόβλεψης, τα `f(a)` και `f(b)` πρέπει να έχουν αντίθετα πρόσημα. Το `TOL` είναι η επιθυμητή ανοχή και `N` είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα `[success,value,iteration]`, όπου `success` είναι μια λογική τιμή που δείχνει επιτυχία, `value` είναι η τελευταία υπολογισμένη τιμή και `iteration` είναι ο αριθμός των επαναλήψεων που έγιναν.

FindRootFalsePosition

      FindRootFalsePosition (f,a,b,TOL,N)

  Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο ψευδούς θέσης. Τα `a` και `b` είναι το αρχικό διάστημα πρόβλεψης, τα `f(a)` και `f(b)` πρέπει να έχουν αντίθετα πρόσημα. Το `TOL` είναι η επιθυμητή ανοχή και `N` είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα `[success,value,iteration]`, όπου `success` είναι μια λογική τιμή που δείχνει επιτυχία, `value` είναι η τελευταία υπολογισμένη τιμή και `iteration` είναι ο αριθμός των επαναλήψεων που έγιναν.

FindRootMullersMethod

      FindRootMullersMethod (f,x0,x1,x2,TOL,N)

  Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο Μίλερ. Το `TOL` είναι η επιθυμητή ανοχή και `N` είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα `[success,value,iteration]`, όπου `success` είναι μια λογική τιμή που δείχνει επιτυχία, `value` είναι η τελευταία υπολογισμένη τιμή και `iteration` είναι ο αριθμός των επαναλήψεων που έγιναν.

FindRootSecant

      FindRootSecant (f,a,b,TOL,N)

  Βρίσκει τις ρίζες μιας συνάρτησης χρησιμοποιώντας τη μέθοδο τέμνουσας. Τα `a` και `b` είναι το αρχικό διάστημα πρόβλεψης, τα `f(a)` και `f(b)` πρέπει να έχουν αντίθετα πρόσημα. Το `TOL` είναι η επιθυμητή ανοχή και `N` είναι το όριο στον αριθμό των επαναλήψεων εκτέλεσης, 0 σημαίνει χωρίς όριο. Η συνάρτηση επιστρέφει ένα διάνυσμα `[success,value,iteration]`, όπου `success` είναι μια λογική τιμή που δείχνει επιτυχία, `value` είναι η τελευταία υπολογισμένη τιμή και `iteration` είναι ο αριθμός των επαναλήψεων που έγιναν.

HalleysMethod

      HalleysMethod (f,df,ddf,guess,epsilon,maxn)

  Find zeros using Halley's method. `f` is the function, `df` is the derivative of `f`, and `ddf` is the second derivative of `f`. `guess` is the initial guess. The function returns after two successive values are within `epsilon` of each other, or after `maxn` tries, in which case the function returns `null` indicating failure.

  Δείτε επίσης `NewtonsMethod` και `SymbolicDerivative`.

  Example to find the square root of 10:

      genius> HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)

  See Wikipedia for more information.

  Version 1.0.18 onwards.

NewtonsMethod

      NewtonsMethod (f,df,guess,epsilon,maxn)

  Βρίσκει μηδενικά χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το `f` είναι η συνάρτηση και `df` είναι η παράγωγος του `f`. Η `guess` είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο `epsilon` μεταξύ τους, ή μετά από `maxn` προσπάθειες, οπότε η συνάρτηση επιστρέφει `null` που δείχνει αποτυχία.

  Δείτε επίσης `NewtonsMethodPoly` and `SymbolicDerivative`.

  Example to find the square root of 10:

      genius> NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)

  See Wikipedia for more information.

  Version 1.0.18 onwards.

PolynomialRoots

      PolynomialRoots (p)

  Υπολογίζει ρίζες ενός πολυωνύμου (βαθμών από 1 μέχρι 4) χρησιμοποιώντας τους τύπους για τέτοια πολυώνυμα. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το `4*x^3 + 2*x + 1` αντιστοιχεί στο διάνυσμα `[1,2,0,4]`. Επιστρέφει ένα διάνυσμα στήλης των λύσεων.

  Η συνάρτηση καλεί QuadraticFormula, CubicFormula και QuarticFormula.

QuadraticFormula

      QuadraticFormula (p)

  Υπολογίζει ρίζες ενός δευτεροβάθμιου πολυωνύμου (βαθμού 2) χρησιμοποιώντας τον τύπο δευτεροβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το `3*x^2 + 2*x + 1` αντιστοιχεί στο διάνυσμα `[1,2,3]`. Επιστρέφει ένα διάνυσμα στήλης των δύο λύσεων.

  See Planetmath, or Mathworld, or Wikipedia for more information.

QuarticFormula

      QuarticFormula (p)

  Υπολογίζει ρίζες ενός τεταρτοβάθμιου πολυωνύμου (βαθμού 4) χρησιμοποιώντας τον τύπο τεταρτοβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το `5*x^4 + 2*x + 1` αντιστοιχεί στο διάνυσμα `[1,2,0,0,5]`. Επιστρέφει ένα διάνυσμα στήλης τεσσάρων λύσεων.

  See Planetmath, Mathworld, or Wikipedia for more information.

RungeKutta

      RungeKutta (f,x0,y0,x1,n)

  Χρησιμοποιεί την κλασική μη αναπροσαρμοστική μέθοδο τέταρτης τάξης Runge-Kutta για αριθμητική επίλυση της y'=f(x,y) με αρχικά `x0`, `y0` πηγαίνει στο `x1` με βήματα `n`, επιστρέφει `y` στο `x1`.

  Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το `y` να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το `y0` μπορεί να είναι ένα διάνυσμα, οπότε το `f` πρέπει να πάρει έναν αριθμό `x` και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

  See Mathworld or Wikipedia for more information.

RungeKuttaFull

      RungeKuttaFull (f,x0,y0,x1,n)

  Use classical non-adaptive fourth order Runge-Kutta method to numerically solve y'=f(x,y) for initial `x0`, `y0` going to `x1` with `n` increments, returns an `n+1` by 2 matrix with the `x` and `y` values. Suitable for plugging into LinePlotDrawLine or LinePlotDrawPoints.

  Example:

      genius> LinePlotClear();
      genius> line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);
      genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");

  Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το `y` να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το `y0` μπορεί να είναι ένα διάνυσμα, οπότε το `f` πρέπει να πάρει έναν αριθμό `x` και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

  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 ExpandMatrix, and pick out the right columns. Example:

      genius> LinePlotClear();
      genius> lines = RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);
      genius> lines = ExpandMatrix(lines);
      genius> firstline = lines@(,[1,2]);
      genius> secondline = lines@(,[1,3]);
      genius> LinePlotWindow = [0,10,-2,2];
      genius> LinePlotDrawLine(firstline,"color","blue","legend","First");
      genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");

  See Mathworld or Wikipedia for more information.

  Version 1.0.10 onwards.

### Στατιστική

Average

      Average (m)

  Aliases: `average` `Mean` `mean`

  Calculate average (the arithmetic mean) of an entire matrix.

  See Wikipedia or Mathworld for more information.

GaussDistribution

      GaussDistribution (x,sigma)

  Ολοκλήρωμα της GaussFunction από 0 μέχρι `x` (περιοχή κάτω από την κανονική καμπύλη).

  See Wikipedia or Mathworld for more information.

GaussFunction

      GaussFunction (x,sigma)

  Η συνάρτηση κανονικοποιημένης κατανομής Γκάους (η κανονική καμπύλη).

  See Wikipedia or Mathworld for more information.

Median

      Median (m)

  Παραλλαγές: `median`

  Υπολογίζει τον μέσο ενός ολόκληρου πίνακα.

  See Wikipedia or Mathworld for more information.

PopulationStandardDeviation

      PopulationStandardDeviation (m)

  Παραλλαγές: `stdevp`

  Υπολογίζει την τυπική απόκλιση πληθυσμού ενός ολόκληρου πίνακα.

RowAverage

      RowAverage (m)

  Παραλλαγές: `RowMean`

  Calculate average of each row in a matrix. That is, compute the arithmetic mean.

  See Wikipedia or Mathworld for more information.

RowMedian

      RowMedian (m)

  Υπολογίζει τον διάμεσο κάθε γραμμής σε έναν πίνακα και επιστρέφει ένα διάνυσμα στήλης με τους διάμεσους.

  See Wikipedia or Mathworld for more information.

RowPopulationStandardDeviation

      RowPopulationStandardDeviation (m)

  Παραλλαγές: `rowstdevp`

  Υπολογίζει τις τυπικές αποκλίσεις πληθυσμού γραμμών ενός πίνακα και επιστρέφει ένα κάθετο διάνυσμα.

RowStandardDeviation

      RowStandardDeviation (m)

  Παραλλαγές: `rowstdev`

  Υπολογίζει τις τυπικές αποκλίσεις γραμμών ενός πίνακα και επιστρέφει ένα κάθετο διάνυσμα.

StandardDeviation

      StandardDeviation (m)

  Παραλλαγές: `stdev`

  Υπολογίζει την τυπική απόκλιση ενός ολόκληρου πίνακα.

### Πολυώνυμα

AddPoly

      AddPoly (p1,p2)

  Προσθήκη δύο πολυωνύμων (διανύσματα).

DividePoly

      DividePoly (p,q,&r)

  Διαιρεί δύο πολυώνυμα (ως διανύσματα) χρησιμοποιώντας τη μακριά διαίρεση. Επιστρέφει το πηλίκο των δύο πολυωνύμων. Το προαιρετικό όρισμα `r` χρησιμοποιείται για να επιστρέψει το υπόλοιπο. Το υπόλοιπο θα έχει μικρότερο βαθμό από το `q`.

  See Planetmath for more information.

IsPoly

      IsPoly (p)

  Ελέγχει αν ένα διάνυσμα μπορεί να χρησιμοποιηθεί ως πολυώνυμο.

MultiplyPoly

      MultiplyPoly (p1,p2)

  Πολλαπλασιάζει δύο πολυώνυμα (ως διανύσματα).

NewtonsMethodPoly

      NewtonsMethodPoly (poly,guess,epsilon,maxn)

  Βρίσκει μια ρίζα ενός πολυωνύμου χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το `poly` είναι ένα πολυώνυμο ως διάνυσμα και `guess` είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο `epsilon` μεταξύ τους, ή μετά από `maxn` προσπάθειες, οπότε η συνάρτηση επιστρέφει `null` που δείχνει αποτυχία.

  Δείτε επίσης `NewtonsMethod`.

  Example to find the square root of 10:

      genius> NewtonsMethodPoly([-10,0,1],3,10^-10,100)

  See Wikipedia for more information.

Poly2ndDerivative

      Poly2ndDerivative (p)

  Δίνει τη δεύτερη πολυωνυμική παράγωγο (ως διάνυσμα).

PolyDerivative

      PolyDerivative (p)

  Δίνει την πολυωνυμική παράγωγο (ως διάνυσμα).

PolyToFunction

      PolyToFunction (p)

  Δημιουργεί συνάρτηση από ένα πολυώνυμο (ως διάνυσμα).

PolyToString

      PolyToString (p,var...)

  Δημιουργεί συμβολοσειρά από ένα πολυώνυμο (ως διάνυσμα).

SubtractPoly

      SubtractPoly (p1,p2)

  Αφαιρεί δύο πολυώνυμα (ως διανύσματα).

TrimPoly

      TrimPoly (p)

  Περικόπτει μηδενικά από ένα πολυώνυμο (ως διάνυσμα).

### Θεωρία συνόλων

Intersection

      Intersection (X,Y)

  Επιστρέφει τη θεωρητική τομή συνόλων των Χ και Υ (Χ και Υ είναι διανύσματα που προσποιούνται ότι είναι σύνολα).

IsIn

      IsIn (x,X)

  Επιστρέφει `true` αν το στοιχείο x είναι στο σύνολο Χ (όπου Χ είναι ένα διάνυσμα που προσποιείται ότι είναι σύνολο).

IsSubset

      IsSubset (X, Y)

  Επιστρέφει `true` αν το Χ είναι ένα υποσύνολο του Υ (Χ και Υ είναι διανύσματα που προσποιούνται ότι είναι σύνολα).

MakeSet

      MakeSet (X)

  Επιστρέφει ένα διάνυσμα όπου κάθε στοιχείο του Χ εμφανίζεται μόνο μια φορά.

SetMinus

      SetMinus (X,Y)

  Επιστρέφει τη θεωρητική διαφορά συνόλων των Χ-Υ (Χ και Υ είναι διανύσματα που προσποιούνται ότι είναι σύνολα).

Union

      Union (X,Y)

  Επιστρέφει ένα μια θεωρητική ένωση συνόλου των Χ και Υ (Χ και Υ είναι διανύσματα που προσποιούνται ότι είναι σύνολα).

### Αντιμεταθετική άλγεβρα

MacaulayBound

      MacaulayBound (c,d)

  Για μια συνάρτηση Χίλμπερτ που είναι c για βαθμό d, με δεδομένο το πέρας Μακόλεϊ για τη συνάρτηση Χίλμπερτ βαθμού d+1 (Ο τελεστής c^<d> από την απόδειξη Γκριν).

  Version 1.0.15 onwards.

MacaulayLowerOperator

      MacaulayLowerOperator (c,d)

  Ο τελεστής c_<d> από την απόδειξη Γκριν του θεωρήματος Μακόλεϊ.

  Version 1.0.15 onwards.

MacaulayRep

      MacaulayRep (c,d)

  Επιστρέφει την dστή αναπαράσταση Μακόλεϊ ενός θετικού ακεραίου c.

  Version 1.0.15 onwards.

### Διάφορα

ASCIIToString

      ASCIIToString (vec)

  Convert a vector of ASCII values to a string. See also `StringToASCII`.

  Example:

      genius> ASCIIToString([97,98,99])
      = "abc"

  See Wikipedia for more information.

AlphabetToString

      AlphabetToString (vec,alphabet)

  Convert a vector of 0-based alphabet values (positions in the alphabet string) to a string. A `null` vector results in an empty string. See also `StringToAlphabet`.

  Examples:

      genius> AlphabetToString([1,2,3,0,0],"abcd")
      = "bcdaa"
      genius> AlphabetToString(null,"abcd")
      = ""

StringToASCII

      StringToASCII (str)

  Convert a string to a (row) vector of ASCII values. See also `ASCIIToString`.

  Example:

      genius> StringToASCII("abc")
      = [97, 98, 99]

  See Wikipedia for more information.

StringToAlphabet

      StringToAlphabet (str,alphabet)

  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 `null`. See also `AlphabetToString`.

  Examples:

      genius> StringToAlphabet("cca","abcd")
      = [2, 2, 0]
      genius> StringToAlphabet("ccag","abcd")
      = [2, 2, 0, -1]

### Συμβολικές πράξεις

SymbolicDerivative

      SymbolicDerivative (f)

  Προσπαθεί για συμβολική παραγώγιση της συνάρτησης f, όπου f είναι μια συνάρτηση μιας μεταβλητής.

  Examples:

      genius> SymbolicDerivative(sin)
      = (`(x)=cos(x))
      genius> SymbolicDerivative(`(x)=7*x^2)
      = (`(x)=(7*(2*x)))

  See Wikipedia for more information.

SymbolicDerivativeTry

      SymbolicDerivativeTry (f)

  Προσπαθεί να παραγωγίσει συμβολικά τη συνάρτηση f, όπου f είναι μια συνάρτηση μιας μεταβλητής, επιστρέφει `null` αν είναι ανεπιτυχής, αλλά είναι σιωπηλό. (Δείτε `SymbolicDerivative`)

  See Wikipedia for more information.

SymbolicNthDerivative

      SymbolicNthDerivative (f,n)

  Προσπαθεί να παραγωγίσει συμβολικά μια συνάρτηση n φορές. (Δείτε `SymbolicDerivative`)

  See Wikipedia for more information.

SymbolicNthDerivativeTry

      SymbolicNthDerivativeTry (f,n)

  Προσπαθεί να παραγωγίσει συμβολικά μια συνάρτηση n φορές σιωπηρά και επιστρέφει `null` στην αποτυχία (Δείτε `SymbolicNthDerivative`)

  See Wikipedia for more information.

SymbolicTaylorApproximationFunction

      SymbolicTaylorApproximationFunction (f,x0,n)

  Προσπαθεί να κατασκευάσει τη συνάρτηση προσέγγισης Τέιλορ γύρω από το x0 στον nστο βαθμό. (Δείτε `SymbolicDerivative`)

### Γραφική παράσταση

ExportPlot

      ExportPlot (file,type)

      ExportPlot (file)

  Εξάγει τα περιεχόμενα του παραθύρου γραφικής παράστασης σε αρχείο. Ο τύπος είναι μια συμβολοσειρά που καθορίζει τον τύπο αρχείου για χρήση, "png", "eps", ή "ps". Αν ο τύπος δεν ορίζεται, τότε παίρνεται η επέκταση, οπότε η επέκταση πρέπει να είναι ".png", ".eps", ή ".ps".

  Σημειώστε ότι τα αρχεία αντικαθίστανται χωρίς ερώτηση.

  Σε πετυχημένη εξαγωγή, επιστρέφεται αληθές. Αλλιώς, εκτυπώνεται σφάλμα και εγείρεται εξαίρεση.

  Examples:

      genius> ExportPlot("file.png")
      genius> ExportPlot("/directory/file","eps")

  Version 1.0.16 onwards.

LinePlot

      LinePlot (func1,func2,func3,...)

      LinePlot (func1,func2,func3,x1,x2)

      LinePlot (func1,func2,func3,x1,x2,y1,y2)

      LinePlot (func1,func2,func3,[x1,x2])

      LinePlot (func1,func2,func3,[x1,x2,y1,y2])

  Σχεδιάστε μια συνάρτηση (ή αρκετές συναρτήσεις) με μια γραμμή. Πρώτα (μέχρι 10) ορίσματα είναι συναρτήσεις, έπειτα μπορείτε προαιρετικά να ορίσετε τα όρια του παραθύρου σχεδίασης ως `x1`, `x2`, `y1`, `y2`. Αν τα όρια δεν ορίζονται, τότε εφαρμόζονται τα τρέχοντα ορισμένα όρια (Δείτε `LinePlotWindow`) Αν τα όρια y δεν ορίζονται, τότε οι συναρτήσεις υπολογίζονται και έπειτα χρησιμοποιούνται τα μέγιστα και ελάχιστα.

  Η παράμετρος `LinePlotDrawLegends` ελέγχει τη σχεδίαση του υπομνήματος.

  Examples:

      genius> LinePlot(sin,cos)
      genius> LinePlot(`(x)=x^2,-1,1,0,1)

LinePlotClear

      LinePlotClear ()

  Εμφανίζει το παράθυρο σχεδίασης γραμμής και καθαρίζει τις συναρτήσεις και οποιαδήποτε άλλη γραμμή σχεδιάστηκε.

LinePlotCParametric

      LinePlotCParametric (func,...)

      LinePlotCParametric (func,t1,t2,tinc)

      LinePlotCParametric (func,t1,t2,tinc,x1,x2,y1,y2)

  Σχεδιάζει μια παραμετρική μιγαδική συνάρτηση με μια γραμμή. Πρώτα έρχεται η συνάρτηση που επιστρέφει `x+iy`, έπειτα προαιρετικά τα όρια `t` ως `t1,t2,tinc`, στη συνέχεια προαιρετικά τα όρια ως `x1,x2,y1,y2`.

  Αν τα όρια δεν καθορίζονται, τότε εφαρμόζονται τα τρέχοντα όρια (Δείτε `LinePlotWindow`). Αν δίνεται η συμβολοσειρά "fit" για τα όρια x και y, τότε τα όρια είναι η μέγιστη έκταση του γραφήματος.

  Η παράμετρος `LinePlotDrawLegends` ελέγχει τη σχεδίαση του υπομνήματος.

LinePlotDrawLine

      LinePlotDrawLine (x1,y1,x2,y2,...)

      LinePlotDrawLine (v,...)

  Draw a line from `x1`,`y1` to `x2`,`y2`. `x1`,`y1`, `x2`,`y2` can be replaced by an `n` by 2 matrix for a longer polyline. Alternatively the vector `v` may be a column vector of complex numbers, that is an `n` by 1 matrix and each complex number is then considered a point in the plane.

  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 `"color"`, `"thickness"`, `"window"`, `"arrow"`, or `"legend"`, 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.)

  If the line is to be treated as a filled polygon, filled with the given color, you can specify the argument `"filled"`. Since version 1.0.22 onwards.

  The color should be either a string indicating the common English word for the color that GTK will recognize such as `"red"`, `"blue"`, `"yellow"`, etc... Alternatively the color can be specified in RGB format as `"#rgb"`, `"#rrggbb"`, or `"#rrrrggggbbbb"`, 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. `[1.0,0.5,0.1]`.

  Το παράθυρο πρέπει να δίνεται ως συνήθως σαν `[x1,x2,y1,y2]`, ή εναλλακτικά μπορεί να δοθεί ως μια συμβολοσειρά `"fit"` οπότε, η περιοχή x θα οριστεί ακριβώς και η περιοχή y θα οριστεί με περιγράμματα πέντε τοις εκατό γύρω από τη γραμμή.

  Η προδιαγραφή του βέλους πρέπει να είναι `"origin"`, `"end"`, `"both"`, ή `"none"`.

  Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.

  Examples:

      genius> LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)
      genius> LinePlotDrawLine([0,0;1,-1;-1,-1])
      genius> LinePlotDrawLine([0,0;1,1],"arrow","end")
      genius> LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The Solution")
      genius> 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])
      genius> LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")

  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.

  Specifying `v` as a column vector of complex numbers is implemented from version 1.0.22 and onwards.

LinePlotDrawPoints

      LinePlotDrawPoints (x,y,...)

      LinePlotDrawPoints (v,...)

  Draw a point at `x`,`y`. The input can be an `n` by 2 matrix for `n` different points. This function has essentially the same input as LinePlotDrawLine. Alternatively the vector `v` may be a column vector of complex numbers, that is an `n` by 1 matrix and each complex number is then considered a point in the plane.

  Extra parameters can be added to specify color, thickness, the plotting window, or legend. You can do this by adding an argument string `"color"`, `"thickness"`, `"window"`, or `"legend"`, and after it specify the color, the thickness, the window as 4-vector, or the legend.

  The color should be either a string indicating the common English word for the color that GTK will recognize such as `"red"`, `"blue"`, `"yellow"`, etc... Alternatively the color can be specified in RGB format as `"#rgb"`, `"#rrggbb"`, or `"#rrrrggggbbbb"`, 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.

  Το παράθυρο πρέπει να δίνεται ως συνήθως σαν `[x1,x2,y1,y2]`, ή εναλλακτικά μπορεί να δοθεί ως μια συμβολοσειρά `"fit"` οπότε, η περιοχή x θα οριστεί ακριβώς και η περιοχή y θα οριστεί με περιγράμματα πέντε τοις εκατό γύρω από τη γραμμή.

  Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.

  Examples:

      genius> LinePlotDrawPoints(0,0,"color","blue","thickness",3)
      genius> LinePlotDrawPoints([0,0;1,-1;-1,-1])
      genius> LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","The Solution")
      genius> LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)
      genius> LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","The 7th roots of unity")

  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 `0:6` to make it into a column vector.

  Available from version 1.0.18 onwards. Specifying `v` as a column vector of complex numbers is implemented from version 1.0.22 and onwards.

LinePlotMouseLocation

      LinePlotMouseLocation ()

  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 `null`. In this case you should run `LinePlot` or `LinePlotClear` to put the graphing window into the line plot mode. See also `LinePlotWaitForClick`.

LinePlotParametric

      LinePlotParametric (xfunc,yfunc,...)

      LinePlotParametric (xfunc,yfunc,t1,t2,tinc)

      LinePlotParametric (xfunc,yfunc,t1,t2,tinc,x1,x2,y1,y2)

      LinePlotParametric (xfunc,yfunc,t1,t2,tinc,[x1,x2,y1,y2])

      LinePlotParametric (xfunc,yfunc,t1,t2,tinc,"fit")

  Σχεδιάζει μια παραμετρική συνάρτηση με μια γραμμή. Πρώτα έρχονται οι συναρτήσεις για `x` και `y`, έπειτα προαιρετικά τα όρια του `t` ως `t1,t2,tinc`, έπειτα προαιρετικά τα όρια ως `x1,x2,y1,y2`.

  Αν δεν ορίζονται τα όρια x και y, τότε εφαρμόζονται τα τρέχοντα όρια (Δείτε `LinePlotWindow`). Αν δίνεται η συμβολοσειρά "fit" για τα όρια x και y, τότε τα όρια είναι η μέγιστη έκταση του γραφήματος.

  Η παράμετρος `LinePlotDrawLegends` ελέγχει τη σχεδίαση του υπομνήματος.

LinePlotWaitForClick

      LinePlotWaitForClick ()

  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 `null`. If the window is not in line plot mode, it is put in it and shown if not shown. See also `LinePlotMouseLocation`.

PlotCanvasFreeze

      PlotCanvasFreeze ()

  Προσωρινό πάγωμα σχεδίασης του καμβά. Χρήσιμο αν χρειάζεστε να σχεδιάσετε μια ομάδα στοιχείων και θέλετε να καθυστερήσετε τη σχεδίαση όλων για να αποφύγετε τρεμόσβησμα σε μια κίνηση. Αφού έχουν σχεδιαστεί όλα θα πρέπει να καλέσετε `PlotCanvasThaw`.

  Ο καμβάς ξεπαγώνει πάντα μετά το τέλος οποιασδήποτε εκτέλεσης, έτσι δεν θα παραμείνει ποτέ παγωμένος. Τη στιγμή που μια νέα γραμμή εντολών εμφανίζεται για παράδειγμα, ο καμβάς σχεδίασης ξεπαγώνει αυτόματα. Σημειώστε επίσης ότι οι κλήσεις για πάγωμα και ξεπάγωμα μπορούν με ασφάλεια να εντεθούν.

  Version 1.0.18 onwards.

PlotCanvasThaw

      PlotCanvasThaw ()

  Thaw the plot canvas frozen by `PlotCanvasFreeze` and redraw the canvas immediately. The canvas is also always thawed after end of execution of any program.

  Version 1.0.18 onwards.

PlotWindowPresent

      PlotWindowPresent ()

  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.

  Version 1.0.19 onwards.

SlopefieldClearSolutions

      SlopefieldClearSolutions ()

  Καθαρίζει τις σχεδιασμένες λύσεις από τη συνάρτηση `SlopefieldDrawSolution`.

SlopefieldDrawSolution

      SlopefieldDrawSolution (x, y, dx)

  Όταν μια γραφική παράσταση πεδίου κλίσης είναι ενεργή, σχεδιάστε μια λύση με την καθορισμένη αρχική συνθήκη. Η τυπική μέθοδος Ρούνγκε-Κούτα χρησιμοποιείται με αύξηση `dx`. Οι λύσεις μένουν στο γράφημα μέχρι να εμφανιστεί μια διαφορετική γραφική παράσταση ή μέχρι να καλέσετε `SlopefieldClearSolutions`. Μπορείτε επίσης να χρησιμοποιήσετε τη γραφική διεπαφή για να σχεδιάσετε λύσεις και να ορίσετε αρχικές συνθήκες με το ποντίκι.

SlopefieldPlot

      SlopefieldPlot (func)

      SlopefieldPlot (func,x1,x2,y1,y2)

  Σχεδιάστε ένα πεδίο κλίσης. Η συνάρτηση `func` πρέπει να πάρει δύο πραγματικούς αριθμούς `x` και `y`, ή έναν απλό μιγαδικό αριθμό. Προαιρετικά, μπορείτε να ορίσετε τα όρια του παραθύρου σχεδίασης ως `x1`, `x2`, `y1`, `y2`. Αν τα όρια δεν καθορίζονται, τότε τα τρέχοντα ορισμένα όρια εφαρμόζονται (Δείτε `LinePlotWindow`).

  Η παράμετρος `LinePlotDrawLegends` ελέγχει τη σχεδίαση του υπομνήματος.

  Examples:

      genius> SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)

SurfacePlot

      SurfacePlot (func)

      SurfacePlot (func,x1,x2,y1,y2,z1,z2)

      SurfacePlot (func,x1,x2,y1,y2)

      SurfacePlot (func,[x1,x2,y1,y2,z1,z2])

      SurfacePlot (func,[x1,x2,y1,y2])

  Σχεδιάστε μια συνάρτηση επιφάνειας που παίρνει είτε δύο ορίσματα ή έναν μιγαδικό αριθμό. Πρώτα έρχεται η συνάρτηση, έπειτα προαιρετικά τα όρια ως `x1`, `x2`, `y1`, `y2`, `z1`, `z2`. Αν τα όρια δεν καθορίζονται, τότε εφαρμόζονται τα τρέχοντα ορισμένα όρια (Δείτε `SurfacePlotWindow`). Η Genius μπορεί να σχεδιάσει μόνο μια μοναδική συνάρτηση επιφάνειας τη φορά.

  Αν τα όρια Z δεν καθορίζονται, τότε χρησιμοποιούνται τα μέγιστα και ελάχιστα της συνάρτησης.

  Examples:

      genius> SurfacePlot(|sin|,-1,1,-1,1,0,1.5)
      genius> SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)
      genius> SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)

SurfacePlotClear

      SurfacePlotClear ()

  Show the surface plot window and clear out functions and any other lines that were drawn.

  Available in version 1.0.19 and onwards.

SurfacePlotData

      SurfacePlotData (data)

      SurfacePlotData (data,label)

      SurfacePlotData (data,x1,x2,y1,y2,z1,z2)

      SurfacePlotData (data,label,x1,x2,y1,y2,z1,z2)

      SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])

      SurfacePlotData (data,label,[x1,x2,y1,y2,z1,z2])

  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.

  Προαιρετικά μπορούμε να δώσουμε την ετικέτα και επίσης τα όρια. Αν δεν δίνονται τα όρια, υπολογίζονται από τα δεδομένα, το `SurfacePlotWindow` δεν χρησιμοποιείται, αν θέλετε να το χρησιμοποιήσετε, περάστε το ρητά. Αν δεν δίνεται η ετικέτα, τότε χρησιμοποιείται η κενή ετικέτα.

  Examples:

      genius> SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])
      genius> SurfacePlotData(data,"My data")
      genius> SurfacePlotData(data,-1,1,-1,1,0,10)
      genius> SurfacePlotData(data,SurfacePlotWindow)

  Here's an example of how to plot in polar coordinates, in particular how to plot the function `-r^2 * theta`:

      genius> 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]];
      genius> SurfacePlotData(d)

  Version 1.0.16 onwards.

SurfacePlotDataGrid

      SurfacePlotDataGrid (data,[x1,x2,y1,y2])

      SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])

      SurfacePlotDataGrid (data,[x1,x2,y1,y2],label)

      SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],label)

  Σχεδιάστε μια επιφάνεια από κανονικά δεδομένα ορθογωνίου. Τα δεδομένα δίνεται σε έναν πίνακα n επί m, όπου οι γραμμές είναι η συντεταγμένη x και οι στήλες είναι η συντεταγμένη y. Η συντεταγμένη x διαιρείται σε ίσα n-1 υποδιαστήματα και η συντεταγμένη y διαιρείται σε ίσα m-1 υποδιαστήματα. Τα όρια `x1` και `x2` δίνουν το διάστημα στον άξονα x που χρησιμοποιούμε, ενώ τα όρια `y1` και `y2` δίνουν το διάστημα στον άξονα y που χρησιμοποιούμε. Αν τα όρια `z1` και `z2` δεν δίνονται, υπολογίζονται από τα δεδομένα (για να είναι οι ακραίες τιμές από τα δεδομένα).

  Προαιρετικά, μπορούμε να δώσουμε την ετικέτα. Αν η ετικέτα δεν δίνεται, τότε χρησιμοποιείται η κενή ετικέτα.

  Examples:

      genius> SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])
      genius> SurfacePlotDataGrid(data,[-1,1,-1,1],"My data")
      genius> 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;
      genius> SurfacePlotDataGrid(d,[-1,1,0,1],"half a saddle")

  Version 1.0.16 onwards.

SurfacePlotDrawLine

      SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)

      SurfacePlotDrawLine (v,...)

  Draw a line from `x1`,`y1`,`z1` to `x2`,`y2`,`z2`. `x1`,`y1`,`z1`, `x2`,`y2`,`z2` can be replaced by an `n` by 3 matrix for a longer polyline.

  Extra parameters can be added to specify line color, thickness, the plotting window, or legend. You can do this by adding an argument string `"color"`, `"thickness"`, `"window"`, or `"legend"`, and after it specify the color, the thickness, the window as 6-vector, or the legend.

  The color should be either a string indicating the common English word for the color that GTK will recognize such as `"red"`, `"blue"`, `"yellow"`, etc... Alternatively the color can be specified in RGB format as `"#rgb"`, `"#rrggbb"`, or `"#rrrrggggbbbb"`, 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. `[1.0,0.5,0.1]`.

  The window should be given as usual as `[x1,x2,y1,y2,z1,z2]`, or alternatively can be given as a string `"fit"` in which case, the x range will be set precisely and the y range will be set with five percent borders around the line.

  Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.

  Examples:

      genius> SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)
      genius> SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])

  Available from version 1.0.19 onwards.

SurfacePlotDrawPoints

      SurfacePlotDrawPoints (x,y,z,...)

      SurfacePlotDrawPoints (v,...)

  Draw a point at `x`,`y`,`z`. The input can be an `n` by 3 matrix for `n` different points. This function has essentially the same input as SurfacePlotDrawLine.

  Extra parameters can be added to specify line color, thickness, the plotting window, or legend. You can do this by adding an argument string `"color"`, `"thickness"`, `"window"`, or `"legend"`, and after it specify the color, the thickness, the window as 6-vector, or the legend.

  The color should be either a string indicating the common English word for the color that GTK will recognize such as `"red"`, `"blue"`, `"yellow"`, etc... Alternatively the color can be specified in RGB format as `"#rgb"`, `"#rrggbb"`, or `"#rrrrggggbbbb"`, 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.

  The window should be given as usual as `[x1,x2,y1,y2,z1,z2]`, or alternatively can be given as a string `"fit"` in which case, the x range will be set precisely and the y range will be set with five percent borders around the line.

  Στο τέλος, το υπόμνημα πρέπει να είναι μια συμβολοσειρά που μπορεί να χρησιμοποιηθεί ως υπόμνημα στο γράφημα. Δηλαδή, αν εκτυπωθούν τα υπομνήματα.

  Examples:

      genius> SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)
      genius> SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])

  Available from version 1.0.19 onwards.

VectorfieldClearSolutions

      VectorfieldClearSolutions ()

  Καθαρίζει τις σχεδιασμένες λύσεις από τη συνάρτηση `VectorfieldDrawSolution`.

  Version 1.0.6 onwards.

VectorfieldDrawSolution

      VectorfieldDrawSolution (x, y, dt, tlen)

  Όταν ένα πεδίο διανύσματος είναι ενεργό, σχεδιάστε μια λύση με την καθορισμένη αρχική συνθήκη. Η τυπική μέθοδος Ρούνγκε-Κούτα χρησιμοποιείται με αύξηση `dt` για ένα διάστημα μήκους `tlen`.. Οι λύσεις μένουν στο γράφημα μέχρι να εμφανιστεί μια διαφορετική γραφική παράσταση ή μέχρι να καλέσετε `VectorfieldClearSolutions`. Μπορείτε επίσης να χρησιμοποιήσετε τη γραφική διεπαφή για να σχεδιάσετε λύσεις και να ορίσετε αρχικές συνθήκες με το ποντίκι.

  Version 1.0.6 onwards.

VectorfieldPlot

      VectorfieldPlot (funcx, funcy)

      VectorfieldPlot (funcx, funcy, x1, x2, y1, y2)

  Σχεδιάστε ένα δισδιάστατο διανυσματικό πεδίο. Η συνάρτηση `funcx` πρέπει να είναι η dx/dt του διανυσματικού πεδίου και η συνάρτηση `funcy` πρέπει να είναι η dy/dt του διανυσματικού πεδίου. Οι συναρτήσεις πρέπει να παίρνουν δύο πραγματικούς αριθμούς `x` και `y`, ή έναν μοναδικό μιγαδικό αριθμό. Όταν η παράμετρος `VectorfieldNormalized` είναι `true`, τότε το μέγεθος των διανυσμάτων είναι κανονικοποιημένο. Δηλαδή, εμφανίζεται μόνο η κατεύθυνση και όχι το μέγεθος.

  Προαιρετικά, μπορείτε να ορίσετε τα όρια του παραθύρου σχεδίασης ως `x1`, `x2`, `y1`, `y2`. Αν δεν καθορίζονται τα όρια, τότε εφαρμόζονται τα τρέχοντα όρια (Δείτε `LinePlotWindow`).

  Η παράμετρος `LinePlotDrawLegends` ελέγχει τη σχεδίαση του υπομνήματος.

  Examples:

      genius> VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1, -1, 1)

## Παράδειγμα προγραμμάτων στην GEL

Here is a function that calculates factorials:

    function f(x) = if x <= 1 then 1 else (f(x-1)*x)

With indentation it becomes:

    function f(x) = (
      if x <= 1 then
        1
      else
        (f(x-1)*x)
    )

This is a direct port of the factorial function from the bc manpage. The syntax seems similar to bc, but different in that in GEL, the last expression is the one that is returned. Using the `return` function instead, it would be:

    function f(x) = (
      if (x <= 1) then return (1);
      return (f(x-1) * x)
    )

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.

    function f(x) = prod k=1 to x do k

Here is a larger example, this basically redefines the internal `ref` function to calculate the row echelon form of a matrix. The function `ref` is built in and much faster, but this example demonstrates some of the more complex features of GEL.

    # 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
    )

## Ρυθμίσεις

To configure Genius Mathematics Tool, choose Settings Preferences. 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.

### Αλλαγή ρυθμίσεων με την GEL

Πολλές από τις ρυθμίσεις στη Genius είναι απλά καθολικές μεταβλητές και μπορούν να υπολογιστούν και να εκχωρηθούν με τον ίδιο τρόπο όπως οι κανονικές μεταβλητές. Δείτε για τον υπολογισμό και την εκχώρηση σε μεταβλητές και για έναν κατάλογο ρυθμίσεων που μπορούν να τροποποιηθούν με αυτόν τον τρόπο.

As an example, you can set the maximum number of digits in a result to 12 by typing:

    MaxDigits = 12

### Έξοδος

Maximum digits to output

  Ο μέγιστος αριθμός ψηφίων σε ένα αποτέλεσμα (`MaxDigits`)

Results as floats

  Αν τα αποτελέσματα πρέπει να εμφανίζονται πάντα ως αριθμοί κινητής υποδιαστολής (`ResultsAsFloats`)

Floats in scientific notation

  Αν οι αριθμοί κινητής υποδιαστολής πρέπει να είναι σε επιστημονική σημειογραφία (`ScientificNotation`)

Always print full expressions

  Αν πρέπει να εμφανίζονται πλήρεις παραστάσεις για μη αριθμητικές τιμές επιστροφής (μεγαλύτερες από μια γραμμή) (`FullExpressions`)

Use mixed fractions

  Αν τα κλάσματα πρέπει να εμφανίζονται ως μικτά κλάσματα όπως "1 1/3" αντί για "4/3". (`MixedFractions`)

Display 0.0 when floating point number is less than 10^-x (0=never chop)

  How to chop output. But only when other numbers nearby are large. See the documentation of the parameter `OutputChopExponent`.

Only chop numbers when another number is greater than 10^-x

  When to chop output. This is set by the parameter `OutputChopWhenExponent`. See the documentation of the parameter `OutputChopExponent`.

Remember output settings across sessions

  Αν θα πρέπει οι ρυθμίσεις εξόδου στο Επιλογές εξόδου αριθμού/παράστασης να απομνημονεύονται για την επόμενη συνεδρία. Δεν εφαρμόζεται στο πλαίσιο Επιλογές εξόδου σφάλματος/πληροφοριών.

  Αν δεν σημειωθεί, είτε η προεπιλογή είτε οποιεσδήποτε προηγουμένως αποθηκευμένες ρυθμίσεις χρησιμοποιούνται κάθε φορά που η Genius ξεκινά. Σημειώστε ότι οι ρυθμίσεις αποθηκεύονται στο τέλος της συνεδρίας, έτσι αν θέλετε να αλλάξετε τις προεπιλογές, σημειώστε αυτό το πλαίσιο, επανεκκινήστε Εργαλείο μαθηματικών Genius και έπειτα αποεπιλέξτε το ξανά.

Display errors in a dialog

  Αν οριστεί τα σφάλματα θα εμφανίζονται σε έναν ξεχωριστό διάλογο, αν δεν οριστεί τα σφάλματα θα τυπωθούν στην κονσόλα.

Display information messages in a dialog

  Αν οριστεί τα μηνύματα πληροφοριών θα εμφανίζονται σε έναν ξεχωριστό διάλογο, αν δεν οριστεί τα μηνύματα πληροφοριών θα τυπωθούν στην κονσόλα.

Maximum errors to display

  Ο μέγιστος αριθμός σφαλμάτων που θα επιστρέφεται με έναν υπολογισμό (`MaxErrors`). Αν το ορίσετε σε 0, τότε όλα τα σφάλματα επιστρέφονται πάντα. Συνήθως, αν κάποιος βρόχος προκαλεί πολλά σφάλματα, τότε είναι απίθανο ότι θα μπορέσετε να πάρετε νόημα από περισσότερους εκτός από λίγους από αυτούς, έτσι βλέποντας έναν μεγάλο κατάλογο σφαλμάτων δεν είναι συνήθως χρήσιμο.

Πέρα από αυτές τις προτιμήσεις, υπάρχουν κάποιες προτιμήσεις που μπορούν να αλλαχθούν μόνο ορίζοντας τες στην κονσόλα χώρου εργασίας. Για άλλες που μπορούν να επηρεάσουν την έξοδο δείτε .

`IntegerOutputBase`

  Η βάση που θα χρησιμοποιηθεί για την έξοδο ακεραίων

`OutputStyle`

  A string, can be `"normal"`, `"latex"`, `"mathml"` or `"troff"` 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 Genius Mathematics Tool. The other styles are for typesetting in LaTeX, MathML (XML), or in Troff.

### Ακρίβεια

Floating point precision

  Η ακρίβεια κινητής υποδιαστολής σε δυαδικά ψηφία (`FloatPrecision`). Σημειώστε ότι αλλάζοντας αυτό επηρεάζει μόνο τις νέες υπολογιζόμενες ποσότητες. Οι παλιές τιμές που αποθηκεύονται σε μεταβλητές είναι προφανώς ακόμα στην παλιά ακρίβεια και αν θέλετε να τις έχετε πιο ακριβείς, θα πρέπει να τις επαναϋπολογίσετε. Οι εξαιρέσεις σε αυτό είναι οι σταθερές συστήματος όπως `pi` ή `e`.

Remember precision setting across sessions

  Αν θα πρέπει η ακρίβεια να οριστεί για να απομνημονεύεται για την επόμενη συνεδρία. Αν δεν σημειωθεί, είτε η προεπιλεγμένη είτε οποιαδήποτε προηγουμένως αποθηκευμένη ρύθμιση θα χρησιμοποιηθεί, κάθε φορά που ξεκινά η Genius. Σημειώστε ότι οι ρυθμίσεις αποθηκεύονται στο τέλος της συνεδρίας και έτσι αν θέλετε να αλλάξετε την προεπιλογή σημειώστε αυτό το πλαίσιο, επανεκκινήστε τη genius και έπειτα αποεπιλέξτε την πάλι.

### Τερματικό

Το τερματικό αναφέρεται στην κονσόλα στην περιοχή εργασίας.

Scrollback lines

  Γραμμές οπισθοκύλισης στο τερματικό.

Font

  Η γραμματοσειρά που θα χρησιμοποιηθεί στο τερματικό.

Black on white

  Αν θα χρησιμοποιήσετε μαύρο σε λευκό στο τερματικό.

Blinking cursor

  Αν ο δρομέας στο τερματικό πρέπει να αναβοσβήνει, όταν το τερματικό εστιάζει. Αυτό μπορεί μερικές φορές να είναι ενοχλητικό και δημιουργεί αδρανή κυκλοφορία αν χρησιμοποιείτε τη Genius απομακρυσμένα.

### Μνήμη

Maximum number of nodes to allocate

  Εσωτερικά, όλα τα δεδομένα τίθενται σε μικρούς κόμβους στη μνήμη. Αυτό δίνει ένα όριο στον μέγιστο αριθμό κόμβων για κατανομή στους υπολογισμούς. Αυτό το όριο αποφεύγει το πρόβλημα έλλειψης μνήμης, αν κάνετε κάτι κατά λάθος, που χρησιμοποιεί υπερβολική μνήμη, όπως η αναδρομή χωρίς τέλος. Αυτό μπορεί να καθυστερήσει τον υπολογιστή σας και να τον δυσκολέψει ακόμα και να διακόψει το πρόγραμμα.

  Μόλις φτάσει το όριο, το Εργαλείο μαθηματικών Genius ζητά αν θέλετε να διακόψετε τον υπολογισμό ή αν θέλετε να συνεχίσετε. Αν συνεχίσετε, δεν εφαρμόζεται όριο και είναι πιθανό στον υπολογιστής σας να λείψει μνήμη. Το όριο θα εφαρμοστεί ξανά την επόμενη φορά που θα εκτελέσετε ένα πρόγραμμα ή μια παράσταση στην κονσόλα ανεξάρτητα από το πώς απαντήσατε στην ερώτηση.

  Ορίζοντας το όριο σε μηδέν σημαίνει ότι δεν υπάρχει όριο στο πόση μνήμη χρησιμοποιεί η Genius.

## Περί του Εργαλείο μαθηματικών Genius

Το Εργαλείο μαθηματικών Genius γράφτηκε από τον Jiří (George) Lebl (jirka@5z.com). Το ιστορικό του Εργαλείο μαθηματικών Genius πηγαίνει πίσω στο τέλος του 1997. Ήταν το πρώτο πρόγραμμα αριθμομηχανής για GNOME, αλλά έπειτα επεκτάθηκε πέρα από μια απλή επιτραπέζια αριθμομηχανή. Για να βρείτε περισσότερες πληροφορίες για το Εργαλείο μαθηματικών Genius, παρακαλούμε επισκεφτείτε την ιστοσελίδα Genius.

Για να αναφέρετε ένα σφάλμα ή να κάνετε μια πρόταση σχετικά με αυτήν την εφαρμογή ή αυτό το εγχειρίδιο, στείλτε ένα μήνυμα σε μένα (τον συγγραφέα) ή στείλτε στην ταχυδρομική λίστα (δείτε την ιστοσελίδα).

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 link, or in the file COPYING included with the source code of this program.

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.