Φωτίζοντας ένα δωμάτιο Ας υποθέσουμε ότι θέλουμε να αποφασίσουμε την θέση λαμπτήρων στην οροφή ενός δωματίου με διαστάσεις 10x4 μέτρων και ύψους 3 μέτρων. Συνολικά θέλουμε οι λαμπτήρες να είναι 300 Watts. Για δοσμένο αριθμό λαμπτήρων πως πρέπει να τοποθετηθούν έτσι ώστε να μεγιστοποιείται η ένταση του φωτός στα πιο σκοτεινά σημεία του δωματίου? Θέλουμε επίσης να δούμε την πρόοδο που επιτυγχάνουμε χρησιμοποιώντας έναν λαμπτήρα 300 Watt, 2 λαμπτήρες των 150 Watt, 3 των 100 Watt κοκ. Υποθέτουμε ότι δεν υπάρχουν έπιπλα και ότι η αντανάκλαση στους τοίχους είναι αμελητέα σε σύγκριση με το απ'ευθείας φως από τους λαμπτήρες. Η ένταση Ι του φωτός σε ένα σημείο του δωματίου δίνεται από την σχέση I= E 4 π d 2 Όπου Ε είναι η ισχύς σε Watt και d απόσταση του σημείου από τον λαμπτήρα
Ένας λαμπτήρας 300 Watt Αν υπάρχει ένας λαμπτήρας ας υποθέσουμε ότι τον τοποθετούμε στο κέντρο της οροφής. Εισάγουμε συντεταγμένες x από 0 10 και y από 0 4. Τοποθετούμε τον λαμπτήρα στη θέση (5,2) σε ύψος τρία μέτρα. Η ένταση του φωτός είναι >>syms x y; >> illum = 300/(4*pi*( (x - 5)ˆ2 + (y - 2)ˆ2 + 3ˆ2) ) Μπορούμε να χρησιμοποιήσουμε την εντολή ezcontourf για να σχεδιάσουμε την συνάρτηση της έντασης. Με την επιλογή colormap διαβαθμίζουμε την γραφική παράσταση για να δούμε που έχει η ένταση μεγαλύτερες τιμές. >>ezcontourf(illum,[0 10 0 4]); >>colormap(gray); >>axis equal tight Τα σκοτεινότερα σημεία είναι στις γωνίες. Πόση είναι η ένταση του φωτός στο δάπεδο και στις γωνίες και στο κέντρο του δωματίου?
>>subs(illum, {x, y}, {0, 0}) >>subs(illum, {x, y}, {5, 2}) H ένταση στο κέντρο του δωματίου είναι περίπου 4 φορές μεγαλύτερη από ότι στις γωνίες. Ο στόχος μας είναι να φωτίσουμε το δωμάτιο όσο το δυνατόν πιό ομοιόμορφα χρησιμοποιώντας λαμπτήρες με την ίδια συνολική ισχύ. Η εντολή ezcontouref μας περιορίζει αφού δεν μας επιτρέπει να επέμβουμε στον αριθμό των ισοσταθμικών καμπυλών. Ένας τέτοιος έλεγχος μπορεί να επιτευχθεί με την εντολή contourf, αλλά αυτή η εντολή κάνει γραφική παράσταση αριθμητικά και όχι συμβολικά.
Δυο λαμπτήρες των 150 Watt Σε αυτή την περίπτωση πρέπει να αποφασίσουμε που θα βάλουμε τους λαμπτήρες. Η κοινή λογική μας λέει να τους τοποθετήσουμε συμμετρικά κατά μήκος μιας γραμμής παράλληλα στην μεγάλη διάσταση του δωματίου, δηλαδή στην γραμμή y=2. Ορίζουμε μια συνάρτηση που δίνει την ένταση των φωτός στο σημείο ( x, y ) στο δάπεδο από έναν λαμπτήρα 150 Watt τοποθετημένο στο σημείο ( d, 2 ) στην οροφή. >>light2 = inline(vectorize( ' 150/(4*pi*( ( x d )^2 + ( y 2 )^2 + 3ˆ2 ) ) ' ), ' x ', ' y ', ' d ' ) Ας πάρουμε μια ιδέα πως κατανέμεται η ένταση αν ο ένας λαμπτήρας είναι στην θέση d=3 και ο άλλος d=7. >>[X,Y] = meshgrid(0:0.1:10, 0:0.1:4); >>contourf( light2( X, Y, 3 ) + light2( X, Y, 7), 20 ); >>axis equal tight
Το δάπεδο δείχνει πιο ομοιόμορφα φωτισμένο αλλά μάλλον οι λαμπτήρες είναι πολύ κοντά ο ένας στον άλλο. Ας τους μετακινήσουμε d=2 και d=8. >>contourf(light2(x, Y, 2) + light2(x, Y, 8), 20); >>axis equal tight Έχει βελτιωθεί η κατάσταση? Ας τους μετακινήσουμε d=1 και d=9. >>contourf(light2(x, Y, 1) + light2(x, Y, 9), 20); >>axis equal tight Τι παρατηρούμε? Υπάρχει συστηματικός τρόπος για να βρούμε την βέλτιστη θέση των λαμπτήρων? Γενικά βάζουμε τον έναν στην θέση x=d και τον άλλο στην θέση y=10 - d με d μεταξύ 0 και 5. Τα σκοτεινότερα σημεία θα είναι στις άκρες ή στην μέση του δωματίου κατά μήκος των μεγαλύτερων τοίχων. Από την συμμετρία η ένταση θα είναι η ίδια στις 4 γωνίες του δωματίου.
Ας κάνουμε μια γραφική παράσταση της έντασης σε συνάρτηση του d σε μια γωνία του τοίχου >>d = 0:0.1:5; >>plot(d, light2(0, 0, d) + light2(0, 0, 10 d)) Και στο κέντρο του δωματίου >>plot(d, light2(5, 0, d) + light2(5, 0, 10 - d)) Ψάχνουμε την τιμή του d για την οποία η μικρότερη τιμή των συναρτήσεων (σκοτεινά σημεία) είναι όσο το δυνατόν μεγαλύτερη. >>hold on; >>plot(d, light2(0, 0, d) + light2(0, 0, 10 - d)); >>hold off Η τιμή του d είναι κοντά στο 1.4 με ένταση λίγο κάτω από το 1. syms d; eqn = inline(char(light2(0, 0, d) + light2(0, 0, 10 - d) - light2(5, 0, d) - light2(5, 0, 10 d ) ) )
>>fzero(eqn, [0 5]) >>light2(0, 0, 1.441) + light2(0, 0, 10-1.441) Τα σκοτεινότερα σημεία έχουν ένταση περίπου 0.93 σε σχέση με 0.63 για ένα λαμπτήρα!! Τρεις λαμπτήρες των 100 Watt >>light3 = inline(vectorize( 100/(4*pi*((x - d)ˆ2 + (y - 2)ˆ2 + 3ˆ2)) ), x, y, d ) Υποθέτουμε ότι ένας λαμπτήρας είναι στο κέντρο και οι άλλοι δυο συμμετρικά όπως προηγουμένως >>[X,Y] = meshgrid(0:0.1:10, 0:0.1:4); >>contourf(light3(x, Y, 1)+ light3(x, Y, 5) + light3(x, Y, 9), 20); >>axis equal tight Φαίνεται ότι θα έπρεπε να βάλουμε τους λαμπτήρες πιο κοντά στους τοίχους με την μικρή διάσταση.
Ορίζουμε μια συνάρτηση που δίνει την ένταση στην θέση x κατά μήκος ενός μεγάλου τοίχου και μετά δίνουμε μια γραφική παράσταση της έντασης σαν συνάρτηση του d για διάφορες τιμές του x. d = 0:0.1:5; for x = 0:0.5:5 end plot(d, light3(x, 0, d) + light3(x, 0, 5) +... light3(x, 0, 10 - d)) hold on hold off Για d=0 έχουμε μέγιστη ένταση στα σκοτεινότερα σημεία του δωματίου που είναι οι γωνίες (x=0). Εκεί η ένταση είναι >>light3(0, 0, 0) + light3(0, 0, 5) + light3(0, 0, 10) 0.8920 Δηλαδή τα πήγαμε χειρότερα από τους 2 λαμπτήρες!!!
Monte Carlo...πάλι Για να κάνουμε στατιστικές εκτιμήσεις σχετικά με αποτελέσματα σε βάθος χρόνου μιας τυχαίας διαδικασίας είναι συχνά χρήσιμο να κάνουμε μια προσομοίωση βασισμένη στις πιθανότητες που διέπουν τα ενδεχόμενα. Αυτή η διαδικασία αναφέρεται ως μέθοδος Monte- Carlo. Ας υποθέσουμε ότι σε ένα παιγνίδι σε καζίνο ο παίκτης έχει στοιχηματίζει ενάντια στο καζίνο το οποίο έχει θεωρητική πιθανότητα να κερδίσει 51%. Το ερώτημα είναι πόσα παιγνίδια πρέπει να παιχτούν μέχρι το καζίνο να είναι σίγουρο ότι θα είναι μπροστά στις νίκες? >>esoda = sign(0.51 - rand) Τι έγινε στο παιγνίδι? Ας προσομοιώσουμε το παιγνίδι 10 φορές >>esoda = sign(0.51 - rand(1, 10)) Πόσες φορές κέρδισε και πόσες έχασε το καζίνο?
Για μεγαλύτερο πλήθος παιγνιδιών >>kerdos = sum(sign(0.51 - rand (1, 100))) kedros = -6 Το καζίνο είχε χάσιμο -6 μοναδες μετά από 100 παιγνίδια. Κατα μέσο όρο το καζίνο στα 100 παιγνίδια θα έπρεπε θεωρητικά να κερδίσει τα 51 και να χάσει τα 49 δηλαδή να έχει κέρδος +2 μονάδες. >>kerdos = sum(sign(0.51 - rand (100, 10))) profit = -4 4 2 2-4 6-6 -12 16-2 Παρατηρούμε ότι το κέρδος αλλάζει από μια παρτίδα των 100 παιγνιδιών σε μια άλλη Για να πάρουμε μια ιδέα πως το κέρδος κατανέμεται γενικά μπορούμε να επαναλάβουμε το πείραμα αρκετές φορές και να σχεδιάσουμε ένα ιστόγραμμα με τα αποτελέσματα.
kerdi = inline( sum(sign(0.51 - rand(n, k))), n, k ) Η συνάρτηση αυτή παράγει ένα πίνακα n x k με τυχαίους αριθμούς και μετά εκτελεί τις πράξεις όπως προηγουμένως. Ας κάνουμε ένα ιστόγραμμα με 100 παρτίδες 100 παιγνιδιών. Θεωρητικά το καζίνο θα μπορούσε να κερδίσει ή να χάσει 100 μονάδες αλλά πρακτικά τα αποτελέσματα είναι μεταξύ του 30 γύρω από το 0. Οπότε απεικονίζουμε τα αποτελέσματα ανάλογα hist(kerdi(100, 100), -40:2:40); axis tight Η κατανομή είναι αρκετά ανομοιόμορφη για να συνάγουμε ασφαλή συμπεράσματα. Οπότε ας δοκιμάσουμε 1000 φορές. >>hist(kerdi(100, 1000), -40:2:40); axis tight Και 10000 φορές >>hist(profits(100, 10000), -40:2:40); axis tight Τι παρατηρούμε? Για τα κέρδη του καζίνο μετά από 100 παιγνίδια μπορούμε να έχουμε μια καλή εικόνα μετά από 1000 δοκιμές του πειράματος.
Τώρα θεωρούμε το πρόβλημα των κερδών του καζίνο μετά από 1000 παιγνίδια. Περιμένουμε το καζίνο να κερδίσει τα 510 και να χάσει τα 490 για ένα καθαρό κέρδος 20 μονάδων. >>hist(profits(1000, 100), -100:10:150); axis tight Οι τιμές που παρατηρούμε για το κέρδος μετα από 1000 παιγνίδια είναι πιο μεγάλες σε σχέση με τα 100 παιγνίδια. Αυτό αντικατοπτρίζει το θεωρητικό αποτέλεσμα ότι τα αποτελέσματα μετά από μεγάλο n επαναλήψεις είναι ανάλογο με την τετραγωνική ρίζα του n. Αν αυξήσουμε το n κατα 10 τότε το εύρος των τιμών αυξάνει κατα 10^(1/2) λίγο πιο πανω από 3. Μετά από 1000 παιγνίδια είναι πιο πιθανό το καζίνο να κερδίζει από το να χάνει. >>hist(profits(1000, 1000), -100:10:150); axis tight Αν και είναι λίγο απίθανο δεν είναι αμελητέα η πιθανότητα το καζίνο να χάνει 50 μονάδες μετά από 1000 παιγνίδια. Οπότε αν κάθε μονάδα είναι 1000 ευρώ τότε θα πρέπει να υπάρχουν τουλάχιστον 100.000 ευρω στην μπανκα.
Τι γίνεται μετά από 10000 παιγνίδια? Περιμένουμε το καζίνο να είναι μπροστά κατα 200 μονάδες. hist(profits(10000, 100), -200:25:600); axis tight Και πάλι βλέπουμε ότι υπάρχει και πάλι πιθανότητα (αν και αμελητέα) το καζίνο να χάσει hist(profits(10000, 1000), -200:25:600); axis tight Για να είναι σίγουρο το καζίνο ότι θα έχει καθαρό κέρδος θα πρέπει να παιχτούν 100000 παιγνίδια και πλέον >>profits(100000, 10) ans = Columns 1 through 6 2192 2206 1552 1786 2068 1996 Columns 7 through 10 1630 2188 2088 1820