ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ/ Σχολή Χημικών Μηχανικών/ Ρύθμιση με το MATLAB Εισαγωγικά-επανάληψη/
3/ Διάγραμμα παρουσίασης Μεταβλητές-Πίνακες/ Έλεγχος ροής προγράμματος/ Γραφικές πραστάσεις/ Αντιπαραβολή με Fortran
4/ Οι εργαλειοθήκες του Matlab / http://www.mathworks.com/products/pfo /
5/ Συλλογή δεδομένων-επικοινωνία με συσκευές/
6/ Καταχώρηση τιμής σε μεταβλητή/ Μεταβλητή= τιμή (με ή χωρίς ερωτηματικό στο τέλος)/ Αν δεν υπάρχει το ερωτηματικό εμφανίζεται το αποτέλεσμα αμέσως μετά την έκφραση και αποθηκεύεται στην μεταβλητή./ Αν υπάρχει το ερωτηματικό απλώς το αποτέλεσμα αποθηκεύεται στην μεταβλητή, χωρίς να εμφανίζεται./ Παράδειγμα.* a=sin(pi/2)/ ans=/ R1/ Παράδειγμα.* b=exp(pi)-pi^exp(1)/ Ans=/ R?/
7/ Μεταβλητές/ Αποθηκεύουμε τιμές/ Χ = 3/ y = 1/2 / Y = 9/
8/ Κανόνες Ονομασίας Μεταβλητών/ Το όνομα αρχίζει με γράμμα (του αγγλικού αλφαβήτου).* Το όνομα περιέχει μόνο γράμματα, αριθμούς και υποπαύλες (underscore).* Δεν χρησιμοποιούνται ονόματα που έχουν δεσμευτεί από το MATLAB (π.χ. εντολών).* Υπάρχει διάκριση μεταξύ πεζών και κεφαλαίων γραμμάτων/
9/ Ποιες μεταβλητές χρησιμοποιήσαμε;/ who : επιστρέφει πληροφορίες για μεταβλητές που χρησιμοποιήσαμε./ whos : επιπλέον πληροφορίες για χώρο μνήμης που καταλαμβάνουν οι μεταβλητές αυτές./ View->Workspace/ Διαγραφή μεταβλητής : clear μεταβλητή(ες) ή επιλογή της μεταβλητής από workspace και μετά delete/ who/ Your variables are:/ a ans b / whos/ Name Size Bytes Class/ a R1x1 8 double array/ ans R1x1 8 double array/ b R1x1 8 double array/ Grand total is 3 elements using 24 bytes/
10/ Μετακίνηση στο παράθυρο εντολών/ é R R RΑνάκληση προηγούμενης εντολής/ ê R R RΑνάκληση επόμενης εντολής/ ç R R RΈνα χαρακτήρα αριστερά/ è R R RΈνα χαρακτήρα δεξιά/ Ctrl+ç R R RΜια λέξη αριστερά/ Ctrl+è R R RΜια λέξη δεξιά/ Home R R RΑρχή/ End R R RΤέλος/ Ctrl+k R R RΔιαγραφή γραμμής/ Del ή Bkspace R RΔιαγραφή χαρακτήρα/
11/ Βασικές Εντολές/ clear + όνομα μεταβλητής/ clear all: σβήνει όλες τις μεταβλητές/ who, whos: εμφάνιση λίστας μεταβλητών/ format: καθορισμός μορφής εξόδου (π.χ. short, long, short e)/ edit: ανοίγει τον editor/ %: σχόλιο/...: συνεχίζει η εντολή στην επόμενη γραμμή/
12/ Βοήθεια στο Matlab/ help εντολή R Rhelp whos/ lookfor κείμενο Rlookfor matrix inverse / helpwinr R Rπαράθυρο βοηθείας του Matlab/ Παράδειγμα. Να βρείτε τον τρόπο σύνταξης της εντολής που σχεδιάζει (plot) την γραφική παράσταση μιας συνάρτησης στο Matlab./
/ Ρύθμιση με το Matlab 13/ ans/ Περιέχει την πιο πρόσφατη απάντηση του MATLAB/ Προέρχεται από τη λέξη ANSwer/ sin(1.5)+cos(2.5)/ ans =/ 0.196351371057121/
14/ eps/ Ακρίβεια κινητής υποδιαστολής του MATLAB./ Αποτελεί την προεπιλεγμένη ανοχή (tolerance) για διάφορα προγράμματα του MATLAB/ Ένας αριθμός μικρότερος κατ απόλυτη τιμή από την eps είναι για το MATLAB ίσος με μηδέν./ eps/ ans =/ 2.220446049250313e-016/
15/ i, j/ Συμβολίζουν τη φανταστική μονάδα/ Χρησιμοποιούνται για την εισαγωγή μιγαδικών αριθμών/ Για παράδειγμα:2-5i/
16/ Πίνακες/ size(x): διαστάσεις πίνακα Χ/ length(x): μέγιστη διάσταση Χ/ sum(x): άθροισμα στοιχείων Χ/ Χ : συζυγής ανάστροφος πίνακα Χ/ Χ. : ανάστροφος πίνακα Χ/
17/ Πίνακες/ eye(n): μοναδιαίος πίνακας διάστασεων nxn/ zeros(n): μηδενικός πίνακας διαστάσεων nxn/ ones(n): πίνακας nxn με όλα τα στοιχεία μονάδες/ diag(v): διαγώνιος πίνακας με τα στοιχεία του διανύσματος v στη διαγώνιό του/
18/ Πίνακες/ Α(m,n): το στοιχείο (m,n) του πίνακα Α/ a:b:c: δημιουργεί το διάνυσμα [a a+b a+2b d] με d c/ A(1:3,:): κρατά την 1 η ως την 3 η γραμμή και όλες τις στήλες του πίνακα Α/ Α(:,3:end): κρατά από την 3 η ως την τελευταία στήλη του πίνακα Α/
19/ Πράξεις πινάκων/ +, -, *, ^: πρόσθεση, αφαίρεση, πολλαπλασιασμός, ύψωση σε δύναμη/ /: δεξιά διαίρεση, Α/Β ισοδυναμεί με ΑΒ -1/ \: αριστερή διαίρεση, Α\Β ισοδυναμεί με / RΑ -1 Β/ (Α\Β) =Β /Α /.*: πολλαπλασιασμός στοιχείο προς στοιχείο/
20/ Πολλαπλασιασμός Πινάκων/ Προσοχή όμως στον πολλαπλασιασμό στοιχείο-προς-στοιχείο (element-by-element) :/
21/ Ανάστροφος Πίνακας (transpose matrix)/ Οι γραμμές στήλες και οι στήλες γραμμές / Αρχικός πίνακας*
/ Ρύθμιση με το Matlab 22/ Παράδειγμα/ Φτιάξτε ένα διάνυσμα με στοιχεία τους ακεραίους από 1 ως 5 και στη συνέχεια δημιουργήστε τα εξής διανύσματα:/ a) R 1, 1/2, 1/3, 1/4, 1/5/ b) R 1, 1/2 2, 1/3 2, 1/4 2, 1/5 2 / a. x=1:5; y=1./x/ b. x=1:5; y=1./x.^2/
/ Ρύθμιση με το Matlab 23/ Παράδειγμα/ Φτιάξτε τον παρακάτω πίνακα, βρείτε τις διαστάσεις του και διαγράψτε την τελευταία στήλη./ Α=[ones(1,3);2*ones(1,3);3i*ones(1,3)]/ B=ones(3)*4/ C=[A B]/ 1 2 3i 1 2 3i 1 2 3i 4 4 4 4 4 4 4 4 4
24/ Συναρτήσεις του MATLAB/ Κατάλογος στοιχειωδών μαθηματικών συναρτήσεων/ help elfun/ Κατάλογος ειδικών μαθηματικών συναρτήσεων/ help specfun/
/ Ρύθμιση με το Matlab 25/ clear/ Διαγραφή των μεταβλητών του χώρου εργασίας./ Σύνταξη clear var1 var2 var3/ Διαγραφή όλων των μεταβλητών που αρχίζουν από L (clear L*)/ clear all/
26/ clc/ Καθαρισμός χώρου εργασίας./ Δεν διαγράφονται οι μεταβλητές./
27/ Είσοδος & Έξοδος Δεδομένων/
28/ Εφαρμογή format/ Επιλογές της εντολής format για την εκτύπωση του π π./
29/ Σχεσιακοί Λογικοί τελεστές/ >, <, >=, <=, ==, ~= : σχεσιακοί τελεστές/ & (AND), (OR), ~ (NOT), xor: λογικοί τελεστές/ any, all: πράξεις OR και AND σε περισσότερα των 2 στοιχεία/ &&, : short-circuit τελεστές/ bitand, bitor, bitcmp, bitxor: bit-wise λογικοί τελεστές/
30/ Έλεγχος ροής προγράμματος/ Έλεγχος συνθηκών/ if <συνθήκη1> / R<σύνολο εντολών1>/ elseif <συνθήκη2>/ R<σύνολο εντολών2>/ else / R<σύνολο εντολών3>/ end/
31/ Έλεγχος ροής προγράμματος/ Έλεγχος επαναλήψεων/ for δείκτης = αρχική τιμή: βήμα μετάβασης: τελική τιμή/ R R<σύνολο εντολών>/ Rend/ while <συνθήκη>/ R R<σύνολο εντολών>/ Rend/
32/ Πολυώνυμα/ polyval(p,x): υπολογίζει την τιμή του πολυωνύμου p στο x/ roots(p): υπολογίζει τις ρίζες του p/ poly(r): επιστρέφει το πολυώνυμο με ρίζες r/ conv(a,b): πολλαπλασιασμός των a και b/ polyder(p): παράγωγος του p/
33/ Παράδειγμα/ Δίνεται το πολυώνυμο x3+4x2+9x-4. Να βρεθούν οι ρίζες του και να γίνει η γραφική παράσταση για τις τιμές από -5 ως και 5 με βήμα 0.1.* * a=1; b=4; c=9;d=4;/ p=[a b c d];/ rizes=roots(p);/ disp('roots calculation complete!');/ x=[-5:0.1:5]/ y = polyval(p,x)/ Plot(x,y)/
34/ Έλεγχος ροής προγράμματος/
/ Ρύθμιση με το Matlab 35/ Πολλαπλοί βρόγχοι for (Nested for loops) Μπορούν να δημιουργηθούν πολλοί βρόγχοι εντολών for, ο ένας μέσα στον άλλον./ Παράδειγμα II/ Κάθε στοιχείο ενός πίνακα Hilbert διαστάσεως m x n δίνεται από τον τύπο: / a( i, j) = 1 i + j 1 i=1,2,,m και j=1,2,,n. Κατασκευάστε έναν πίνακα Hilbert 4 x 5./
36/ m = 4;n = 5;/ for i=1:m/ for j=1:n/ a(i,j)=1/(i+j-1);/ end/ end/
37/ Βρόχοι If/ Χρήση: Χρησιμοποιείται για την εκτέλεση εντολών κατά συνθήκη Μορφή: if συνθήκη μπλοκ εντολών elseif συνθήκη μπλοκ εντολών else μπλοκ εντολών end
38/ Βρόχοι WHILE Χρήση: Χρησιμοποιείται για την επανάληψη ενός μπλοκ εντολών, όσο ισχύει μια συγκεκριμένη συνθήκη Μορφή:while συνθήκη μπλοκ εντολών end Παράδειγµα ΙΙΙ Η ανάπτυξη σε σειρές MacLaurin της συνάρτησης ln(1+x), για x < 1, δίνεται από τον τύπο: Να εκτιµήσετε την τιµή του ln(1+x) για x=0.5, αθροίζοντας διαδοχικούς όρους των σειρών, µέχρι εκείνο τον όρο που η απόλυτη τιµή του θα είναι µικρότερη από 2*10-6. v=0; x=0.5; k=1; while abs((x^k)/k) >= 2*10^-6 v = v+(-1)^(k+1)*((x^k)/k); k = k+1; end
/ Ρύθμιση με το Matlab 39/ Επίλυση συστημάτων εξισώσεων / Είναι δυνατό να επιλυθεί ένα γραμμικό σύστημα της μορφής A*x=b, χρησιμοποιώντας την παρακάτω εντολή: / x=a\b;/ Για παράδειγμα:/ A =[2 4; 5 3] ; b=[3 9 ;5 1] ; x=a\b/ x/ x =/ 0.7857-1.6429/ 0.3571 3.0714/ Επιλύει το γραμμικό σύστημα:/ 2 4 3 9 x = 5 3 5 1
40/ Επίλυση εξισώσεων (Εντολή solve)/ Η εντολή solve χρησιμεύει για την αναλυτική ή αριθμητική επίλυση εξισώσεων ή συστημάτων εξισώσεων: Π.χ./ x=solve('p*sin(x) = r') / x =/ asin(r/p)/ [x,y] = solve('sin(x+y)-exp(x)*y = 0','x^2-y = 2') /
41/ Παράδειγμα/ Φτιάξτε έναν πίνακα στον οποίο στην πρώτη στήλη του θα υπάρχουν κάποιες γωνίες (επιλέξτε εσείς) στο διάστημα από 0 ως 360 μοίρες και στη δεύτερη στήλη το ημίτονο για αυτές τις αντίστοιχες γωνίες./
42/ Παράδειγμα/ Να λυθεί το παρακάτω γραμμικό σύστημα και να γίνει επαλήθευση:/ 2x+3y+2z-w=4/ -3y+3w+z=7/ 5z-2x+y+2w=18/ -4z+5y+6x=35/
43/ A=[2 3 2-1;0-3 1 3;-2 1 5 2;6 5-4 0] B=[4;7;18;35] X=A\B X = -1.1103 6.6828-2.0621 9.7034 A*X ans = 4.0000 7.0000 18.0000 35.0000
44/ Παράδειγμα/ Βρείτε το άθροισμα των διαδοχικών άρτιων ακεραίων αριθμών από το 2 μέχρι το 200./
45/ Παράδειγμα/ Βρείτε το άθροισμα των διαδοχικών άρτιων ακεραίων αριθμών από το 2 μέχρι το 200./ x=sum(2:2:200)/ x =/ 10100/
46/ (c, toc Χρονομέτρηση της διάρκειας μιας εργασίας. (c Έναρξη χρονομέτρησης toc Λήξη χρονομέτρησης >> (c, Αεντολή, toc Χρονομετράει τη διάρκεια που απαιτεί η Αεντολή
47/ Δυναμική διαχείριση μνήμης και προανάθεση χώρου (prealloca(on) σε μεταβλητές clear (c m = 1000;n = 1000; for i=1:m for j=1:n a(i,j)=1/(i+j- 1); end end toc clear (c m = 1000;n = 1000; a(m,n)=0; for i=1:m for j=1:n a(i,j)=1/(i+j- 1); end end toc
48/ Περιήγηση στο Matlab/ Start menu Demos Online help Links
49/ Παράδειγμα/ Υπολογίστε το άθροισμα της σειράς 1 2 +2 2 +3 2 + +1000 2 με δύο τρόπους, με και χωρίς βρόχο for./
50/ Παράδειγμα/ Υπολογίστε το άθροισμα της σειράς 1 2 +2 2 +3 2 + +1000 2 με δύο τρόπους, με και χωρίς βρόχο for. t0=clock; x=1:10000; s=sum(x.^2); etime(clock,t0) ans = 0.1250 t0=clock; s=0; for k=1:10000 s=s+1/k^2; end etime(clock,t0) ans = 0.1480 Χρειάζεται 18% περισσότερο χρόνο για την ίδια εργασία
51/ Προγράμματα τύπου Script και Function Το παρακάτω παράδειγμα είναι ένα script πρόγραμμα που υπολογίζει το άθροισμα των n πρώτων στοιχείων της σειράς 1 2 +2 2 +...+n 2 για n=5:/ n=5;/ s=0;/ for i=1:n/ s=s+i^2;/ end/
52/ Προγράμματα τύπου Script και Function Το αντίστοιχο σε function γίνεται:/ function s=sumsq(n)/ s=0;/ for i=1:n/ s=s+i^2;/ end/
53/ Γράφοντας προγράμματα στο Matlab Matlab editor Γραμμή εντολών Διαφορές
/ Ρύθμιση με το Matlab 54/ Παράδειγμα/ Εύκολοι τρόποι ελέγχου κριτηρίων σε πίνακες/
55/ Εύκολοι τρόποι ελέγχου κριτηρίων σε πίνακες Για να πάρουµε έναν πίνακα µε τυχαίους ακέραιους από 1 έως 15, διαστάσεων 5x5. A = randi(15,5) A = 13 2 3 3 10 14 5 15 7 1 2 9 15 14 13 14 15 8 12 15 10 15 13 15 11 Για να ελέγξουμε σε ποιες θέσεις οι αριθμοί είναι μικρότεροι του 9: B = A < 9 B = 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 Για να πάρουμε ένα διάνυσμα με τα στοιχεία αυτά: I = find(a < 9)
56/ Εύκολοι τρόποι ελέγχου κριτηρίων σε πίνακες Να ορίσετε έναν πίνακα με τυχαίους ακέραιους από 1 έως 10, διαστάσεων 5x5, να ελέγξετε ποιοι είναι μικρότεροι του 5, να τυπώσετε το συνολικό τους πλήθος και να αποθηκεύσετε τις τιμές του σε μια μεταβλητή./ A = randi(10,5)/ b=sum(a<5)/ less5 = find(a < 5)/
57/ Γραφικές παραστάσεις/
58/ Κυριότερες Εντολές για Γραφήματα/
59/ plot/ Χρησιμοποιείται για την κατασκευή του γραφήματος μιας επίπεδης καμπύλης τα σημεία της οποίας είναι αποθηκευμένα σε ισομήκη διανύσματα /
60/ Εφαρμογή/ x=[0 1 1.5 2.2 3];/ y=[2 1.65 1.3 1.4 4];/ plot(x,y)/
61/ Δημιουργία/ Άνοιγμα/ Αποθήκευση/ Μεγέθυνση/ Μετακίνηση/ Περιστροφή/ Υπόμνημα/ Συντεταγμένες/ Εκτύπωση/ Σμίκρυνση/
/ Ρύθμιση με το Matlab Εφαρμογή/ 62/ Να κατασκευαστεί το γράφημα y=cos(x) στο διάστημα [-π, π]/ Διαμερισμός διαστήματος [-π, π] σε υποδιαστήματα μήκους 0.01/ x=-pi:0.01:pi;/ y=cos(x);/ plot(x,y)/ Βήμα/
63/ plot: Χρώματα, Σύμβολα και Γραμμές / plot (x,y, [color] [stype] [ltype] )/ /
64/ Εφαρμογή/ x=-1:1:10;/ y=exp(x);/ plot(x, y, 'g--') :Πράσινη, αδρή, διακεκομμένη/
65/ Εφαρμογή/ x=-1:0.5:2;/ y=exp(x);/ plot(x, y, rs ) : Κόκκινα τετράγωνα/
/ Ρύθμιση με το Matlab 66/ plot: Πολλαπλά γραφήματα / plot (x1, y1, [color] [stype] [ltype], x2, y2, [color] [stype] [ltype], )/ x=0:0.02:6;/ y=80*sin(x);/ z=exp(x);/ plot(x,y, 'r', x,z,'--')/
/ Ρύθμιση με το Matlab 67/ Ετικέτες Αξόνων/ xlabel( τίτλος x );/ Δίνει ετικέτα στον άξονα x/ ylabel( τίτλος y );/ Δίνει ετικέτα στον άξονα y/
68/ Ονομασία Γραφήματος/ title( ονομασία γραφήματος );/ Δίνει όνομα στο γράφημα/ Υπόμνημα/ legend( τίτλος παραθύρου );/ Δίνει όνομα στο παράθυρο του γραφήματος/
69/ hold/ Παγώνει το τρέχον παράθυρο γραφικών Σχεδιασμός επιπλέον καμπυλών στο ίδιο γράφημα hold; Ενεργοποίηση παγώματος παραθύρου γραφικών hold off Απενεργοποίηση παγώματος παραθύρου
70/ Εφαρμογή/ x=0:0.01:2*pi;/ y=cos(x);/ z=sin(x);/ plot(x,y);/ hold/ Current plot released/ plot(x,z,'--');/ legend( cos(x), sin(x) );/
/ Ρύθμιση με το Matlab 71/ Εφαρμογή (συνέχεια)/ xlabel( x );/ ylabel( Τιμές των συν, ημ );/ title ( Γραφική απεικόνιση συνημιτόνου, ημιτόνου );/ axis([0, 2*pi, -1, 1]);/
72/
73/ Χρήσιμες Εντολές για Γραφήματα/
/ Ρύθμιση με το Matlab 74/ subplot/ Τοποθέτηση πολλών γραφημάτων στο ίδιο παράθυρο./ subplot(m,n,p)/ m, n : Πλήθος υποπαραθύρων του παραθύρου γραφικών/ p : Η θέση που θα τοποθετηθεί το γράφημα/ Η αρίθμηση των παραθύρων γίνεται κατά γραμμές/
Παράδειγμα/ 75/
Εφαρμογή/ t=0:0.01:2*pi; f1=sin(t.^2); f2=(sin(t)).^2; f3=cos(t.^2); f4=(cos(t)).^2; subplot(2,2,1); plot(t,f1) title('sin(t^2)') subplot(2,2,2); plot(t,f2) title('sin^2(t)') subplot(2,2,3); plot(t,f3) title('cos(t^2)') subplot(2,2,4); plot(t,f4) title('cos^2(t)') 76/
77/ polar/ Γραφικές παραστάσεις συναρτήσεων σε πολικές συντεταγμένες/ polar(theta, r)/ r=r(θ)/
78/ Παράδειγμα/ r=3cos 2 (θ/2), 0 θ 2π/ theta=0:0.01:2*pi;/ r=3*cos(theta/2).^2;/ polar(theta,r, m )/
79/ Παραδείγματα/ κώδικα MATLAB/
80/ Αντιπαραβολή με Fortran/
Αντιπαραβολή Matlab-Fortran 81 Να επεξεργαστείτε N πραγματικούς αριθμούς, για την εύρεση της μέσης τιμής των θετικών και των αρνητικών αριθμών (χωριστά). n : Το πλήθος των πραγματικών αριθμών που θα δοθούν a : Θα φιλοξενεί (διαδοχικά) τους πραγματικούς, όπως θα διαβάζονται mvp : Μέση τιμή θετικών mvn : Μέση τιμή αρνητικών sp : Αθροιστής θετικών sn : Αθροιστής αρνητικών cp : Πλήθος θετικών cn : Πλήθος αρνητικών
Αντιπαραβολή Ρύθμιση με το Matlab Matlab-Fortran 82 Ακολουθεί η απόδοση αρχικών τιμών cp=0 cn=0 sp=0 sn=0 Η ακόλουθη εντολή προϊδεάζει τον χρήστη του προγράμματος για την επερχόμενη εντολή εισόδου και το επιζητούμενο από αυτήν δεδομένο n = input ('Dose to plithos ton pragma(kon arithmon') Η ακόλουθη επαναληπτική διαδικασία θα εκτελεστεί n φορές for i=1 : n end a=input('dose ena stoixeio (s aradas') if (a<=0) sn=sn+a cn=cn+1 else sp=sp+a cp=cp+1 end Ακολουθούν οι αναγκαίες δηλωτικές εντολές (του τύπου μεταβλητών) και η απόδοση αρχικών τιμών integer:: cp=0,cn=0 real:: mvp,mvn,sp=0,sn=0 Η ακόλουθη εντολή προϊδεάζει τον χρήστη του προγράμματος για την επερχόμενη εντολή εισόδου και το επιζητούμενο από αυτήν δεδομένο write (*,*) 'Dose to plithos ton pragmatikon arithmon read (*,*) n Η ακόλουθη επαναληπτική διαδικασία θα εκτελεστεί n φορές do i=1,n write (*,*) 'Dose ena stoixeio tis aradas read (*,*) a if (a<=0) then sn=sn+a cn=cn+1 else sp=sp+a cp=cp+1 endif enddo
Αντιπαραβολή Ρύθμιση με το Matlab Matlab-Fortran 83 mvp=sp/cp mvn=sn/cn % Εκτύπωση αποτελεσμάτων και τέλος προγράμματος 'Plithos + =',cp,' Athroisma + =',sp,' Mesi (mi + =',mvp 'Plithos - =',cn,' Athroisma - =',sn,' Mesi (mi - =',mvn mvp+mvn,4*mvn mvp=sp/cp mvn=sn/cn Εκτύπωση αποτελεσμάτων και τέλος προγράμματος write (*,*) 'Plithos + =',cp,' Athroisma + =',sp,' Mesi timi + =',mvp write (*,*) 'Plithos - =',cn,' Athroisma - =',sn,' Mesi timi - =',mvn write (*,*) mvp+mvn,4*mvn end
Αντιπαραβολή Matlab-Fortran Η τελική μορφή του κώδικα 84 cp=0; cn=0; sp=0; sn=0; n = input ('Dose to plithos ton pragma(kon arithmon') for i=1 : n a=input('dose ena stoixeio (s aradas') if (a<=0) then sn=sn+a; cn=cn+1; else sp=sp+a; cp=cp+1; end end mvp=sp/cp mvn=sn/cn 'Plithos + =',cp,' Athroisma + =',sp,' Mesi (mi + =',mvp 'Plithos - =',cn,' Athroisma - =',sn,' Mesi (mi - =',mvn mvp+mvn,4*mvn fprintf(1,'plithos + ='); fprintf(1,'%6.2f\t',cp); fprintf(1,'athroisma + ='); fprintf(1,'%6.2f\t',sp); fprintf(1,'mesi timi + ='); fprintf(1,'%6.2f\n',mvp); fprintf(1,'plithos - ='); fprintf(1,'%6.2f\n',cn); fprintf(1,'athroisma - ='); fprintf(1,'%6.2f\n',sn); fprintf(1,'mesi timi - ='); fprintf(1,'%6.2f\n',mvn); mvp+mvn,4*mvn
Αντιπαραβολή Matlab-Fortran Άσκηση 1: Παραγοντικό ενός αριθμού program factorial_of_n IMPLICIT NONE integer N,i integer(8) factorial print *, 'This program computes the factorial of & &a positive integer number N' print *, 'Give the N' read *, N factorial=1 do i = 1, N factorial = factorial*i enddo print *, 'The factorial of N is' print *, factorial end f = factorial(10) 'This program computes the factorial of & &a posi(ve integer number N' N=input('Give the N ) for i = 1:N factorial = factorial*i end 'The factorial of N is, factorial 85/
86/ Αντιπαραβολή Matlab-Fortran Άσκηση 2: Αλγόριθμος για την εύρεση της τετραγωνικής ρίζας y=x/2 do i=1,n y_old=y y=(x/y+y)/2 if(abs(y-y_old)<error) exit enddo y=x/2 for i=1:n y_old=y end y=(x/y+y)/2 if abs(y- y_old)<error ; break ; end ================================ y=x/2 while abs(y- y_old)<error y_old=y y=(x/y+y)/2 end
Αντιπαραβολή Matlab-Fortran Άσκηση 3: Υπολογισμός τιμής συνάρτησης 87/ program exercise4 IMPLICIT NONE real x,y print *, 'Give a real value' read *, x if((x<0.).or.(x==2)) then print *, 'Error' else y=5*sqrt(x)/(x- 2)+3./5 print *, 'Value of y =',y endif end clear x=input('give a real value ) if (x<0) && (x==2) 'Error' else y=5*sqrt(x)/(x- 2)+3./5 'Value of y =',y end
Αντιπαραβολή Matlab-Fortran Άσκηση 3: Υπολογισμός τιμής συνάρτησης Τροποποιήστε τον προηγούμενο κώδικα ώστε αφού τυπώσει την τιμή του y να ζητάει νέα τιμή του x. Η διαδικασία να επαναλαμβάνεται 5 φορές. 88/ clear for i=1:5 x=input('give a real value ) if (x<0) && (x==2) 'Error' else y=5*sqrt(x)/(x- 2)+3./5 'Value of y =',y end end
89/ Παράδειγμα/ Άσκηση 1. Δίνεται η συνάρτηση/ 2 ( ) = 3exp(sin( )) + f x x x Να σχεδιάσετε την συνάρτηση βάζοντας τίτλους στους άξονες και στην γραφική παράσταση./
90/ Παράδειγμα/ Σχεδιάστε τη γραφική παράσταση της συνάρτησης με x στο διάστημα [0,6π]./
91/ Παράδειγμα/ Σχεδιάστε τις γραφικές παραστάσεις των συναρτήσεων x 2, x 3, x 4 και σε λογαριθμική κλίμακα με x στο διάστημα [0,4]./
92/ Παράδειγμα/ Σχεδιάστε τη γραφική συνάρτηση επιφάνειας για τη συνάρτηση για ένα διάστημα τιμών ±8 γύρω από το μηδέν./
93/ Παράδειγμα/ Η αρχική κατανομή θερμότητας σε ένα ατσάλινη πλάκα δίνεται από τη συνάρτηση:. Να σχεδιαστεί η κατανομή αυτή σε ένα πλέγμα -2.1 x 2.1, -6 y 6 με πλάτος πλέγματος 0.15 και στις δύο διαστάσεις./
94/ Παράδειγμα/ Να γραφτεί πρόγραμμα που τυπώνει τους πρώτους n φυσικούς αριθμούς για τους οποίους το άθροισμα των τετραγώνων τους δεν ξεπερνά το 200. n=1; while (sum((1:n).^2)<=200) n=n+1; if (sum((1:n).^2)>200) n=n-1; break; end end s=0; k=0; while (s<=200) k=k+1; s=s+k^2; if (s>200) s=s-k.^2; k=k-1; break; end end
95 Παράδειγμα Να γραφτεί πρόγραμμα που να υπολογίζει τη διακρίνουσα μιας δευτεροβάθμιας εξίσωσης και τις ρίζες της. function r=rizes(a1,a2,a3) if (a1~=0) diakr=a2^2-4*a1*a3; if (diakr>=0) r(1)=(-a2+sqrt(diakr))/(2*a1); r(2)=(-a2-sqrt(diakr))/(2*a1); else r(1)=(-a2+j*sqrt(-diakr))/(2*a1); r(2)=(-a2-j*sqrt(-diakr))/(2*a1); end else r(1)=-a3/a2; end end
96/ Βιβλιογραφία Biran A., Breiner M. (2003), MATLAB 6 για Μηχανικούς, Εκδόσεις Τζιόλα, Θεσσαλονίκη Elter D.M. (1997), Engineering problems solving with MATLAB, Prentice Hall The Mathworks, Inc., MATLAB Documentation Χατζίκος Ε. (2007), MATLAB 7 για Μηχανικούς, Εκδόσεις Τζιόλα, Θεσσαλονίκη Georgiou, G., Xenophontos, C., (2007) Introduction to MATLAB, Kantzilaris Publications, Nicosia. http://www.tem.uoc.gr/~tsogka/courses/aesde-spring2014/biblio/ MATLABbook.pdf Martín, M. (2014), Introduction to Software for Chemical Engineers, CRC Press. Quarteroni, A., Saleri, F., Gervasio, P., (2010), Scientific Computing with Matlab and Octave, Springer Rawlings, J.B., Ekerdt, J. G., (2002), Chemical Reactor Analysis and Design Fundamentals, Rawlings. Class notes, http://www.morbidelli-group.ethz.ch/education/snm/matlab/ Class notes, http://www.wrgrid.group.shef.ac.uk/downloads/courses/cic6007a/ Class notes, http://ravi.cs.sonoma.edu/es314fa09/lectures/ Class notes, utopia.duth.gr/~ioankiki/matlab/matlab.ppt Class notes, http://anemos.web.auth.gr/matlab/