Εργαλεία Χρήστη

Εργαλεία ιστότοπου


octave

Σύγκριση εκδόσεων

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

Σύνδεσμος σε αυτή την προβολή διαφορών.

Προηγούμενος έλεγχος και από τις δύο πλευρές Προηγούμενη αναθεώρηση
Επόμενη αναθεώρηση
Προηγούμενη αναθεώρηση
octave [2014/01/29 08:13]
chiossif
octave [2021/01/30 13:59] (τρέχουσα)
62.210.151.70 παλαιότερη έκδοση επαναφέρθηκε (2014/01/29 10:01)
Γραμμή 90: Γραμμή 90:
     c =  8 - 1i     c =  8 - 1i
 Για τις συναρτήσεις σε μιγαδικούς αριθμούς δείτε περισσότερα [[http://www.gnu.org/software/octave/doc/interpreter/Complex-Arithmetic.html|εδώ]] Για τις συναρτήσεις σε μιγαδικούς αριθμούς δείτε περισσότερα [[http://www.gnu.org/software/octave/doc/interpreter/Complex-Arithmetic.html|εδώ]]
 +
  
 ======Πίνακες και διανύσματα====== ======Πίνακες και διανύσματα======
 Η octave υποστηρίζει πίνακες και διανύσματα. Δείτε ένα παράδειγμα: Η octave υποστηρίζει πίνακες και διανύσματα. Δείτε ένα παράδειγμα:
-    octave:10> A=[1 2; 3 4]; +    octave:12> A=[1 2; 3 4]; 
-    octave:11> B=[2 1; 4 3]; +    octave:13> B=[2 1; 4 3]; 
-    octave:12> C=A+B+    octave:14> C=A+B
     C =     C =
          3          3
          7          7
-    octave:13> D=A*B+    octave:15> D=A*B
     D =     D =
        10    7        10    7
        22   15        22   15
-    octave:14> E=A.*B+    octave:16> E=A.*B
     E =     E =
         2    2         2    2
        12   12        12   12
 Υποστηρίζονται οι πράξεις +,-,* ως πολλαπλασιασμός πινάκων και .* ως βαθμωτός πολλαπλασιασμός, / και ./ αντίστοιχα και \ και .\ ως αριστερή διαίρεση: Υποστηρίζονται οι πράξεις +,-,* ως πολλαπλασιασμός πινάκων και .* ως βαθμωτός πολλαπλασιασμός, / και ./ αντίστοιχα και \ και .\ ως αριστερή διαίρεση:
-    octave:15> F=A.\B+    octave:17> F=A.\B
     F =     F =
        2.00000   0.50000        2.00000   0.50000
        1.33333   0.75000        1.33333   0.75000
-    octave:16> G=A\B+    octave:18> G=A\B
     G =     G =
          1          1
Γραμμή 118: Γραμμή 119:
 Ο πολλαπλασιασμός πινάκων δεν είναι αντιμεταθετικός. Έτσι διαίρεση γίνεται με πολλαπλασιασμό με τον αντίστροφο είτε από δεξιά ( Α/Β == Α*Β^(-1) ) είτε από αριστερά (Α\Β == Β^(-1)*Α). Προσοχή στο .\ ;-) Ο πολλαπλασιασμός πινάκων δεν είναι αντιμεταθετικός. Έτσι διαίρεση γίνεται με πολλαπλασιασμό με τον αντίστροφο είτε από δεξιά ( Α/Β == Α*Β^(-1) ) είτε από αριστερά (Α\Β == Β^(-1)*Α). Προσοχή στο .\ ;-)
 Αν έχω ένα σύστημα Α*Χ=Β μπορώ να πάρω αμέσως την λύση. Δείτε πως: Αν έχω ένα σύστημα Α*Χ=Β μπορώ να πάρω αμέσως την λύση. Δείτε πως:
-    octave:17> A+    octave:19> A
     A =     A =
          2          2
          4          4
-    octave:18> B=[17 ;39]+    octave:20> B=[17 ;39]
     B =     B =
        17        17
        39        39
