Quali sono i sintomi del mal condizionamento quando si usano metodi diretti?


14

Supponiamo di avere un sistema lineare e non sappiamo nulla del suo condizionamento e di non avere informazioni preliminari sulla soluzione. Applichiamo ciecamente l'eliminazione gaussiana e otteniamo una soluzione . È possibile determinare se questa soluzione è affidabile (ovvero se il sistema è ben condizionato) senza un'analisi preliminare approfondita della matrice ? L'entità dei perni fornisce informazioni affidabili?x

E in generale, quali sono le linee guida principali per rilevare il mal condizionamento "al volo"?

Risposte:


13

Quando una matrice è mal condizionata ? Dipende dall'accuratezza della soluzione che stai cercando, tanto quanto "la bellezza è negli occhi di chi guarda" ...

Potrebbe essere la tua domanda che dovrebbe essere riformulata meglio in quanto esistono stimatori di numeri di condizione economici e robusti basati sulla fattorizzazione ?LU

Supponendo che tu sia interessato al vero problema generale (denso, non simmetrico) nell'aritmetica a doppia precisione, ti suggerirei di utilizzare il risolutore esperto LAPACK DGESVX che fornisce una stima della condizione sotto forma del reciproco, . Come bonus hai anche altre chicche come l'equazione / bilanciamento dell'equazione, il perfezionamento iterativo, i limiti di errore avanti e indietro. A proposito, il mal condizionamento patologico ( ) viene segnalato come errore da .κ ( A ) > 1 / ϵRCOND1/κ(A)κ(A)>1/ϵINFO>0

Andando più in dettaglio, LAPACK stima il numero di condizione nella norma 1 (o -norm se si sta risolvendo ) tramite DGECON . L'algoritmo sottostante è descritto nel prato 36: "Risolvi triangolari robusti per l'uso nella stima delle condizioni" .A T x = bATx=B

Devo confessare che non sono un esperto del settore, ma la mia filosofia è: "se è abbastanza buono per LAPACK, lo è per me".


8

La soluzione di un sistema di equazioni mal condizionato con una matrice di norma 1 un lato destro casuale della norma 1 avrà con alta probabilità una norma dell'ordine del numero di condizione. Pertanto, l'elaborazione di alcune di queste soluzioni ti dirà cosa sta succedendo.


Questo è davvero ciò che sta facendo DGECON, con la finezza aggiuntiva di affinare in modo iterativo la direzione di ricerca per massimizzare il risultato e di utilizzare un risolutore triangolare personalizzato (non quelli BLAS) per evitare che le cose siano distorte da errori di approssimazione. Il costo computazionale di DGECON è quindi paragonabile al tuo semplice test. +1 per ricordarci del semplice significato delle norme matriciali e del numero di condizione. Dovrebbe essere interessante scoprire se DGECON è davvero più robusto di un semplice controllo casuale.
Stefano M,

Tenendo conto del fatto che il numero della condizione di risoluzione di coincide con il numero della condizione di calcolo di , è sufficiente solo moltiplicare la matrice in scala con quei vettori casuali anziché la soluzione effettiva ? A x A x = bUNX=BUNXUNX=B
faleichik,

2
@faleichik Sicuramente no: il trucco qui è ridimensionare modo che e. Naturalmente, essendo questa algebra lineare, non è necessario ridimensionare ma solo ... tuttavia è necessario prima calcolare. Il tuo argomento inverso richiederebbe prima di tutto di calcolarequale ciò che stiamo cercando di valutare. A = 1 κ ( A ) = A A - 1= A - 1A A x A A - 1UNUN=1κ(UN)=UNUN-1=UN-1UNUNXUNUN-1
Stefano M,

5

È quasi impossibile dire se il tuo sistema è mal condizionato da un solo risultato. A meno che tu non abbia una certa previsione sul comportamento del tuo sistema (cioè sai quale dovrebbe essere la soluzione), non c'è molto che puoi dire da un'unica soluzione.

Detto questo, è possibile ottenere ulteriori informazioni se a risolvere più di un sistema con lo stesso . Supponiamo di avere un sistema nella forma . Per una A specifica che non hai alcuna conoscenza preliminare del suo condizionamento, puoi eseguire il seguente test: A x = bUNUNX=B

  1. Risolvi l' per uno specifico vettore sul lato destro . bUNX=BB
  2. Perturbare il vettore del lato destro di doveè molto piccolo rispetto a.| | ϵ | | | | b | |Bnew=B+ε||ε||||B||
  3. Risolvi .UNXnew=Bnew
  4. Se il tuo sistema è ben condizionato, la tua nuova soluzione dovrebbe essere abbastanza vicina alla tua vecchia soluzione (cioè dovrebbe essere piccola). Se osservi un cambiamento radicale nella tua nuova soluzione (ovvero è grande), allora il tuo sistema è probabilmente mal condizionato. | | x - x n e w | |||X-Xnew||||X-Xnew||

Potrebbe essere necessario risolvere diversi sistemi lineari con diversi vettori sul lato destro per darti una migliore indicazione del mal condizionamento del sistema. Naturalmente, questo processo è un po 'costoso (operazioni per la prima soluzione e operazioni per ogni soluzione successiva, supponendo che il tuo risolutore diretto salvi i suoi fattori). Se la tua matrice A è abbastanza piccola, questo non è un problema. Se è grande, potresti non volerlo fare. Invece, è meglio calcolare il numero di condizionein una norma conveniente.Θ ( n 2 ) | | A | | | | A - 1 | |Θ(n3)Θ(n2)||UN||||UN-1||


2
La tua affermazione di è estremamente lontana dalla verità. Anche se è denso, può essere considerato una volta con il lavoro e quindi ogni soluzione richiede solo il lavoro . A A OΘ(Kn3)UNUNO(n3)O(n2)
Jack Poulson,

@JackPoulson: Hai assolutamente ragione ... Immagino di essermi completamente distinto. Nessun problema :) Aggiornerò la mia risposta
Paul

Si potrebbe anche valutare il residuo della soluzione risultante? Da scala come
||UNX-B||
||UN||||X||
UN

@ Reid.Atcheson: Non proprio. La soluzione approssimativa a un sistema mal condizionato può ancora produrre un piccolo residuo. Questo in realtà non ti dà alcuna indicazione su quanto sia lontana dalla vera soluzione.
Paolo

1
ε B
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.