Παρασκευή, 31 Οκτωβρίου 2014

Αριθμητική ολοκλήρωση

Θα μελετήσουμε πως μπορούμε να κάνουμε αριθμητική ολοκλήρωση χρησιμοποιώντας ηλεκτρονικό υπολογιστή. Ο βασικός σκοπός μας είναι, ουσιαστικά, να υπολογίσουμε ένα ολοκλήρωμα το οποίο δεν μπορεί να υπολογισθεί με αναλυτική μέθοδο. Παρακάτω θα αναλύσουμε την μέθοδο που θα ακολουθήσουμε και θα δούμε ένα παράδειγμα.

Αρχικά πρέπει να δούμε τι εκφράζει γεωμετρικά ένα ολοκλήρωμα. Γράφοντας
συνεπάγεται πως το I είναι το εμβαδόν μεταξύ της συνάρτησης f(x), του άξονα x'x και των ευθειών x=a και x=b (σχήμα 1).
σχήμα 1, φαίνεται το εμβαδόν Ι που υπολογίζεται από το ολοκλήρωμα.
Για να υπολογίσουμε το παραπάνω εμβαδόν μπορούμε να χωρίσουμε την περιοχή σε τραπεζοειδείς λωρίδες των οποίων το εμβαδόν μπορεί να υπολογιστεί. Προσθέτοντας το εμβαδόν όλων των λωρίδων έχουμε κατά προσέγγιση το συνολικό εμβαδόν I (σχήμα 2).
σχήμα 2, το εμβαδόν Ι έχει χωριστεί σε δέκα τραπεζοειδείς λωρίδες.
Για να εφαρμόσουμε την παραπάνω μέθοδο χωρίζουμε το διάστημα [α,β] σε συγκεκριμένο αριθμό n υποδιαστημάτων. Έπειτα, υπολογίσουμε το εμβαδόν κάθε λωρίδας. Για να το κάνουμε αυτό πρέπει να θυμηθούμε τον τύπο που μας δίνει το εμβαδόν τραπεζίου E. Ο τύπος είναι
όπου υ το ύψος του τραπεζίου, Β η μεγάλη βάση του και b η μικρή βάση του. Για να εφαρμόσουμε τον τύπο αυτό μένει να δούμε το σχήμα 3.
σχήμα 3, φαίνονται οι διαστάσεις της i τραπεζοειδούς λωρίδας.
Αν θεωρήσουμε ότι
τότε η i λωρίδα έχει διαστάσεις
Αυτό προκύπτει από το γεγονός πως οι δύο βάσεις της i λωρίδας έχουν τετμημένες
αντίστοιχα. Έτσι οι πλευρές αυτές έχουν μήκος
αντίστοιχα. Επίσης το ύψος της λωρίδας είναι

Οπότε το εμβαδόν της i λωρίδας είναι
Τέλος το εμβαδόν I είναι περίπου ίσο με
Όσο μεγαλύτερος είναι ο αριθμός n τόσο καλύτερη προσέγγιση κάνουμε για το Ι.

Ας δούμε μία εφαρμογή. Έστω ότι θέλουμε να υπολογίσουμε το ολοκλήρωμα της συνάρτησης
στο διάστημα [0,2.2]. Το παραπάνω ολοκλήρωμα υπολογίζεται και αναλυτικά αφού η f(x) είναι πολυώνυμο. Θα γράψουμε ένα κώδικα στην visual basic με τον οποίο θα υπολογίσουμε το ολοκλήρωμα
με την προσεγγιστική μέθοδο που περιγράψαμε παραπάνω. Ο κώδικας αυτός είναι o

Private Sub Command1_Click()
Dim n As Integer, a As Double, b As Double, E As Double
n = InputBox("δώσε μου τον αριθμό των λωρίδων.")
a = InputBox("δώσε μου το άκρο a του διαστήματος ολοκλήρωσης.")
b = InputBox("δώσε μου το άκρο b του διαστήματος ολοκλήρωσης.")
Dx = (b - a) / n
E = 0
For I = 1 To n
f1 = f((I - 1) * Dx + a)
f2 = f(I * Dx + a)
Ei = (Dx / 2) * (f1 + f2)
E = E + Ei
Next I
Print E
End Sub
Public Function f(x) As Double
f = 5 * (x - 1) ^ 3 - 2 * x ^ 2 + 3
End Function

Ο παραπάνω κώδικας εκτελεί την διαδικασία που περιγράψαμε. Αρχικά εισάγουμε τον αριθμό των λωρίδων n, το a και το b και αυτός μέσα στον επαναληπτικό βρόγχο που έχει υπολογίζει το εμβαδόν της κάθε λωρίδας με τον τύπο που αναφέραμε παραπάνω. Έπειτα προσθέτει όλα τα εμβαδά και βγάζει το τελικό εμβαδόν Ε (το Ε είναι η εκτίμηση του Ι, δηλαδή το Ε είναι η τιμή του ολοκληρώματος που υπολογίζουμε μέσω της παραπάνω μεθόδου ενώ Ι είναι η ακριβής τιμή).

Η τιμή του Ε εξαρτάται άμεσα από το n. Έτσι στον παρακάτω πίνακα έχουμε τις διάφορες τιμές του Ε συναρτήσει του n και το σχετικό σφάλμα καθώς γνωρίζουμε ότι η πραγματική τιμή του ολοκληρώματος είναι Ι=0.8433 (υπολογίζοντας το αναλυτικά και κρατώντας 4 δεκαδικά ψηφία).

n E             Error(%)
5 0.8078 4
10 0.8345 1
50 0.8430 0.035
100    0.8432 0.01
500    0.8433 0

Έτσι παρατηρούμε ότι πρέπει να χωρίσουμε το διάστημα [a,b] σε τουλάχιστον 500 λωρίδες για να έχουμε σφάλμα 0%. Βέβαια σε πρακτικές εφαρμογές το σφάλμα του 1% είναι ελάχιστο οπότε θα μπορούσαμε απλώς να χωρίσουμε το διάστημα σε 10 λωρίδες.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου