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

## Εισαγωγή

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

Το εργαλείο μαθηματικών Genius έρχεται σε δύο εκδόσεις. Μια έκδοση είναι η γραφική έκδοση GNOME, που χαρακτηρίζει μια διεπαφή τεχνοτροπίας IDE και την ικανότητα να σχεδιάσει συναρτήσεις μιας ή δύο μεταβλητών. Η έκδοση γραμμής εντολών δεν απαιτεί το GNOME, αλλά φυσικά δεν υλοποιεί οποιοδήποτε γνώρισμα απαιτεί τη γραφική διεπαφή.

Parts of this manual describe the graphical version of the calculator, but the language is of course the same. The command line only version lacks the graphing capabilities and all other capabilities that require the graphical user interface.

Generally, when some feature of the language (function, operator, etc...) is new is some version past 1.0.5, it is mentioned, but below 1.0.5 you would have to look at the NEWS file.

## Ξεκίνημα

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

Μπορείτε να ξεκινήσετε το Εργαλείο μαθηματικών Genius με τους ακόλουθους τρόπους:

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

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

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

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

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

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

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

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

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

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

Shows Εργαλείο μαθηματικών Genius main window. Contains titlebar, menubar, toolbar and working area. Menubar contains Αρχείο, Επεξεργασία, Αριθμομηχανή, Examples, Programs, Ρυθμίσεις, and Βοήθεια 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 some either 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 ως αριθμομηχανή μόνο, πληκτρολογήστε απλά την παράστασή σας εδώ και η επιστρεφόμενη τιμή θα υπολογιστεί.

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

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

or

    genius> 62734 + 812634 + 77^4 mod 5

ή

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

ή

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

(η τελευταία είναι το άθροισμα αρμονικών από 1 έως 70)

Για να πάρετε έναν κατάλογο συναρτήσεων και εντολών, πληκτρολογήστε:

    genius> help

Αν θέλετε να πάρετε περισσότερη βοήθεια για μια συγκεκριμένη συνάρτηση, πληκτρολογήστε:

    genius> help FunctionName

Για να προβάλετε αυτό το εγχειρίδιο, πληκτρολογήστε:

    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.

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-gel για να βρείτε πώς να εισάγετε εκφράσεις που καταλαβαίνει το Genius.

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

Για να παραστήσετε με γραφικές παραστάσεις συναρτήσεις πραγματικών τιμών μιας μεταβλητής, ανοίξτε το παράθυρο Δημιουργία γραφικής παράστασης. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση `LinePlot` στη γραμμή εντολών (δείτε την τεκμηρίωσή της).

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

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

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

Πληκτρολογήστε τις εκφράσεις με `x` ως ανεξάρτητη μεταβλητή στα πλαίσια κειμένου. Εναλλακτικά μπορείτε να δώσετε τα ονόματα των συναρτήσεων όπως `cos` αντί να πρέπει να πληκτρολογήσετε `cos(x)`. Μπορείτε να παραστήσετε μέχρι δέκα συναρτήσεις. Αν κάνετε λάθος και το Genius δεν μπορεί να αναλύσει την είσοδο, θα το υποδείξει με ένα εικονίδιο προειδοποίησης στα δεξιά του πλαισίου εισόδου του κειμένου, όπου προέκυψε το σφάλμα, και θα σας δώσει έναν διάλογο σφάλματος. Μπορείτε να αλλάξετε τις περιοχές των εξαρτημένων και ανεξάρτητων μεταβλητών στο κάτω τμήμα του διαλόγου. Η `y` (εξαρτημένη) περιοχή μπορεί να οριστεί αυτόματα ενεργοποιώντας το πλαίσιο ελέγχου Προσαρμογή εξαρτημένου άξονα. Τα ονόματα των μεταβλητών μπορούν επίσης να αλλαχθούν. Πατώντας το κουμπί Γραφική παράσταση παράγει το γράφημα που εμφανίζεται στο lineplot2-fig.

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.

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

Το γράφημα που παράχθηκε.

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

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

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

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

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

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

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

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

Παραγόμενη παραμετρική γραφική παράσταση

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

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

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

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

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

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

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

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

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

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

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

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

Μέτρο της μιγαδικής συνάρτησης συνημιτόνου.

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 θεωρεί επίσης πίνακες ως τιμές. Οι τιμές μπορεί να χρησιμοποιηθούν σε υπολογισμούς, εκχωρημένες σε μεταβλητές και να επιστραφούν από τις συναρτήσεις, μεταξύ άλλων χρήσεων.

#### Αριθμοί

Οι ακέραιοι είναι ο πρώτος τύπος αριθμού στην GEL. Οι ακέραιοι γράφονται με τον κανονικό τρόπο.

    1234

Δεκαεξαδικοί και οκταδικοί αριθμοί μπορούν να γραφτούν χρησιμοποιώντας σημειογραφία C. Για παράδειγμα:

    0x123ABC
    01234

Ή μπορείτε να πληκτρολογήσετε αριθμούς σε μια ελεύθερη βάση χρησιμοποιώντας `<base>\<number>`. Ψηφία μεγαλύτερα από 10 χρησιμοποιούν γράμματα με παρόμοιο τρόπο με τα δεκαεξαδικά. Για παράδειγμα, ένας αριθμός με βάση 23 πρέπει να γραφτεί:

    23\1234ABCD

Ο δεύτερος τύπος αριθμού GEL είναι ρητοί. Οι ρητοί εκφράζονται διαιρώντας απλά δύο ακέραιους. Έτσι, κάποιος μπορεί να γράψει:

    3/4

για να πάρει τρία τέταρτα. Οι ρητοί δέχονται επίσης μικτή σημειογραφία κλάσματος. Έτσι, για να πάρετε ένα και τρία δέκατα μπορείτε να γράψετε:

    1 3/10

Ο επόμενος τύπος αν είναι αριθμός είναι κινητής υποδιαστολής. Αυτοί καταχωρίζονται με παρόμοιο τρόπο με τη σημειογραφία C. Μπορείτε να χρησιμοποιήσετε `E`, `e` ή `@` ως τον οριοθέτη εκθέτη. Σημειώστε ότι η χρήση οριοθέτη εκθέτη δίνει έναν αριθμό κινητής υποδιαστολής ακόμα κι αν δεν υπάρχει δεκαδικό σημείο στον αριθμό. Παραδείγματα:

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

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

Ο τελευταίος τύπος του αριθμού στο gel είναι οι μιγαδικοί αριθμοί. Μπορείτε να εισάγετε έναν μιγαδικό αριθμό ως άθροισμα πραγματικών και φανταστικών τμημάτων. Για να προσθέσετε ένα φανταστικό τμήμα, προσαρτήστε ένα `i`. Εδώ είναι παραδείγματα εισαγωγής μιγαδικών αριθμών:

    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 ως `ψευδή` και οποιοδήποτε άλλο αριθμό ως `αληθή`.

Επιπλέον, μπορείτε να κάνετε αριθμητική με λογικές τιμές. Για παράδειγμα:

    ( (1 + αληθές) - ψευδές ) * αληθές

είναι το ίδιο με:

    ( (αληθές ή αληθές) ή όχι ψευδές ) και αληθές

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

    1 == αληθές

πάντα αξιολογείται σε `αληθές` αφού το 1 θα μετατραπεί σε `αληθές` πριν συγκριθεί με το `αληθές`.

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

Όπως οι αριθμοί και οι λογικές τιμές, οι συμβολοσειρές στην GEL μπορούν να αποθηκευτούν ως τιμές μέσα σε μεταβλητές και να περάσουν σε συναρτήσεις. Μπορείτε επίσης να συνενώσετε μια συμβολοσειρά με μια άλλη τιμή χρησιμοποιώντας τον τελεστή συν. Για παράδειγμα: το

    a=2+3· "Το αποτέλεσμα είναι: "+a

θα δημιουργήσει τη συμβολοσειρά:

    Το αποτέλεσμα είναι: 5

Μπορείτε επίσης να χρησιμοποιήσετε τις ακολουθίες διαφυγής παρόμοιες με C όπως `\n`,`\t`,`\b`,`\a` και `\r`. Για να πάρετε ένα `\` or `"` μέσα στη συμβολοσειρά μπορείτε να βάλετε εισαγωγικά με ένα `\`. Για παράδειγμα:

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

θα κάνει μια συμβολοσειρά:

    Slash: \ Quotes: " Tabs: 	1	2	3

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

Επιπλέον, μπορείτε να χρησιμοποιήσετε τη συνάρτηση βιβλιοθήκης `string` για να μετατρέψετε ο,τιδήποτε σε μια συμβολοσειρά. Για παράδειγμα: το

    string(22)

θα επιστρέψει

    "22"

Οι συμβολοσειρές μπορούν επίσης να συγκριθούν με τελεστές `==` (ίσον), `!=` (όχι ίσο) και `<=>` (σύγκρισης)

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

Παράδειγμα:

    x=5;.
    x=5;

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

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

Σύνταξη:

    VariableName

Παράδειγμα:

    genius> e
    =2.71828182846

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

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

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

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

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

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

Σύνταξη:

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

Παράδειγμα:

    x = 3
    x := 3

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

    a = b = 5

Αυτό θα ορίσει το `b` σε 5 και μετά ορίζει επίσης το `a` σε 5.

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

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

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

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 genius-gel-function-list-constants 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`.

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

Οι μεταβλητές `Ans` και `ans` μπορούν να χρησιμοποιηθούν για να πάρετε το αποτέλεσμα της τελευταίας παράστασης. Για παράδειγμα, αν έχετε εκτελέσει κάποιο υπολογισμό, για να προσθέσετε το 389 στο αποτέλεσμα μπορείτε να κάνετε:

    Ans+389

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

Σύνταξη:

    FunctionName(όρισμα1, όρισμα2, ...)

Παράδειγμα:

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

Για να αξιολογήσετε μια συνάρτηση, εισάγετε το όνομα της συνάρτησης, που ακολουθείται από τα ορίσματα (αν υπάρχουν) της συνάρτησης σε παρενθέσεις. Αυτό θα επιστρέψει το αποτέλεσμα της εφαρμογής της συνάρτησης στα ορίσματά της. Ο αριθμός των ορισμάτων στη συνάρτηση είναι, φυσικά, διαφορετικός για κάθε συνάρτηση.

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

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

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

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

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

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

Σύνταξη:

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

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

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

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

έπειτα `addup(1,4,9)` δίνει 14

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

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

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

Τότε το `f(1,2,3)` δίνει `[2,3]`, ενώ `f(1)` δίνει `null`.

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

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

Αν δεν εισάγετε τις παρενθέσεις μετά από ένα όνομα συνάρτησης, αντί να αξιολογηθεί, η συνάρτηση θα επιστραφεί στη θέση της ως ‘κόμβος συνάρτησης’. Ο κόμβος συνάρτησης μπορεί τότε να περαστεί σε μια άλλη συνάρτηση. Παράδειγμα:

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

Για να περάσετε συναρτήσεις που δεν ορίζονται, μπορείτε να χρησιμοποιήσετε μια ανώνυμη συνάρτηση (δείτε genius-gel-functions-defining). Δηλαδή, αν θέλετε να περάσετε μια συνάρτηση χωρίς να της δώσετε ένα όνομα. Σύνταξη:

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

Παράδειγμα:

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

Αυτό θα επιστρέψει 5.

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

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

    exp(sin*cos+4)

θα επιστρέψει μια συνάρτηση που παίρνει `x` και επιστρέφει `exp(sin(x)*cos(x)+4)`. Είναι ισοδύναμη λειτουργικά με την πληκτρολόγηση

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

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

    f = exp(sin*cos+4)

Μπορεί επίσης να χρησιμοποιηθεί στη σχεδίαση. Για παράδειγμα, για να σχεδιάσετε τετράγωνο ημιτόνου μπορείτε να εισάγετε:

    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 say a loop, or if you handle the return differently. Note that it will slightly slow down the code if it is executed too often as there is one more operator involved.

If you are typing expressions in a program you do not have to add a semicolon. In this case genius will simply print the return value whenever it executes the expression. However, do note that if you are defining a function, the body of the function is a single expression.

### Σχόλια

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

    # Αυτό είναι απλώς ένα σχόλιο
    # κάθε γραμμή σε ένα σχόλιο πρέπει να έχει το δικό της σύμβολο δίεσης
    # στην επόμενη γραμμή ορίζουμε το x στην τιμή 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.

Μπορείτε να υπολογίσετε τους αντίστροφους των αριθμών mod μερικών ακέραιων χρησιμοποιώντας απλά ρητούς αριθμούς (φυσικά ο αντίστροφος πρέπει να υπάρχει). Παραδείγματα:

    10^-1 mod 101
    1/10 mod 101

Μπορείτε επίσης να κάνετε υπολογισμό υπολοίπων με πίνακες που συμπεριλαμβάνουν λήψη αντίστροφων, δυνάμεων και διαίρεση. Παράδειγμα:

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

Αυτό πρέπει να δίνει τον μοναδιαίο πίνακα ως Β που θα είναι ο αντίστροφος του Α mod 5.

Μερικές συναρτήσεις όπως `sqrt` ή `log` δουλεύουν διαφορετικά όταν είναι κατάσταση σε modulo. Αυτές τότε δουλεύουν όπως οι διακριτές εκδόσεις που δουλεύουν μέσα στον δακτύλιο των ακεραίων που επιλέξατε. Για παράδειγμα: η

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

`sqrt` θα επιστρέψει στην πραγματικότητα όλες τις πιθανές τετραγωνικές ρίζες.

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

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

Όλα στην gel είναι στην πραγματικότητα απλά μια παράσταση. Οι παραστάσεις συνδέονται μαζί με διαφορετικούς τελεστές. Όπως έχουμε δει, ακόμα και ένα διαχωριστικό είναι απλά ένας δυαδικός τελεστής στη GEL. Ιδού ένας κατάλογος τελεστών στη 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`

- Ο τελεστής mod (ισοϋπόλοιπο). Αυτός δεν ενεργοποιεί την κατάσταση υπολοίπων, αλλά επιστρέφει απλά το υπόλοιπο της `a/b`.

`a.%b`

- Ο τελεστής ισοϋπόλοιπου στοιχείου κατά στοιχείο. Επιστρέφει το ακέραιο υπόλοιπο μετά το στοιχείο κατά στοιχείο του `a./b`.

`a mod b`

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

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

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

`a<b`

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

`a>b`

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

`a<=>b`

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

`a και b`

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

`a ή b`

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

`a xor b`

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

`όχι a`

- Λογικό όχι. Επιστρέφει την λογική άρνηση του `a`

`-a`

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

`&a`

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

`*a`

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

`a'`

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

`a.'`

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

`a@(b,c)`

- Λήψη στοιχείου ενός πίνακα στη γραμμή `b` και στήλη `c`. Αν οι `b`, `c` είναι διανύσματα, τότε αυτό παίρνει τις αντίστοιχες στήλες γραμμές ή υποπίνακες.

`a@(b,)`

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

`a@(b,:)`

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

`a@(,c)`

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

`a@(:,c)`

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

`a@(b)`

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

`a:b`

- Δόμηση ενός διανύσματος από το `a` στο `b` (ή ορίστε γραμμή, περιοχή στήλης για τον τελεστή `@`). Για παράδειγμα για να πάρετε τις γραμμές 2 μέχρι 4 του πίνακα `Α` μπορούμε να κάνουμε

      A@(2:4,)

  ως `2:4` που θα επιστρέψει ένα διάνυσμα `[2,3,4]`.

`a:b:c`

- Δόμηση ενός διανύσματος από `a` σε `c` με `b` ως ένα βήμα. Δηλαδή για παράδειγμα

      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`

- Κάντε έναν φανταστικό αριθμό (πολλαπλασιάστε το `a` με τον φανταστικό). Σημειώστε ότι, κανονικά ο αριθμός `i` γράφεται ως `1i`. Έτσι το παραπάνω είναι ίσο με

      (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

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

Σύνταξη:

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

Αν `else` παραλείπεται, τότε αν η `expression1` δίνει `ψευδές` ή 0, επιστρέφεται η `NULL`.

Παραδείγματα:

    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 )

Σημειώστε ότι `=` θα μεταφραστεί σε `==` αν χρησιμοποιηθεί μέσα στην παράσταση για `if`, έτσι το

    if a=5 then a=a-1

θα ερμηνευτεί ως:

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

### Βρόχοι

#### Βρόχοι While

Σύνταξη:

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

Αυτοί είναι παρόμοιοι με τις άλλες γλώσσες. Όμως, επειδή στη gel είναι απλά μια παράσταση που πρέπει να έχει κάποια τιμή επιστροφής, αυτοί θα επιστρέψουν απλά το αποτέλεσμα της τελευταίας επανάληψης ή `NULL` αν δεν συμβεί καμιά επανάληψη. Στην παράσταση λογικών τιμών το `=` μεταφράζεται σε `==` ακριβώς όπως για τη δήλωση `if`.

#### Βρόχοι For

Σύνταξη:

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

Βρόχος με αναγνωριστικό ορίζεται για όλες τις τιμές από το `<from>` μέχρι το `<to>`, χρησιμοποιώντας προαιρετικά μια αύξηση άλλη από 1. Αυτοί είναι γρηγορότεροι, πιο ωραίοι και περισσότερο συμπαγείς από τους κανονικούς βρόχους όπως παραπάνω, αλλά λιγότερο ευέλικτοι. Το αναγνωριστικό πρέπει να είναι ένα αναγνωριστικό και δεν μπορεί να είναι μια αποαναφορά. Η τιμή του αναγνωριστικού είναι η τελευταία τιμή του ή `<from>` αν το σώμα δεν υπολογίστηκε ποτέ. Η μεταβλητή εγγυάται την αρχικοποίηση μετά από ένα βρόχο, έτσι μπορείτε να την χρησιμοποιήσετε με ασφάλεια. Επίσης τα `<from>`, `<to>` και `<increment>` πρέπει να είναι μη μιγαδικές τιμές. Το `<to>` δεν είναι βέβαιο ότι θα επιτευχθεί, αλλά δεν θα ξεπεραστεί ποτέ, για παράδειγμα το παρακάτω εκτυπώνει περιττούς αριθμούς από 1 έως 19:

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

Όταν μια από τις τιμές είναι ένας αριθμός κινητής υποδιαστολής, τότε ο τελικός έλεγχος γίνεται μέσα σε 2^-20 του μεγέθους βήματος. Δηλαδή, ακόμα κι αν ξεπεράσουμε κατά 2^-20 φορές το παραπάνω "by", θα εκτελέσουμε ακόμα την τελευταία επανάληψη. Με αυτόν τον τρόπο το

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

κάνει το αναμενόμενο ακόμα κι αν προσθέσουμε δέκα φορές 0.1 γίνεται ακριβώς ελαφρώς περισσότερο από 1.0 λόγω του τρόπου αποθήκευσης των αριθμών κινητής υποδιαστολής με βάση 2 (δεν υπάρχει κανένα 0.1, ο ενεργός αποθηκευμένος αριθμός είναι απλά ελαφρά μεγαλύτερος). Αυτό δεν είναι τέλειο, αλλά χειρίζεται την πλειοψηφία των περιπτώσεων. Αν θέλετε να αποφύγετε να αντιμετωπίσετε αυτό το θέμα, χρησιμοποιήστε ενεργούς ρητούς αριθμούς, για παράδειγμα:

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

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

#### Βρόχοι Foreach

Σύνταξη:

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

Για κάθε στοιχείο στον πίνακα, πηγαίνοντας γραμμή ανά γραμμή από αριστερά προς τα δεξιά, εκτελούμε το σώμα με το αναγνωριστικό ορισμένο στο τρέχον στοιχείο. Για να εκτυπώσετε τους αριθμούς 1,2,3 και 4 με αυτήν τη σειρά θα μπορούσατε να κάνετε:

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

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

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

θα εκτυπώσει [1,2] και έπειτα [3,4].

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

Μπορείτε επίσης να χρησιμοποιήσετε τις εντολές `break` και `continue` σε βρόχους. Η εντολή `continue` θα επανεκκινήσει τον τρέχοντα βρόχο στην επόμενη του επανάληψη, ενώ η εντολή `break` φεύγει από τον τρέχοντα βρόχο.

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

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

Σύνταξη:

    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>

Αν αντικαταστήσετε το `for` με το `sum` ή `prod`, τότε θα πάρετε ένα άθροισμα ή γινόμενο αντί για έναν βρόχο `for` loop. Αντί για επιστροφή στην τελευταία τιμή, αυτά θα επιστρέψουν το άθροισμα ή το γινόμενο των τιμών αντίστοιχα.

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

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

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

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

Κανονικά `=` μεταφράζεται σε `==` αν συμβεί να είναι κάπου όπου το GEL αναμένει μια συνθήκη όπως στη συνθήκη if. Για παράδειγμα

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

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

Όλοι οι τελεστές σύγκρισης (εκτός από τον τελεστή `<=>` που συμπεριφέρεται κανονικά), δεν είναι αυστηρά δυαδικοί τελεστές, μπορούν στην πραγματικότητα να ομαδοποιηθούν με τον κανονικό μαθηματικό τρόπο, π.χ.: (`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 είναι μια δυναμική γλώσσα με εμβέλεια. Θα εξηγήσουμε τι σημαίνει αυτό παρακάτω. Δηλαδή, κανονικές μεταβλητές και συναρτήσεις είναι δυναμικά με εμβέλεια. Η εξαίρεση είναι οι μεταβλητές παραμέτρου, που είναι πάντα καθολικές.

Όπως οι περισσότερες γλώσσες προγραμματισμού, η GEL έχει διαφορετικούς τύπους μεταβλητών. Κανονικά, όταν μια μεταβλητή ορίζεται σε μια συνάρτηση, είναι ορατή από αυτή τη συνάρτηση και από όλες τις συναρτήσεις που καλούνται (όλες με υψηλότερα περιεχόμενα). Για παράδειγμα, ας υποθέσουμε ότι μια συνάρτηση `f` ορίζει μια μεταβλητή `a` και έπειτα καλεί τη συνάρτηση `g`. Τότε η συνάρτηση `g` μπορεί να αναφέρει την `a`. Αλλά μόλις η `f` επιστρέφει, η μεταβλητή `a` βγαίνει εκτός εμβέλειας. Για παράδειγμα, ο παρακάτω κώδικας θα εμφανίσει 5. Η συνάρτηση `g` δεν μπορεί να κληθεί στο ανώτατο επίπεδο (έξω από τη `f` ως `a` δεν θα οριστεί).

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

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

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

Αυτός ο κώδικας θα εμφανίσει ακόμα 5. Αλλά αν καλέσετε την `g` έξω από την `f`, τότε θα πάρετε ένα αποτέλεσμα 10. Σημειώστε ότι, ο ορισμός μιας `a` σε 5 μέσα σε μια `f` δεν αλλάζει την τιμή της `a` στο ανώτατο (καθολικό) επίπεδο, έτσι αν τώρα ελέγξετε την τιμή της `a` θα είναι ακόμα 10.

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

Οι συναρτήσεις αντιμετωπίζονται ακριβώς όπως οι μεταβλητές. Συνεπώς, μπορείτε τοπικά να επανορίσετε τις συναρτήσεις. Κανονικά, (στο ανώτατο επίπεδο) δεν μπορείτε να επανορίσετε προστατευμένες μεταβλητές και συναρτήσεις. Αλλά τοπικά μπορείτε να το κάνετε. Θεωρείστε την ακόλουθη συνεδρία:

    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 (μηδέν). Όποτε μια συνάρτηση εισέρχεται, το περιεχόμενο αυξάνεται και όταν η συνάρτηση επιστρέφει το περιεχόμενο μειώνεται. Μια συνάρτηση ή μια μεταβλητή είναι πάντα ορατή από όλα τα περιεχόμενα με υψηλότερη αρίθμηση. Όταν μια μεταβλητή ορίζεται σε ένα περιεχόμενο χαμηλότερης αρίθμησης, τότε ο ορισμός αυτής της μεταβλητής επιδρά στη δημιουργία μιας νέας τοπικής μεταβλητής με τον τρέχοντα αριθμό περιεχομένου και αυτή η μεταβλητή θα είναι τώρα ορατή από όλα τα περιεχόμενα με υψηλότερη αρίθμηση.

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

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

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

    parameter foo = 1

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

Όταν αποκαθορίζετε μια παράμετρο χρησιμοποιώντας τη συνάρτηση `undefine`, σταματά να είναι μια παράμετρος.

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

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

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

Παράδειγμα:

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

### Αναφορές

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

Όταν χρησιμοποιείτε συναρτήσεις που επιστρέφουν τιμές μέσα από αναφορές στη λίστα ορισμάτων, περάστε απλά το όνομα της μεταβλητής με ένα (A x v:

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

Οι αναφορές εξηγούνται καλύτερα με ένα παράδειγμα:

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

τώρα η `a` περιέχει 2. Μπορείτε επίσης να αναφέρετε συναρτήσεις: το

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

μας δίνει 4.

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

Μια lvalue είναι το αριστερό μέλος μιας ανάθεσης. Με άλλα λόγια, μια lvalue είναι αυτό που αναθέτετε σε κάτι. Έγκυρες lvalues είναι:

`a`

- Αναγνωριστικό. Εδώ μπορεί να οριστεί η μεταβλητή του ονόματος `a`.

`*a`

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

`a@(<region>)`

- Μια περιοχή ενός πίνακα. Εδώ η περιοχή ορίζεται κανονικά όπως στην περίπτωση του κανονικού τελεστή @() και μπορεί να είναι μια μοναδική καταχώριση, ή μια πλήρης περιοχή του πίνακα.

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

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

    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 sequence of lines as if were entered on the command line. In particular, you do not need to enter the separator at the end of the line (unless it is of course part of several statements inside parentheses).

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

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

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

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

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

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

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

Σημειώστε ότι, η συνάρτηση προσθέτει τη `k` στη `x`. Μπορείτε να τη χρησιμοποιήσετε ως εξής.

    g = f();
    g(5)

Και η `g(5)` πρέπει να επιστρέψει 10.

Πρέπει να σημειώσετε ότι η τιμή της `k` που χρησιμοποιείται είναι αυτή που επιστρέφεται στην πραγματικότητα από την `f`. Για παράδειγμα: το

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

θα επιστρέψει μια συνάρτηση που προσθέτει 10 στο όρισμά της αντί για 5. Αυτό συμβαίνει επειδή το πρόσθετο λεξικό δημιουργείται μόνο όταν το περιεχόμενο στο οποίο η συνάρτηση ορίστηκε τελειώνει, που συμβαίνει όταν η συνάρτηση `f` επιστρέφεται. Αυτό είναι συνεπές με το πώς θα περιμένατε η συνάρτηση `r` να δουλέψει μέσα στη συνάρτηση `f` σύμφωνα με τους κανόνες εμβέλειας των μεταβλητών στη GEL. Μόνο αυτές οι μεταβλητές προστίθενται στο πρόσθετο λεξικό που είναι στο περιεχόμενο που μόλις τελείωσε και δεν υπάρχει πια. Οι χρησιμοποιούμενες μεταβλητές στη συνάρτηση που είναι ακόμα σε έγκυρα περιεχόμενα θα δουλέψουν ως συνήθως, χρησιμοποιώντας την τρέχουσα τιμή της μεταβλητής. Η μόνη διαφορά είναι με τις καθολικές μεταβλητές και συναρτήσεις. Όλα τα αναγνωριστικά που αναφέρθηκαν σε καθολικές μεταβλητές κατά τον ορισμό της συνάρτησης δεν προστίθενται στο ιδιωτικό λεξικό. Αυτό συμβαίνει για να αποφευχθεί πολλή περιττή εργασία κατά την επιστροφή συναρτήσεων και μπορεί σπάνια να είναι πρόβλημα. Για παράδειγμα, ας υποθέσουμε ότι διαγράφετε το "k=5" από τη συνάρτηση `f` και στο ανώτατο επίπεδο ορίζετε την `k` να είναι ας πούμε 5. Τότε όταν εκτελείτε τη `f`, η συνάρτηση `r` δεν θα βάλει την `k` στο ιδιωτικό λεξικό, επειδή είναι καθολική (ανωτάτου επιπέδου) τη στιγμή του ορισμού της `r`.

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

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

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

Όταν θέλετε η συνάρτηση να μην έχει κανένα ιδιωτικό λεξικό, τότε βάλτε κενές αγκύλες μετά την λίστα ορισμάτων. Τότε κανένα ιδιωτικό λεξικό δεν θα δημιουργηθεί. Κάνοντας το αυξάνετε την αποτελεσματικότητα, όταν ένα προσωπικό λεξικό δεν χρειάζεται ή όταν θέλετε η συνάρτηση να αναζητήσει όλες τις μεταβλητές όπως τις βλέπει όταν καλούνται. Για παράδειγμα ας υποθέσουμε ότι θέλετε η επιστρεφόμενη συνάρτηση από την `f` να δει την τιμή της `k` από το ανώτατο επίπεδο παρά το ότι εκεί είναι μια τοπική μεταβλητή με το ίδιο όνομα κατά τη διάρκεια του ορισμού. Έτσι ο κώδικας

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

θα επιστρέψει 20 και όχι 15, που θα συμβεί αν η `k` με μια τιμή 5 προστέθηκε στο ιδιωτικό λεξικό.

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

Κατά τη μεταβίβαση συναρτήσεων σε άλλες συναρτήσεις, η κανονική εμβέλεια των μεταβλητών μπορεί να είναι ανεπιθύμητη. Για παράδειγμα:

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

προφανώς θέλετε η συνάρτηση `r` κατά τη μεταβίβαση ως `g` στη `f` να δει τη `k` ως 10 αντί για 5, έτσι ώστε ο κώδικας να επιστρέψει 11 και όχι 6. Όμως, όπως είναι γραμμένο, η συνάρτηση κατά την εκτέλεση θα δει τη `k` που είναι ίση με 5. Υπάρχουν δύο τρόποι για την επίλυση αυτού του θέματος. Κάποιος πρέπει να κάνει την `r` να πάρει την `k` σε ένα ιδιωτικό λεξικό χρησιμοποιώντας την σημειογραφία αγκύλης στην ενότητα Επιστροφή συναρτήσεων.

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

Ένα άλλο είναι ότι αρχικοποιούνται μη καθορισμένα σημεία σε 0, έτσι το

    [1, 2, 3
     4, 5
     6]

θα καταλήξει να είναι

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

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

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

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

Μπορείτε να πάρετε τον συζυγή ενός ανάστροφου πίνακα χρησιμοποιώντας τον τελεστή `'`. Δηλαδή, η καταχώριση στην `i`στη στήλη και στην `j`στη γραμμή θα είναι ο μιγαδικός συζυγής της καταχώρισης στη `j`στη στήλη και την `i`στη γραμμή του αρχικού πίνακα. Για παράδειγμα:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    [1,2,3]

μεταφράζεται σε ένα πολυωνύμου του

    1 + 2*x + 3*x^2

Μπορείτε να προσθέσετε, αφαιρέσετε και να πολλαπλασιάσετε πολυώνυμα χρησιμοποιώντας τις συναρτήσεις `AddPoly`, `SubtractPoly` και `MultiplyPoly` αντίστοιχα. Μπορείτε να εκτυπώσετε ένα πολυώνυμο χρησιμοποιώντας τη συνάρτηση `PolyToString`. Για παράδειγμα, το

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

δίνει

    3*y^2 + 2*y + 1

Μπορείτε επίσης να πάρετε μια αναπαράσταση συνάρτησης του πολυωνύμου έτσι ώστε να μπορέσετε την υπολογίσετε. Αυτό γίνεται χρησιμοποιώντας την `PolyToFunction`, που επιστρέφει μια ανώνυμη συνάρτηση.

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

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

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

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

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

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

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

Για να δομήσετε ένα σύνολο από ένα διάνυσμα, χρησιμοποιήστε τη συνάρτηση `MakeSet`. Προς το παρόν, θα επιστρέψει απλά ένα νέο διάνυσμα, όπου κάθε στοιχείο είναι μοναδικό.

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

Παρόμοια, υπάρχουν συναρτήσεις `Union`, `Intersection`, `SetMinus`, που είναι μάλλον αυτονόητες. Για παράδειγμα:

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

Σημειώστε ότι δεν εγγυάται καμία τάξη για τις τιμές επιστροφής. Αν θέλετε να ταξινομήσετε το διάνυσμα θα πρέπει να χρησιμοποιήσετε τη συνάρτηση `SortVector`.

Για τον έλεγχο μέλους, υπάρχουν συναρτήσεις `IsIn` and `IsSubset`, που επιστρέφουν μια λογική τιμή. Για παράδειγμα:

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

Η είσοδος `IsIn(x,X)` είναι φυσικά ισοδύναμη με `IsSubset([x],X)`. Σημειώστε ότι, αφού το κενό σύνολο είναι ένα υποσύνολο κάθε συνόλου, η `IsSubset(null,X)` είναι πάντα αληθής.

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

Για να πάρετε βοήθεια σε μια συγκεκριμένη συνάρτηση από την κονσόλα πληκτρολογήστε:

    βοήθεια 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)

  Σύνθεση και εκτέλεση μιας συνάρτησης με τον εαυτό της `n` φορές, μεταβιβάζοντας την `x` ως όρισμα. Επιστροφή της `x` αν η `n` είναι ίση με 0. Παράδειγμα:

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

  Εμφάνιση συνόλου μεταβλητών. Οι μεταβλητές μπορούν να δοθούν ως συμβολοσειρές ή αναγνωριστικά. Για παράδειγμα:

      DisplayVariables(`x,`y,`z)

  Αν κληθεί χωρίς ορίσματα (πρέπει να παρέχεται άδεια λίστα ορισμάτων), όπως

      DisplayVariables()

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

  Version 1.0.18 onwards.

error

-     error (str)

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

exit

-     exit

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

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

false

-     false

  Παραλλαγές: `False` `FALSE`

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

manual

-     manual

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

print

-     print (str)

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

printn

-     printn (str)

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

PrintTable

-     PrintTable (f,v)

  Εκτύπωση ενός πίνακα τιμών για μια λειτουργία. Οι τιμές είναι στο διάνυσμα `vvarname>. PrintTable (f,[0:10]) vvarname>`

  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

  Παραλλαγές: `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`.

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

      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.

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

GoldenRatio

-     GoldenRatio

  Η χρυσή τομή.

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

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.

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

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

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

pi

-     pi

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

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

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

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

  Δείτε Wikipedia, Planetmath (absolute value), Planetmath (modulus), Mathworld (absolute value) or Mathworld (complex modulus) για περισσότερες πληροφορίες.

Chop

-     Chop (x)

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

ComplexConjugate

-     ComplexConjugate (z)

  Παραλλαγές: `conj` `Conj`

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

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

Denominator

-     Denominator (x)

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

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

FractionalPart

-     FractionalPart (x)

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

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

Im

-     Im (z)

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

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

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

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)

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

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

Re

-     Re (z)

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

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

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

Sign

-     Sign (x)

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

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

ceil

-     ceil (x)

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

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

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

  Σημειώστε ότι, θα πρέπει να είσαστε προσεκτικοί ότι οι αριθμοί κινητής υποδιαστολής αποθηκεύονται σε δυαδικό και έτσι μπορεί να μην είναι αυτό που περιμένετε. Για παράδειγμα `ceil(420/4.2)` επιστρέφει 101 αντί για το αναμενόμενο 100. Αυτό συμβαίνει επειδή το 4.2 είναι στην πραγματικότητα πολύ λίγο μικρότερο από 4.2. Χρησιμοποιήστε τη ρητή αναπαράσταση `42/10` αν θέλετε ακριβή αριθμητικά αποτελέσματα.

exp

-     exp (x)

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

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

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

  Παραλλαγές: `Max` `Maximum`

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

min

-     min (a,args...)

  Παραλλαγές: `Min` `Minimum`

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

rand

-     rand (size...)

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

randint

-     randint (max,size...)

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

      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`

  Η τετραγωνική ρίζα. Όταν λειτουργεί modulo κάποιοι ακέραιοι θα επιστρέψουν ή μια `null` ή ένα διάνυσμα τετραγωνικών ριζών. Παραδείγματα:

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

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

trunc

-     trunc (x)

  Παραλλαγές: `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 (τόξο εφαπτομένης).

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

atanh

-     atanh (x)

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

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

atan2

-     atan2 (y, x)

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

  Υπολογίζει τη συνάρτηση arctan2. Αν `x>0`, τότε επιστρέφει `atan(y/x)`. Αν `x<0`, τότε επιστρέφει `sign(y) * (pi - atan(|y/x|)`. Όταν `x=0` επιστρέφει `sign(y) * pi/2`. Η `atan2(0,0)` επιστρέφει 0 αντί για αποτυχία.

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

cos

-     cos (x)

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

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

cosh

-     cosh (x)

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

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

cot

-     cot (x)

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

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

coth

-     coth (x)

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

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

csc

-     csc (x)

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

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

csch

-     csch (x)

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

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

sec

-     sec (x)

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

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

sech

-     sech (x)

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

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

sin

-     sin (x)

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

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

sinh

-     sinh (x)

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

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

tan

-     tan (x)

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

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

tanh

-     tanh (x)

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

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

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

AreRelativelyPrime

-     AreRelativelyPrime (a,b)

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

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

BernoulliNumber

-     BernoulliNumber (n)

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

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

ChineseRemainder

-     ChineseRemainder (a,m)

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

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

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

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.

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

Divides

-     Divides (m,n)

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

EulerPhi

-     EulerPhi (n)

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

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

ExactDivision

-     ExactDivision (n,d)

  Επιστρέφει `n/d`, αλλά μόνο αν η `d` διαιρεί την `n`. Αν η `d` δεν διαιρεί την `n`, τότε αυτή η συνάρτηση επιστρέφει σκουπίδια. Αυτή είναι πολύ πιο γρήγορη για πολύ μεγάλους αριθμούς από την πράξη `n/d`, αλλά φυσικά χρήσιμη μόνο αν ξέρετε ότι η διαίρεση είναι ακριβής.

Factorize

-     Factorize (n)

  Επιστρέφει την παραγοντοποίηση ενός αριθμού ως πίνακα. Η πρώτη γραμμή είναι οι πρώτοι στην παραγοντοποίηση (συμπεριλαμβάνοντας το 1) και η δεύτερη γραμμή είναι οι δυνάμεις. Έτσι για παράδειγμα:

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

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

Factors

-     Factors (n)

  Επιστρέφει όλους τους παράγοντες της `n` σε ένα διάνυσμα. Αυτή περιλαμβάνει όλους τους μη πρώτους παράγοντες επίσης. Περιλαμβάνει το 1 και τον ίδιο τον αριθμό. Έτσι για παράδειγμα για να εμφανίσετε όλους τους τέλειους αριθμούς (αυτούς που είναι αθροίσματα των παραγόντων τους) μέχρι τον αριθμό 1000 μπορείτε να κάνετε (αυτό φυσικά είναι πολύ ανεπαρκές)

      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` καθορίζει τον αριθμό των προσπαθειών πριν να σταματήσει.

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

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

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.

  Δείτε Wikipedia, Planetmath, Mathworld ή GIMPS για περισσότερες πληροφορίες.

IsNthPower

-     IsNthPower (m,n)

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

IsOdd

-     IsOdd (n)

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

IsPerfectPower

-     IsPerfectPower (n)

  Ελέγχει αν ένας ακέραιος είναι οποιαδήποτε τέλεια δύναμη, ab.

IsPerfectSquare

-     IsPerfectSquare (n)

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

IsPrime

-     IsPrime (n)

  Ελέγχει τους πρώτους αριθμούς ακεραίων, για αριθμούς μικρότερους από 2.5e10 η απάντηση είναι προσδιοριστική (αν η υπόθεση Ρίμαν είναι αληθής). Για αριθμούς μεγαλύτερους, η πιθανότητα ψευδών θετικών εξαρτάται από την `IsPrimeMillerRabinReps`. Δηλαδή, η πιθανότητα ψευδούς θετικού είναι 1/4 στη δύναμη `IsPrimeMillerRabinReps`. Η προεπιλεγμένη τιμή του 22 δίνει μια πιθανότητα περίπου 5.7e-14.

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

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

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

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

LucasLehmer

-     LucasLehmer (p)

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

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

LucasNumber

-     LucasNumber (n)

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

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

MaximalPrimePowerFactors

-     MaximalPrimePowerFactors (n)

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

MersennePrimeExponents

-     MersennePrimeExponents

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

  Δείτε Wikipedia, Planetmath, Mathworld ή GIMPS για περισσότερες πληροφορίες.

MillerRabinTest

-     MillerRabinTest (n,reps)

  Χρησιμοποιεί τη δοκιμή πρώτων αριθμών Miller-Rabin στο `n`, `reps` είναι ο αριθμός των φορών. Η πιθανότητα ενός ψευδούς θετικού είναι `(1/4)^reps`. Είναι προφανώς συνήθως καλύτερο να χρησιμοποιήσετε `IsPrime` αφού είναι γρηγορότερο και καλύτερο σε μικρότερους ακέραιους.

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

MillerRabinTestSure

-     MillerRabinTestSure (n)

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

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

ModInvert

-     ModInvert (n,m)

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

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

MoebiusMu

-     MoebiusMu (n)

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

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

NextPrime

-     NextPrime (n)

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

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

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

PadicValuation

-     PadicValuation (n,p)

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

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

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`στό πρώτο (μέχρι ένα όριο).

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

PrimeFactors

-     PrimeFactors (n)

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

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

PseudoprimeTest

-     PseudoprimeTest (n,b)

  Δοκιμή ψευδοπρώτου, επιστρέφει `αληθές` αν και μόνο αν `b^(n-1) == 1 mod n`

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

RemoveFactor

-     RemoveFactor (n,m)

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

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

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 επιστρέφεται αν δεν είναι ένα υπόλοιπο δευτεροβάθμιας.

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

StrongPseudoprimeTest

-     StrongPseudoprimeTest (n,b)

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

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

gcd

-     gcd (a,args...)

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

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

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

lcm

-     lcm (a,args...)

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

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

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

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

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)

  Υπολογίζει τον αριθμό των μηδενικών στηλών σε έναν πίνακα. Για παράδειγμα, αφού ο πίνακάς σας μειώσει έναν πίνακα, μπορείτε να τον χρησιμοποιήσετε για να βρείτε τη μηδενικότητα. Δείτε `cref` και `Nullity`.

DeleteColumn

-     DeleteColumn (M,col)

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

DeleteRow

-     DeleteRow (M,row)

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

DiagonalOf

-     DiagonalOf (M)

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

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

DotProduct

-     DotProduct (u,v)

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

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

ExpandMatrix

-     ExpandMatrix (M)

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

HermitianProduct

-     HermitianProduct (u,v)

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

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

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

I

-     I (n)

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

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

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

IndexComplement

-     IndexComplement (vec,msize)

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

IsDiagonal

-     IsDiagonal (M)

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

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

IsIdentity

-     IsIdentity (x)

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

IsLowerTriangular

-     IsLowerTriangular (M)

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

IsMatrixInteger

-     IsMatrixInteger (M)

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

IsMatrixNonnegative

-     IsMatrixNonnegative (M)

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

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

IsMatrixPositive

-     IsMatrixPositive (M)

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

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

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

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

MakeVector

-     MakeVector (A)

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

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)

  Δίνει τις γραμμές ενός πίνακα ως κάθετο διάνυσμα. Κάθε στοιχείο του διανύσματος είναι ένα οριζόντιο διάνυσμα που είναι η αντίστοιχη γραμμή του `M`. Αυτή η συνάρτηση είναι χρήσιμη, αν θέλετε να κάνετε βρόχο στις γραμμές ενός πίνακα. Για παράδειγμα, ως `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.

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

CharacteristicPolynomialFunction

-     CharacteristicPolynomialFunction (M)

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

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

ColumnSpace

-     ColumnSpace (M)

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

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)

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

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

Convolution

-     Convolution (a,b)

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

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

ConvolutionVector

-     ConvolutionVector (a,b)

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

CrossProduct

-     CrossProduct (v,w)

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

DeterminantalDivisorsInteger

-     DeterminantalDivisorsInteger (M)

  Δίνει τους διαιρέτες ορίζουσας ενός ακεραίου πίνακα (όχι των χαρακτηριστικών του).

DirectSum

-     DirectSum (M,N...)

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

DirectSumMatrixVector

-     DirectSumMatrixVector (v)

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

Eigenvalues

-     Eigenvalues (M)

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

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

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

Eigenvectors

-     Eigenvectors (M)

      Eigenvectors (M, &eigenvalues)

      Eigenvectors (M, &eigenvalues, &multiplicities)

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

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

GramSchmidt

-     GramSchmidt (v,B...)

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

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

HankelMatrix

-     HankelMatrix (c,r)

  Πίνακας Χάνκελ.

HilbertMatrix

-     HilbertMatrix (n)

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

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

Image

-     Image (T)

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

InfNorm

-     InfNorm (v)

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

InvariantFactorsInteger

-     InvariantFactorsInteger (M)

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

InverseHilbertMatrix

-     InverseHilbertMatrix (n)

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

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

IsHermitian

-     IsHermitian (M)

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

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

IsInSubspace

-     IsInSubspace (v,W)

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

IsInvertible

-     IsInvertible (n)

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

IsInvertibleField

-     IsInvertibleField (n)

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

IsNormal

-     IsNormal (M)

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

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

IsPositiveDefinite

-     IsPositiveDefinite (M)

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

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

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

IsPositiveSemidefinite

-     IsPositiveSemidefinite (M)

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

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

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

IsSkewHermitian

-     IsSkewHermitian (M)

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

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

IsUnitary

-     IsUnitary (M)

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

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

JordanBlock

-     JordanBlock (n,lambda)

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

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

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

Kernel

-     Kernel (T)

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

  (Δείτε NullSpace)

KroneckerProduct

-     KroneckerProduct (M, N)

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

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

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

  Version 1.0.18 onwards.

LUDecomposition

-     LUDecomposition (A, L, U)

  Δίνει την ανάλυση LU του `A`, δηλαδή βρίσκει έναν κάτω τριγωνικό πίνακα και έναν άνω τριγωνικό πίνακα των οποίων το γινόμενο είναι `A` Αποθηκεύει το αποτέλεσμα στα `L` και`U` που πρέπει να είναι αναφορές. Επιστρέφει `true` αν είναι πετυχημένο. Για παράδειγμα, ας υποθέσουμε ότι ο Α είναι ένας τετραγωνικός πίνακας, έπειτα μετά την εκτέλεση:

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

  Θα έχετε τον κάτω πίνακα αποθηκευμένο σε μια μεταβλητή που λέγεται `L` και τον πάνω πίνακα σε μια μεταβλητή που λέγεται `U`.

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

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

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

Minor

-     Minor (M,i,j)

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

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

NonPivotColumns

-     NonPivotColumns (M)

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

Norm

-     Norm (v,p...)

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

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

NullSpace

-     NullSpace (T)

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

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

Nullity

-     Nullity (M)

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

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

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

OrthogonalComplement

-     OrthogonalComplement (M)

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

PivotColumns

-     PivotColumns (M)

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

Projection

-     Projection (v,W,B...)

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

QRDecomposition

-     QRDecomposition (A, Q)

  Δίνει την ανάλυση QR ενός τετραγωνικού πίνακα `A`, επιστρέφει τον άνω τριγωνικό πίνακα `R` και ορίζει το `Q` στον ορθογώνιο (μοναδιαίο) πίνακα. Το `Q` πρέπει να είναι μια αναφορά ή `null`, αν δεν θέλετε καμιά επιστροφή. Για παράδειγμα:

      genius> R = QRDecomposition(A,&Q)

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

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

RayleighQuotient

-     RayleighQuotient (A,x)

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

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

RayleighQuotientIteration

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

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

  Δείτε Planetmath για περισσότερες πληροφορίες στο πηλίκο Ρέιλι.

Rank

-     Rank (M)

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

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

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

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 στη διαγώνιο).

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

SmithNormalFormInteger

-     SmithNormalFormInteger (M)

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

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

SolveLinearSystem

-     SolveLinearSystem (M,V,args...)

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

ToeplitzMatrix

-     ToeplitzMatrix (c, r...)

  Επιστρέφει τον πίνακα Toeplitz που κατασκευάστηκε με δεδομένη την πρώτη στήλη c και (προαιρετικά) την πρώτη γραμμή r. Αν δίνεται μόνο η στήλη c, τότε είναι συζυγής και η μη συζυγής έκδοση χρησιμοποιείται για να δώσει η πρώτη γραμμή τον ερμιτιανό πίνακα (αν το πρώτο στοιχείο είναι πραγματικός φυσικά).

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

Trace

-     Trace (M)

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

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

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

Transpose

-     Transpose (M)

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

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

VandermondeMatrix

-     VandermondeMatrix (v)

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

  Επιστρέφει τον πίνακα Vandermonde.

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

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)

  Παραλλαγές: `CREF` `ColumnReducedEchelonForm`

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

det

-     det (M)

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

  Δίνει την ορίζουσα ενός πίνακα.

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

ref

-     ref (M)

  Παραλλαγές: `REF` `RowEchelonForm`

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

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

rref

-     rref (M)

  Παραλλαγές: `RREF` `ReducedRowEchelonForm`

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

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

### Συνδυαστική Ανάλυση

Catalan

-     Catalan (n)

  Δίνει τον `n`στό αριθμό Catalan.

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

Combinations

-     Combinations (k,n)

  Δίνει όλους τους συνδυασμούς των k αριθμών από 1 μέχρι n ως ένα διάνυσμα διανυσμάτων. (Δείτε επίσης NextCombination)

DoubleFactorial

-     DoubleFactorial (n)

  Διπλό παραγοντικό: `n(n-2)(n-4)...`

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

Factorial

-     Factorial (n)

  Παραγοντικό: `n(n-1)(n-2)...`

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

FallingFactorial

-     FallingFactorial (n,k)

  Μειούμενο παραγοντικό: `(n)_k = n(n-1)...(n-(k-1))`

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

Fibonacci

-     Fibonacci (x)

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

  Υπολογίζει τον `n`στό αριθμό Φιμπονάτσι. Δηλαδή, τον αριθμό που ορίζεται αναδρομικά από `Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)` και `Fibonacci(1) = Fibonacci(2) = 1`.

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

FrobeniusNumber

-     FrobeniusNumber (v,arg...)

  Υπολογίζει τον αριθμό Φρομπένιους. Δηλαδή, υπολογίζει τον ελάχιστο αριθμό που δεν μπορεί να δοθεί ως μη αρνητικός ακέραιος γραμμικός συνδυασμός του δοσμένου διανύσματος μη αρνητικών ακεραίων. Το διάνυσμα μπορεί να δοθεί ως διακριτοί αριθμοί ενός μοναδικού διανύσματος. Όλοι οι δεδομένοι αριθμοί πρέπει να έχουν ΜΚΔ 1.

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

GaloisMatrix

-     GaloisMatrix (combining_rule)

  Με δεδομένο τον πίνακα Γκαλουά ένας κανόνας γραμμικού συνδυασμού (a_1*x_+...+a_n*x_n=x_(n+1)).

GreedyAlgorithm

-     FrobeniusNumber (n,v)

  Βρίσκει το διάνυσμα `c` μη αρνητικών ακεραίων έτσι ώστε να παίρνει το εσωτερικό γινόμενο με το `v` να είναι ίσο με n. Αν δεν είναι δυνατό, επιστρέφει `null`. Το `v` πρέπει να δίνεται ταξινομημένο με αύξουσα διάταξη και πρέπει να αποτελείται από μη αρνητικούς ακέραιους.

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

HarmonicNumber

-     HarmonicNumber (n,r)

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

  Αρμονικός αριθμός, ο `n`στός αρμονικός αριθμός της τάξης `r`.

Hofstadter

-     Hofstadter (n)

  Η συνάρτηση Χόφσταντερ q(n) ορίζεται από q(1)=1, q(2)=1, q(n)=q(n-q(n-1))+q(n-q(n-2)).

LinearRecursiveSequence

-     LinearRecursiveSequence (seed_values,combining_rule,n)

  Υπολογίζει τη γραμμική κυκλική ακολουθία χρησιμοποιώντας το βηματισμό Γκαλουά.

Multinomial

-     Multinomial (v,arg...)

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

  Ο τύπος για `Multinomial(a,b,c)` μπορεί να γραφτεί ως:

      (a+b+c)! / (a!b!c!)

  Με άλλα λόγια, αν μπορούμε να έχουμε δύο μόνο στοιχεία, τότε το `Multinomial(a,b)` είναι το ίδιο με το `Binomial(a+b,a)` ή `Binomial(a+b,b)`.

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

NextCombination

-     NextCombination (v,n)

  Δίνει τον συνδυασμό που μπορεί να έρθει μετά το v στην κλήση στους συνδυασμούς της συνάρτησης, ο πρώτος συνδυασμός πρέπει να είναι `[1:k]`. Αυτή η συνάρτηση είναι χρήσιμη, αν έχετε πολλούς συνδυασμούς να περάσετε και δεν θέλετε να σπαταλήσετε μνήμη για να τους αποθηκεύσετε όλους.

  Για παράδειγμα με τον συνδυασμό θα πρέπει κανονικά να γράψετε έναν βρόχο όπως:

      for n in Combinations (4,6) do (
        SomeFunction (n)
      );

  Αλλά με το NextCombination θα πρέπει να γράψετε κάτι όπως το:

      n:=[1:4];
      do (
        SomeFunction (n)
      ) while not IsNull(n:=NextCombination(n,6));

  See also Combinations.

Pascal

-     Pascal (i)

  Δίνει το τρίγωνο του Πασκάλ ως πίνακα. Αυτό θα επιστρέψει έναν `i`+1 επί `i`+1 κάτω διαγώνιο πίνακα που είναι το τρίγωνο Πασκάλ μετά από `i` επαναλήψεις.

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

Permutations

-     Permutations (k,n)

  Δίνει όλες τις μεταθέσεις των `k` αριθμών από 1 μέχρι `n` ως ένα διάνυσμα διανυσμάτων.

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

RisingFactorial

-     RisingFactorial (n,k)

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

  (Pochhammer) Rising factorial: (n)_k = n(n+1)...(n+(k-1)).

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

StirlingNumberFirst

-     StirlingNumberFirst (n,m)

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

  Ο αριθμός Στέρλινγκ πρώτου είδους.

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

StirlingNumberSecond

-     StirlingNumberSecond (n,m)

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

  Ο αριθμός Στέρλινγκ δεύτερου είδους.

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

Subfactorial

-     Subfactorial (n)

  Subfactorial: n! times sum_{k=1}^n (-1)^k/k!.

Triangular

-     Triangular (nth)

  Υπολογίζει τον `n`στό τριγωνικό αριθμό.

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

nCr

-     nCr (n,r)

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

  Υπολογίζει συνδυασμούς, δηλαδή, τον συντελεστή διωνύμου. Το `n` μπορεί να είναι οποιοσδήποτε πραγματικός αριθμός.

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

nPr

-     nPr (n,r)

  Υπολογίζει τον αριθμό των μεταθέσεων του μεγέθους `r` των αριθμών από 1 μέχρι `n`.

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

### Μαθηματική Ανάλυση

CompositeSimpsonsRule

-     CompositeSimpsonsRule (f,a,b,n)

  Ολοκλήρωση του f από τον σύνθετο κανόνα του Σίμπσον στο διάστημα [a,b] με n υποδιαστήματα με σφάλμα του max(f'''')*h^4*(b-a)/180, σημειώστε ότι το n πρέπει να είναι άρτιος.

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

CompositeSimpsonsRuleTolerance

-     CompositeSimpsonsRuleTolerance (f,a,b,FourthDerivativeBound,Tolerance)

  Ολοκλήρωση της f από τον σύνθετο κανόνα Σίμπσον του διαστήματος [a,b] με τον αριθμό των υπολογιζόμενων βημάτων από το τέταρτο φράγμα παραγώγου και την επιθυμητή ανοχή.

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

Derivative

-     Derivative (f,x0)

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

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

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

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`

  Προσπάθεια υπολογισμού αριθμητικής παραγώγου.

NumericalFourierSeriesCoefficients

-     NumericalFourierSeriesCoefficients (f,L,N)

  Επιστρέφει ένα διάνυσμα διανυσμάτων `[a,b]` όπου το `a` είναι οι συντελεστές συνημιτόνου και το `b` είναι οι συντελεστές ημιτόνου της σειράς Φουριέ του `f` με ημιπερίοδο `L` (που ορίζεται στο `[-L,L]` και επεκτείνεται περιοδικά) με συντελεστές μέχρι τον `N`στό αρμονικό που υπολογίζεται αριθμητικά. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας το `NumericalIntegral`.

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

  Version 1.0.7 onwards.

NumericalFourierSeriesFunction

-     NumericalFourierSeriesFunction (f,L,N)

  Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ του `f` με ημιπερίοδο `L` (που ορίζεται στο `[-L,L]` και επεκτείνεται περιοδικά) με συντελεστές μέχρι τον `N`στό αρμονικό που υπολογίζεται αριθμητικά. Αυτή είναι η τριγωνομετρική πραγματική σειρά που αποτελείται από ημίτονα και συνημίτονα. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας το `NumericalIntegral`.

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

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

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

  Version 1.0.7 onwards.

NumericalFourierCosineSeriesFunction

-     NumericalFourierCosineSeriesFunction (f,L,N)

  Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ συνημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, παίρνουμε την `f` ορισμένη στο `[0,L]`, παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους συνημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`.

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

  Version 1.0.7 onwards.

NumericalFourierSineSeriesCoefficients

-     NumericalFourierSineSeriesCoefficients (f,L,N)

  Επιστρέφει ένα διάνυσμα συντελεστών της σειράς Φουριέ ημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, η `f` ορισμένη στο `[0,L]` παίρνει την περιττή περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους ημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`.

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

  Version 1.0.7 onwards.

NumericalFourierSineSeriesFunction

-     NumericalFourierSineSeriesFunction (f,L,N)

  Επιστρέφει μια συνάρτηση που είναι η σειρά Φουριέ ημιτόνου του `f` με ημιπερίοδο `L`. Δηλαδή, παίρνουμε τη `f` ορισμένη στο `[0,L]`, παίρνει την άρτια περιοδική επέκταση και υπολογίζει τη σειρά Φουριέ, η οποία έχει μόνο όρους ημιτόνου. Η σειρά υπολογίζεται μέχρι τον `N`στό αρμονικό. Οι συντελεστές υπολογίζονται με αριθμητική ολοκλήρωση χρησιμοποιώντας την `NumericalIntegral`.

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

  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)

  Παραλλαγές: `Arg` `arg`

  όρισμα (γωνία) μιγαδικού αριθμού.

BesselJ0

-     BesselJ0 (x)

  Η συνάρτηση Μπεσέλ πρώτου είδους τάξης 0. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

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

  Version 1.0.16 onwards.

BesselJ1

-     BesselJ1 (x)

  Η συνάρτηση Μπεσέλ πρώτου είδους τάξης 1. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

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

  Version 1.0.16 onwards.

BesselJn

-     BesselJn (n,x)

  Η συνάρτηση Μπεσέλ πρώτου είδους τάξης `n`. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

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

  Version 1.0.16 onwards.

BesselY0

-     BesselY0 (x)

  Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης 0. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

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

  Version 1.0.16 onwards.

BesselY1

-     BesselY1 (x)

  Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης 1. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

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

  Version 1.0.16 onwards.

BesselYn

-     BesselYn (n,x)

  Η συνάρτηση Μπεσέλ δεύτερου είδους τάξης `n`. Εφαρμόζεται μόνο για πραγματικούς αριθμούς.

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

  Version 1.0.16 onwards.

DirichletKernel

-     DirichletKernel (n,t)

  Πυρήνας Ντιρικλέτ τάξης 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.

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

FejerKernel

-     FejerKernel (n,t)

  Ο πυρήνας Fejer τάξης `n` που υπολογίστηκε στο `t`

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

GammaFunction

-     GammaFunction (x)

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

  Η συνάρτηση γάμα. Προς το παρόν υλοποιείται μόνο για πραγματικούς.

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

KroneckerDelta

-     KroneckerDelta (v)

  Επιστρέφει 1 αν και μόνο αν όλα τα στοιχεία είναι ίσα.

LambertW

-     LambertW (x)

  Ο βασικός κλάδος της συνάρτησης W Λαμπέρ υπολογίζεται μόνο για πραγματικές τιμές μεγαλύτερες ή ίσες από `-1/e`. Δηλαδή, `LambertW` είναι το αντίστροφο της παράστασης `x*e^x`. Ακόμα για πραγματικούς `x` αυτή η παράσταση δεν είναι ένα προς ένα και συνεπώς έχει δύο κλάδους στο `[-1/e,0)`. Δείτε `LambertWm1` για τον άλλο πραγματικό κλάδο.

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

  Version 1.0.18 onwards.

LambertWm1

-     LambertWm1 (x)

  Ο κλάδος μείον-ένα της συνάρτησης W Λαμπέρ υπολογίζεται μόνο για πραγματικές τιμές μεγαλύτερες ή ίσες με `-1/e` και μικρότερες από 0. Δηλαδή, το `LambertWm1` είναι ο δεύτερος κλάδος του αντίστροφου `x*e^x`. Δείτε `LambertW` για τον βασικό κλάδο.

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

MinimizeFunction

-     MinimizeFunction (func,x,incr)

  Βρίσκει την πρώτη τιμή όπου f(x)=0.

MoebiusDiskMapping

-     MoebiusDiskMapping (a,z)

  Μετασχηματισμός Μέμπιους του δίσκου στον εαυτόν του, απεικονίζοντας το a στο 0.

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

MoebiusMapping

-     MoebiusMapping (z,z2,z3,z4)

  Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας z2,z3,z4 στο 1,0, και άπειρο αντίστοιχα.

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

MoebiusMappingInftyToInfty

-     MoebiusMappingInftyToInfty (z,z2,z3)

  Απεικόνιση Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο άπειρο και z2,z3 στο 1 και 0 αντίστοιχα.

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

MoebiusMappingInftyToOne

-     MoebiusMappingInftyToOne (z,z3,z4)

  Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο 1 και z3,z4 στο 0 και άπειρο αντίστοιχα.

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

MoebiusMappingInftyToZero

-     MoebiusMappingInftyToZero (z,z2,z4)

  Μετασχηματισμός Μέμπιους χρησιμοποιώντας τον διπλό λόγο παίρνοντας άπειρο στο 0 και z2,z4 στο 1 και άπειρο αντίστοιχα.

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

PoissonKernel

-     PoissonKernel (r,sigma)

  Πυρήνας Πουασόν στο D(0,1) (μη κανονικοποιημένο στο 1, δηλαδή το ολοκλήρωμα αυτού είναι 2pi).

PoissonKernelRadius

-     PoissonKernelRadius (r,sigma)

  Πυρήνας Πουασόν στο D(0,R) (μη κανονικοποιημένο στο 1).

RiemannZeta

-     RiemannZeta (x)

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

  Η συνάρτηση ζήτα Ρίμαν. Προς το παρόν υλοποιείται μόνο για πραγματικούς.

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

UnitStep

-     UnitStep (x)

  Το μοναδιαίο βήμα συνάρτησης είναι 0 για x<0, 1 αλλιώς. Αυτό είναι το ολοκλήρωμα της συνάρτησης δέλτα Ντιράκ. Λέγεται επίσης συνάρτηση Χέβισαϊντ.

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

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

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

  Version 1.0.16 onwards.

### Επίλυση εξίσωσης

CubicFormula

-     CubicFormula (p)

  Υπολογίζει τις ρίζες ενός κυβικού (βαθμού 3) πολυωνύμου χρησιμοποιώντας τον κυβικό τύπο. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή `4*x^3 + 2*x + 1` αντιστοιχεί στο διάνυσμα `[1,2,0,4]`. Επιστρέφει ένα διάνυσμα στήλης των τριών λύσεων. Η πρώτη λύση είναι πάντα η πραγματική καθώς μια κυβική έχει πάντα μια πραγματική λύση.

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

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` και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

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

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 a 2 by `n+1` 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");

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

  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)

  Βρίσκει τα μηδενικά χρησιμοποιώντας τη μέθοδο Χάλεϊ. Το `f` είναι η συνάρτηση, `df` είναι η παράγωγος των `f` και `ddf` είναι η δεύτερη παράγωγος του `f`. Το `guess` είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά δύο διαδοχικές τιμές που είναι μέσα στο `epsilon` μεταξύ τους, ή μετά από `maxn` προσπάθειες, οπότε η συνάρτηση επιστρέφει `null` που δείχνει αποτυχία.

  Δείτε επίσης `NewtonsMethod` και `SymbolicDerivative`.

  Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10:

      genius> HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)

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

  Version 1.0.18 onwards.

NewtonsMethod

-     NewtonsMethod (f,df,guess,epsilon,maxn)

  Βρίσκει μηδενικά χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το `f` είναι η συνάρτηση και `df` είναι η παράγωγος του `f`. Η `guess` είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο `epsilon` μεταξύ τους, ή μετά από `maxn` προσπάθειες, οπότε η συνάρτηση επιστρέφει `null` που δείχνει αποτυχία.

  Δείτε επίσης `NewtonsMethodPoly` and `SymbolicDerivative`.

  Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10:

      genius> NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)

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

  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]`. Επιστρέφει ένα διάνυσμα στήλης των δύο λύσεων.

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

QuarticFormula

-     QuarticFormula (p)

  Υπολογίζει ρίζες ενός τεταρτοβάθμιου πολυωνύμου (βαθμού 4) χρησιμοποιώντας τον τύπο τεταρτοβάθμιας. Το πολυώνυμο πρέπει να δίνεται ως ένα διάνυσμα συντελεστών. Δηλαδή το `5*x^4 + 2*x + 1` αντιστοιχεί στο διάνυσμα `[1,2,0,0,5]`. Επιστρέφει ένα διάνυσμα στήλης τεσσάρων λύσεων.

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

RungeKutta

-     RungeKutta (f,x0,y0,x1,n)

  Χρησιμοποιεί την κλασική μη αναπροσαρμοστική μέθοδο τέταρτης τάξης Runge-Kutta για αριθμητική επίλυση της y'=f(x,y) με αρχικά `x0`, `y0` πηγαίνει στο `x1` με βήματα `n`, επιστρέφει `y` στο `x1`.

  Τα συστήματα μπορούν να επιλυθούν έχοντας απλά το `y` να είναι ένα διάνυσμα (στήλης) παντού. Δηλαδή, το `y0` μπορεί να είναι ένα διάνυσμα, οπότε το `f` πρέπει να πάρει έναν αριθμό `x` και ένα διάνυσμα του ίδιου μεγέθους για το δεύτερο όρισμα και πρέπει να επιστρέψει ένα διάνυσμα του ίδιου μεγέθους.

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

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 a 2 by `n+1` 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");

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

  Version 1.0.10 onwards.

### Στατιστική

Average

-     Average (m)

  Παραλλαγές: `average` `Mean` `mean`

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

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

GaussDistribution

-     GaussDistribution (x,sigma)

  Ολοκλήρωμα της GaussFunction από 0 μέχρι `x` (περιοχή κάτω από την κανονική καμπύλη).

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

GaussFunction

-     GaussFunction (x,sigma)

  Η συνάρτηση κανονικοποιημένης κατανομής Γκάους (η κανονική καμπύλη).

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

Median

-     Median (m)

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

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

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

PopulationStandardDeviation

-     PopulationStandardDeviation (m)

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

  Υπολογίζει την τυπική απόκλιση πληθυσμού ενός ολόκληρου πίνακα.

RowAverage

-     RowAverage (m)

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

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

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

RowMedian

-     RowMedian (m)

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

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

RowPopulationStandardDeviation

-     RowPopulationStandardDeviation (m)

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

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

RowStandardDeviation

-     RowStandardDeviation (m)

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

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

StandardDeviation

-     StandardDeviation (m)

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

  Υπολογίζει την τυπική απόκλιση ενός ολόκληρου πίνακα.

### Πολυώνυμα

AddPoly

-     AddPoly (p1,p2)

  Προσθήκη δύο πολυωνύμων (διανύσματα).

DividePoly

-     DividePoly (p,q,&r)

  Διαιρεί δύο πολυώνυμα (ως διανύσματα) χρησιμοποιώντας τη μακριά διαίρεση. Επιστρέφει το πηλίκο των δύο πολυωνύμων. Το προαιρετικό όρισμα `r` χρησιμοποιείται για να επιστρέψει το υπόλοιπο. Το υπόλοιπο θα έχει μικρότερο βαθμό από το `q`.

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

IsPoly

-     IsPoly (p)

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

MultiplyPoly

-     MultiplyPoly (p1,p2)

  Πολλαπλασιάζει δύο πολυώνυμα (ως διανύσματα).

NewtonsMethodPoly

-     NewtonsMethodPoly (poly,guess,epsilon,maxn)

  Βρίσκει μια ρίζα ενός πολυωνύμου χρησιμοποιώντας τη μέθοδο Νεύτωνα. Το `poly` είναι ένα πολυώνυμο ως διάνυσμα και `guess` είναι η αρχική πρόβλεψη. Η συνάρτηση επιστρέφει μετά από δύο διαδοχικές τιμές που είναι μέσα στο `epsilon` μεταξύ τους, ή μετά από `maxn` προσπάθειες, οπότε η συνάρτηση επιστρέφει `null` που δείχνει αποτυχία.

  Δείτε επίσης `NewtonsMethod`.

  Παράδειγμα εύρεσης της τετραγωνικής ρίζας του 10:

      genius> NewtonsMethodPoly([-10,0,1],3,10^-10,100)

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

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)

  Μετατρέπει ένα διάνυσμα τιμών ASCII σε συμβολοσειρά.

AlphabetToString

-     AlphabetToString (vec,alphabet)

  Μετατρέπει ένα διάνυσμα τιμών αλφαβήτου με βάση το 0 (θέσεις στη συμβολοσειρά αλφαβήτου) σε συμβολοσειρά.

StringToASCII

-     StringToASCII (str)

  Μετατρέπει μια συμβολοσειρά σε διάνυσμα τιμών ASCII.

StringToAlphabet

-     StringToAlphabet (str,alphabet)

  Μετατρέπει μια συμβολοσειρά σε διάνυσμα τιμών αλφαβήτου με βάση το 0 (θέσεις στη συμβολοσειρά αλφαβήτου), -1 για άγνωστα γράμματα.

### Συμβολικές πράξεις

SymbolicDerivative

-     SymbolicDerivative (f)

  Προσπαθεί για συμβολική παραγώγιση της συνάρτησης f, όπου f είναι μια συνάρτηση μιας μεταβλητής.

  Παραδείγματα:

      genius> SymbolicDerivative(sin)
      = (`(x)=cos(x))
      genius> SymbolicDerivative(`(x)=7*x^2)
      = (`(x)=(7*(2*x)))

SymbolicDerivativeTry

-     SymbolicDerivativeTry (f)

  Προσπαθεί να παραγωγίσει συμβολικά τη συνάρτηση f, όπου f είναι μια συνάρτηση μιας μεταβλητής, επιστρέφει `null` αν είναι ανεπιτυχής, αλλά είναι σιωπηλό. (Δείτε `SymbolicDerivative`)

SymbolicNthDerivative

-     SymbolicNthDerivative (f,n)

  Προσπαθεί να παραγωγίσει συμβολικά μια συνάρτηση n φορές. (Δείτε `SymbolicDerivative`)

SymbolicNthDerivativeTry

-     SymbolicNthDerivativeTry (f,n)

  Προσπαθεί να παραγωγίσει συμβολικά μια συνάρτηση n φορές σιωπηρά και επιστρέφει `null` στην αποτυχία (Δείτε `SymbolicNthDerivative`)

SymbolicTaylorApproximationFunction

-     SymbolicTaylorApproximationFunction (f,x0,n)

  Προσπαθεί να κατασκευάσει τη συνάρτηση προσέγγισης Τέιλορ γύρω από το x0 στον nστο βαθμό. (Δείτε `SymbolicDerivative`)

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

ExportPlot

-     ExportPlot (file,type)

      ExportPlot (file)

  Εξάγει τα περιεχόμενα του παραθύρου γραφικής παράστασης σε αρχείο. Ο τύπος είναι μια συμβολοσειρά που καθορίζει τον τύπο αρχείου για χρήση, "png", "eps", ή "ps". Αν ο τύπος δεν ορίζεται, τότε παίρνεται η επέκταση, οπότε η επέκταση πρέπει να είναι ".png", ".eps", ή ".ps".

  Σημειώστε ότι τα αρχεία αντικαθίστανται χωρίς ερώτηση.

  Σε πετυχημένη εξαγωγή, επιστρέφεται αληθές. Αλλιώς, εκτυπώνεται σφάλμα και εγείρεται εξαίρεση.

  Παραδείγματα:

      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` ελέγχει τη σχεδίαση του υπομνήματος.

  Παραδείγματα:

      genius> LinePlot(sin,cos)
      genius> LinePlot(`(x)=x^2,-1,1,0,1)

LinePlotClear

-     LinePlotClear ()

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

LinePlotDrawLine

-     LinePlotDrawLine (x1,y1,x2,y2,...)

      LinePlotDrawLine (v,...)

  Σχεδιάζει μια γραμμή από `x1`,`y1` μέχρι `x2`,`y2`. Τα `x1`,`y1`, `x2`,`y2` μπορούν να αντικατασταθούν από έναν πίνακα `n` επί 2 για μεγαλύτερη τεθλασμένη γραμμή.

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

  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,3,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])

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.

  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 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,3,100),"color","blue","legend","The Solution")

  Available from version 1.0.18 onwards.

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` ελέγχει τη σχεδίαση του υπομνήματος.

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` ελέγχει τη σχεδίαση του υπομνήματος.

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 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` ελέγχει τη σχεδίαση του υπομνήματος.

  Παραδείγματα:

      genius> Slopefield(`(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 δεν καθορίζονται, τότε χρησιμοποιούνται τα μέγιστα και ελάχιστα της συνάρτησης.

  Παραδείγματα:

      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` δεν χρησιμοποιείται, αν θέλετε να το χρησιμοποιήσετε, περάστε το ρητά. Αν δεν δίνεται η ετικέτα, τότε χρησιμοποιείται η κενή ετικέτα.

  Παραδείγματα:

      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)

  Ιδού ένα παράδειγμα πώς να σχεδιάσετε σε πολικές συντεταγμένες, ιδιαίτερα πώς να σχεδιάσετε τη συνάρτηση `-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` δεν δίνονται, υπολογίζονται από τα δεδομένα (για να είναι οι ακραίες τιμές από τα δεδομένα).

  Προαιρετικά, μπορούμε να δώσουμε την ετικέτα. Αν η ετικέτα δεν δίνεται, τότε χρησιμοποιείται η κενή ετικέτα.

  Παραδείγματα:

      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 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, arrows, 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` ελέγχει τη σχεδίαση του υπομνήματος.

  Παραδείγματα:

      genius> VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1, -1, 1)

## Παράδειγμα προγραμμάτων στην GEL

Ιδού μια συνάρτηση που υπολογίζει παραγοντικά:

    function f(x) = if x <= 1 then 1 else (f(x-1)*x)

Με παραγραφοποίηση γίνεται:

    function f(x) = (
      if x <= 1 then
        1
      else
        (f(x-1)*x)
    )

Αυτή είναι η άμεση θύρα της παραγοντικής συνάρτησης από τη σελίδα εγχειριδίου bc. Η σύνταξη φαίνεται παρόμοια με την bc, αλλά διαφέρει στο ότι στην GEL η τελευταία παράσταση είναι αυτή που επιστρέφεται. Χρησιμοποιώντας τη συνάρτηση `return`, θα πρέπει να είναι:

    function f(x) = (
      if (x <= 1) then return (1);
      return (f(x-1) * x)
    )

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

    function f(x) = prod k=1 to x do k

Ιδού ένα μεγαλύτερο παράδειγμα, αυτό βασικά ξαναορίζει την εσωτερική συνάρτηση `ref` για να υπολογίσει τη μορφή κλιμακωτής γραμμής ενός πίνακα. Η συνάρτηση `ref` είναι ενσωματωμένη και πολύ γρηγορότερη, αλλά αυτό το παράδειγμα δείχνει μερικά πιο σύνθετα γνωρίσματα της 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
    )

## Ρυθμίσεις

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

### Αλλαγή ρυθμίσεων με την GEL

Πολλές από τις ρυθμίσεις στη Genius είναι απλά καθολικές μεταβλητές και μπορούν να υπολογιστούν και να εκχωρηθούν με τον ίδιο τρόπο όπως οι κανονικές μεταβλητές. Δείτε genius-gel-variables για τον υπολογισμό και την εκχώρηση σε μεταβλητές και genius-gel-function-parameters για έναν κατάλογο ρυθμίσεων που μπορούν να τροποποιηθούν με αυτόν τον τρόπο.

Ως παράδειγμα, μπορείτε να ορίσετε τον μέγιστο αριθμό ψηφίων σε ένα αποτέλεσμα σε 12 πληκτρολογώντας:

    MaxDigits = 12

### Έξοδος

Μέγιστος αριθμός ψηφίων στην έξοδο

- Ο μέγιστος αριθμός ψηφίων σε ένα αποτέλεσμα (`MaxDigits`)

Αποτελέσματα ως αριθμοί κινητής υποδιαστολής

- Αν τα αποτελέσματα πρέπει να εμφανίζονται πάντα ως αριθμοί κινητής υποδιαστολής (`ResultsAsFloats`)

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

- Αν οι αριθμοί κινητής υποδιαστολής πρέπει να είναι σε επιστημονική σημειογραφία (`ScientificNotation`)

Να εμφανίζονται πάντα πλήρεις παραστάσεις

- Αν πρέπει να εμφανίζονται πλήρεις παραστάσεις για μη αριθμητικές τιμές επιστροφής (μεγαλύτερες από μια γραμμή) (`FullExpressions`)

Χρήση μικτών κλασμάτων

- Αν τα κλάσματα πρέπει να εμφανίζονται ως μικτά κλάσματα όπως "1 1/3" αντί για "4/3". (`MixedFractions`)

Να εμφανίζεται 0.0 όταν ο αριθμός κινητής υποδιαστολής είναι μικρότερος από 10^-x (το 0=να μην περικόπτεται ποτέ)

- How to chop output. But only when other numbers nearby are large. See the documentation of the parameter `OutputChopExponent`.

Να περικόπτονται οι αριθμοί μόνο όταν ένας άλλος αριθμός είναι μεγαλύτερος από 10^-x

- When to chop output. This is set by the parameter `OutputChopWhenExponent`. See the documentation of the parameter `OutputChopExponent`.

Απομνημόνευση ρυθμίσεων εξόδου σε όλες τις συνεδρίες

- Αν θα πρέπει οι ρυθμίσεις εξόδου στο Επιλογές εξόδου αριθμού/παράστασης να απομνημονεύονται για την επόμενη συνεδρία. Δεν εφαρμόζεται στο πλαίσιο Επιλογές εξόδου σφάλματος/πληροφοριών.

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

Να εμφανίζονται τα σφάλματα σε διάλογο

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

Να εμφανίζονται τα μηνύματα πληροφοριών σε έναν διάλογο

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

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

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

Πέρα από αυτές τις προτιμήσεις, υπάρχουν κάποιες προτιμήσεις που μπορούν να αλλαχθούν μόνο ορίζοντας τες στην κονσόλα χώρου εργασίας. Για άλλες που μπορούν να επηρεάσουν την έξοδο δείτε genius-gel-function-parameters.

`IntegerOutputBase`

- Η βάση που θα χρησιμοποιηθεί για την έξοδο ακεραίων

`OutputStyle`

- Μια συμβολοσειρά, μπορεί να είναι `"normal"`, `"latex"`, `"mathml"` ή `"troff"` και θα επηρεάσει πως οι πίνακες (και ίσως άλλο υλικό) εκτυπώνεται, χρήσιμο για επικόλληση σε έγγραφα. Η κανονική τεχνοτροπία είναι η προεπιλεγμένη ανθρώπινη αναγνώσιμη τεχνοτροπία εκτύπωσης του Εργαλείο μαθηματικών Genius. Οι άλλες τεχνοτροπίες είναι εκτύπωσης για LaTeX, MathML (XML), ή στο Troff.

### Ακρίβεια

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

- Η ακρίβεια κινητής υποδιαστολής σε δυαδικά ψηφία (`FloatPrecision`). Σημειώστε ότι αλλάζοντας αυτό επηρεάζει μόνο τις νέες υπολογιζόμενες ποσότητες. Οι παλιές τιμές που αποθηκεύονται σε μεταβλητές είναι προφανώς ακόμα στην παλιά ακρίβεια και αν θέλετε να τις έχετε πιο ακριβείς, θα πρέπει να τις επαναϋπολογίσετε. Οι εξαιρέσεις σε αυτό είναι οι σταθερές συστήματος όπως `pi` ή `e`.

Να απομνημονεύεται η ρύθμιση ακρίβειας σε όλες τις συνεδρίες

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

### Τερματικό

Το τερματικό αναφέρεται στην κονσόλα στην περιοχή εργασίας.

Γραμμές οπισθοκύλισης

- Γραμμές οπισθοκύλισης στο τερματικό.

Γραμματοσειρά

- Η γραμματοσειρά που θα χρησιμοποιηθεί στο τερματικό.

Μαύρο σε λευκό

- Αν θα χρησιμοποιήσετε μαύρο σε λευκό στο τερματικό.

Δρομέας που αναβοσβήνει

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

### Μνήμη

Μέγιστος αριθμός κόμβων για κατανομή

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

  Μόλις φτάσει το όριο, το Εργαλείο μαθηματικών 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.