ΠΠΜ100 & ΜΜΠ100: Εισαγωγή στην Μηχανική Αξιοποίηση Η/Υ και Πληροφορικής στην Μηχανική ιάλεξη 4 η 2 Οκτωβρίου Πέτρος Κωµοδρόµος komodromos@ucy.ac.cy http://www.ucy.ac.cy/~petrosk
Περιεχόµενα ιάλεξη #1: 22 Σεπτεµβρίου, 2003 Εισαγωγικά στοιχεία Η/Υ και βασικών προγραµµάτων ιάλεξη #2: 25 Σεπτεµβρίου, 2003 Γραφικές παραστάσεις µε το Μatlab ιάλεξη #3: 29 Σεπτεµβρίου, 2003 Προγραµµατισµός µε το Matlab ιάλεξη #4: 2 Oκτωβρίου, 2003 Αριθµητικές µέθοδοι και αλγόριθµοι Εφαρµογές Η/Υ στην Μηχανική
ιάλεξη #4 Αριθµητικές µέθοδοι Επίλυσης µη γραµµικών εξισώσεων (µέθοδος διχοτόµησης) Αριθµητικής ολοκλήρωσης (κανόνας του τραπεζίου) Αλγόριθµοι Ταξινόµηση στοιχείων (ταξινόµηση µε εισαγωγή) Αναζήτηση στοιχείων (δυαδική αναζήτηση) Εφαρµογές Η/Υ στην Μηχανική
Αριθµητικές µέθοδοι Επίλυση προβληµάτων των οποίων δεν υπάρχουν ή δεν έχουν βρεθεί ακόµη αναλυτικές λύσεις. Σειρά συγκεκριµένων βηµάτων υπολογισµών µε στόχο την εύρεση µιας έστω προσεγγιστικής λύσης µε ικανοποιητική ακρίβεια. Χαρακτηριστικά µιας καλής αριθµητικής µεθόδου: Ακρίβεια λύσης (µικρή διαφορά από πραγµατική λύση) Κόστος λύσης (απαιτούµενος χρόνος επίλυσης) Σύγκλιση και ευστάθεια µεθόδου Σφάλµατα: απόλυτο σφάλµα (π.x. Υ προσεγ. - Υ ακριβές ) σχετικό σφάλµα (π.χ. Υ προσεγ. - Υ ακριβές / Υ ακριβές )
Αριθµητική επίλυση µη-γραµµικών εξισώσεων Έχοντας µια συνάρτηση να βρεθεί (ή να βρεθούν) η ρίζα (ρίζες) για τις οποίες η συνάρτηση ισούται µε µηδέν: Y = f(x) = 0.0 ηλαδή τα σηµεία όπου τέµνεται ο άξονας των Χ
Μέθοδος διχοτόµησης 1. Εντοπίστε ένα διάστηµα που συµπεριλαµβάνει την αναζητούµενη ρίζα. 2. Μοιράστε το διάστηµα αυτό στο µισό και κρατήστε το µισό που συµπεριλαµβάνει την ρίζα 3. Επαναλάβετε το βήµα 2 µέχρι να προσεγγιστεί ικανοποιητικά η αναζητούµενη ρίζα (δηλαδή να επιτευχθεί ικανοποιητική σύγκλιση)
Άσκηση 2η Επίλυση µε την µέθοδο της διχοτόµησης της µη γραµµικής εξίσωσης: Χρησιµοποιείστε την συνάρτηση: f(x) = x^2 + 2.5*x - 35.4*sin(x) = 0 function fx = nonlineq1(x) fx = x^2 + 2.5*x - 35.4*sin(x); return 1. Ξεκινείστε µε δύο τιµές που περικλείουν την ζητούµενη ρίζα (π.χ. x1=1, x2=4) και υπολογίστε τα αντίστοιχα y1=f(x1) και y2=x(x2). 2. Υπολογίστε το σηµείο xnew διχοτοµώντας το διάστηµα µεταξύ x1 και x2, και την αντίστοιχη τιµή της συνάρτησης f(xnew). 3. Ελέξτε αν η αντίστοιχη τιµή της συνάρτησης f(xnew) είναι ικανοποιητικά κοντά στο µηδέν, θεωρώντας ότι η απαιτούµενη ακρίβεια ισούται µε 1e-9, και τότε η ρίζα xnew είναι το ζητούµενο και οπότε δεν απαιτούνται περαιτέρω πράξεις (π.χ. µπορείτε να τερµατίσετε τυχόν επαναλήψεις µε το break) 4. Αν δεν ικανοποιείται η απαιτούµενη ακρίβεια τότε δώστε την τιµή του xnew στο όριο (τεταγµένη x1 ή x2) το οποίο έχει ιδίου προσήµου τετµηµένη (y1 ή y2, αντίστοιχα) µε το πρόσηµο του ynew. Επίσης αντικαταστείστε την αντίστοιχη τετµηµένη (y1 ή y2, αντίστοιχα) µε την τιµή του ynew. Συνεχίστε µε το βήµα 2 (π.χ. µε βρόγχο while).
Αριθµητική ολοκλήρωση Έχοντας µια συνάρτηση Y=f(X) να υπολογιστεί το ολοκλήρωµα της συνάρτησης από κάποια τεταγµένη x1 ως κάποια άλλη τεταγµένη x2. ηλαδή το εµβαδό µεταξύ της καµπύλης και του άξονα των x από x1 ως x2: x 1 x 2
Oλοκλήρωση µε την µέθοδο τραπεζίου Προσέγγιση εµβαδού µε το άθροισµα αριθµού τραπεζίων Εµβαδό λωρίδας πλάτους Χ βάση τύπου τραπεζίου f(x α ) f(x β ) x α x β x 1 x 2
Άσκηση 3η Oλοκλήρωση µε την µέθοδο του τραπεζίου της εξίσωσης από x=3 ως x=8: f(x) = x^2 + 2.5*x - 35.4*sin(x) = 0 Χρησιµοποιείστε την συνάρτηση: function fx = nonlineq1(x) fx = x^2 + 2.5*x - 35.4*sin(x); return 1. Aφού ορίσεται τα όρια x1 και x2, χωρίστε το διάστηµα σε 20 τµήµατα, δηλαδή: nx=20; x=(x2-x1)/nx; 2. Xρησιµοποιώντας κατάλληλα βρόγχους υπολογίστε το εµβαδό του κάθε τραπεζίου από τις αντίστοιχες τιµές των τετµηµένων y των εκάστοτε τιµών x: 3. Σε κάθε πέρασµα του βρόγχου πρέπει να αθροίζετε το εµβαδό ώστε τελικά να υπολογίσετε το συνολικό εµβαδό που αντιστοιχεί στο ορισµένο ολοκλήρωµα
Αλγόριθµοι Ορισµός και πλήρης κατανόηση του προβλήµατος προς επίλυση Καθορισµός ενός αλγόριθµου, δηλαδή µιας συγκεκριµένης διαδικασίας βηµάτων τα οποία οδηγούν σε συγκεκριµένα αποτελέσµατα µε ικανοποιητικά ελάχιστο δυνατό κόστος (µνήµης και χρόνου) Υλοποίηση του αλγορίθµου σε υπορουτίνα/προγράµµα µε χρήση κάποιας κατάλληλης γλώσσας προγραµµατισµού Έλεγχος της υπορουτίνας/προγράµµατος για διάφορες περιπτώσεις δεδοµένων, ειδικά όλων των ακραίων περιπτώσεων. Χρήση υπορουτίνας/προγράµµατος για επίλυση σχετικών προβληµάτων.
Aλγόριθµοι ταξινόµησης (Sorting methods) Η ταξινόµηση είναι χρήσιµη σε πολλά προβλήµατα, π.χ. για την διευκόλυνση της αναζήτησης ενός στοιχείου από πλήθος στοιχείων 5-2 6 4 23 7 45 3 9 0-3 4 7-3 5 6-4 11-4 -3-3 -2 0 3 4 4 5 5 6 6 7 7 9 11 23 45 Μεθόδοι ταξινόµησης (Ν) στοιχείων: απλές µέθοδοι: συνήθως απαιτούν βήµατα τάξης Ο(Ν^2)) µέθοδος ταξινόµησης µε εισαγωγή (insertion sort) µέθοδος ταξινόµησης µε επιλογή (selection sort) µέθοδος ταξινόµησης τύπου κελύφους (shellsort), κλπ. προχωρηµένες µέθοδοι: συνήθως απαιτούν βήµατα τάξης Ο(Ν.logN)) γρήγορη µέθοδος ταξινόµησης (quicksort) µέθοδος ταξινόµησης µε συγχώνευση (mergesort)
Παράδειγµα: αλγόριθµος ταξινόµησης τύπου εισαγωγής Θεωρώντας ότι τα στοιχεία είναι αποθηκευµένα σε ένα διάνυσµα Α Σε κάθε βήµα το στοιχείο A(i) πρέπει να εισαχθεί στην σωστή θέση αναµέσα στα ήδη ταξινοµηµένα από τα προηγούµενα βήµατα στοιχεία A(0), A(1),.,A(i-1) Υλοποίηση αλγορίθµου χρησιµοποιώντας το Matlab: Εξωτερικός βρόγχος function asorted = insertionsort(a) asorted=a; for stoixeio = 2 : length(a) value = asorted(stoixeio); thesh = stoixeio; while thesh>1 & asorted(thesh-1) > value asorted(thesh) = asorted(thesh-1); thesh = thesh-1; end asorted(thesh)=value; disp(asorted); end return Εσωτερικός βρόγχος
Παράδειγµαεφαρµογής αλγόριθµου ταξινόµησης τύπου εισαγωγής 3-4 2-6 7 0 3-1 2-4 3 2-6 7 0 3-1 2-4 2 3-6 7 0 3-1 2-6 -4 2 3 7 0 3-1 2-6 -4 2 3 7 0 3-1 2-6 -4 0 2 3 7 3-1 2-6 -4 0 2 3 3 7-1 2-6 -4-1 0 2 3 3 7 2-6 -4-1 0 2 2 3 3 7
Aλγόριθµοι αναζήτησης στοιχείων (Searching methods) Ας υποθέσοµενα βρούµεένα στοιχείο µε κλειδί τον αριθµό 9 5-2 6 4 23 7 45 3 9 0-3 4 7-3 5 6-4 11 Γραµµική αναζήτηση (Linear search) Ηαναζήτηση στοιχείων διευκολύνεται από την ταξινόµηση των στοιχείων -4-3 -3-2 0 3 4 4 5 5 6 6 7 7 9 11 23 45 υαδική αναζήτηση (Βinary search) Μεθόδοι αναζήτησης (Ν) στοιχείων: γραµµική αναζήτηση (Linear search): απαιτούνται βήµατα τάξεως O(N) δυαδική αναζήτηση (Binary search): απαιτούνται βήµατα τάξεως O(logN)
Παράδειγµα: αλγόριθµος δυαδικής αναζήτησης στοιχείων Θεωρώντας ότι τα στοιχεία είναι ταξινοµηµένα σε ένα διάνυσµα Α διαστάσεως Ν χρησιµοποιούµε το διαίρει και βασίλευε Μοιράζοντας το διάνυσµα στην µέση, κρατάµετοµισό όπου µπορεί να βρίσκεται το αναζητούµενο στοιχείο και επαναλαµβάνοµε αυτό το βήµα, µοιράζοντας διαδοχικά το διάνυσµα στα δύο, µέχρι να βρούµε, αν υπάρχει, το στοιχείο που ψάχνοµε. Υλοποίηση αλγορίθµου δυαδικής αναζήτησης µε χρήση Matlab: function binarysearch(a,x) arxh = 1; telos = length(a); while arxh <= telos meso = floor((arxh+telos)/2); if x < a(meso) telos = meso-1; elseif x > a(meso) arxh = meso+1; else fprintf('to stoixeio %d bre8hke sthn 8esh: %d.', x, meso) return end end fprintf('to stoixeio %d den bre8hke.', x) return
Παράδειγµαεφαρµογής αλγόριθµου δυαδικής αναζήτησης -6-4 -1 0 2 2 3 3 7 >> binarysearch(b,0) To stoixeio 0 bre8hke sthn 8esh: 4. >> binarysearch(b,5) To stoixeio 5 den bre8hke. >> binarysearch(b,7) To stoixeio 7 bre8hke sthn 8esh: 9. >> binarysearch(b,17) To stoixeio 17 den bre8hke. >> binarysearch(b,-6) To stoixeio -6 bre8hke sthn 8esh: 1. >> binarysearch(b,-1) To stoixeio -1 bre8hke sthn 8esh: 3.
Παραδείγµατα χρήσης Η/Υ στην µηχανική υναµική ανάλυση κατασκευών υπό σεισµική διέγερση
Παραδείγµατα χρήσης Η/Υ στην µηχανική Ανάλυση δοκού µε σύστηµα ενεργού ελέγχου ροπών και παραµορφώσεων
Επόµενες διαλέξεις ΠΠΜ100 & ΜΜΠ100 Από τις 3/11 τα µαθήµατα θα συνεχιστούν κανονικά κάθε ευτέρα & Πέµπτη, στις 9-10:00 π.µ., ξεχωριστά για τους ΜΠΠΜ και τους ΜΜΠ στις αίθουσες ΧΩ 01 004 και ΧΩ 001 003, αντίστοιχα. Καλές Σπουδές! ιασκεδάστε, Μάθετε, διασκεδάζοντας! µαθαίνοντας!