Η εφαρμογή γραμμής εντολών δέχεται πολυωνυμικούς συντελεστές και μια παράμετρο ακριβείας, υπολογίζοντας τα πραγματικά μηδενικά του πολυωνύμου.
Η εφαρμογή δημιουργήθηκε για να λύσει το πρόβλημα του υπολογισμού των πραγματικών ριζών ενός δεδομένου πολυωνύμου με έναν μοναδικό τρόπο
Η εφαρμογή γραμμής εντολών δέχεται πολυωνυμικούς συντελεστές και μια παράμετρο ακριβείας, υπολογίζοντας τα πραγματικά μηδενικά του πολυωνύμου.
Εφαρμογή Java γραμμής εντολών.
Η έννοια αυτού του αλγορίθμου περιλαμβάνει τα ακόλουθα βήματα:
Ωστόσο, υπάρχει ένα catch-22: Πρέπει πρώτα να υπολογίσουμε τα μηδενικά της παράγωγης συνάρτησης προκειμένου να ορίσουμε τα μηδενικά του ίδιου του πολυωνύμου!
Λύση: Εφαρμόζουμε αναδρομή μέχρι να φτάσουμε σε ένα πολυώνυμο που επιτρέπει τον εύκολο υπολογισμό των μηδενικών του. Αυτή η διαδικασία μπορεί να επαναληφθεί μέχρι να εξάγουμε μια συνάρτηση affine
Μειονότητες:
Για ρεαλιστικούς βαθμούς που βρίσκονται στην πραγματική ζωή, δεν πρέπει να υπάρχει πρόβλημα.
Ο αλγόριθμος έχει σχεδιαστεί χωρίς να υποθέτει δεδομένα κινητής υποδιαστολής, χρησιμοποιώντας Java generics αντ' αυτού
Η εφαρμογή υποστηρίζει τη χρήση του Double ή του BigDecimal, αλλά μια έκδοση Float θα μπορούσε εύκολα να υλοποιηθεί
Είναι απόδειξη της έννοιας. Ο προγραμματισμός μόνο για το BigDecimal θα αρκούσε, αλλά η χρήση γενόσημων καθιστά τους αλγόριθμους πιο ψυχρούς και πιο ενδεικτικούς για αρχάριους
Δεν έχω δοκιμάσει εκτεταμένα την εφαρμογή ακόμα, και υπάρχει μια πιθανότητα ότι θα μπορούσε να τελειοποιηθεί για να βελτιώσει την ακρίβεια και τη λειτουργικότητα σε περισσότερα σενάρια. Ωστόσο, πιστεύω ότι ο κώδικας έχει μεγάλες δυνατότητες.
Νομίζω ότι μπορεί να προσαρμοστεί αποτελεσματικά για να λειτουργήσει σε όλα τα σενάρια.
Οι πολυωνυμικές αριθμομηχανές ρίζας είναι μια βάση στον τομέα της σταδιοδρομίας της επιστήμης των υπολογιστών.
Συνεισφέρω τη δική μου εκδοχή της λύσης στο πρόβλημα.
Δεν είναι μια πολύ αποτελεσματική λύση αφού η υπολογιστική πολυπλοκότητα στη χειρότερη περίπτωση είναι O(G2), όπου G αντιπροσωπεύει τον πολυωνυμικό βαθμό.
Ωστόσο, νομίζω ότι κάνει τη δουλειά αποτελεσματικά.
Ο αλγόριθμος βασίζεται στον υπολογισμό των ριζών ενός πολυωνύμου, υποθέτοντας ότι οι ρίζες της παράγωγης λειτουργίας του είναι γνωστές.
Κάτω από αυτή την υπόθεση, είναι ευθύς ο υπολογισμός των ριζών επειδή μπορούμε να καθορίσουμε το όριο εύρους των ριζών.(Βλέπε:Ιδιότητες των πολυωνυμικών ριζών)
Με αυτόν τον τρόπο, μπορούμε να καθορίσουμε το εύρος κάθε δυνητικής ρίζας χρησιμοποιώντας τις ρίζες της παράγωγης συνάρτησης, και μπορούμε να υπολογίσουμε τα μηδενικά εφαρμόζοντας το θεώρημα του Μπολζάνο.
Αλλά... χρειαζόμαστε τη συνάρτηση για να υπολογίσουμε τις ρίζες της παράγωγης συνάρτησης!
Κανένα πρόβλημα. Χρησιμοποιούμε αναδρομή για να υπολογίσουμε τις ρίζες ενός πολυωνύμου. Η αναδρομική συνάρτηση έχει μια θήκη τερματισμού για το σενάριο ενός πολυωνύμου βαθμού μηδέν (μια σταθερά), το οποίο υποθέτουμε ότι δεν έχει ρίζες.
Δεδομένου ότι η παράγωγη συνάρτηση έχει ένα βαθμό μικρότερο από το αρχικό πολυώνυμο, με τη χρήση αναδρομής, μπορούμε να υπολογίσουμε τις ρίζες ενός πολυωνύμου σε μηδενικούς βαθμούς, καθιστώντας το ένα απλό πρόβλημα για την επίλυση
Αυτός ο τρόπος διαδικασίας μπορεί να απαιτεί ακρίβεια στους υπολογισμούς μας, αλλά αυτό δεν είναι πρόβλημα αν χρησιμοποιήσουμε την κλάση Java BigDecimal.