Το πρόβλημα. Έχουμε έναν κύκλο με μοναδιαία ακτίνα. Η εξίσωσή του θα είναι:

Σχετικά έγγραφα
ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 3

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5

Το πρόβλημα: Εμβαδόν σφαίρας

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Δομές επανάληψης

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 1

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

Γενικός τρόπος σύνταξης: Όνομα_συνάρτησης(όρισμα1,όρισμα2,,όρισμαΝ) Η ονομασία τους είναι δεσμευμένη. Παραδείγματος χάριν: sin(x) cos(x) tan(x) exp(x)

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Εργαστήριο Μαθηματικής Ανάλυσης Ι. Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις. Πανεπιστήμιο Θεσσαλίας. Σχολή Θετικών Επιστημών

Ψευδοκώδικας. November 7, 2011

Εισαγωγή στην Αριθμητική Ανάλυση

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Γραφικές παραστάσεις (1ο μέρος)

Συστήματα Αναμονής (Queuing Systems)

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 1: Εισαγωγή

3) το παράθυρο Πίνακας τιμών όπου εμφανίζονται οι τιμές που παίρνουν οι παράμετροι

Γραφικές παραστάσεις (2ο μέρος)

5 η ΕΝΟΤΗΤΑ Γραφήματα στο MATLAB

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Εργασία 2. Παράδοση 20/1/08 Οι ασκήσεις είναι βαθμολογικά ισοδύναμες

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

ΓΥΜΝΑΣΙΟ ΚΑΣΤΕΛΛΑΝΩΝ ΜΕΣΗΣ ΑΛΓΕΒΡΑ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 5: Πίνακες [1/2] (Διανύσματα)

Οι εντολές ελέγχου της ροής ενός προγράμματος.

2. Δισδιάστατα γραφικά

1 ΘΕΩΡΙΑΣ...με απάντηση

Παράδειγμα «Ημίτονο και ζωγραφική!»: Έχει δει στα μαθηματικά τη γραφική παράσταση της συνάρτησης του ημιτόνου; Σας θυμίζει κάτι η παρακάτω εικόνα;

Στοιχεία Συναρτήσεων. 1. Να βρεθεί το πεδίο ορισμού των παρακάτω συναρτήσεων: στ. x 1

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

Βασικές Γνώσεις Μαθηματικών Α - Β Λυκείου

Μαθηματικά Α' Γυμ. - Ερωτήσεις Θεωρίας 1 ΕΡΩΤΗΣΕΙΣ. (1) Ποιοι είναι οι φυσικοί αριθμοί; Γράψε τέσσερα παραδείγματα.

Επαναληπτικές Διαδικασίες

Θέματα Προγραμματισμού Η/Υ

ds ds ds = τ b k t (3)

1,y 1) είναι η C : xx yy 0.

ΣΧΕ ΙΑ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ ΤΟΥ ΜΑΘΗΤΗ. ( Κεφάλαιο 4ο : Κωνικές τοµ ές)

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Παιχνιδάκια με τη LOGO

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ ΜΙΑ ΠΡΟΕΤΟΙΜΑΣΙΑ ΓΙΑ ΤΙΣ ΕΞΕΤΑΣΕΙΣ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 3)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

4. Εισαγωγή στο Matlab

Μαθηματικά Β Γυμνασίου. Επανάληψη στη Θεωρία

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

ΘΕΩΡΙΑ ΜΑΘΗΜΑΤΙΚΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή DO ; ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΗ DO. Όταν απαιτείται να εκτελεστεί πολλές φορές το ίδιο τμήμα ενός προγράμματος.

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

Ορισμός Τετραγωνική ονομάζεται κάθε συνάρτηση της μορφής y = αx 2 + βx + γ με α 0.

Περιεχόμενα. 26 Γραφικά δύο διαστάσεων Γραφικά τριών διαστάσεων... 45

Ιωάννης Σ. Μιχέλης Μαθηματικός

Κεφάλαιο 8: Ελεύθερη πτώση

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

117 ΑΣΚΗΣΕΙΣ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΤΕΥΘΥΝΣΗΣ Β ΛΥΚΕΙΟΥ Μανώλη Ψαρρά. Μαθηματικού

8. Σύνθεση και ανάλυση δυνάμεων

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 17

Εισαγωγή στην πληροφορική

i) Αν (,, ) είναι μια πυθαγόρεια τριάδα και είναι ένας θετικός ακέραιος, να αποδείξετε ότι και η τριάδα (,,

ΜΑΘΗΜΑΤΙΚΑ ΚΑΤΕΥΘΥΝΣΗΣ

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 14

ΜΑΘΗΜΑΤΙΚΑ MATHEMATICS

ΘΕΜΑ 2. Θεωρούμε την ακολουθία (α ν ) των θετικών περιττών αριθμών: 1, 3, 5, 7,

ΑΛΓΕΒΡΑ - ΚΕΦΑΛΑΙΟ 4ο Εξισώσεις - Ανισώσεις Δευτέρου Βαθμού

Βασικά στοιχεία στο Matlab

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

) = Απόσταση σημείου από ευθεία. Υπολογισμός Εμβαδού Τριγώνου. και A

2. Πόσοι ακέραιοι αριθμοί μεταξύ του 10 και του 100 αυξάνονται κατά 9 μονάδες, όταν αντιστραφούν τα ψηφία τους; Γ. Αν, Δ. Αν, τότε. τότε.


Μελετήστε την θεωρία που αφορά Επαναληπτικές Μεθόδους Επίλυσης Γραμμικών Συστημάτων.

Συστήματα συντεταγμένων

Α ΜΕΡΟΣ - ΑΛΓΕΒΡΑ. Α. Οι πραγματικοί αριθμοί και οι πράξεις τους

Εργαστήριο Γραμμικής Άλγεβρας. H Matlab ως γλώσσα προγραμματισμού

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Γ. Ν. Π Α Π Α Δ Α Κ Η Σ Μ Α Θ Η Μ Α Τ Ι Κ Ο Σ ( M S C ) ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ. ΠΡΟΓΡΑΜΜΑ: Σπουδές στις Φυσικές Επιστήμες

2.2.7 Τίτλος στη γραφική παράσταση

MAΘΗΜΑΤΙΚΑ. κριτήρια αξιολόγησης B ΓΥΜΝΑΣΙΟΥ. Πέτρος Μάρκος

Α Λυκείου Άλγεβρα Τράπεζα Θεμάτων Το Δεύτερο Θέμα

ΘΕΜΑ 2. βρείτε. (Μονάδες 15) με διαφορά ω.

ΜΑΘΗΜΑΤΑ ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ

ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

ΕΠΑΝΑΛΗΨΗ Β ΓΥΜΝΑΣΙΟΥ ΑΛΓΕΒΡΑ

2 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Περι-γράφοντας... βρόχους

Transcript:

Το πρόβλημα 1 x y Έχουμε έναν κύκλο με μοναδιαία ακτίνα. Η εξίσωσή του θα είναι: x 2 + y 2 = 1 2

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

Το πρόβλημα Το εμβαδόν του μοναδιαίου κύκλου θα είναι: Α = 1 2 π = π Το εμβαδόν του εγγεγραμμένου πολυγώνου θα είναι: A n = n 2 sin 2π n Το εμβαδόν του περιγεγραμμένου πολυγώνου θα είναι: B n = n tan π n Είναι προφανές πως για τα εμβαδά ισχύει: Α n < π < B n

Το πρόβλημα Ο μέσος όρος των εμβαδών των δύο πολυγώνων θα είναι: p n = A n + B n 2 Το οποίο αποτελεί μια προσέγγιση του π, με απόλυτο σφάλμα που ικανοποιεί την ανισότητα: p n π < B n A n Και το οποίο είναι προφανές πως τείνει στο μηδέν καθώς το n.

Το πρόβλημα Να γραφεί πρόγραμμα που να ζητάει την είσοδο μιας θετικής πραγματικής ανοχής δ και να εμφανίζει την τιμή του p n, όπου n είναι ο μικρότερος ακέραιος για τον οποίο ισχύει: Α n Β n δ Αυτό εξασφαλίζει πως η απόσταση του p n από το π είναι το πολύ δ. p n π δ Σύμφωνα με τις σχέσεις που είδαμε πιο πάνω, θα αναπτύξουμε ένα πρόγραμμα που θα εξετάζει την προσέγγιση του p n προοδευτικά (με την αύξηση του n). Μπορούμε να δοκιμάσουμε τιμές για το n (10, 100, κλπ).

Το πρόγραμμα n = 10; for k = 1:8 A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); rho_n = (A_n + B_n)/2; fprintf('n = %3.2e A_n = %18.16f B_n = %18.16f rho_n - pi = %4.2e\n',n,A_n,B_n,abs(pi-rho_n)) n = 10*n; end Εάν το τρέξουμε θα πάρουμε τα εξής αποτελέσματα:

n = 1.00e+01 A_n = 2.9389262614623659 B_n = 3.2491969623290631 rho_n - pi = 4.75e-02 n = 1.00e+02 A_n = 3.1395259764656687 B_n = 3.1426266043351152 rho_n - pi = 5.16e-04 n = 1.00e+03 A_n = 3.1415719827794755 B_n = 3.1416029890561563 rho_n - pi = 5.17e-06 n = 1.00e+04 A_n = 3.1415924468812859 B_n = 3.1415927569440529 rho_n - pi = 5.17e-08 n = 1.00e+05 A_n = 3.1415926515227079 B_n = 3.1415926546233357 rho_n - pi = 5.17e-10 n = 1.00e+06 A_n = 3.1415926535691225 B_n = 3.1415926536001288 rho_n - pi = 5.17e-12 n = 1.00e+07 A_n = 3.1415926535895866 B_n = 3.1415926535898966 rho_n - pi = 5.15e-14 n = 1.00e+08 A_n = 3.1415926535897909 B_n = 3.1415926535897944 rho_n - pi = 4.44e-16 n A_n B_n rho_n - pi 1.00e+01 2.9389262614623659 3.2491969623290631 1.00e+02 3.1395259764656687 3.1426266043351152 4.75e-02 5.16e-04 1.00e+03 3.1415719827794755 3.1416029890561563 5.17e-06 1.00e+04 3.1415924468812859 3.1415927569440529 5.17e-08 1.00e+05 3.1415926515227079 3.1415926546233357 5.17e-10 1.00e+06 3.1415926535691225 3.1415926536001288 5.17e-12 1.00e+07 3.1415926535895866 3.1415926535898966 5.15e-14 1.00e+08 3.1415926535897909 3.1415926535897944 4.44e-16 Από τις τιμές του σφάλματος, φαίνεται πως η τάξη μεγέθους του είναι περίπου: 1/n 2

Με την χρήση της εντολής for δεν έχουμε την δυνατότητα να ελέγχουμε την ποιότητα του αποτελέσματος, ώστε να σταματήσουμε τις προσεγγίσεις όταν αυτή μας ικανοποιεί. Η φιλοσοφία της εντολής αυτής είναι: Αν B 3 A 3 > δ τότε το p 3 δεν είναι αρκετά καλό και το n >3. Διαφορετικά n = 3. Αν B 4 A 4 > δ τότε το p 4 δεν είναι αρκετά καλό και το n >4. Διαφορετικά n = 4. Αν B 5 A 5 > δ τότε το p 5 δεν είναι αρκετά καλό και το n >5. Διαφορετικά n = 5...

Πρόκειται για μια επαναληπτική διαδικασία ανοικτού τύπου, αφού δεν ξέρουμε πόσες επαναλήψεις πρέπει να πραγματοποιηθούν. Η εντολή for είναι καλή όταν ξέρουμε από τα πριν τον αριθμό των επαναλήψεων που πρέπει να πραγματοποιηθούν. Για την περίπτωση που θέλουμε να σταματήσουν οι επαναλήψεις όταν πληρούται μια συνθήκη (π.χ. ικανοποιητικό σφάλμα), χρειαζόμαστε μία εντολή while:

delta = input('enter the error tolerance:'); n = 3; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; while ErrorBound > delta n = n+1; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; end nstar = n; rho_nstar = (A_n + B_n)/2; Η δομή της λειτουργίας της εντολής-βρόχου while είναι ανάλογη της λειτουργίας της εντολής-βρόχου for

Λογική Έκφραση Λέξεις Κλειδιά while ErrorBound > delta n = n+1; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; end Το σώμα του Βρόχου Υπάρχει το επαναλαμβανόμενο τμήμα του κώδικα: το σώμα του βρόχου, που επαναλαμβάνεται όσο η λογική έκφραση παραμένει αληθής. Αυτή η διαδικασία ελέγχου-εκτέλεσης τερματίζεται όταν η λογική έκφραση γίνει ψευδής.

Στον βρόχο while η επαναληπτική διαδικασία ελέγχεται από την λογική έκφραση και οι μεταβλητές που συμμετέχουν πρέπει να αρχικοποιηθούν πριν την είσοδο στον βρόχο. Ένας κίνδυνος που υπάρχει στον βρόχο while είναι να μην τερματίζει ποτέ. Στην εφαρμογή μας, για κάθε θετικό δ, το B n A n θα γίνει τελικά μικρότερο του δ, πράγμα που εξασφαλίζει πως οι επαναλήψεις θα τερματισθούν. Γενικά όμως πρέπει να λαμβάνουμε τα μέτρα μας ώστε να μην «πέφτει ο βρόχος σε πηγάδι». Αυτό γίνεται με την ρύθμιση της λογικής έκφρασης, ώστε να γίνεται ψευδής πέρα από έναν αριθμό επαναλήψεων.

Στην περίπτωσή μας π.χ. χρησιμοποιούμε την μεταβλητή nmax η οποία ορίζει πως οι επαναλήψεις θα συνεχίζονται όσο το όριο του σφάλματος είναι πολύ μεγάλο και το n δεν έχει φτάσει στην τιμή nmax. Είναι επίσης πολύ χρήσιμο να ορίζονται όλες οι εμπλεκόμενες μεταβλητές. Στην εφαρμογή μας π.χ. αυτές είναι: n : Το πλήθος των ακμών του τρέχοντος πολυγώνου A_n: Το εμβαδόν A n του τρέχοντος εγγεγραμμένου πολυγώνου B_n: Το εμβαδόν B n του τρέχοντος περιγεγραμμένου πολυγώνου ErrorBound: Η διαφορά εμβαδών B n A n

% Script Eg2_2 % Προσέγγιση του π μέσω πολυγώνων % Δώσε τις παραμέτρους επανάληψης... clc delta = input('δώσε την ανοχή του σφάλματος:'); nmax = input('δώσε το όριο των επαναλήψεων:'); % Η περίπτωση τριγώνου... n = 3; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; % Αριθμός ακμών πολυγώνου % Εγγεγραμμένη περιοχή % Περιγεγραμμένη περιοχή % Το όριο σφάλματος % Επανέλαβε όσο το σφάλμα είναι πολύ μεγάλο και το n αρκετά μικρό... while (ErrorBound > delta && n < nmax) n = n+1; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; end % Εμφάνισε την τελική προσέγγιση... nstar = n; rho_nstar = (A_n + B_n)/2; clc fprintf(' delta = %10.3e\n nstar = %1d\n nmax = %1d\n\n', delta,nstar,nmax) fprintf(' rho_nstar = %20.15f\n Pi = %20.15f\n', rho_nstar,pi)

% Script Eg2_2 % Προσέγγιση του π μέσω πολυγώνων % Δώσε τις παραμέτρους επανάληψης... clc delta = input('δώσε την ανοχή του σφάλματος:'); nmax = input('δώσε το όριο των επαναλήψεων:'); % Η περίπτωση τριγώνου... n = 3; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; % Αριθμός ακμών πολυγώνου % Εγγεγραμμένη περιοχή % Περιγεγραμμένη περιοχή % Το όριο σφάλματος

% Επανέλαβε όσο το σφάλμα είναι πολύ μεγάλο και το n αρκετά μικρό... while (ErrorBound > delta && n < nmax) n = n+1; A_n = (n/2)*sin(2*pi/n); B_n = n*tan(pi/n); ErrorBound = B_n - A_n; end % Εμφάνισε την τελική προσέγγιση... nstar = n; rho_nstar = (A_n + B_n)/2; clc fprintf(' delta = %10.3e\n nstar = %1d\n nmax = %1d\n\n',... delta,nstar,nmax) fprintf(' rho_nstar = %20.15f\n Pi = %20.15f\n',... rho_nstar,pi)

Εάν τρέξουμε το πρόγραμμα θα έχουμε τα εξής αποτελέσματα: delta = 1.000e-06 nstar = 5569 nmax = 10000 rho_nstar = 3.141592486963389 Pi = 3.141592653589793

Συστάσεις για τις εντολές επανάληψης for, while Οι δύο αυτές εντολές-βρόχοι, αποτελούν μία από τις μεγαλύτερες προκλήσεις στην επίλυση ενός υπολογιστικού προβλήματος και η «κατάκτησή» τους είναι πολύ σημαντική στην βελτίωση της προγραμματιστικής μας ικανότητας. Η εμπειρία μας διδάσκει για το πότε είναι καλύτερα να ελέγξουμε την επανάληψη, χρησιμοποιώντας την μία ή την άλλη εντολή. Εάν ο αριθμός των επαναλήψεων είναι από τα πριν γνωστός, τότε η εντολή for είναι καλύτερη.

Συστάσεις για τις εντολές επανάληψης for, while Χρησιμοποιούμε προγραμματιστικά σχόλια για τον ακριβή ορισμό των μεταβλητών της επαναληπτικής διαδικασίας. Σιγουρευόμαστε ότι οι μεταβλητές αυτές έχουν αρχικοποιηθεί σωστά, πριν την ένταξη στον βρόχο. Για τον βρόχο for προσέχουμε το εύρος των τιμών του μετρητή να είναι σωστό.

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

Επισκόπηση της εντολής επανάληψης while while λογική έκφραση τμήμα κώδικα end Στην αρχή υπολογίζεται το κριτήριο επανάληψης, και εάν είναι αληθές, εκτελείται το σώμα του βρόχου. Εάν είναι ψευδές, τότε η ροή περνάει στην επόμενη εντολή, μετά το end. Μετά από κάθε εκτέλεση του σώματος του βρόχου η λογική έκφραση υπολογίζεται ξανά και, αν είναι αληθής, εκτελείται πάλι το σώμα του βρόχου.

Παραδείγματα k = 1; n = 10; while k<=n fprintf('k = %1d\n',k) k=k+1; end k = 1; while 4^k < 1000000 k=k+1 end fprintf('k = %1d\n',k)

Πλήκτρο πανικού Όπως προκύπτει και από τα παραπάνω, είναι εμφανής ο κίνδυνος να «πέσει» το πρόγραμμα σε μία ατέρμονη διαδικασία επαναλήψεων χωρίς τέλος. Στην περίπτωση αυτή, υπάρχει η πρόβλεψη να σταματήσουμε το πρόγραμμα με το πάτημα των πλήκτρων Ctrl και c, αρκεί ο cursor να βρίσκεται μέσα στο παράθυρο εντολών του Matlab.

Η εντολή break Η εντολή αυτή μπορεί να χρησιμοποιηθεί για τον τερματισμό ενός βρόχου. Τυπικά, κάνει έναν βρόχο for να λειτουργεί σαν βρόχος while. Η χρήση της δεν συνιστάται. Για παράδειγμα, οι δύο κώδικες που ακολουθούν, είναι ισοδύναμοι: s = 0; for k = 1:1000 s = s + k; if s>100 break end end fprintf('s = %1d',s) s = 0; k = 1; while s<=100 s = s + k; k = k + 1; end fprintf('s = %1d',s)

Το πρόβλημα Οι αριθμοί Fibonacci f 0, f 1, ορίζονται αναδρομικά (recursive). Ξεκινάμε θέτοντας f 0 = 0 και f 1 = 1. Για n μεγαλύτερο ή ίσο του 1, αναφερόμαστε στον f n και f n 1 σαν τον «τρέχοντα» και τον «προηγούμενο» αριθμό Fibonacci, αντίστοιχα. Ο «επόμενος» αριθμός Fibonacci f n+1 δίνεται από την σχέση: f n+1 = f n + f n 1 Αποδεικνύεται πως οι λόγοι: r n = f n+1 f n Συγκλίνουν στην χρυσή αναλογία: φ = 1 + 5 2

Το πρόβλημα Να γραφεί ένα πρόγραμμα που να εμφανίζει τις τιμές των: n, f n, r n, φ r n, για n = 1: n, όπου n είναι η μικρότερη τιμή του n τέτοια ώστε r n r n+1 10 15. Η τιμή φ = 1+ 5 2 1, 618 είναι η περίφημη χρυσή τομή και βρέθηκε από τους αρχαίους έλληνες. Αποτελεί έναν από τους πιο ενδιαφέροντες αριθμούς στα μαθηματικά. Η χρυσή τομή αναφέρεται επίσης και ως χρυσός λόγος ή χρυσός κανόνας. Άλλα ονόματα είναι χρυσή μετριότητα και Θεϊκή αναλογία ενώ στον Ευκλείδη ο όρος ήταν "άκρος και μέσος λόγος".

Η αναλογία αυτή, για παράδειγμα, καθιστά ένα ορθογώνιο παραλληλόγραμμο πιο ευχάριστο αισθητικά. W = 1 L = 1 + 2 5 Το χρυσό ορθογώνιο

Για να πάρουμε την χρυσή αναλογία από τους αριθμούς Fibonacci r n = f n+1 f n πρώτα τους αριθμούς: f 0 = 0 f 1 = 1 f 2 = f 1 + f 0 = 1 + 0 = 1 f 3 = f 2 + f 1 = 1 + 1 = 2 f 4 = f 3 + f 2 = 2 + 1 = 3 f 5 = f 4 + f 3 = 3 + 2 = 5 f 6 = f 5 + f 4 = 5 + 3 = 8 κτλ. πρέπει να παράγουμε

Για τους υπολογισμούς αυτούς χρειάζονται τρεις μεταβλητές. Για κάθε θετικό ακέραιο n, θεωρούμε πως οι: f_old, f_cur, f_new περιέχουν τις τιμές των f n 1, f n, και f n+1 αντίστοιχα. Οι μεταβλητές αυτές ενημερώνονται καθώς μεταβαίνουμε από το n=1, σε n=2, σε n=3, σε n=4: n = 1 0 f_old 1 f_cur 1 f_new n = 2 1 f_old 1 f_cur 2 f_new n = 3 1 f_old 2 f_cur 3 f_new n = 4 2 f_old 3 f_cur 5 f_new

Ο κάτωθι κώδικας πραγματοποιεί αυτές τις ενημερώσεις: f_old = f_cur f_cur = f_new f_new = f_old + f_cur Η σειρά των ενημερώσεων είναι ζωτικής σημασίας. Πρέπει πρώτα να ενημερώσουμε την f_old και κατόπιν την f_cur. Παρατηρούμε πως η επαναληπτική αυτή διαδικασία θα προχωρήσει μέχρι ότου τα r n και r n+1 να διαφέρουν ελάχιστα. Προς τούτο θα χρησιμοποιήσουμε τον βρόχο while. Ο ψευδοκώδικας θα είναι:

Αρχικοποιήσεις while r n και r n+1 διαφέρουν αρκετά Βρες τον επόμενο αριθμό Fibonacci και τον επόμενο λόγο end Καθώς το κριτήριο τερματισμού περιλαμβάνει τον λόγο των r n και r n+1 χρησιμοποιούμε τις μεταβλητές r_cur και r_new για την αποθήκευση αυτών των τιμών. Οι απαιτούμενες αρχικοποιήσεις θα είναι: tol = 10^-15; % tolerance(ανοχή) n = 2; f_old = 1; % (n-1)-οστός αριθμός Fibonacci f_cur = 1; % n-οστός αριθμός Fibonacci f_new = 2; % (n+1)-οστός αριθμός Fibonacci r_cur = f_cur/f_old; % n-οστός υπολογισμένος Χρυσός λόγος r_new = f_new/f_cur; % (n+1)-οστός υπολογισμένος Χρυσός λόγος

Οι απαιτούμενες ενημερώσεις αποτελούν το σώμα του βρόχου: n = n+1; f_old = f_cur; f_cur = f_new; f_new = f_old + f_cur; r_cur = r_new; r_new = f_new/f_cur; Και οι επαναλήψεις θα συνεχίζονται έως ότου αληθεύει η λογική έκφραση: (abs(r_new - r_cur)> 10^-15

% Script Eg3_2 % Οι αριθμοί Fibonacci και η χρυσή αναλογία % Αρχικοποίηση clc disp(' n f_n r_n ') disp('---------------------------------------') tol = 10^-15; n = 2; f_old = 1; % (n-1)-οστός αριθμός Fibonacci f_cur = 1; % n-οστός αριθμός Fibonacci f_new = 2; % (n+1)-οστός αριθμός Fibonacci r_cur = f_cur/f_old; % n-οστός υπολογισμένος Χρυσός λόγος r_new = f_new/f_cur; % (n+1)-οστός υπολογισμένος Χρυσός % λόγος fprintf(' %2d %8d %20.15f \n',n,f_cur,r_cur)

while (abs(r_new - r_cur)>tol) % Increase n and update... n = n+1; f_old = f_cur; f_cur = f_new; f_new = f_old + f_cur; r_cur = r_new; r_new = f_new/f_cur; fprintf(' %2d %8d %20.15f \n',n,f_cur,r_cur) end Εάν τρέξουμε το πρόγραμμα θαπάρουμε τα κάτωθι αποτελέσματα:

n f_n r_n --------------------------------------- 2 1 1.000000000000000 3 2 2.000000000000000 4 3 1.500000000000000 5 5 1.666666666666667 6 8 1.600000000000000 7 13 1.625000000000000 8 21 1.615384615384615...... 35 9227465 1.618033988749909 36 14930352 1.618033988749890 37 24157817 1.618033988749897 38 39088169 1.618033988749894 39 63245986 1.618033988749895

Γραφικές Παραστάσεις (Το πρόβλημα) Να γραφεί ένα πρόγραμμα που εμφανίζει την γραφική παράσταση της συνάρτησης στο διάστημα [-2,3]: f x = sin 5x e 1 + x 2 Θα ξεκινήσουμε με ένα πιο απλό πρόβλημα, την σχεδίαση του ημιτόνου στο διάστημα [0, 2π]. Στον πίνακα έχουμε τις τιμές του x rad και του sin x. x 2 x 0 π 2 = 1, 571 π = 3, 142 3π 2 = 4, 712 2π = 6, 284 sin x 0 1 0-1 0

Εάν θεωρήσουμε τα 5 σημεία του πίνακα: P 1 = 0, 0 P 2 = 1,571, 1 P 3 = 3,142, 0 P 4 = 4,712, 1 P 5 = 6,283, 0 Και τα χαράξουμε, θα πάρουμε μία κυματομορφή με 5 σημεία, η οποία βέβαια δεν μπορούμε να πούμε πως μας ικανοποιεί:

Εάν στα 5 αρχικά σημεία προσθέσουμε κι άλλα (αντί για διαστήματα π/2 πάρουμε π/4), τότε θα έχουμε 9 σημεία: x 0 0,785 1,571 2,356 3,142 3,927 4,712 5,498 6,283 sin x 0 0,707 1 0,707 0-0,707-1 -0,707 0 Η καμπύλη που θα προκύψει θα είναι ελαφρώς καλύτερη, αλλά πάλι όχι ικανοποιητική, καθώς θα έχει πάλι γωνίες.

Μπορούμε βέβαια να επαναλάβουμε την διαδικασία της εκλέπτυνσης της γραφικής παράστασης, επιλέγοντας περισσότερα δειγματοληπτικά σημεία. Το ποιά δειγματοληψία είναι ικανοποιητική για την απόδοση της γραφικής παράστασης, έχει να κάνει προφανώς με τις απαιτήσεις του ματιού μας, με την ανάλυση της οθόνης (pixel/inch), αλλά και με την συγκεκριμένη εφαρμογή.

Γενικά, η γραφική αποτύπωση μιας δεδομένης συνάρτησης y = f x, σε ένα δεδομένο διάστημα [L, R], εμπεριέχει τρία βήματα: 1. Δημιουργία πίνακα με τις τιμές του x στο διάστημα. 2. Δημιουργία πίνακα με τις τιμές του y που αντιστοιχούν στις τιμές της συνάρτησης f x για τις τιμές των x. 3. Έναν μηχανισμό που να συνδέει τα ζεύγη xy και να εμφανίζει την πολυγωνική γραμμή που προκύπτει. Τα βήματα αυτά θα μας οδηγήσουν στο πρόχειρο script: x=linspace(0,2*pi,9); y=sin(x); plot(x,y); title('sin(x)');

Η εντολή linspace χρησιμοποιείται για να δημιουργήσει έναν πίνακα με τιμές που ισαπέχουν μεταξύ τους, κατά μήκος ενός δεδομένου διαστήματος. Η σύνταξή της είναι ως εξής: Linspace( Αριστερό Όριο, Δεξί Όριο, Πλήθος Δειγματοληπτικών Σημείων ) Η εκχώρηση x=linspace(0,2*pi,9), εκχωρεί έναν πίνακα (άνυσμα) στο x: x: 0 0,785 1,571 2,356 3,142 3,927 4,712 5,498 6,283 Η εντολή y=sin(x), εκχωρεί έναν πίνακα (άνυσμα) στο y με τα ημίτονα των αντίστοιχων τιμών που εκχωρήθηκαν στο x: y: 0 0,707 1 0,707 0-0,707-1 -0,707 0

Οι δύο πίνακες συναποτελούν τον αρχικό πίνακα. Η εντολή plot(x,y) συνδέει τα ζεύγη-σημεία xy που προκύπτουν από τα ανύσματα x και y που έχουν βέβαια τις ίδιες διαστάσεις. Με τα δεδομένα αυτά, αλλά και με την εντολή for που ήδη γνωρίζουμε, μπορούμε να βελτιώσουμε το προηγούμενο script: for n=25:25:500 %Σχεδίαση του sin(x) με n σημεία x=linspace(0,2*pi,n); y=sin(x); plot(x,y); title(sprintf('n = %3d',n)) pause end

Η εντολή title χρησιμοποιείται για να εμφανίσει την συμβολοσειρά sprintf('n = %3d',n)στο πάνω μέρος του παραθύρου των γραφικών. Η συνάρτηση sprintf είναι ίδια ακριβώς με την fprintf μόνο που επιστρέφει την αντίστοιχη συμβολοσειρά, αντί να την εμφανίζει στο παράθυρο εντολών. Η εντολή pause χρησιμοποιείται για να σταματάει την εκτέλεση του προγράμματος, μέχρι που ο χρήστης να πατήσει κάποιο πλήκτρο. Έτσι κάθε φορά χαράσσεται η καμπύλη με διαφορετικό αριθμό σημείων n, για να μπορούμε να μελετήσουμε την καμπύλη με τον δικό μας ρυθμό. Για n=100 έχουμε την κυματομορφή:

Εάν επιστρέψουμε τώρα στο αρχικό πρόβλημα και με βάση αυτά που μέχρι τώρα έχουμε δει, το τελικό πρόγραμμα που θα χαράξει την συνάρτηση: Θα είναι: f x = sin 5x e 1 + x 2 x 2

% Script Eg4_1 % Χάραξη της συνάρτησης f(x) = sin(5x)*exp(x/2)/(1 + % x^2) στο διάστημα [-2,3]. L = -2; % Αριστερό όριο R = 3; % Δεξί όριο N = 200; % Πλήθος δειγματοληπτικών σημείων % Υπολογισμός των διανυσμάτων των τιμών x και της % συνάρτησης f... x = linspace(l,r,n); y = sin(5*x).* exp(-x/2)./ (1 + x.^2); % Χάραξη και ετικέτες... plot(x,y,[l R],[0 0],':') title('the function f(x) = sin(5x) * exp(x/2) / (1 + x^2)') ylabel('y = f(x)') xlabel('x')

Η εντολή καταχώρησης x = linspace(l,r,n); Ορίζει το αριστερό και το δεξιό όριο του x, καθώς και τα ισοδιαστήματα Ν της περιοχής ορισμού του. Η εντολή plot(x,y,[l R],[0 0],':') Ζητάει την χάραξη των ζευγών xy, και τον άξονα του μηδενός από L μέχρι R, με διακεκομμένη γραμμή αυτός. Η εντολή title('the function f(x) = sin(5x) * exp(x/2) / (1 + x^2)') δίνει τον τίτλο της κυματομορφής. Τα ylabel('y = f(x)') και xlabel('x') ονοματίζουν τους άξονες x και y.

Λίγο χρώμα Τα χρώματα στο περιβάλλον γραφικών του Matlab παριστάνονται με διανύσματα τριών θέσεων [1x3] όπου οι τρεις αριθμοί καθορίζουν τις ποσότητες του κόκκινου του πράσινου και του μπλε χρώματος, αντίστοιχα. Π.χ. Γαλάζιο = = [0.0 1.0 1.0] Μοβ = = [1.0 0.0 1.0] Αυτά τα διανύσματα λέγονται διανύσματα rgb (redgreen-blue) και οι τιμές, για κάθε χρώμα, κυμαίνονται μεταξύ 0 και 1. Το 0 σημαίνει καθόλου και το 1 σημαίνει εξ ολοκλήρου.

Έτσι οι τρεις αριθμοί ορίζουν το μίγμα του χρώματος. Για παράδειγμα το άνυσμα δημιουργεί το χρώμα: [0.4 0.6 1.0] Να γραφεί ένα πρόγραμμα που θα εμφανίζει έντεκα χρωματικά πλαίσια κυμαινόμενα από το γαλάζιο μέχρι το μοβ, όπως δείχνουν τα ανύσματα ακολούθως: [1.0 0.0 1.0] [0.9 0.1 1.0] [0.8 0.2 1.0] [0.7 0.3 1.0] [0.6 0.4 1.0] [0.5 0.5 1.0] [0.4 0.6 1.0] [0.3 0.7 1.0] [0.2 0.8 1.0] [0.1 0.9 1.0] [0.0 1.0 1.0]

Για την εμφάνιση του πλαισίου ενός συγκεκριμένου χρώματος μπορεί να χρησιμοποιηθεί η εντολή fill. Το script: x = [0 3 3 0]; y = [0 0 1 1]; v = [0.0 1.0 1.0] fill (x,y,v) Παράγει ένα ορθογώνιο παραλληλόγραμμο με κορυφές (0,0), (3,0), (3,1), (0,1) και το γεμίζει με χρώμα που καθορίζεται από το διάνυσμα-rgb v (το γαλάζιο εν προκειμένω). Στο script που ακολουθεί θα εμφανιστούν ένα γαλάζιο, ένα μοβ κι ένα με το χρώμα που μόλις πριν δημιουργήσαμε:

x = [0 3 3 0]; y = [0 0 1 1]; hold on fill (x,y,[0.0 1.0 1.0]) fill (x,y+1,[0.4 0.6 1.0]) fill (x,y+2,[1.0 0.0 1.0]) Η εντολή hold on εξασφαλίζει ότι όλα τα γραφήματα θα προστεθούν στο τρέχον παράθυρο γραφικών.

Εάν φροντίσουμε να έχουμε αντί για 3, 11 παραλληλόγραμμα, θα έχουμε λύσει το αρχικό πρόβλημα. Ο ψευδοκώδικας που θα το κάνει αυτό, πρέπει να χρησιμοποιήσει ένα βρόχο, και πάνω - κάτω θα είναι της κάτωθι μορφής: n = 10; Υπόλοιπες αρχικοποιήσεις for j=0:n % Εμφάνισε το παραλληλόγραμμο j Υπολόγισε το διάνυσμα-rgb v για το χρώμα του end πλαισίου j. Υπολόγισε τα διανύσματα x και y θέση του πλαισίου j. fill(x,y,v) που ορίζουν την

Για να μετατρέψουμε τον ψευδοκώδικα σε script, θα ξεκινήσουμε από τον υπολογισμό των χρωμάτων. Το κάθε πλαίσιο j πρέπει να έχει ποσοστό γαλάζιου (cyan) ίσο με (1-j/10) και ποσοστό μοβ (magenta) ίσο με j/10. cyan = [0 1 1]; Magenta = [1 0 1]; f = j/n v = (1-f)*cyan + f*magenta; Για την θέση των πλαισίων θα χρησιμοποιήσουμε την προηγούμενη λογική. Κάθε πλαίσιο θα έχει πλάτος 3 και ύψος 1. Το πλαίσιο 0 θα βρίσκεται στο κάτω μέρος του σωρού: fill ([0 3 3 0],[0 0 1 1],v)

Και θα συνεχίζουν στα επόμενα βήματα με την τιμή του y νααυξάνεται σε κάθε βήμα κατά 1: x = [0 3 3 0]; y = [0 0 1 1] + j; Έτσι ο ψευδοκώδικας θα γίνει: cyan = [0 1 1]; % rgb του «κάτω» χρώματος magenta = [1 0 1]; % rgb του «πάνω» χρώματος n = 10; % τα ενδιάμεσα χρώματα είναι n-1 x = [0 3 3 0]; % συντεταγμένες x των πλαισίων y = [0 0 1 1]; % συντεταγμένες y των πλαισίων for j=0:n % Εμφάνισε το πλαίσιο j... f = j/n; v = (1-f)*cyan + f*magenta; fill(x,y+j,v) end

Θα προσθέσουμε την τιμή rgb δίπλα από κάθε πλαίσιο χρησιμοποιώντας την εντολή text. Η εντολή αυτή δέχεται μια θέση xy και μια συμβολοσειρά την οποία την εμφανίζει σ αυτή την θέση. Εάν βάλουμε την εντολή: text(3.5,j+.5,sprintf('[ %4.2f, %4.2f, %4.2f ]',v(1),v(2),v(3))) Αμέσως μετά την εντολή fill θα εμφανισθούν οι τιμές rgb, δεξιά από κάθε πλαίσιο. Συνήθως χρειάζονται κάποιες δοκιμές για να πετύχουμε την ακριβή θέση της συμβολοσειράς. Στην αρχή του προγράμματος προετοιμάζουμε το παράθυρο γραφικών:

close all:κλείνουν όλα τα ανοιχτά παράθυρα γραφικών. figure:δημιουργείται καινούργιο παράθυρο γραφικών. axis equal off:κρύβουν τους άξονες και θέτουν την ίδια κλίμακα και κατά τις δύο κατευθύνσεις x και y. hold on:κρατάνε το τρέχον παράθυρο γραφικών, ώστε σε κάθε κύκλο να προστίθενται τα πλαίσια στο ίδιο παράθυρο. Με την hold off απενεργοποιείται η συγκράτηση του παραθύρου και εξασφαλίζεται ότι το παράθυρο γραφικών (shg) θα εμφανισθεί στην οθόνη. Το τελικό πρόγραμμα θα είναι:

% Script Eg4_2 % Εμφανίζει τις διαβαθμίσεις των χρωμάτων γαλάζιο και μοβ % Προετοίμασε το παράθυρο γραφικών... close all figure axis equal off hold on % Αρχικοποιήσεις... cyan = [0 1 1]; % rgb του «κάτω» χρώματος magenta = [1 0 1]; % rgb του «πάνω» χρώματος n = 10; % τα «ενδιάμεσα» χρώματα είναι n-1 x = [0 3 3 0]; % συντεταγμένες x των πλαισίων y = [0 0 1 1]; % συντεταγμένες y των πλαισίων % Πρόσθεσε χρωματιστά πλαίσια στο παράθυρο γραφικών... for j=0:n % Εμφάνισε το πλαίσιο j και την rgb τιμή του... f = j/n; v = (1-f)*cyan + f*magenta; fill(x,y+j,v) text(3.5,j+.5,sprintf('[ %4.2f, %4.2f, %4.2f ]',v(1),v(2),v(3))) end hold off shg

Επισκόπηση Matlab Η συνάρτηση fill Λειτουργεί όπως η εντολή plot με την διαφορά πως στην εντολή fill(x,y,c) το τελευταίο της σημείο, που καθορίζεται από τα διανύσματα x και y, ενώνεται με το πρώτο σημείο και η σχηματιζόμενη επιφάνεια χρωματίζεται σύμφωνα με το c. Διανύσματα-rgb Ένα διάνυσμα c τριών θέσεων, με τιμές στο διάστημα [0,1], μπορεί να χρησιμοποιηθεί για την αναπαράσταση ενός χρώματος. To c(1) είναι η ένταση του κόκκινου χρώματος, το c(2) είναι του πράσινου και το c(3) είναι του μπλε. Οι τιμές των διανυσμάτων για τα 8 βασικά χρώματα είναι οιεξής:

Επισκόπηση Matlab Χρώμα Μνημονικό rgb μαύρο k [0 0 0] μπλε b [0 0 1] πράσινο g [01 0] γαλάζιο c [01 1] κόκκινο r [10 0] μοβ m [1 0 1] κίτρινο y [11 0] άσπρο w [1 1 1]

Επισκόπηση Matlab Η συνάρτηση figure Ανοίγει παράθυρα γραφικών τα οποία αριθμούνται. Για παράδειγμα το: x = linspace(0,2*pi,100); figure plot(x,sin(x)) figure plot(x,cos(x)) Θα δημιουργήσει 2 παράθυρα: το figure 1 για το sin(x) και το figure 2 για το cos(x). Εάν υπάρχουν ήδη κι άλλα ανοιχτά παράθυρα γραφικών, τότε η αρίθμηση των νέων θα ξεκινήσει από εκεί που τελειώνουν τα προηγούμενα παράθυρα που είναι ανοιχτά.

Επισκόπηση Matlab Η συνάρτηση text Χρησιμοποιείται για να εμφανίζει μια συμβολοσειρά στο παράθυρο των γραφικών. text(συντεταγμένη-x, συντεταγμένη-y, συμβολοσειρά) Η συνάρτηση close all Η εντολή αυτή διαγράφει όλα τα ανοιχτά παράθυρα γραφικών.

Επισκόπηση Matlab Οι συναρτήσεις hold on και hold off Μετά από μία εντολή hold on, όλες οι εντολές plot και fill τοποθετούνται στο τρέχον παράθυρο γραφικών. Για να τερματισθεί αυτή η λειτουργία χρησιμοποιείται το hold off που πρέπει να το χρησιμοποιούμε στο τέλος του προγράμματος για να μην δημιουργούνται προβλήματα με τα γραφικά στο επόμενο πρόγραμμα.

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

Επισκόπηση Matlab Η εντολές axis off, axis equal, axis square Οι εντολές αυτές ρυθμίζουν τα προεπιλεγμένα χαρακτηριστικά των αξόνων. Η axis off κρύβει τους άξονες (και τα xlabel & ylabel). H axis equal θέτει τους άξονες στην ίδια κλίμακα. Η axis square κάνει τετράγωνο το παράθυρο των γραφικών (αντί του προεπιλεγμένου ορθογωνίου).

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

Ε 1, Ε 2 : Εστίες έλλειψης, ΔΒ: μεγάλος άξονας, ΑΓ: μικρός άξονας, Ο: (η τομή των δύο αξόνων ή το μέσον Ε 1 Ε 2 ), το Κέντρο έλλειψης.

Χαράσσοντας μια έλλειψη Συγκεκριμένα, ας είναι Ε 1, Ε 2 δύο σημεία σε ένα ευκλείδειο επίπεδο με απόσταση 2γ μεταξύ τους και α > γ ένας θετικός αριθμός. Έλλειψη ονομάζεται ο γεωμετρικός τόπος των σημείων του επιπέδου των οποίων το άθροισμα των αποστάσεων από τα δύο σταθερά σημεία Ε 1, Ε 2 είναι σταθερό και ισούται με 2α > 2γ. x 2 + y 2 Η εξίσωση της έλλειψης είναι: = 1 a β όπου: β 2 = α 2 γ 2 Οι παραμετρικές της εξισώσεις είναι: x = αcos t y = βsin t για 0 t 2π

Πρόγραμμα a = input('μεγάλος άξονας:'); b = input('μικρός άξονας:'); t = linspace(0,2*pi,200); x = a*cos(t); y = b*sin(t); plot(x,y) Εάν δώσουμε: a = 5, b = 3 θα έχουμε την έλλειψη: