Κυριακή, 11 Ιανουαρίου 2015

Υπολογισμός μήκους τόξου καμπύλης

Στην ανάρτηση αυτή θα δημιουργήσουμε έναν αλγόριθμο που υπολογίζει το μήκος τόξου μίας καμπύλης. Υπάρχει η δυνατότητα αυτό το μήκος να υπολογιστεί αναλυτικά όμως θα δούμε πως απαιτείται ο υπολογισμός ολοκληρώματος. Συνεπώς υπάρχει η περίπτωση μία τέτοια επίλυση να είναι δύσκολη και επίπονη.

Ας δούμε αρχικά πως επιτυγχάνεται η αναλυτική λύση. Έχουμε την συνάρτηση του σχήματος 1 και θέλουμε να υπολογίζουμε το μήκος τόξου της στο διάστημα [a,b]. Το μήκος τόξου της ΑΒ στο διάστημα αυτό είναι το άθροισμα των διαδοχικών χορδών AP1, P1P2,... Pn-1B που ενώνουν σημεία της συνάρτησης όταν ο αριθμός των σημείων τείνει στο άπειρο.

σχήμα 1, το τμήμα τόξου ΑΒ μπορεί να υπολογιστεί χωρίζοντας την καμπύλη σε
άπειρες χορδές.

Αν λοιπόν Α(a,f(a)) και Β(b,f(b)) είναι δύο σημεία της y=f(x) και στο διάστημα [a,b] η f(x) και η παράγωγος της είναι συνεχείς συναρτήσεις τότε το μήκος τόξου S μεταξύ των σημείων Α και Β δίνεται από την σχέση:
Για να μπορέσουμε να υπολογίσουμε αριθμητικά το παραπάνω ολοκλήρωμα στο διάστημα [a,b] απλώς δεν θα διαιρέσουμε τη συνάρτηση σε άπειρο αριθμό χορδών αλλά σε πεπερασμένο. Έτσι θα αθροίσουμε τα μήκη των χορδών αυτών με αποτέλεσμα να έχουμε μία προσέγγιση για το μήκος τόξου της συνάρτησης. Είναι φανερό πως όσο μεγαλύτερος είναι ο αριθμός των χορδών που διαιρούμε την συνάρτηση τόσο καλύτερη η προσέγγιση που κάνουμε. Αυτά φαίνονται στο σχήμα 2 όπου χωρίζουμε την καμπύλη σε δέκα χορδές.

σχήμα 2, χωρίζουμε την καμπύλη σε δέκα χορδές.
Οπότε αν χωρίσουμε την καμπύλη σε n χορδές και Si είναι το μήκος κάθε χορδής, το συνολικό μήκος τόξου θα είναι

Για να βρούμε το μήκος Si της i-οστης χορδής κάνουμε το σχήμα 3.

σχήμα 3, μία μεμονωμένη χορδή που προσεγγίζει την συνάρτηση στο διάστημα
[xi,xi+1].
Η χορδή είναι ένα ευθύγραμμο τμήμα με άκρα τα σημεία Pi(xi,f(xi)) και Pi+1(xi+1,f(xi+1)). Οπότε το μήκος Si δίνεται από τον τύπο

Τέλος, πρέπει να δούμε ποια είναι η σχέση μεταξύ xi και xi+1. Αν χωρίσουμε το διάστημα [a,b] σε n τμήματα ισχύει η σχέση
όπου
Χρησιμοποιώντας τα παραπάνω γεγονότα ας δημιουργήσουμε ένα αλγόριθμο που θα υπολογίζει αριθμητικά το μήκος τόξου της καμπύλης
Ο αλγόριθμος αυτός είναι ο παρακάτω:

Private Sub Command1_Click()

'δήλωση μεταβλητών
Dim a As Double, b As Double, n As Integer, AB As Double

'εισαγωγή δεδομένων από την φόρμα
a = Text1.Text
b = Text2.Text
n = Text3.Text

'θέτουμε το αρχικό μήκος χορδής=0
AB = 0

'υπολογίζουμε το βήμα
h = (b - a) / n

'θέτουμε ως πρώτο xi το a
xi = a

'ξεκινάμε επαναληπτική διαδικασία για τις n χορδές
For i = 1 To n

'βρίσκουμε το επόμενο xi+1
xf = xi + h

'υπολογίζουμε το μήκος της i χορδής
S = Sqr(h ^ 2 + (f(xi) - f(xf)) ^ 2)

'έπειτα το προσθέτουμε στο μήκος που έχουμε βρει προς το παρόν
AB = AB + S

'το xi της επόμενης επανάληψης είναι το xi+1 αυτής της επανάληψης
xi = xf
Next i

'δώσε στην φόρμα το τελικό μήκος τόξου με ακρίβεια τριών δεκαδικών ψηφίων
Text4.Text = Format(AB, "0.000")

End Sub

'δηλώνουμε ποια είναι η συνάρτηση f
Public Function f(x)
f = x ^ 1.5
End Function

Η φόρμα με την οποία γίνεται η εισαγωγή δεδομένων φαίνεται στην εικόνα 1.

εικόνα 1, η φόρμα εισαγωγής δεδομένων του κώδικα.
Αν θελήσουμε να υπολογίσουμε το μήκος τόξου της συνάρτησης f(x)=x3/2 στο διάστημα [0,5] θέτουμε στην παραπάνω φόρμα όπου a το 0 και όπου b το 5. Θα τρέξουμε τέσσερις φορές τον κώδικα (για n=5, 10, 50, 100) για να δούμε τι αποτελέσματα μας δίνει. Στην πρώτη εκτέλεση η φόρμα φαίνεται στην εικόνα 2.
εικόνα 2, φαίνεται η φόρμα με συμπληρωμένα τα στοιχεία της

Τα αποτελέσματα που λαμβάνουμε για τις διάφορες τιμές του n φαίνονται στον παρακάτω πίνακα:

n              AB
5              12.379
10            12.397
50            12.407
100          12.407

Τώρα πρέπει να δούμε αν αυτά τα αποτελέσματα είναι αληθή. Για να το δούμε αυτό λύνουμε αναλυτικά το παραπάνω πρόβλημα. Το μήκος S του τόξου καμπύλης της συνάρτησης y=f(x)=x3/2 στο διάστημα [0,5] υπολογίζεται ως

Έτσι παρατηρούμε ότι ο αλγόριθμος δίνει πολύ καλά αποτελέσματα ακόμη και για n=5. Οπότε αφού εξακριβώσαμε την ορθή λειτουργία του μπορούμε να τον χρησιμοποιήσουμε για συναρτήσεις που δεν ολοκληρώνονται με αναλυτικό τρόπο.

Πηγή: Γενικά μαθηματικά Frank Ayres

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

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