Problema ... inverso

Merovingio1
Ho un problema...completamente inverso. Mi spiego meglio: ho un generico sistema A * IN = OUT, con A matrice 4x4, IN e OUT verttori 4x1. I coefficienti di A possono variare da o a 100.
Per costruzione la matrice A ha la diagonale principale con termini nulli (ottimo per i sistemi iterativi :lol: ) ed al sistema devono essere imposte altre 4 condizioni, ovvero che tutti i termini di A in colonna devono dare come somma 100.
Quindi 4+4 relazioni su 16-4 incognite, risulta un problema con quattro incognite (cinque se si considera che avendo termini diagonali nulli, il sistema A va risolto di per se iterativamente).
Inoltre ho una serie di coefficienti per la matrice A0 ricavati da rilievo manuale.
Fra le varie soluzioni di A viste le 4 incognite, devo trovarne una che sia prossima ad A0.

Il problema quindi è:
dati i vettori IN e OUT, devo ricavare i 12 coefficienti di A che rendano A*IN=OUT, soddisfino Sommatoria(colonne di A)=100 e fra le varie soluzioni individuare quella più prossima ad A0.

Ho provato qualche soluzione iterativa con coefficienti correttivi dagli scarti, ma è instabile e dopo poco oscilla fino ad arrivare a 10^(31).
Ho provato una soluzione "brute-force" con un programmino fortran, ma non posso aspettare 30'-1h la soluzione.

Avete qualche dritta su come procedere?

Risposte
Raptorista1
Fai il prodotto \(A v_{in}\) e uguaglia le quattro espressioni che ottieni ai corrispondenti elementi di \(v_{out}\). A questi aggiungi gli otto vincoli dati dalla struttura di \(A\) ed ottieni un sistema lineare che, riscritto opportunamente, ha quattro equazioni e quattro incognite.

Merovingio1
Se esplicito le condizioni di A con i termini Ai,j incogniti ricavo 4 termini su 12.
Poi posso imporre 4 condizioni e non 8, per cui i termini in colonna sommati sono = 100. Rimango quindi con 12-4-4= 4 gradi di libertà o diverse possibili soluzioni. Però faccio notare che i termini sono concatenati per la matrice con diagonali nulle.

IN2*alfa1,2+IN3*alfa1,3+IN4*alfa1,4=OUT1
IN1*alfa2,1+IN3*alfa2,3+IN4*alfa2,4=OUT2
IN1*alfa3,1+IN2*alfa3,2+IN4*alfa3,4=OUT3
IN1*alfa4,1+IN2*alfa4,2+IN3*alfa4,3=OUT4
alfa2,1+alfa3,1+alfa4.1=100
alfa1,2+alfa3,2+alfa4,2=100
alfa1,3+alfa2,3+alfa4,3=100
alfa1,4+alfa2,4+alfa3,4=100
Per esempio esplicitando con termini da me scelti per i, j, k, l
i=alfa1,3
j=alfa3,4
k=alfa4,1
l=alfa4,3
alfa1,2=(OUT1-IN3*alfa1,3-IN4*alfa1,4)/IN2 <--- coeff.Alfa1,2 dipende da Alfa1,4
alfa2,4=(OUT2-IN1*alfa2,1-IN3*alfa2,3)/IN4
alfa3,1=(OUT3-alfa3,4*IN4-alfa3,2*IN2)/IN1
alfa4,2=(OUT4-IN1*alfa4,1-IN3*alfa4,3)/IN2
alfa2,1=100-alfa3,1-alfa4,1
alfa3,2=100-alfa1,2-alfa4,2
alfa2,3=100-alfa1,3-alfa4,3
alfa1,4=100-alfa2,4-alfa3,4 <-- coeff. Alfa1,4 dipende in scala dai precedenti, fino Alfa1,2.
Quindi, dato che i coefficienti sono connessi fra loro non si può individuare una soluzione per via analitica.

Raptorista1
Riscrivi le formule con i compilatori di formule, così sono illeggibili.
come-si-scrivono-le-formule-asciimathml-e-tex-t26179.html

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.