Μέρος Τέταρτο - Scripts, Functions, Μέθοδος ελαχίστων τετραγώνων
Περιέχουν μία ακολουθία από συνήθεις εντολές του MATLAB οι οποίες εκτελούνται σειριακά μόλις δώσουμε το όνομα του αρχείου στο παράθυρο εντολών
Για να δημιουργήσω ένα script θα πρέπει απο το μενού να επιλέξω File, στη συνέχεια New και μετά Blank M-File.
Γράφω τις εντολές την μια κάτω απο την άλλη και στην συνέχεια αποθηκεύω το αρχείο με κατάληξη ".m"
Στο παράδειγμα της εικόνας το αρχείο αποθηκεύεται με όνομα FreeFall.m
Για να εκτελέσω το script επιστρέφω στο command window και γράφω απλά το όνομα του αρχείου (χωρίς την κατάληξη .m).
Στο παράδειγμα της εικόνας γράφω στο command window FreeFall
Τα function αρχεία δεν είναι παρά εντολές τις οποίες ορίζει ο ίδιος ο χρήστης
Για να δημιουργήσω ένα αρχείο function θα πρέπει απο το μενού να επιλέξω File, στη συνέχεια New και μετά Funcion M-File.
Για παράδειγμα ας υποθέσουμε ότι θέλουμε να δημιουργήσαμε μία εντολή με όνομα ForceGrav η οποία θα υπολογίζει την βαρυτική δύναμη μεταξύ δύο σημειακών μαζών m1 και m2 οι οποίες βρίσκονται σε απόσταση r. Δεδομένου ότι η σχέση που δίνει την βαρυτική δύναμη είναι F=G(m1*m2)/r2.
Γράφω τις εντολές την μια κάτω απο την άλλη και στην συνέχεια αποθηκεύω το αρχείο με κατάληξη ".m"
Στο παράδειγμα της εικόνας το αρχείο αποθηκεύεται με όνομα ForceGrav.m
Ένα αρχείο function ξεκινάει παντα με τη λέξη function και τελειώνει με end.
Οι γραμμές που ξεκινούν με % είναι σχόλια και δεν λαμβάνονται υπόψην από το matlab. Μπορούν να παραληφθούν.
Tο όνομα της συνάρτησης πρέπει να είναι το ίδιο με το όνομα του αρχείου (χωρίς την κατάληξη .m)
Οι μεταβλητές μέσα στις παρενθέσεις (m1, m2, r) αποτελούν τα ορίσματα εισόδου και είναι τα δεδομένα που θα εισάγει ο χρήστης όταν καλέσει την εντολή. Χωρίζονται μεταξύ τους με ,
Οι μεταβλητές μέσα στις αγκύλες [F] αποτελούν τις μεταβλητές στις οποίες αποθηκεύονται τα αποτελέσματα απο την εκτέλεση της function.
Για να εκτελέσω τη function επιστρέφω στο command window και γράφω
[F]=ForceGrav(1.7*10^(-27),9.1*10^(-31),5.3*10^(-11))
Στην θέση των μεταβλητών m1, m2, r έχω βάλει τις τιμές που έχουν τα αντίστοιχα μεγέθη. Το αποτέλεσμα αποθηκεύεται στην μεταβλητή F.
Με τη μέθοδο των ελαχίστων τετραγώνων προσπαθούμε να προσεγγίσουμε ένα σύνολο από διατεταγμένα ζεύγη (x,y) όσο το δυνατόν καλύτερα με μία καμπύλη
Σκοπός είναι να βρούμε μια ευθεία που να προσεγγιζει καλύτερα τα σημεία.
Το matlab για το σκοπό αυτό χρησιμοποιεί 2 συναρτήσεις. Την p=polifit(x,y,1) και την pc=polyval(p,x)
Σαν δεδομένα έχουμε τα σημεια με συντεταγμενες x,y.
Δημιουργούμε το διάνυσμα x και το διάνυσμα y.
Εκτελούμε την p=polyfit(x,y,1),η οποία μας δίνει σαν αποτέλεσμα ένα διάνυσμα που περιέχει τους συντελεστές a,b της ευθείας y(x)=ax+b που προσεγγιζει καλύτερα τα σημεία.
Χρησιμοποιούμε την pc=polyval(p,x) που μας δίνει ένα διάνυσμα pc, που τιμές του είναι οι τιμές της ευθείας y(x) για κάθε τιμή του αρχικού διανύμσατος x.
Εκτελούμε plot(x,pc).
Αν θέλω στο ίδιο γράφημα να έχω και τα αρχικά σημεία (x,y) τα οποία ήθελα να προσεγγίσω τότε εκτελώ plot(x,pc,x,y,"o") ,όπου τα αρχικά σημεία σημειώνονται με "ο"
x=[1:10];
y=[4.55,10.5,14.2,20.99,26.3,30.2,34.01,40.8,44.2,50.5];
p=polyfit(x,y,1)
pc=polyval(p,x)
plot(x,pc,x,y,"o")
/