masteripper Δημοσ. 21 Απριλίου 2019 Μέλος Δημοσ. 21 Απριλίου 2019 3 λεπτά πριν, pmav99 είπε Αν οι περισσότερες εξισώσεις έχουν όντως μια λύση, τότε συνήθως η πρώτη λύση που θα βρεις θα είναι τις περισσότερες φορές η «σωστή». Και αν δεν είναι σύντομα θα την πετύχεις Αφού βρεις μία λύση, το να τεστάρεις πόσες εξισώσεις ικανοποιεί είναι vectorized operation. Πχ σε python + numpy: import numpy as np # Αυτά είναι τα νούμερα που υπαρχουν αριστερά του ίσον coefficients = np.array([ [2, 2, 1], # satisfied [1, 1, 2], # satisfied [1, 2, 3], # satisfied [1, 2, 2], # not satisfied [1, 2, 3], # not satisfied ]) # Αυτή είναι τα νούμερα που υπάρχουν δεξιά του ίσον. Τα δύο τελευταία δεν ικανοποιούν την εξίσωση expected = np.array([ 2, 4, 8, 3, 2]) # Αυτή είναι η λύση που βρήκες (με Gauss ή με ό,τι χρησιμοποιείς) solution = np.array([-2, 2, 2]) results = coefficients * solution unsolved = coefficients[results.sum(axis=1) != expected] print(unsolved) # [[1 2 2] # [1 2 3]] Ενδιαφέρον..θα το δοκιμάσω με την 1η ευκαιρία..
basilis5 Δημοσ. 21 Απριλίου 2019 Δημοσ. 21 Απριλίου 2019 Συμφωνω με οσα ειπωθηκαν. Με 2^Ν πληθος συστηματων εκισωσεων, και με μερικες χιλιαδες εξισωσεις, ακομα και γραμμικες οπως στο παραδειγμα σου, δεν νομιζω να υπαρχει υπολογιστης να στο λυσει σε αυτη τη ζωη. Εκτος κι αν το πραλληλισεις σε χιλιαδες nodes. Και δεν νομιΖω πως ουτε καποιος greedy αλγοριθμος μπορει να σε βοηθησει.
PC_MAGAS Δημοσ. 21 Απριλίου 2019 Δημοσ. 21 Απριλίου 2019 Σε απλά Ελληνικά θες ένα επιλυτή ενός συστήματος;
Fortistis Δημοσ. 21 Απριλίου 2019 Δημοσ. 21 Απριλίου 2019 6 ώρες πριν, masteripper είπε κάπου εδώ έχουμε πρόβλημα καθώς η παραπάνω εξίσωση είναι ίδια με μία απο τις προηγούμενες. Όχι. Δεν είναι ίδια με μία από τις προηγούμενες. Έχεις βασικά λάθη, που σε αποτρέπουν να κατανοήσεις το πρόβλημά σου και, συνεπώς, να βρεις την λύση του. Τα βήματα που παρέθεσε ο pmav είναι μία αρχική λογική προσέγγιση αλλά, δεδομένου των όσων έχεις γράψει, θαρρώ πως δεν έχεις καταλάβει το πρόβλημά σου και, συνεπώς, δεν το μεταφέρεις σωστά. 1
Fortistis Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 Το όλο πρόβλημα πάντως μπορείς να το δεις ως optimization. Αλλά, προς το παρόν, δεν μπορώ να καταλάβω το πρόβλημά σου. Μέχρι στιγμής ό,τι έχεις δώσει ως παρουσίαση του προβλήματος έχει βασικά λάθη που (προσωπικά) δεν με αφήνουν να καταλάβω τι θες να κάνεις.
albNik Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 18 ώρες πριν, pmav99 είπε Βήμα 2ο; Διαλέγεις Ν από τις Λ εξισώσεις και κοιτάς αν υπάρχει λύση. Αν δεν υπάρχει λύση διαλέγεις Ν διαφορετικές εξισώσεις και επαναλαμβάνεις μέχρι να βρεις τη λύση a. Υπαρχουν πααααρα πολλες διαφορετικες Ν.
masteripper Δημοσ. 22 Απριλίου 2019 Μέλος Δημοσ. 22 Απριλίου 2019 Παιδιά μπορεί να κλείσει...με την βοήθεια του Pmav ξεμπλόκαρα και εγώ και τώρα ξέρω πως να το λύσω ...απλώς θα χρειαστείς κάποιος κώδικας για μαγείρεμα των δεδομένων για να αποφευχθούν το singular matrix...είχα στο μυαλό μου περίπλοκα πράγματα που τελικά δεν χρειάζονται...οπότε επιστροφή στις βάσεις.
Fortistis Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 5 λεπτά πριν, masteripper είπε Παιδιά μπορεί να κλείσει...με την βοήθεια του Pmav ξεμπλόκαρα και εγώ και τώρα ξέρω πως να το λύσω ...απλώς θα χρειαστείς κάποιος κώδικας για μαγείρεμα των δεδομένων για να αποφευχθούν το singular matrix...είχα στο μυαλό μου περίπλοκα πράγματα που τελικά δεν χρειάζονται...οπότε επιστροφή στις βάσεις. Να τονίσω ότι ζητάς βοήθεια δημόσια, παίρνεις βοήθεια, αλλά δεν την μοιράζεσαι με άλλους που μπορεί μετά να χρειαστούν το ίδιο; Κρίμα, γιατί ήθελα να βοηθήσω και εγώ αλλά μετά από τέτοιες πρακτικές δεν νομίζω ότι θα ξανα-προσπαθήσω για εσένα. Σόρρυ.
masteripper Δημοσ. 22 Απριλίου 2019 Μέλος Δημοσ. 22 Απριλίου 2019 Φίλε μου ...είπα ότι ξέρω πως θα το λύσω ....δεν είπα ότι έχω την λύση στην τσέπη μου...απλώς σκεφτόμουν παπάδες και τελικά τα πράγματα θα λυθούν με πιο απλό τρόπο. Εν πρώτοις σου λέω ότι θα εισάγω τα δεδομένα σε μια βάση...θα κάνω 1 Group By για να πάρω τις μοναδικές εξισώσεις. (σε 1ο στάδιο) Μετά θα πρέπει να ελέγξω ποιές τελικά απαλείφονται (αυτό πρέπει να το δουλέψω) Και στο τέλος θα ενώσω τα υποσετ για να δω τι λύσεις παίρνω.. Π.χ σε δείγμα 1000 εξισώσεων με 1η κίνηση υπάρχουν 350+ "μοναδικές" Όμως πρέπει να δώ ποιές απαλείφονται Μετά θα πρέπει να δω πως θα τα χωρίσω σε υποσετ ώστε ο πίνακας να είναι ΑxA με βάση τους αγνώστους για να το λύσει το numpy...εδώ θα παίξουν αρκετές παραδοχές. Απο αυτό θα εξετάσω τις λύσεις για να δω σε τι range παίζουν και πάει λέγοντας... Ίσως έπρεπε να το διατυπώσω ότι πήρα μια 1η ιδέα για να ξεκινήσω να το λύνω ...όχι "ξέρω πως θα το λύσω" Ευχαριστώ όλους για την βοήθεια τους και σίγουρα έκανα κάποια λάθη αλλά απο το επίπεδο της σκέψης ...στο επίπεδο της εφαρμογής υπάρχει πάντα μια απόσταση....τώρα που τα έβαλα κάτω τα πράγματα και τα δουλεψα είδα πως πρέπει να το προσεγγίσω.
Fortistis Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 Διαφωνώ στο group by. Θα πρότεινα να δημιουργήσεις μία ακολουθία από vectors, όπου κάθε vector θα έχει ως στοιχεία τους συντελεστές μίας εξίσωσης. Μετά, τους κάνεις sort βάσει ενός συντελεστή (διάλεξε έναν) και ξεκινάς από τον πρώτο vector να τον χρησιμοποιείς σε διαίρεση στοιχείου προς στοιχείου με όλους τους υπόλοιπους. Μετά, βρίσκεις για ποιους vectors είχες αποτέλεσμα όπου η διαίρεση έδωσε τον ίδιο αριθμό για όλα τα στοιχεία και "πετάς" τους vectors αυτούς. Συνεχίζεις μέχρι τον προ-τελευταίο vector. Θα σου μείνει, μετά, ένα σετ από γραμμικά ανεξάρτητους vectors. Από εκεί και πέρα, εξετάζεις με τυπικές διαδικασίες εάν υπάρχει λύση για όλους. Εάν όχι, τότε θα μπορούσες να το δεις σαν heuristics αλλά και σαν optimization. Υ.Γ. Η διαδικασία μπορεί να σου φάει κάποια ώρα, αλλά θα την κάνεις μόνο μία μέχρι να βρεις το σετ εξισώσεων που θέλεις. Μετά, θα χρησιμοποιείς μόνο το σετ αυτό, μιας και μόνο αυτό το σετ θα είναι αρκετό για να λύσεις το πρόβλημά σου.
masteripper Δημοσ. 22 Απριλίου 2019 Μέλος Δημοσ. 22 Απριλίου 2019 25 λεπτά πριν, Fortistis είπε Διαφωνώ στο group by. Θα πρότεινα να δημιουργήσεις μία ακολουθία από vectors, όπου κάθε vector θα έχει ως στοιχεία τους συντελεστές μίας εξίσωσης. Μετά, τους κάνεις sort βάσει ενός συντελεστή (διάλεξε έναν) και ξεκινάς από τον πρώτο vector να τον χρησιμοποιείς σε διαίρεση στοιχείου προς στοιχείου με όλους τους υπόλοιπους. Μετά, βρίσκεις για ποιους vectors είχες αποτέλεσμα όπου η διαίρεση έδωσε τον ίδιο αριθμό για όλα τα στοιχεία και "πετάς" τους vectors αυτούς. Συνεχίζεις μέχρι τον προ-τελευταίο vector. Θα σου μείνει, μετά, ένα σετ από γραμμικά ανεξάρτητους vectors. Από εκεί και πέρα, εξετάζεις με τυπικές διαδικασίες εάν υπάρχει λύση για όλους. Εάν όχι, τότε θα μπορούσες να το δεις σαν heuristics αλλά και σαν optimization. Υ.Γ. Η διαδικασία μπορεί να σου φάει κάποια ώρα, αλλά θα την κάνεις μόνο μία μέχρι να βρεις το σετ εξισώσεων που θέλεις. Μετά, θα χρησιμοποιείς μόνο το σετ αυτό, μιας και μόνο αυτό το σετ θα είναι αρκετό για να λύσεις το πρόβλημά σου. Ενδιαφέρον ...για να το επεξεργαστώ λίγο.
Fortistis Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 1 λεπτό πριν, masteripper είπε Ενδιαφέρον ...για να το επεξεργαστώ λίγο. Εάν η εξίσωση είναι της μορφής: ax + by + cz = h Τότε οι συντελεστές είναι: [a, b, c, h]. Αλλά, όπως είπα, η πρακτική να κρύβεται μία απάντηση (ακόμα και στο πλαίσιο "σύστασης" ) δεν μου αρέσει καθόλου. Για αυτό και δεν θα βοηθήσω άλλο. Καλή τύχη με τα περαιτέρω.
masteripper Δημοσ. 22 Απριλίου 2019 Μέλος Δημοσ. 22 Απριλίου 2019 Δυστυχώς δεν έχω ασχοληθεί (ακόμα) με Python και φαίνεται ότι έχει πολλά κόλπα.. Μόλις βρήκα αυτό >>> import sympy >>> import numpy as np >>> mat = np.array([[0,1,0,0],[0,0,1,0],[0,1,1,0],[1,0,0,1]]) # your matrix >>> _, inds = sympy.Matrix(mat).T.rref() # to check the rows you need to transpose! >>> inds [0, 1, 3] Απότι φαίνεται έχει τις μεθόδους ώστε να πάρει 1 πίνακα και να βρείς ποιές γραμμές είναι οι "καλές" (γραμμικώς ανεξάρτητες)... οπότε τώρα πρέπει να βρω πως θα διαβάζει τις γραμμές απο το .csv ...να ελέγχει ποιές γραμμές είναι γραμμικώς ανεξάρτητες και εφόσον δεν είναι να πετάει τις γραμμικές εξαρτημένες και να φορτώνει την επόμενη γραμμή απο το .csv...εως ότου φτάσει στο Ν των αγνώστων.
albNik Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 36 λεπτά πριν, Fortistis είπε Διαφωνώ στο group by. Θα πρότεινα να δημιουργήσεις μία ακολουθία από vectors, όπου κάθε vector θα έχει ως στοιχεία τους συντελεστές μίας εξίσωσης. Μετά, τους κάνεις sort βάσει ενός συντελεστή (διάλεξε έναν) και ξεκινάς από τον πρώτο vector να τον χρησιμοποιείς σε διαίρεση στοιχείου προς στοιχείου με όλους τους υπόλοιπους. Μετά, βρίσκεις για ποιους vectors είχες αποτέλεσμα όπου η διαίρεση έδωσε τον ίδιο αριθμό για όλα τα στοιχεία και "πετάς" τους vectors αυτούς. Συνεχίζεις μέχρι τον προ-τελευταίο vector. Θα σου μείνει, μετά, ένα σετ από γραμμικά ανεξάρτητους vectors. Από εκεί και πέρα, εξετάζεις με τυπικές διαδικασίες εάν υπάρχει λύση για όλους. Εάν όχι, τότε θα μπορούσες να το δεις σαν heuristics αλλά και σαν optimization. Υ.Γ. Η διαδικασία μπορεί να σου φάει κάποια ώρα, αλλά θα την κάνεις μόνο μία μέχρι να βρεις το σετ εξισώσεων που θέλεις. Μετά, θα χρησιμοποιείς μόνο το σετ αυτό, μιας και μόνο αυτό το σετ θα είναι αρκετό για να λύσεις το πρόβλημά σου. Θεωρεις οτι οι εξαρτημένες γραμμικες εξισώσεις ειναι μονο το trivial παραδειγμα και 'πετας' τις δυο τελευταίες. x+y+z=1 2x+2y+2z=2 3x+3y+3z=3 Επαναλαμβανω οτι το πρόβλημα δεν μπορει να λυθεί στη γενικη περίπτωση. Τα υποσυνολα απο ανεξαρτητες ειναι παααααρα πολλα (2^10000..). αν θεωρεις οτι μπορείς με μια λουπα να βρεις πιο είναι καλύτερο απ ολα.
masteripper Δημοσ. 22 Απριλίου 2019 Μέλος Δημοσ. 22 Απριλίου 2019 5 λεπτά πριν, albNik είπε Θεωρεις οτι οι εξαρτημένες γραμμικες εξισώσεις ειναι μονο το trivial παραδειγμα και 'πετας' τις δυο τελευταίες. x+y+z=1 2x+2y+2z=2 3x+3y+3z=3 Επαναλαμβανω οτι το πρόβλημα δεν μπορει να λυθεί στη γενικη περίπτωση. Τα υποσυνολα απο ανεξαρτητες ειναι παααααρα πολλα (2^10000..). αν θεωρεις οτι μπορείς με μια λουπα να βρεις πιο είναι καλύτερο απ ολα. Υπάρχουν έξτρα στοιχεία που μπορεί να περιορίσουν τα δεδομένα σε ανεξάρτητα υποσύνολα...αλλά πρέπει να δω πρώτα τις προοπτικές του όλου εγχειρήματος και μετά να το απορρίψω αν είναι.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα