Αλγόριθμος Μεθόδου Διχοτόμησης με Παραδείγματα

Έξυπνη περίληψη

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

  • ➗ Βασική ιδέα: Διαχωρίστε επανειλημμένα στο μισό μια αγκύλη [a, b] όπου τα f(a) και f(b) έχουν αντίθετα πρόσημα μέχρι το διάστημα να συρρικνωθεί κάτω από μια ανοχή.
  • 📐 Θεωρητική Βάση: Βασίζεται απευθείας στο Θεώρημα Ενδιάμεσης Τιμής, το οποίο εγγυάται ότι υπάρχει ρίζα όταν η συνάρτηση αλλάζει πρόσημο σε ένα συνεχές διάστημα.
  • 🔁 Συμπεριφορά σύγκλισης: Γραμμική σύγκλιση με το σφάλμα να μειώνεται στο μισό ανά επανάληψη, δίνοντας προβλέψιμες αλλά σχετικά αργές βελτιώσεις στην ακρίβεια.
  • ✅ δυνατά: Συγκλίνει πάντα για έγκυρες αγκύλες, απαιτεί μόνο τιμές συνάρτησης και είναι εύκολο να υλοποιηθεί σε οποιαδήποτε γλώσσα προγραμματισμού.
  • 🧪 Πρακτική χρήση: Χρήσιμο για την επίλυση μη γραμμικών εξισώσεων στη φυσική, τα χρηματοοικονομικά, την αναζήτηση υπερπαραμέτρων μηχανικής μάθησης και τους αριθμητικούς λύτες που βασίζονται στην τεχνητή νοημοσύνη.

Τι είναι η μέθοδος διχοτόμησης;

Η Μέθοδος Διχοτόμησης είναι μια από τις πιο θεμελιώδεις αριθμητικές τεχνικές για την εύρεση της ρίζας μιας πολυωνυμικής ή υπερβατικής εξίσωσης. Λειτουργεί τοποθετώντας σε αγκύλες το διάστημα που περιέχει τη ρίζα και στη συνέχεια υποδιαιρώντας αυτό το διάστημα σε δύο μέρη σε κάθε επανάληψη μέχρι η ρίζα να βρίσκεται εντός μιας αποδεκτής ανοχής. Λόγω αυτής της συμπεριφοράς οριοθέτησης, η Μέθοδος Διχοτόμησης αναφέρεται επίσης ως μέθοδος οριοθέτησης.

Δεδομένου ότι ο μηχανισμός λειτουργίας της μοιάζει με δυαδική αναζήτηση, η Μέθοδος Διχοτομίας είναι επίσης γνωστή ως μέθοδος δυαδικής αναζήτησης, μέθοδος διχοτόμησης ή μέθοδος διχοτομίας. Βασίζεται σε μια ισχυρή θεωρητική βάση: το Θεώρημα Ενδιάμεσης Τιμής, το οποίο εγγυάται ότι μια συνεχής συνάρτηση που αλλάζει πρόσημο σε ένα διάστημα πρέπει να μηδενίζεται κάπου μέσα σε αυτό το διάστημα.

Έχοντας τον βασικό ορισμό στη θέση του, ας διερευνήσουμε γιατί είναι σημαντική η εύρεση των ριζών των εξισώσεων και πώς η Μέθοδος Διχοτόμησης εντάσσεται σε αυτήν την ευρύτερη εικόνα.

Εύρεση ριζών εξισώσεων

Σε αυτήν τη συζήτηση, εστιάζουμε μόνο σε εξισώσεις με μία ανεξάρτητη μεταβλητή. Τέτοιες εξισώσεις μπορεί να είναι γραμμικές ή μη γραμμικές. Οι γραμμικές εξισώσεις περιγράφουν το γράφημα μιας ευθείας γραμμής, ενώ οι μη γραμμικές εξισώσεις περιγράφουν καμπύλες και πιο σύνθετα σχήματα.

Η ρίζα μιας εξίσωσης είναι η τιμή της ανεξάρτητης μεταβλητής που ικανοποιεί την εξίσωση. Για παράδειγμα, η ρίζα της εξίσωσης f(x) = 4 – x2 = 0 είναι 2, επειδή f(2) = 4 – 22 = 0.

Ας θεωρήσουμε την f(x) ως μια πραγματική συνεχή συνάρτηση. Σύμφωνα με το Θεώρημα Ενδιάμεσης Τιμής, η εξίσωση f(x) = 0 έχει τουλάχιστον μία ρίζα μεταξύ a και b κάθε φορά που f(a)f(b) < 0. Με άλλα λόγια, η συνάρτηση f(x) έχει μια ρίζα, «c», κάπου μεταξύ a και b.

