Εισαγωγή στο προγραμματιστικό περιβάλλον Matlab 7 ~ 14
%σχόλια… Τα σχόλια σε ένα κείμενο source code (πηγαίου κώδικα) καθορίζονται από τα %{ (έναρξη σχολίου) και *%} (λήξη σχολίου). Πρέπει οι χαρακτήρες %{ και %} να σχηματίζουν ζεύγη. Κάθε γραμμή σχολίων πρέπει να αρχίζει με το σύμβολο % Ανάμεσα στα %{ και %}μπορούν να περιέχονται αριθμοί, χαρακτήρες και σύμβολα. Ό,τι περιέχεται ανάμεσα στους χαρακτήρες %{... %} ουσιατικά ‘προσπερνάται’ από τον compiler και αντιμετωπίζεται ως ένας χαρακτήρας κενού. Σκοπός του να γράφουμε σχόλια είναι να κάνουμε το πρόγραμμα πιο κατανοητό και καθαρό στην ανάγνωση καθώς παρέχουν εξηγήσεις για τμήματα του εκάστοτε προγράμματος.
Το MATLAB αντίθετα µε άλλες γλώσσες προγραµµατισµού δεν έχει τµήµα δήλωσης µεταβλητών (declaration statement). Εσωτερικά όµως καταγράφει πληροφορίες για τα δεδοµένα και τα κατατάσσει σε διαφορετικούς τύπους δεδοµένων, που στο MATLAB ονοµάζονται κλάσεις. Συνεπώς το MATLAB περιέχει διάφορους τύπους, όπως για παράδειγµα κελιά, δοµές, συµβολοσειρές και αραιές µήτρες, τις πολυδιάστατες µήτρες (multidimensional matrices) κ.α. To MATLAB έχει δυο συναρτήσεις για τον προσδιορισµό της κλάσης των τύπων δεδοµένων ( συναρτήσεις class και isa ). Πχ χ = 2; class(x) double X = ‘xaraktiras_os_metabliti’; class(x) char Μεταβλητές
Οι μεταβλητές στην Μatlab υπόκεινται σε λειτουργίες ξεχωριστών κλάσεων (αντικειμενοστραφής προγραμματισμός) Oι αλφαριθμητικές μεταβλητές αναγνωρίζονται μέσα σε εισαγωγικά ( ‘ ‘) ενώ οι μεταβλητές διπλής ακρίβειας καθώς και οι ακέραιοι εισάγονται χωρίς κάποια ιδιαιτερότητα. Πχ x = ‘name’ ; To χ αντιπροσωπεύει την μεταβλητή. Ακολουθεί το ίσον το οποίο θέτει μια συγκεκριμένη τιμή στην χ. Τέλος εκχωρείται η αλφαριθμητική τιμή – name -. Αντίστοιχα χ = 2.6; Eκχώριση της διπλής ακρίβειας(πραγματικής) τιμής 2.6
ΆΛΓΕΒΡΑ BOOLE Στις γλώσες προγραμματισμού οι οποίες έχουν ενσωματωμένο αυτόν τον τύπο δεδομένων, όπως η Pascal και η Java, η Fortran και η Matlab οι τελεστές σύγκρισης όπως ο '>' και ο '≠' επιστρέφουν συνήθως έναν τύπο δεδομένων Boolean. Οι τύποι δεδομένων Αληθείας ή Boolean, μπορούν να πάρουν δύο τιμές (συνήθως αναφέρονται ως Αληθής/True ή Ψευδής/False), και στον προγραμματισμό δίνουν το λογικό αποτέλεσμα 0 ή 1 Μηδέν αν η συνθήκη που εξετάζεται δεν είναι αληθής και 1 αν είναι αληθής. Πχ 4==4 (σε σύγκριση χρησιμοποιείται το διπλό ίσον και όχι το απλό ίσον το οποίο εκχωρεί τιμές σε μεταβλητές) 1 (ΛΟΓΙΚΟ ΑΠΟΤΕΛΕΣΜΑ ΑΛΗΘΕΙΑΣ ) Αντίστοιχα 4==5 θα επιστρέψει ως αποτέλεσμα το μηδέν αφού δεν επαληθεύεται η εν λόγω σχέση.
Το (4 > 3) είναι true. Το (4 3) && (3.0 > 2.0) είναι true Το (4 2.0) είναι false Αντίστοιχα αν χρειαστεί να εξετάσουμε αν κάποια από τις συνθήκες είναι αληθής τότε χρησιμοποιούμε || Το (4 > 3) || (3.0 > 2.0) είναι true Το (4 2.0) είναι true
Eπεξεργασία αλφαριθμητικών μεταβλητών (char class) Έστω ότι χ = ‘name’ ; y = ‘maria’ ; z = ‘anna’; H πράξη Q = x + y δεν μπορεί να πραγματοποιηθεί γιατί οι πίνακες έχουν διαφορετικό μέγεθος. Aντίθετα η πράξη Q = x + z μπορεί να πραγματοποιηθεί γιατί και οι δύο μεταβλητές καταλαμβάνουν ίδιο χώρο(πίνακα) Αποδεικνύεται με λογικό αποτέλεσμα (Boole άλγεβρα) αφού length(x) == length(z) ενώ length(x) == length(y) Το αποτέλεσμα Βοοle θα είναι -1- για την πρώτη περίπτωση(θετικό) και -0- στην δεύτερη περίπτωση δηλαδή αρνητικό. Το αποτέλεσμα Q = x + z θα είναι [ ]. (double class) Το αποτέλεσμα αυτό δεν είναι λάθος η περίεργο αφού η Matlab αντιλαμβάνεται την πράξη ως πράξη διπλής ακρίβειας(αντίληψη των χαρακτήρων υπό μορφή ascii). Αν θέλουμε να εμφανίσουμε το φυσιολογικό(στην λογική μας) αποτέλεσμα nameanna τότε θα πρέπει να πραγματοποιήσουμε συνένωση πινάκων. Δηλαδή Q = [ x z]; Το οποίο θα δώσει το αποτέλεσμα nameanna και μάλιστα θα είναι αλφαριθμητικό (char class) 4 ==4 4 ~=5
Eπεξεργασία πραγματικών μεταβλητών (double class) Έστω ότι χ = 1; y = 2 ; z = 3; H πράξη Q = x + y θα μας δώσει αποτέλεσμα 3. Αν πραγματοποιήσουμε συνένωση πινάκων σε μεταβλητές διπλής ακρίβειας τότε θα δημιουργήσουμε έναν καινούργιο πίνακα ο οποίος απλά θα περιέχει τις εκάστοτε μεταβλητές. Για παράδειγμα η συνένωση Q = [ x y]; Θα δώσει αποτέλεσμα 1 2 ΠΡΟΣΟΧΗ το αποτέλεσμα δεν είναι δώδεκα αλλά 1 και ως δεύτερο double στοιχείο το 2. Δηλαδή η μεταβλητή Q θα είναι ένας καινούργιος πίνακας με μέγεθος 2Χ1. Ισχύει Q = x + y + z ΑΠΟΤΕΛΕΣΜΑ : 6 μέγεθος πίνακα 1Χ1 Ισχύει Q = [ x y z ] ΑΠΟΤΕΛΕΣΜΑ : μέγεθος πίνακα 1Χ3
Έστω ο πίνακας: χ = -3 : 3 ( δηλαδή [ ] ) Η εντολή-συνάρτηση abs(χ) > 1 θα δώσει ως αποτέλεσμα _________________________________________________________________ Δηλαδή θα επιστραφεί ένας λογικός πίνακας με μονάδες -True- όπου η απόλυτη τιμή του χ είναι μεγαλύτερη από ένα και μηδενικά -False- οπουδήποτε αλλού. _________________________________________________________________ Η εντολή y = x ( abs ( x ) ) > 1 ) θα δημιουργίσει το άνυσμα y παίρνοντας εκείνες τις τιμές του χ των οποίων η απόλυτη τιμή είναι μεγαλύτερη από το 1. _________________________________________________________________ Το γεγονός ότι η εντολή abs(x)>1 παράγει τον πίνακα [ ],δεν συνεπάγεται ότι είναι ισοδύναμος με έναν αριθμητικό πίνακα ο οποίος περιέχει τις ίδιες τιμές… δηλαδή, έστω ότι y = x([ ]) και πατάμε ENTER. Το matlab πολύ ορθά θα επιστρέψει error παρόλο που και στις δύο περιπτώσεις φαίνεται να υπάρχει το ίδιο διάνυσμα! Το γεγονός αυτό οφείλεται στην διαφορά που υπάρχει μεταξύ αριθμητικών και λογικών πινάκων. Η διαφορά αυτή γίνεται για άλλη μια φορά αντιληπτή με την χρήση της εμφάνισης της κλάσης και στις δύο περιπτώσεις, αφού class(abs(x))>1 logical Και αντίστοιχα class([ ]) double
Μέχρι στιγμής εξετάσαμε πράξεις με απλούς αριθμούς (βαθμωτοί-scalar αριθμοί). Σε περίπτωση πράξεων με περισσότερα στοιχεία απαιτείται η δομή πινάκων. Έστω ότι θέλουμε να υπολογίσουμε τιμές της συνάρτησης ημιτόνου στο μισό της περιόδου της. Δηλαδή πρέπει να υπολογίσουμε την y = sin(x) στο τόξο 0<=χ<=π
Μέχρι στιγμής εξετάσαμε πράξεις με απλούς αριθμούς (βαθμωτοί-scalar αριθμοί). Σε περίπτωση πράξεων με περισσότερα στοιχεία απαιτείται η δομή πινάκων. Έστω ότι θέλουμε να υπολογίσουμε τιμές της συνάρτησης ημιτόνου στο μισό της περιόδου της. Δηλαδή πρέπει να υπολογίσουμε την y = sin(x) στο τόξο 0<=χ<=π
Μέχρι στιγμής εξετάσαμε πράξεις με απλούς αριθμούς (βαθμωτοί-scalar αριθμοί). Σε περίπτωση πράξεων με περισσότερα στοιχεία απαιτείται η δομή πινάκων. Έστω ότι θέλουμε να υπολογίσουμε τιμές της συνάρτησης ημιτόνου στο μισό της περιόδου της. Δηλαδή πρέπει να υπολογίσουμε την y = sin(x) στο τόξο 0<=χ<=π
ΒΗΜΑ 1: ΕΠΙΛΟΓΗ ΑΡΙΘΜΟΥ ΠΕΠΕΡΑΣΜΕΝΩΝ ΣΗΜΕΙΩΝ Μεταξύ του 0 μέχρι το π υπάρχει άπειρος αριθμός σημείων. Συνεπώς ανάλογα με την λεπτομέρεια που χρειαζόμαστε δημιουργούμε πίνακες αντίστοιχης λεπτομέρειας (αριθμός πεπερασμένων σημείων). ΒΗΜΑ 2: ΤΡΟΠΟΣ ΕΙΣΑΓΩΓΗΣ ΠΙΝΑΚΑ Σε περίπτωση που έχουμε λίγα σημεία, μπορούμε να τα εισάγουμε πληκτρολογώντας μεμονωμένα κάθε στοιχείο. Για παράδειγμα αν το βήμα δειγματοληψίας θεωρηθεί το π/2 τότε έχουμε: χ = [ 0 π/2 π]; Σε περίπτωση που το βήμα δειγματοληψίας είναι πολύ μικρό συνίσταται η χρήση 1) διανύσματος με την σημειογραφία άνω κάτω τελεία 2) διανύσματος με την βοήθεια της εντολής linspace Στην πρώτη περίπτωση έχουμε χ = ( αρχή : βήμα : τέλος ) Έστω ότι το βήμα είναι 0,1 τότε : χ = ( 0 :.1 : 1 ) * p Στην δεύτερη περίπτωση θα έχουμε χ = linspace( πρώτη_τιμή, τελευταία_τιμή, πλήθος_τιμών) χ = ( 0,p,10)
ΥΛΟΠΟΙΗΣΗ ΤΗΣ Y = sin(x) ΒΗΜΑ 1: καθορισμός ανύσματος χ (άξονας χ ) x = [1 :.1 : 2*pi] Μεταβλητή χ Εντολή εκχώρησης Αγκύλη που σηματοδοτεί την αρχή ενός πίνακα Αρχή (πρώτο στοιχείο) Βήμα έως 2π Επιτρέπονται οι πράξεις κατά την δομή πίνακα
ΒΗΜΑ 2: καθορισμός ανύσματος y (άξονας y ) Στην εν λόγω περίπτωση έχουμε την συνάρτηση sin y = sin(x) Πίνακας διαστάσεως ίσος με length(x) 1Χ53 Πίνακας χ με μέγεθος 1Χ53 (1 στήλη και 53 στήλες-καταχωρήσεις ) Συνεπώς για κάθε τιμή του χi του ανύσματος χ αντιστοιχίζεται η τιμή sin(xi) στον πίνακα y. Tέλος με την εντολή plot(x,y) θα αποδώθεί γραφικά η συμπεριφορά της συνάρτησης (1 Figure 1 Axes)
0~2π (6 σημεία) 0~2π (100 σημεία)
Μatlab τιμές - Tελεστής / Τρεις διαφορετικές περιπτώσεις διαίρεσης με την ύπαρξη μηδενικού στοιχείο διπλής ακρίβειας(boulbe) 1/0 Ιnf (άπειρο) 0/1 0 (μηδέν) 0/0 NaN (όχι αριθμός)
yy(10:14) = 0; yy(20:24) = 0; yy(30:34) = 0; yy(10:14) = ΝaΝ; yy(20:24) = NaN; yy(30:34) = NaN; ΣΗΜΑΣΙΑ ΤΩΝ ΜΗΔΕΝΙΚΩΝ ΚΑΙ ΝaN ΣΤΟΙΧΕΙΩΝ
ΝaN και Empty matrices Στην επιστήμη των υπολογιστών, το NaN, είναι συντομογραφία του not a number, και είναι μια τιμή που μπορει να πάρει κάποια μεταβλητή που λαμβάνει είτε μια αδιευκρίνιστη τιμή, είτε μια τιμή που δεν μπορεί να αναπαρασταθεί. Η τεχνική της εισόδου NaN τιμής εμφανίστηκε το 1985 απο το Institute of Electrical and Electronics Engineers (IEEE). Υπάρχουν δύο ξεχωριστά είδη ΝaN. Το πρώτο αναφέρεται σε λάθη που προκύπτουν από πράξεις ή μη έγκυρες τιμές ενώ η δεύτερη περιλαμβάνει μια σειρά από ιδιότητες που μπορούν να υποστούν αριθμητική επεξεργασία όπως ανάμιξη αριθμητικών στοιχείων με συμβολοχαρακτήρες (αν δεν υπάρχει αυτόματη μετατροπή και ανοχή σε πράξεις (ascii). Επίσης η τετραγωνική ρίζα ενός αρνητικού αριθμού μπορεί να αποθηκευτεί ως NaN σε περιπτώσεις που έχει απενεργοποιηθεί η ανάκληση συναρτήσεων και ιδιοτήτων μιγαδικών (αντικειμενοστραφής προγραμματισμός). Τα ΝaΝ στοιχεία αφήνουν απλά οπές(κενά) ως προς την εκάστοτε γραφική επεικόνιση.
Έστω ότι a = [ 1 2 nan inf nan] (τα ΝaN δεν χαρακτηρίζονται case sensitive) 1)B = a * 2 ; [2 4 nan inf nan] 2)C = (a==nan) [ ] αντίστοιχα D = (a~=nan) [ ] Το πρώτο παράδειγμα δίνει αποτέλεσμα nan για δειδομένα εισόδου nan. Όμως το παράδειγμα 2 δίνει περίεργα αποτελέσματα. Το γεογονός αυτό δείχνει ότι τα nan στοιχεία δεν είναι ίσα μεταξύ τους. Η συνάρτηση isnan είναι η μόνη που μπορεί να μας δώσει ορθά αποτελέσματα εύρεσης nan στοιχείων. 3) I = find(isnan(a)) % pragmatopoioyme eyresh arithmodeikton nan stoixeion I = [3 5] Συνεπώς αν θέλουμε να αλλάξουμε τα nan σε μηδενικά στοιχεία(αριθμοί) 4) a(i) = zeros(size(i)) [1 2 0 inf 0]
Αν και τα nan μαθηματικά ορίζονται καλά από τα πρότυπα της IEEE οι κενοί πίνακες ορίζονται από τους δημιουργούς του Matlab και έχουν δικές του ενδιαφέρουσες ιδιότητες. Οι κενοί πίνακες είναι ουσιαστικά μεταβλητές οι οποίες έχουν μηδενικό μήκος σε μία ή περισσότερες διαστάσεις. Έστω size([]) 0 0 C = zeros(0,5) Empty matrix: 0-by-5 %δηλαδή [] πίνακας πολλών στηλών size(C ) 0 5 Στο Μatlab πολλές συναρτήσεις επιστρέφουν κενούς πίνακες όταν δεν είναι κατάλληλο κανένα άλλο αποτέλεσμα. Έστω χ = -2 : 2 y = find(x>2) Empty matrix: 1-by-0 H isempty συνάρτηση είναι η μόνη που αναγνωρίζει κενούς πίνακες
Flow chart για την εκτέλεση ενός προγράμματος στη Matlab Source code Compiler mcr Γλωσσα μηχανης Εκτέλεση αλγόριθμου / exe με dll Έλεγχος σφαλμάτων Αποτελέσματα στο root τερματικό
Έλεγχος ροής εκτέλεσης προγράμματος 5 δομές επανάληψη Βρόχος FOR Βρόχος WHILE επιλογές ροής IF … THEN …. ELSE SWITCH …. CASE TRY …. CATCH
Παράδειγμα εντολής - if – If statement >= variable εντολές end Διάγραμμα ροής - if - false εντολές Statement >= variable true
Παράδειγμα εντολής - if – If statement >= variable εντολές end Διάγραμμα ροής - if - false εντολές Statement >= variable true Περιπτώσεις nested if δομής If statement1 >= x && statement2 <= y || strcmp(statement3,’xy’) if statement1 >= z && ( statement2 <= q || strcmp(statement3,’var’) ) … end
Παράδειγμα εντολής - if – If statement >= variable εντολές end Διάγραμμα ροής - if - false εντολές Statement >= variable true Περιπτώσεις elseif δομής If statement1 >= x && statement2 <= y || strcmp(statement3,’xy’) edoles elseif (statement1 >= z && ( statement2 <= q || strcmp(statement3,’var’) ) ) edoles else edoles end
Παράδειγμα εντολής - switch – switch switch_expression case case_expression εντολές end switch switch_expression case case_expression statements case case_expression statements... otherwise statements end
Παράδειγμα εντολής - switch – switch switch_expression case case_expression εντολές end switch switch_expression case case_expression statements case case_expression statements... otherwise statements end παράδειγμα num = input(‘ pliktrologise enan arithmo'); switch num case -1 disp(‘arnitiko') case 0, disp(‘miden'), otherwise, disp(‘kati alo'), end
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false προηγούμενες εντολές εντολές
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false sum = 0; εντολές Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false sum = 0; εντολές OΘΟΝΗ (ROOT) Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for … true false sum = 0; εντολές OΘΟΝΗ (ROOT) Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; εντολές OΘΟΝΗ (ROOT) i=1 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) i=1 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 i=1 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 i=2 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 i=3 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 sum = 10 i=4 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 sum = 10 i=5 Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’)
Παράδειγμα εντολής - for – for variable = start : step : end εντολές end Διάγραμμα ροής - for - for i =1:1:4 true false sum = 0; sum = sum + i Έστω ο παρακάτο αλγόριθμος sum = 0; for I = 1 : 1 : 4 sum = sum + i end disp(‘telos’) OΘΟΝΗ (ROOT) sum = 1 sum = 3 sum = 6 sum = 10 telos i=5 disp(‘telos’)
Παράδειγμα εφαρμογής εντολής βρόχου for Εφαρμογή προσέγγισης ενός ολοκληρώματος Αριθμητική μέθοδος υπολογισμού ενός ορισμένου ολοκληρώματος Αθροίσματα Riemann
function [I] = reimann_prosegisi(f,a,b,n) x=linspace(a,b,n+1); d = x(2)-x(1)/2; Y=feval(f,x); Yleft=Y(1:n); I=sum(diff(x).*Yleft); % Draw area xnew=linspace(a,b,1001); ynew=feval(f,xnew); hf =plot(xnew,ynew); xlabel('x'); ylabel('y'); hold on for i=1:n xx(1)=x(i); yy(1)=0; xx(2)=x(i+1); yy(2)=0; xx(3)=x(i+1); yy(3)=feval(f,xx(1)); xx(4)=x(i); yy(4)=feval(f,xx(1)); fill(xx,yy,[0 1 0]),end aa = title('Graph of Sine and Cosine Between -2\pi and 2\pi'); set(aa,'String',[' Prosegisi Riemann SE: ' num2str(i) ' ATHROISMATA = ' num2str(I) ]) plot(xnew,ynew); plot(x,Y,'ro') hold off
Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n)
Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file)
Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace
Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace Όνομα συνάρτησης (το *.m αρχείο θα πρέπει να αποθηκευτεί με την ίδια ονομασία )
Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace Όνομα συνάρτησης (το *.m αρχείο θα πρέπει να αποθηκευτεί με την ίδια ονομασία ) Μεταβλητές εισόδου στο current function workspace
Η πρώτη εντολή μιας συνάρτησης Matlab ορίζεται ως εξής: function [I] = reimann_prosegisi(f,a,b,n) Ορισμός συνάρτησης (m file) Μεταβλητές εξόδου για το main workspace Όνομα συνάρτησης (το *.m αρχείο θα πρέπει να αποθηκευτεί με την ίδια ονομασία ) Μεταβλητές εισόδου στο current function workspace function [ var_exit_1 ] = name_of_function [var_input_1]
Έστω ότι η συνάρτηση f(x) συνεχής στο διάστημα ολοκλήρωσης [ a, b ] Διαμερίζοντας το διάστημα a ~ b σε n υποδιαστήματα ίσου μήκους Δχ = ( b – a ) / n με κομβικά σημεία τα χ 0 = a χ 1 = a + Δχ χ 2 = a + 2*Δχ. χ n = a + n*Δχ όπου ισούται με b παίρνουμε τα αθροίσματα της αρχικής μορφής (βλέπε τίτλο διαφάνειας) τα οποία καλούνται και αθροίσματα Reimann (αριστερό και δεξιό, αντίστοιχα). Για πεπερασμένο αριθμό κομβικών σημείων (δηλαδή δεν πάρουμε το όριο όταν το n τείνει στο άπειρο) τότε έχουμε μια προσέγγιση για το ολοκλήρωμα, το οποίο αποδίδεται γραφικά στην επόμενη διαφάνεια. a b
Τέλος Εισαγωγής στο προγραμματιστικό περιβάλλον Matlab 7
αυτά… ευχαριστώ