Stimare funzione matematica da matrici di input/output

di il
11 risposte

Stimare funzione matematica da matrici di input/output

Ciao, sto cercando un modo di ricavare una funzione matematica partendo da dei dati di input e di output che conosco. Mi spiego, io dispongo di 3 vettori A, B, C aventi ciascuno 192 elementi. Oltre a questi ho anche un ulteriore vettore Y sempre di 192 elementi; questi quattro vettori sono tali che alla terna di elementi composta dal primo elemento di A, il primo elemento di B e il primo elemento di C, corrisponde secondo una qualche relazione il primo elemento di Y, e così via per tutti gli elementi successivi. Ciò che mi interessa sapere è se esiste un modo di ottenere una funzione matematica o anche un andamento grafico avendo tre dati in input e uno in output, un pò quello che fa polyfit per intenderci ma con più di un input. Lo scopo è capire come il vettore Y è legato a ciascuno degli altri in modo da fare delle previsioni, ad esempio tenendo A costante e vedendo come Y varia in funzione di B e C. Spero di essere stato chiaro, altrimenti proverò a spiegarmi meglio entrando nei dettagli! Grazie a chi proverà ad aiutarmi!

11 Risposte

  • Re: Stimare funzione matematica da matrici di input/output

    Ciao, penso di aver capito cosa intendi.
    Credo che tu debba innanzi tutto stabilire quale tipo di relazione ti aspetti. Se metti in gioco tutte le possibili funzioni (logaritmi, potenze, esponenziali, moltiplicazioni per costanti, ecc) e combinazioni non credo sia possibile venirne a capo. Anche nella funzione polyfit si fa l'assunzione che la relazione da trovare sia un polinomio e bisogna anche dirgli di quale grado si vuole il polinomio stesso.
  • Re: Stimare funzione matematica da matrici di input/output

    Si ho capito cosa mi dici, in sostanza devo decidere a quale tipo di funzione dare riferimento. Questo complica un pò le cose perchè il vettore Y corrisponde a una variabile dipendente mentre gli altri tre vettori sono variabili indipendenti, quindi nn c'è un legame tra loro; se il vettore ha un andamento parabolico che lo lega ad A potrebbe avere un andamento logaritmico che lo lega a B e chissà quale funzione lo lega a C, quindi nn ho idea di che tipo di funzione, anche qualitativamente, possa aspettarmi legando Y a tutti e tre. Però facendo finta di saperlo, ipotizziamo ad esempio che possa essere un polinomio di 3° grado per semplicità, come posso riuscire ad avere il risultato che sto cercando?
  • Re: Stimare funzione matematica da matrici di input/output

    Guarda qui: http://www.mathworks.com/matlabcentral/newsreader/view_thread/162245
    il messaggio numero 9. Ti crei la variabile M dove ci sono tutte le combinazioni di termini che ti interessano, nel tuo caso saranno combinazioni di A, B e C, e al posto della variabile che lui chiama depvar tu hai la Y.
  • Re: Stimare funzione matematica da matrici di input/output

    Grazie mille, farò sapere se riesco a farcela!
  • Re: Stimare funzione matematica da matrici di input/output

    Figurati! fammi sapere.
  • Re: Stimare funzione matematica da matrici di input/output

    Forse ci sono riuscito, ma se è come penso che sia, tramite il calcolo S=M/depvar dell'esempio, io ottengo un vettore riga S dei coefficienti alla -1 per cui devo moltiplicare il vettore M; il che significa, nel mio caso, che avrei 192 vettori di coefficienti o se vogliamo 192 equazioni! Esiste un modo di implementarle in un'unica equazione? Scusa la mia inesperienza ma sono ancora inesperto..
  • Re: Stimare funzione matematica da matrici di input/output

    No, ti dovrebbe dare come risultato un vettore colonna, che rappresenta i coefficienti delle combinazioni di variabili che hai scritto nel vettore M.
    Ti faccio un esempio
    x=[1; 1];
    y=[1; 2];
    depvar=[4; 5];
    M=[ones(length(x),1),x,y];
    S=M\depvar;
    quindi, da come ho scritto M, mi aspetto una relazione di questo tipo:
    M=c+bx+ay
    E mi aspetto il vettore S=[c; b; a]
    Infatti se lancio il codice ottengo:
    S= 0 3 1
    Cioè la mia relazione è 0+3x+1y
    3x+y

    Spero sia più chiaro.
  • Re: Stimare funzione matematica da matrici di input/output

    Ciao, si è più chiaro, ho fatto una prova e il grado di errore non è male;ciò che mi ha confuso è che lui esprime M come
    M = [ones(n,1), x, y, z, x.*y, y.*z, x.*z, ...x.^2-y.^2, z.^2-x.^2-y.^2];
    e quindi quando andavo a scrivere i miei vettori colonna in quel modo naturalmente mi dava errore; così pensai che M fosse una matrice avente per righe tutte quelle operazioni e per colonna la lunghezza dei miei vettori e quindi avevo impostato diversamente il mio ragionamento. Come dovrei interpretare questa riga di codice così come è scritta ora?
  • Re: Stimare funzione matematica da matrici di input/output

    M definisce tutti i tipi di combinazioni di variabili che vuoi nella tua espressione, l'esempio che ti ho fatto sopra prevede solo x e y del primo grado e una costante.
    Quello che hai scritto prevede una costante, x,y e z al primo grado, i termini misti x*y, y*z ecc e le combinazioni con i secondi gradi.
    S sarà un vettore, lungo quanto il numero di colonne di M, cioè quanto il numero di combinazioni che hai scelto, in cui ci sono tutti i coefficienti moltiplicativi. Quindi la tua espressione finale sarà:
    S(1)+S(2)*x+S(3)*y+...S(6)*(y.*z)+...+S(end)*(z.^2-x.^2-y.^2)
    Come dicevamo all'inizio, puoi scegliere, in base all'espressione che ti aspetti, quali termini aggiungere. In M potresti aggiungere anche termini con logaritmi, esponenziali e tutte le combinazioni che vuoi.
  • Re: Stimare funzione matematica da matrici di input/output

    Perfetto, ora ho capito finalmente! Grazie mille per l'aiuto, ora mi metto a cercare qualche modello matematico per fare questo genere di stime così da poter ottenere dei risultati in migliore accordo con i dati che ho, grazie ancora
  • Re: Stimare funzione matematica da matrici di input/output

    Figurati!
Devi accedere o registrarti per scrivere nel forum
11 risposte