Εύρεση ριζών εξισώσεων

Αυτή η ιδιότητα αλλαγής πρόσημου είναι ακριβώς αυτό που εκμεταλλεύεται η Μέθοδος Διχοτόμησης. Η επόμενη ενότητα δείχνει πώς φαίνεται αυτή η ιδέα γραφικά.

Γραφική αναπαράσταση της μεθόδου διχοτόμησης

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

Η διαδικασία μπορεί να συνοψιστεί ως εξής:

  • Αρχικά επιλέγουμε δύο αρχικές εικασίες, μια1 και β1, για το οποίο f(a1) στ(β1) < 0. Σύμφωνα με το Θεώρημα Ενδιάμεσης Τιμής, η ρίζα πρέπει να βρίσκεται στο [a1, β1].
  • Στη συνέχεια υπολογίζουμε το μέσο σημείο ενός1 και β1, το οποίο είναι β2Το αρχικό διάστημα μειώνεται τώρα σε [a1, β2] επειδή f(a1) στ(β2) < 0.
  • Με τον ίδιο τρόπο, το διάστημα μειώνεται στο μισό ξανά και ξανά μέχρι να βρεθεί μια κατά προσέγγιση λύση εντός της επιθυμητής ανοχής.

Γραφική αναπαράσταση της μεθόδου διχοτόμησης

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

Αλγόριθμος μεθόδου διχοτόμησης

Τα βήματα για την εφαρμογή του αλγορίθμου της Μεθόδου Διχοτόμησης για την εύρεση της ρίζας της εξίσωσης f(x) = 0 είναι τα εξής.

Βήμα 1) Επιλέξτε αρχικές εικασίες a, b και a ποσοστό ανοχής e.

Βήμα 2) Αν f(a)f(b) >= 0, τότε η ρίζα δεν βρίσκεται σε αυτό το διάστημα. Σε αυτήν την περίπτωση, δεν υπάρχει λύση εντός των [a, b].

Βήμα 3) Βρείτε το μέσο σημείο, c = (a + b)/2.

(i) Αν η τιμή της συνάρτησης στο μέσο f(c) = 0, τότε το c είναι η ρίζα. Μεταβείτε στο βήμα 5.
(ii) Αν f(a)f(c) < 0, η ρίζα βρίσκεται μεταξύ a και c. Στη συνέχεια, ορίστε a = a, b = c.
(iii) Διαφορετικά, ορίστε a = c, b = b.

Βήμα 4) Εάν το απόλυτο σφάλμα είναι υψηλότερο από το ποσοστό ανοχής, δηλαδή (b – a) > e, επιστρέψτε στο βήμα 3.

Βήμα 5) Εμφάνιση c ως κατά προσέγγιση ρίζα.

Ας δούμε ένα παράδειγμα του αλγορίθμου της Μεθόδου Διχοτόμησης σε δράση. Θα βρούμε τη ρίζα της ακόλουθης συνεχούς συνάρτησης χρησιμοποιώντας τον τύπο της Μεθόδου Διχοτόμησης.

f (x) = x3 - Χ2 + 2

Παράδειγμα μεθόδου διχοτόμησης

Βήμα 1) Ας υποθέσουμε,

         a = -10,
         b = 10, και
         e = 1% ή 0.01.

Βήμα 2) Τώρα, θα ελέγξουμε εάν f(a)f(b) >= 0 ή όχι.

         f(α) = f(-10) = (-10)3 – (-10)2 + 2 = -1098
         f(β) = f(10) = (10)3 - (10)2 + 2 = 902
         f(a)f(b) = f(-10)f(10) = (-1098)(902) < 0

Επομένως, η ρίζα της παραπάνω συνάρτησης βρίσκεται στο διάστημα [-10, 10].

Βήμα 3) Στη συνέχεια, υπολογίζεται το μέσο σημείο c.

Παράδειγμα μεθόδου διχοτόμησης

Τώρα πρέπει να ελεγχθούν οι ακόλουθες συνθήκες:

(i) Εάν f(c) = 0:
         f(c) = f(0) = (0)3 - (0)2 + 2 = 2, το οποίο δεν είναι ίσο με 0.

(ii) Εάν f(a)f(c) < 0:
         f(c)f(a) = 2 * (-1098) < 0

Η συνθήκη πληρούται. Για την επόμενη επανάληψη, οι τιμές θα είναι:

         a = a = -10
         b = c = 0

Βήμα 4) Καθώς (b – a) = (0 – (-10)) = 10 > 0.01, η διαδικασία επαναλαμβάνεται. Οι επόμενες επαναλήψεις φαίνονται στον παρακάτω πίνακα.

Επανάληψη a b c βα f(c)
1 -10 0 0 10 2
2 -5 0 -5 5 -148
3 -2.5 0 -2.5 2.5 -19.875
4 -1.25 0 -1.25 1.25 -1.52562
5 -1.25 -0.625 -0.625 0.625 1.36523
6 -1.25 -0.9375 -0.9375 0.3125 0.297119
7 -1.09375 -0.9375 -1.09375 0.15625 -0.50473
8 -1.01562 -0.9375 -1.01562 0.078125 -0.0791054
9 -1.01562 -0.976562 -0.976562 0.0390625 0.115003
10 -1.01562 -0.996094 -0.996094 0.0195312 0.0194703
11 -1.00586 -0.996094 -1.00586 0.00976562 -0.0294344

Βήμα 5) Στην 11η επανάληψη, η συνθήκη στο βήμα 4 καθίσταται ψευδής. Έτσι, η κατά προσέγγιση ρίζα αυτής της εξίσωσης είναι -1.00586.

Με ένα αριθμητικό παράδειγμα ολοκληρωμένο, η επόμενη ενότητα παρουσιάζει το λογικό διάγραμμα που αποτυπώνει την πλήρη ροή ελέγχου.

Λογικό διάγραμμα Μέθοδος Διχοτόμησης

Το παρακάτω διάγραμμα ροής συνοψίζει τη λογική λήψης αποφάσεων της Μεθόδου Διχοτόμησης, συμπεριλαμβανομένου του ελέγχου βραχίονα, της ενημέρωσης μέσου σημείου και της δοκιμής ανοχής.

Λογικό διάγραμμα Μέθοδος Διχοτόμησης

Ψευδής-Code

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

Start
Set a, b, e
if f(a)*f(b) >= 0
    Output("Root does not exist in this interval")
    Stop
while (b-a) > e do
    c ← (a + b)/2
    if f(c) = 0
        break
    end if
    if f(c)*f(a) < 0 then
        b ← c
    else
        a ← c
end while
Output(c)
Stop

Παράδειγμα μεθόδου διχοτόμησης σε C/C++

Το ακόλουθο C/C++ Το πρόγραμμα υλοποιεί τη Μέθοδο Διχοτόμησης για να βρει τη ρίζα του f(x) = x3 - Χ2 + 2 εντός του διαστήματος [-10, 10].

εισόδου:

#include <bits/stdc++.h>
using namespace std;
#define Error 0.01
double value(double x)
{
    return x*x*x - x*x + 2;
}
void bisection_method(double a, double b)
{
    if (value(a) * value(b) >= 0)
    {
        cout << "The root does not lie in this interval\n";
        return;
    }
    double c = a;
    while ((b-a) >= Error)
    {
        c = (a+b)/2;
        if (value(c) == 0.0)
            break;
        else if (value(c)*value(a) < 0)
            b = c;
        else
            a = c;
    }
    cout << "The root is :" << c;
}
int main()
{
    double a = -10, b = 10;
    bisection_method(a, b);
    return 0;
}

Παραγωγή:

The root is :-1.00586

Παράδειγμα μεθόδου διχοτόμησης σε Python

The Python Η παρακάτω έκδοση παράγει την ίδια κατά προσέγγιση ρίζα χρησιμοποιώντας την ίδια λογική, γεγονός που την καθιστά ιδανική για γρήγορο πειραματισμό και διδασκαλία.

εισόδου:

def value(x):
    return x*x*x - x*x + 2

def bisection_method(a, b):
    if (value(a) * value(b) >= 0):
        return
    c = a
    while ((b-a) >= 0.01):
        c = (a+b)/2
        if (value(c) == 0.0):
            break
        if (value(c)*value(a) < 0):
            b = c
        else:
            a = c
    print("The root is : ", "%.4f" % c)

a = -10
b = 10
bisection_method(a, b)

Παραγωγή:

The root is :  -1.0059

Πλεονεκτήματα και περιορισμοί της μεθόδου διχοτόμησης

Όπως κάθε αριθμητική τεχνική, η Μέθοδος Διχοτόμησης έχει σαφή πλεονεκτήματα και μερικά πρακτικά μειονεκτήματα. Ο παρακάτω πίνακας συνοψίζει τα σημαντικότερα πλεονεκτήματα και μειονεκτήματα.

Πλεονεκτήματα Μειονεκτήματα
Εύκολη και απλή μέθοδος εύρεσης root για εφαρμογή σε οποιαδήποτε γλώσσα. Η σύγκλιση είναι αργή επειδή η μέθοδος απλώς μειώνει στο μισό το διάστημα σε κάθε βήμα.
Συγκλίνει πάντα όταν παρέχεται μια έγκυρη αγκύλη, καθώς τοποθετεί τη ρίζα σε αγκύλες καθ' όλη τη διάρκεια της διαδικασίας. Αν μία από τις αρχικές εικασίες είναι ήδη κοντά στη ρίζα, η επίτευξη της ρίζας θα απαιτήσει πολλές επαναλήψεις.
Το ποσοστό σφάλματος μπορεί να ελεγχθεί άμεσα αυξάνοντας ή μειώνοντας τον αριθμό των επαναλήψεων ή αυστηροποιώντας την ανοχή. Δεν μπορεί να βρει σύνθετες ρίζες ή πολλαπλές ρίζες ομοιόμορφης πολλαπλότητας, καθώς η συνάρτηση δεν αλλάζει πρόσημο σε τέτοιες ρίζες.

Εφαρμογές της μεθόδου διχοτόμησης

Η μέθοδος διχοτόμησης χρησιμοποιείται σε πολλά πρακτικά και σύγχρονα υπολογιστικά σενάρια όπου απαιτείται ένα ισχυρό βήμα εύρεσης ρίζας.

  • Μηχανικές προσομοιώσεις: Επίλυση μη γραμμικών εξισώσεων που εμφανίζονται στη μεταφορά θερμότητας, τη ρευστοδυναμική και τη δομική ανάλυση.
  • Χρηματοοικονομική μοντελοποίηση: Υπολογισμός αποδόσεων, εσωτερικών ποσοστών απόδοσης και σημείων νεκρού σημείου όπου δεν υπάρχουν λύσεις κλειστής μορφής.
  • Μηχανική μάθηση και Τεχνητή Νοημοσύνη: Εντοπισμός κατωφλίων, βαθμονόμηση μοντέλων και ρύθμιση υπερπαραμέτρων μέσα σε αριθμητικούς επιλυτές που βασίζονται σε τεχνητή νοημοσύνη.
  • Γραφικά υπολογιστή: Προσδιορισμός των τομών ακτίνας-επιφάνειας και των τιμών των παραμέτρων κατά μήκος των καμπυλών.
  • Ενσωματωμένα συστήματα: Προσέγγιση των ριζών σε ελεγκτές χαμηλών πόρων όπου η απλότητα και η προβλεψιμότητα είναι πιο πολύτιμες από την ταχύτητα.

Συχνές Ερωτήσεις

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

Συγκλίνει πάντα όταν η συνάρτηση είναι συνεχής στο [a, b] και το f(a)f(b) είναι μικρότερο από το μηδέν, επειδή το Θεώρημα Ενδιάμεσης Τιμής εγγυάται ότι υπάρχει μια ρίζα στο διάστημα, και η διχοτόμηση συνεχίζει να συρρικνώνει την αγκύλη γύρω από αυτήν.

Η Μέθοδος Διχοτόμησης συγκλίνει γραμμικά. Το σφάλμα μειώνεται περίπου στο μισό σε κάθε επανάληψη, επομένως η επίτευξη ανοχής e από ένα διάστημα μήκους L απαιτεί επαναλήψεις περίπου log2(L/e), οι οποίες είναι πιο αργές από τις μεθόδους Newton ή τέμνουσας.

Η μέθοδος αποτυγχάνει όταν τα f(a) και f(b) έχουν το ίδιο πρόσημο, όταν η συνάρτηση είναι ασυνεχής στο διάστημα ή όταν η ρίζα έχει άρτια πολλαπλότητα, επειδή η συνάρτηση δεν αλλάζει πρόσημο σε μια τέτοια ρίζα.

Οι λύτες που βασίζονται στην τεχνητή νοημοσύνη συχνά συνδυάζουν τη Μέθοδο Διχοτόμησης με μοντέλα που έχουν μάθει. Ένα νευρωνικό δίκτυο προτείνει μια στενή ομάδα γύρω από μια πιθανή ρίζα και η Μέθοδος Διχοτόμησης στη συνέχεια εγγυάται μια αξιόπιστη, πιστοποιημένη λύση εντός αυτής της ομάδας.

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

Συνοψίστε αυτήν την ανάρτηση με: