/ / Verifica la fattibilità del sistema di equazioni lineari indefinito [chiuso] - java, matematica, algebra lineare, lineare, programmazione lineare

Verifica fattibilità del sistema di equazioni lineari non definite [chiuso] - java, matematica, algebra lineare, lineare, programmazione lineare

Voglio scrivere una routine Java che controlli se è fattibile o meno un sistema di equazioni lineari. Ho più variabili che equazioni, quindi il sistema è sottodeterminato.
Esiste un qualche tipo di algoritmo standard per questo? E se sì, qual è la sua complessità temporale?

risposte:

1 per risposta № 1

Credo che sarebbe quello che stai cercando (per scrivere il risolutore completo) Eliminazione gaussiana. Per aver solo verificato se è risolvibile, Ipensi di poter semplicemente verificare di avere almeno tante equazioni linearmente indipendenti quante sono le variabili da risolvere (l'indipendenza lineare significa sostanzialmente che i vettori formati dai coefficienti delle equazioni non sono paralleli). Per un video di entrambe le spiegazioni di indipendenza lineare e attraversando un esempio di eliminazione gaussiana, vedi Qui.

Per quanto riguarda la complessità temporale, dirigerò la tua attenzione questa discussione, anche se dubito che avrà il minimo senso fino a quando non ti sarai presentato al processo di eliminazione gaussiana.

Ci scusiamo per la mancanza di informazioni specifiche su Java, "Sono più un tipo C ++, e per lo più ti sto solo indicando come creare il tuo.


1 per risposta № 2

Quello che stai cercando è chiamato il metodo simplex. Basta eseguire a risolutore di programmazione lineare (Strumento di programmazione lineare / Librerie per Java) sul problema impostando la funzione obiettivo su zero (o qualsiasi altra costante arbitraria).

La complessità temporale prevista è polinomiale. La complessità del caso peggiore è però esponenziale, ma lo è molto molto raro; solo esempi artificiali sono noti per richiedere così tanto tempo.