-    octave:19> X=A\B+    octave:21> X=A\B
     X =     X =
        5.0000        5.0000
        6.0000        6.0000
 Τέλος υπάρχουν και οι [[https://www.gnu.org/software/octave/doc/interpreter/Special-Utility-Matrices.html|ειδικοί]] πίνακες όπως οι eye, ones, zeros: Τέλος υπάρχουν και οι [[https://www.gnu.org/software/octave/doc/interpreter/Special-Utility-Matrices.html|ειδικοί]] πίνακες όπως οι eye, ones, zeros:
-    octave:20> eye(3)+    octave:22> eye(3)
     ans =     ans =
     Diagonal Matrix     Diagonal Matrix
Γραμμή 137: Γραμμή 138:
            0            0
            1            1
-    octave:21> ones(2,2)+    octave:23> ones(2,2)
     ans =     ans =
          1          1
          1          1
-    octave:22> zeros(12)+    octave:24> zeros(12)
     ans =     ans =
                              0                              0
Γραμμή 155: Γραμμή 156:
                              0                              0
                              0                              0
-    octave:23> zeros(1,2)+    octave:25> zeros(1,2)
     ans =     ans =
          0          0
-    octave:24> zeros(3,1)+    octave:26> zeros(3,1)
     ans =     ans =
        0        0
Γραμμή 164: Γραμμή 165:
        0        0
 Πριν φύγουμε από τους πίνακες θα πρέπει να δούμε τον ειδικό χαρακτήρα : με τον οποίο ορίζουμε εύρη τιμών. Έτσι μπορούμε, όταν θέλουμε, να επιλέξουμε μια συγκεκριμένη γραμμή ή στήλη από ένα διάνυσμα ή τμήμα ενός πίνακα. Παραδείγματα: Πριν φύγουμε από τους πίνακες θα πρέπει να δούμε τον ειδικό χαρακτήρα : με τον οποίο ορίζουμε εύρη τιμών. Έτσι μπορούμε, όταν θέλουμε, να επιλέξουμε μια συγκεκριμένη γραμμή ή στήλη από ένα διάνυσμα ή τμήμα ενός πίνακα. Παραδείγματα:
-   octave:17> A+   octave:27> A
     A =     A =
          2          2
          4          4
-   octave:25> A(1, :)+   octave:28> A(1, :)
     ans =     ans =
         2         2
 για την πρώτη γραμμή και για την πρώτη γραμμή και
-   octave:25> A(:, 1)+   octave:29> A(:, 1)
     ans =     ans =
        1        1
        3        3
 για την πρώτη στήλη. για την πρώτη στήλη.
-Τι σημαίνει όμως το /εύρος τιμών/; Το εύρος ορίζεται ως αρχή:βήμα:τέλος έτσι: +Τι σημαίνει όμως το [https://www.gnu.org/software/octave/doc/interpreter/Ranges.html|εύρος τιμών]; Το εύρος ορίζεται ως αρχή:βήμα:τέλος έτσι: 
-    octave:26> 1:3:10+    octave:30> 1:3:10
     ans =     ans =
             10             10
 Σε περίπτωση που το βήμα είναι 1, μπορεί να παραληφθεί: Σε περίπτωση που το βήμα είναι 1, μπορεί να παραληφθεί:
-     octave:27> 1:10+     octave:31> 1:10
      ans =      ans =
         1                  10         1                  10
 Μια σημαντική λέξη κλειδί που μπορεί να χρησιμοποιηθεί είναι το end. Σε περίπτωση λοιπόν που θέλουμε να επιλέξουμε μια γραμμή ή μια στήλη ενός πίνακα από την αρχή μέχρι το τέλος μπορούμε να γράψουμε: Μια σημαντική λέξη κλειδί που μπορεί να χρησιμοποιηθεί είναι το end. Σε περίπτωση λοιπόν που θέλουμε να επιλέξουμε μια γραμμή ή μια στήλη ενός πίνακα από την αρχή μέχρι το τέλος μπορούμε να γράψουμε:
-     octave:28> Α(1:end, 1)+     octave:32> Α(1:end, 1)
      ans =      ans =
         1         1
         3         3
 Έστω λοιπόν πως ορίζουμε έναν πίνακα δύο διαστάσεων: Έστω λοιπόν πως ορίζουμε έναν πίνακα δύο διαστάσεων:
-      octave:29> A = [16  2  3  13; 5  11  10  8; 9  7  6  12; 4  14 15 1]+      octave:33> A = [16  2  3  13; 5  11  10  8; 9  7  6  12; 4  14 15 1]
        A =        A =
              16                              13              16                              13
-             5          11          10           8  +              5          11          10           8  
-             9                              12   +              9                              12   
-             4          14          15           +              4          14          15           
 Μπορώ να εξάγω με τον χαρακτήρα : τις γραμμές ως εξής: Μπορώ να εξάγω με τον χαρακτήρα : τις γραμμές ως εξής:
-      octave:30> A(2:4,1:2)+      octave:34> A(2:4,1:2)
       ans =       ans =
                 5          11                 5          11
Γραμμή 204: Γραμμή 205:
                 4          14                 4          14
 Επίσης μπορώ να εξάγω τα στοιχεία της τελευταίας στήλης ως εξής: Επίσης μπορώ να εξάγω τα στοιχεία της τελευταίας στήλης ως εξής:
-      octave:31>  A(:,end) +      octave:35>  A(:,end) 
       ans =       ans =
                13                13
                 8                 8
-              12+               12
                 1                 1
-Με το /εύρος τιμώνείδαμε πως μπορούμε να κόβουμε έναν πίνακα σαν σπανακόπιτα. ;-) Πως μπορούμε όμως να τον ξανασυνδέσουμε;+Με το εύρος τιμών είδαμε πως μπορούμε να κόβουμε έναν πίνακα σαν σπανακόπιτα. ;-) Πως μπορούμε όμως να τον ξανασυνδέσουμε;
 Στο ακόλουθο παράδειγμα βλέπουμε πως σχηματίζεται ένας νέος πίνακας από άλλους: Στο ακόλουθο παράδειγμα βλέπουμε πως σχηματίζεται ένας νέος πίνακας από άλλους:
-    octave:1> A=[1 2;3 4]; +    octave:36> A=[1 2;3 4]; 
-    octave:2> B=[5 6;7 8]; +    octave:37> B=[5 6;7 8]; 
-    octave:3> C=zeros(2); +    octave:38> C=zeros(2); 
-    octave:4> D=eye(2); +    octave:39> D=eye(2); 
-    octave:5> E=[ A B; C D]+    octave:40> E=[ A B; C D]
     E =     E =
              6              6
Γραμμή 222: Γραμμή 223:
              0              0
              1              1
-======Εντολές ελέγχου ροής και επανάληψης======+ 
 + 
 + 
 +======Εντολές ελέγχου======
 Μπορούμε να ελέγχουμε την ροή εκτέλεσης εντολών στην octave; Φυσικά και μπορούμε. Αρκεί να ξέρουμε κατ'αρχήν τους λογικούς τελεστές : Μπορούμε να ελέγχουμε την ροή εκτέλεσης εντολών στην octave; Φυσικά και μπορούμε. Αρκεί να ξέρουμε κατ'αρχήν τους λογικούς τελεστές :
  
Γραμμή 232: Γραμμή 236:
     <         μικρότερο από            if x < y     <         μικρότερο από            if x < y
     <=      μικρότερο ή ίσο από        if x <= y     <=      μικρότερο ή ίσο από        if x <= y
-    &              ΚΑΙ                 if x == 1 & y > 2 +    &&             ΚΑΙ                 if x == 1 & y > 2 
-    |               Ή                  if x == 1 | y > 2+    ||              Ή                  if x == 1 | y > 2
     ~              ΌΧΙ                    x = ~y     ~              ΌΧΙ                    x = ~y
  
-Εντολή ελέγχου if+[[https://www.gnu.org/software/octave/doc/interpreter/Operator-Precedence.html|Εδώ]] θα βρείτε όλους τους τελεστές της octave και την προτεραιότητά τους. 
 + 
 +=====Εντολή ελέγχου if=====
 Η εντολή ελέγχου ροής είναι η if και η γενική μορφή της είναι η παρακάτω: Η εντολή ελέγχου ροής είναι η if και η γενική μορφή της είναι η παρακάτω:
     if συνθήκη1     if συνθήκη1
Γραμμή 245: Γραμμή 251:
         ΟΜΑΔΑ Ω         ΟΜΑΔΑ Ω
     end     end
-Εάν η συνθήκη1 είναι αληθής, τότε εκτελείται η ομάδα εντολών Α και το πρόγραμμα συνεχίζει μετά την end. Εάν η συνθήκη1 είναι ψευδής, η επόμενη συνθήκη (συνθήκη2 στο elseif) ελέγχεται και η ομάδα εντολών Β εκτελείται άμα είναι αληθής. Μπορεί να υπάρχουν όσες συνθήκες elseif χρειάζονται ανά περίπτωση. Η τελική ομάδα εντολών, μετά το else, εκτελείτε στην περίπτωση που όλες οι συνθήκες είναι ψευδείς.Οι εντολές elseif και else είναι προαιρετικές ενώ μετά την ολοκλήρωση κάθε ομάδας εντολών η εκτέλεση συνεχίζεται μετά το end. +Εάν η συνθήκη1 είναι αληθής, τότε εκτελείται η ομάδα εντολών Α και το πρόγραμμα συνεχίζει μετά την end. Εάν η συνθήκη1 είναι ψευδής, η επόμενη συνθήκη (συνθήκη2 στο elseif) ελέγχεται και η ομάδα εντολών Β εκτελείται άμα είναι αληθής. Μπορεί να υπάρχουν όσες συνθήκες elseif χρειάζονται ανά περίπτωση. Η τελική ομάδα εντολών, μετά το else, εκτελείται στην περίπτωση που όλες οι συνθήκες είναι ψευδείς. Οι εντολές elseif και else είναι προαιρετικές ενώ μετά την ολοκλήρωση κάθε ομάδας εντολών η εκτέλεση συνεχίζεται μετά το end. 
-ΠΡΟΣΟΧΉ: Είναι αδύνατη η εκτέλεση περισσότερες από μία ομάδες εντολών διότι αν μία συνθήκη προκύψει ΑΛΗΘΉΣ εκτελούνται οι εντολές της ομάδας της και δεν εξετάζεται άλλη μέχρι την ολοκλήρωση της εντολής.+ΠΡΟΣΟΧΉ: Είναι αδύνατη η εκτέλεση περισσοτέρων από μία ομάδων εντολών διότι αν μία συνθήκη προκύψει ΑΛΗΘΉΣ εκτελούνται οι εντολές της ομάδας της και δεν εξετάζεται άλλη μέχρι την ολοκλήρωση της εντολής.
     octave:1> a=1;     octave:1> a=1;
     octave:2> b=2;     octave:2> b=2;
Γραμμή 257: Γραμμή 263:
 Προσέξτε τον χαρακτήρα > στο παραπάνω παράδειγμα. Τον συναντάμε όταν μία εντολή καταλαμβάνει περισσότερες από μία γραμμές και μέχρι την ολοκλήρωσή της. Προσέξτε τον χαρακτήρα > στο παραπάνω παράδειγμα. Τον συναντάμε όταν μία εντολή καταλαμβάνει περισσότερες από μία γραμμές και μέχρι την ολοκλήρωσή της.
  
-Εντολή ελέγχου switch+ 
 +=====Εντολή ελέγχου switch=====
 Σε περίπτωση που σε ένα πρόγραμμα χρειάζονται πολλές if/elseif εντολές προκειμένου να επιλεγεί το αποτέλεσμα μέσα από μια ποικιλία διαφορετικών εντολών, είναι καλύτερα να χρησιμοποιηθεί η εντολή switch. Η εντολή ακολουθεί το παρακάτω πρότυπο: Σε περίπτωση που σε ένα πρόγραμμα χρειάζονται πολλές if/elseif εντολές προκειμένου να επιλεγεί το αποτέλεσμα μέσα από μια ποικιλία διαφορετικών εντολών, είναι καλύτερα να χρησιμοποιηθεί η εντολή switch. Η εντολή ακολουθεί το παρακάτω πρότυπο:
-switch x +  switch x 
-case x1, +    case x1, 
-     ..... +       .... 
-case x2, +    case x2, 
-    .... +       .... 
-otherwise, +    otherwise, 
-   ..... +       .... 
-end+  end
 Στην εντολή switch, η τιμή του x συγκρίνεται με κάθε μια από την λίστα με τα case, και αν βρεί μια ίση με αυτή τότε εκτελεί την αντίστοιχη ομάδα εντολών. Σε περίπτωση που κανένα case δεν είναι αληθές, εκτελείται η ομάδα εντολών που βρίσκεται μέσα στο otherwise, αν αυτό υπάρχει. Ακολουθεί ένα παράδειγμα εφαρμογής της εντολής: Στην εντολή switch, η τιμή του x συγκρίνεται με κάθε μια από την λίστα με τα case, και αν βρεί μια ίση με αυτή τότε εκτελεί την αντίστοιχη ομάδα εντολών. Σε περίπτωση που κανένα case δεν είναι αληθές, εκτελείται η ομάδα εντολών που βρίσκεται μέσα στο otherwise, αν αυτό υπάρχει. Ακολουθεί ένα παράδειγμα εφαρμογής της εντολής:
     octave:10> a=1;     octave:10> a=1;
Γραμμή 278: Γραμμή 285:
     > end     > end
     a is one     a is one
-(Η συνάρτηση disp εμφανίζει την τιμή ενός αριθμού ή μια παράσταση χαρακτήρων. Στο συγκεκριμένο παράδειγμα χρησιμοποιείται για να εκτυπώσει στην οθόνη μια σειρά από χαρακτήρες. Μπορεί όμως να χρησιμοποιηθεί και με μεταβλητές. πχ. disp(a) θα εκτυπώσει την τιμή του a.) +Η συνάρτηση disp εμφανίζει την τιμή ενός αριθμού ή μια παράσταση χαρακτήρων. Στο συγκεκριμένο παράδειγμα χρησιμοποιείται για να εκτυπώσει στην οθόνη μια σειρά από χαρακτήρες. Μπορεί όμως να χρησιμοποιηθεί και με μεταβλητές. πχ. disp(a) θα εκτυπώσει την τιμή του a. 
-Εντολή επανάληψης for + 
-Στον προγραμματισμό είναι πολύ συνήθης η χρήση της εντολής επανάληψης for, η οποία επαναλαμβάνει μια ομάδα εντολών για προκαθορισμένες τιμές και με ένα προκαθορισμένο βήμα. Στην γλώσσα octave η χρήση του πρέπει να αποφεύγεται. Προσπαθήσετε να χρησιμοποιήσετε τις πράξεις με διανύματα, εύρη τιμών και συναρτήσεις αντί για αυτή την εντολή διότι είναι περίπου 40 φορές πιο αργή. Παρόλα αυτά υπάρχουν σπάνιες περιπτώσεις που η χρήση του for δεν μπορεί να αποφευχθεί. Η σύνταξη του είναι η ακόλουθη: + 
-for variable = vector +======Εντολές επανάληψης====== 
-    statements + 
-end+ 
 +=====Εντολή επανάληψης for===== 
 +Στον προγραμματισμό είναι πολύ συνήθης η χρήση της εντολής επανάληψης for, η οποία επαναλαμβάνει μια ομάδα εντολών για προκαθορισμένες τιμές και με ένα προκαθορισμένο βήμα. Στην γλώσσα octave η χρήση του πρέπει να αποφεύγεται. Προσπαθήσετε να χρησιμοποιήσετε τις πράξεις με διανύματα, εύρη τιμών και συναρτήσεις αντί για αυτή την εντολή διότι είναι περίπου σαράντα φορές πιο αργή. Παρόλα αυτά υπάρχουν σπάνιες περιπτώσεις που η χρήση του for δεν μπορεί να αποφευχθεί. Η σύνταξη του είναι η ακόλουθη: 
 +    for variable = vector 
 +        statements 
 +    end
 όπου το vector (διάνυσμα) περιλαμβάνει και τον αριθμό του βήματος. Ακολουθεί ένα παράδειγμα: όπου το vector (διάνυσμα) περιλαμβάνει και τον αριθμό του βήματος. Ακολουθεί ένα παράδειγμα:
-octave:12>  for n=1:5 +    octave:12>  for n=1:5 
-> nf(n) = factorial(n); +    > nf(n) = factorial(n); 
-> end +    > end 
-octave:13> nf +    octave:13> nf 
-nf = +    nf = 
-     1            24   120+         1            24   120
 όπου σχηματίζεται ένας νέος πίνακας με τα παραγοντικά των αριθμών 1 έως 5. Αυτό το παράδειγμα έγινε μόνο για την επίδειξη της εντολής και είναι ατυχές όπως το 99% των περιπτώσεων χρήσης της for, αφού μπορούμε να έχουμε το ίδιο αποτέλεσμα έτσι: όπου σχηματίζεται ένας νέος πίνακας με τα παραγοντικά των αριθμών 1 έως 5. Αυτό το παράδειγμα έγινε μόνο για την επίδειξη της εντολής και είναι ατυχές όπως το 99% των περιπτώσεων χρήσης της for, αφού μπορούμε να έχουμε το ίδιο αποτέλεσμα έτσι:
-octave:14> n=1:5 +    octave:14> n=1:5 
-n = +    n = 
-   1         5 +       1         5 
-octave:15> nf=factorial(n) +    octave:15> nf=factorial(n) 
-nf = +    nf = 
-     1            24   120 +         1            24   120 
-ΠΡΟΣΟΧΗ: Πριν χρησιμοποιήσετε μία εντολή for βεβαιωθείτε ότι δεν μπορείτε να κάνετε την δουλειά σας με πιο εύκολο και σύντομο τρόπο. Στην αρχή είναι λίγο δύσκολο, ειδικά για όσους είναι προγραμματιστές σε παλαιότερες γλώσσες προγραμματισμού όπως Fortran Pascal Basic ή C/C++ αλλά ας μην ξεχνάμε πως δεν έχουμε λόγο να γράφουμε κώδικα στην octave αν δεν χρησιμοποιούμε την δύναμή της.+ΠΡΟΣΟΧΗ: Πριν χρησιμοποιήσετε μία εντολή for βεβαιωθείτε ότι δεν μπορείτε να κάνετε την δουλειά σας με πιο εύκολο και σύντομο τρόπο. Στην αρχή είναι λίγο δύσκολο, ειδικά για όσους είναι προγραμματιστές σε παλαιότερες γλώσσες προγραμματισμού όπως FortranPascalBasic ή C/C++ αλλά ας μην ξεχνάμε πως δεν έχουμε λόγο να γράφουμε κώδικα στην octave αν δεν χρησιμοποιούμε την δύναμή της.
  
  
-Εντολή επανάληψης while +=====Εντολή επανάληψης while===== 
-Σε περίπτωση που δεν ξέρουμε ακριβώς πόσες επαναλήψεις μπορεί να χρειαστούμεκαι απλά χρειαζόμαστε μια επαναληπτική διαδικασία μέχρι να εκπληρωθεί μια συνθήκη, η octave μας παρέχει την επαναληπτική εντολή while: +Σε περίπτωση που δεν ξέρουμε ακριβώς πόσες επαναλήψεις μπορεί να χρειαστούμε και απλά χρειαζόμαστε μια επαναληπτική διαδικασία μέχρι να εκπληρωθεί μια συνθήκη, η octave μας παρέχει την επαναληπτική εντολή while: 
-while expression +    while expression 
-     statements +        statements 
-end+    end
 Παράδειγμα: Παράδειγμα:
     octave:16> x=1;     octave:16> x=1;
Γραμμή 314: Γραμμή 326:
     octave:19> x     octave:19> x
     x =  1.11022302462516e-16     x =  1.11022302462516e-16
-Ας θυμηθούμε εδώ ότι παρότι στον Η/Υ μπορούμε να αποθηκεύουμε πολύ μικρότερους αριθμούς από το -16 η ακρίβεια των υπολογισμών δεν είναι αντίστοιχη. Όπως σε κάθε αναπαράσταση [https://en.wikipedia.org/wiki/Floating_point | αριθμού κινητής υποδιαστολής] η ακρίβεια υπολογισμών είναι ανάλογη με το μέγεθος της [https://en.wikipedia.org/wiki/Significand| μάντισας] (πλήθος σημαντικών ψηφίων) και πάντα πεπερασμένη.+Ας θυμηθούμε εδώ ότι παρότι στον Η/Υ μπορούμε να αποθηκεύουμε πολύ μικρότερους αριθμούς από το 1e-16 η ακρίβεια των υπολογισμών δεν είναι αντίστοιχη. Όπως σε κάθε αναπαράσταση [[https://en.wikipedia.org/wiki/Floating_point | αριθμού κινητής υποδιαστολής]] η ακρίβεια υπολογισμών είναι ανάλογη με το μέγεθος της [[https://en.wikipedia.org/wiki/Significand| μάντισσας]] (πλήθος σημαντικών ψηφίων) και πάντα πεπερασμένη. 
 Και μια και θυμηθήκαμε αυτό ας θυμηθούμε και το άλλο: Και μια και θυμηθήκαμε αυτό ας θυμηθούμε και το άλλο:
 για τον ίδιο λόγο αποφεύγουμε τον έλεγχο ισότητας πραγματικών αριθμών. Αντί για το: για τον ίδιο λόγο αποφεύγουμε τον έλεγχο ισότητας πραγματικών αριθμών. Αντί για το:
Γραμμή 321: Γραμμή 334:
     ans =  2.22044604925031e-16     ans =  2.22044604925031e-16
 Μόλις ένα bit μεγαλύτερος από το x στο παραπάνω παράδειγμα ;-) Μόλις ένα bit μεγαλύτερος από το x στο παραπάνω παράδειγμα ;-)
 +
 +
 +
 +
 +
 +
 ======Συναρτήσεις====== ======Συναρτήσεις======
-Ε, αν δεν έχει η octave συναρτήσεις τότε ποιος έχει; +Ε, αν δεν έχει η octave συναρτήσεις τότε ποιος έχει; Κι είναι τόσο απλές που με ένα παράδειγμα θα γίνουν πλήρως κατανοητές. 
-Κι είναι τόσο απλές που με 2-3 παραδείγματα θα γίνουν πλήρως κατανοητές. +Ας ξεκινήσουμε: έχουμε την συνάρτηση fifi(x) = 2*x για x θετικό και 3*x για κάθε άλλη περίπτωση. Να πως γράφεται:
-Ας ξεκινήσουμε: +
-1ο παράδειγμα +
-Έχουμε την συνάρτηση fifi(x) = 2*x για x θετικό και 3*x για κάθε άλλη περίπτωση. Να πως γράφεται:+
     octave:1> function y=fifi(x)     octave:1> function y=fifi(x)
     > if x>0     > if x>0
Γραμμή 340: Γραμμή 356:
     y = -6     y = -6
     ans = -6     ans = -6
-Ας τα δούμε αναλυτικάΟι εντολές function και endfunction ορίζουν την αρχή και το τέλος της συνάρτησης. Η συνάρτηση έχει όνομα fifi ενώ x και y είναι οι τοπικές της μεταβλητές για να δείξουμε τι θέλουμε να κάνουμε. Στο παράδειγμά μας με y είναι η μεταβλητή που επιστρέφεται η τιμή αποτέλεσμα (αν υπάρχει) ενώ με x δίνεται η τιμή ορισμού (μπορεί να είναι περισσότερες από μία). Το σώμα της συνάρτησης ακολουθεί με χρήση των παραπάνω μεταβλητών και όποιων άλλων θέλουμε και όσο πολύπλοκο θέλουμε. Η δύναμη της octave φαίνεται αν συνεχίσουμε το παράδειγμα:+Ας τα δούμε αναλυτικά
 + 
 +Οι εντολές function και endfunction ορίζουν την αρχή και το τέλος της συνάρτησης. Η συνάρτηση έχει όνομα fifi ενώ x και y είναι οι τοπικές της μεταβλητές για να δείξουμε τι θέλουμε να κάνουμε. Στο παράδειγμά μας με y είναι η μεταβλητή που επιστρέφεται η τιμή αποτέλεσμα (αν υπάρχει) ενώ με x  δίνεται η τιμή ορισμού (μπορεί να είναι περισσότερες από μία). Το σώμα της συνάρτησης ακολουθεί με χρήση των παραπάνω μεταβλητών και όποιων άλλων θέλουμε και όσο πολύπλοκο θέλουμε. 
 + 
 +Η δύναμη της octave φαίνεται αν συνεχίσουμε το παράδειγμα:
     octave:4> a=[1 -2; 3 -4];     octave:4> a=[1 -2; 3 -4];
     octave:5> b=fifi(a);     octave:5> b=fifi(a);
Γραμμή 352: Γραμμή 372:
         3   -6         3   -6
         9  -12         9  -12
-Τι να πω; Τα πάντα όλα κάνει η octave. Και ας μην ξεχνάμε το τεράστιο πλήθος συναρτήσεων (μια ιδέα πήραμε νωρίτερα) οι οποίες είναι ήδη γραμμές ;-)+Τι να πω; Τα πάντα όλα κάνει η octave. Και ας μην ξεχνάμε το τεράστιο πλήθος συναρτήσεων (μια ιδέα πήραμε [[http://octave.sourceforge.net/functions_by_alpha.php|νωρίτερα]]) οι οποίες είναι ήδη γραμμένες ;-) 
 Καλά όλα αυτά αλλά θα πρέπει κάθε φορά να φτιάχνω την συνάρτηση και να την γράφω; Δεν μπορεί... κάπως θα γίνεται... Καλά όλα αυτά αλλά θα πρέπει κάθε φορά να φτιάχνω την συνάρτηση και να την γράφω; Δεν μπορεί... κάπως θα γίνεται...
-1o βήμα: +Φτιάχνουμε ένα αρχείο με το όνομα fifi.mπεριεχόμενα την συνάρτησή μας όπως πριν:
-Φτιάχνουμε ένα αρχείο με το όνομα fifi.m και περιεχόμενα την συνάρτησή μας όπως πριν:+
     function y=fifi(x)     function y=fifi(x)
         if x>0         if x>0
Γραμμή 364: Γραμμή 384:
     endfunction     endfunction
 και το αποθηκεύουμε στον φάκελο εργασίας μας. (Σημείωση: η στοίχιση είναι προαιρετική και εδώ έγινε γιατί έτσι με έμαθαν να κάνω οι δάσκαλοί μου καλή τους ώρα ;-) ) και το αποθηκεύουμε στον φάκελο εργασίας μας. (Σημείωση: η στοίχιση είναι προαιρετική και εδώ έγινε γιατί έτσι με έμαθαν να κάνω οι δάσκαλοί μου καλή τους ώρα ;-) )
 +
 Τώρα ανοίγουμε τo περιβάλλον και: Τώρα ανοίγουμε τo περιβάλλον και:
     octave:1> a=[1 -2; 3 -4];     octave:1> a=[1 -2; 3 -4];
Γραμμή 373: Γραμμή 394:
 Καλό, έτσι;  Καλό, έτσι; 
 Προσοχή λοιπόν στο όνομα της συνάρτησης και του αρχείου. Και μετά κάνουμε ότι θέλουμε :-) Προσοχή λοιπόν στο όνομα της συνάρτησης και του αρχείου. Και μετά κάνουμε ότι θέλουμε :-)
 +
 +
 ======Ομαδική εκτέλεση εντολών====== ======Ομαδική εκτέλεση εντολών======
-Αυτό το είδαμε στις συναρτήσειςΕδώ απλά θα δούμε ότι μπορούμε να αποθηκεύουμε πίνακες (γενικά κάθε μεταβλητή) σε αρχεία τύπου mat και φυσικά να εκτελούμε αρχεία συναρτήσεων / ομαδικών εντολών τύπου m.+Ομαδική εκτέλεση εντολών είδαμε με μορφή συνάρτησης σε αρχείο m. Εδώ επιπλέον θα δούμε ότι μπορούμε να αποθηκεύουμε πίνακες (γενικά κάθε μεταβλητή) σε αρχεία τύπου mat και φυσικά να εκτελούμε αρχεία συναρτήσεων / ομαδικών εντολών τύπου m.
 Εδώ: Εδώ:
     octave:1> A=[ 1 1; 2 1;3 1; 4 1];     octave:1> A=[ 1 1; 2 1;3 1; 4 1];
Γραμμή 380: Γραμμή 403:
     octave:3> save pinAB.mat A B     octave:3> save pinAB.mat A B
 αποθηκεύσαμε στο αρχείο  pinAB.mat τους πίνακες A και B. αποθηκεύσαμε στο αρχείο  pinAB.mat τους πίνακες A και B.
 +
 Το αρχείο αυτό έχει περιεχόμενα: Το αρχείο αυτό έχει περιεχόμενα:
     [chiossif@home-6400 ~]$ cat pinAB.mat      [chiossif@home-6400 ~]$ cat pinAB.mat 
Γραμμή 401: Γραμμή 425:
      7      7
      10      10
 +(Η εντολή cat είναι εντολή στο τερματικό bash του [[https://www.archlinux.org/|Archlinux]] το οποίο χρησιμοποιώ και για αυτό το wiki :-) Προφανώς είμαι εκτός octave)
 +
 και μετά μπορούμε με την load: και μετά μπορούμε με την load:
     octave:1> load pinAB.mat      octave:1> load pinAB.mat 
Γραμμή 424: Γραμμή 450:
     s =  1.4491     s =  1.4491
 για να γίνουν όλα :-) για να γίνουν όλα :-)
 +
 +
 +
 ======Βιβλιοθήκη επεξεργασίας εικόνας====== ======Βιβλιοθήκη επεξεργασίας εικόνας======
-Ναι... υπάρχει και είναι [http://octave.sourceforge.net/image/ | εδώ]. Εγκαταστήστε την και ξεκινάμε. +Ναι... υπάρχει και είναι [[http://octave.sourceforge.net/image/ | εδώ]]. Εγκαταστήστε την και ξεκινάμε. 
-Κατ'αρχήν και πάντα παραδοσιακά κατεβάζουμε στον υπολογιστή μας την [https://en.wikipedia.org/wiki/File:Lenna.png | Λένα].+Κατ'αρχήν και πάντα παραδοσιακά κατεβάζουμε στον υπολογιστή μας την [[https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png| Λέννα]].  
 + 
 +Με την ευκαιρία [[http://www.lenna.org/full/len_full.html|εδώ]] ολόκληρη η Λέννα για περισσότερες δοκιμές και [[http://www.cs.cmu.edu/~chuck/lennapg/|εδώ]] η ιστορία της ;-) 
 + 
 +Ξεκινάμε... 
 +(to be written - curently starring at [[http://www.lenna.org/full/len_full.html| Lenna's portait]] ;-) )
  
 ======Άλλες βιβλιοθήκες και πρόσθετο υλικό====== ======Άλλες βιβλιοθήκες και πρόσθετο υλικό======
octave.1390983181.txt.gz · Τελευταία τροποποίηση: 2020/11/21 09:52 (εξωτερική τροποποίηση)