Interpolazione 3d



  • Interpolazione 3d
    di Elvis1991 (utente non iscritto) data: 17/06/2015 09:38:02

    Buongiorno a tutti,
    vi chiedo un consiglio, aiuto, insomma non so proprio come fare. Il mio problema è quello di avere una serie di punti di un grafico 3d (dunque i risultati una funzione a due variabili x ed y che ha come valore z) da cui voglio ricavare un qualunque valore z in funzione di altri x ed y (un valore qualunque).
    Dunque vorrei un analogo della funzione di approssimazione lineare di excel (qui meglio se polinomiale) che mi permetta dati due valori di x ed y di ottenere lo z che approssima la funzione (a me ignota) sulla base dei punti dati!
    Come potrei fare?!?
    Grazie!



  • di Luca73 data: 17/06/2015 10:05:27

    Ciao Elvis?

    Come li hai i punti?
    hai una matrice?
    puoi mandare un file di esempio?
    L'interpolazione la vuoi lineare?

    Ciao
    Luca






  • di Elvis1991 (utente non iscritto) data: 17/06/2015 11:06:56

    Grazie della risposta!
    ho delle curve iso-livello che approssimano la "superficie" cioè la mia funzione: una serie di cordinate x,y (matrice 2xN) alle quali corrisponde una certa "quota" z. Il file l'ho allegato, spero correttamente . L'interpolazione mi piacerebbe polinomiale, magari al 2 o 3 ordine, se possibile. Non so proprio come impostare la funzione...



  • di Luca73 data: 17/06/2015 15:59:41

    Ciao
    io ti proporrei questa soluzione:
    mettere tutti i dati su tre colonne (valore X, Valore Y a volore Z)
    dato una coppia di valori Xi e Yi si calcola la distanza nel piano xy da tutti i punti dati
    Si cercano i tre valori con distanza minore (non giacenti sulla stessa isoZ)
    Si calcola il piano passante per i tre valori dati e quindi si interpola sul piano
    Secondo te va bene?
    quanto ho detto l'ho fatto sul file allegato (in verde Xi e Yi) in giallo la relativa Z.
    Ciao
    Luca





  • di Elvis1991 (utente non iscritto) data: 17/06/2015 17:42:01

    Accidenti è perfetto!!!
    così trovato il piano posso fare qualunque interpolazione (il grado che preferisco). Ti ringrazio moltissimo!!!
    Volevo chiederti se è possibile implementare il "foglio" in una singola funzione del tipo:
    INTERP.3D(Xi,Yi, matrice di (x,y,z)) = mi restituisce il valore di Zi interpolato sulla base dei miei punti.
    In quanto deve ripetere l'operazione una serie di volte, il tutto poi lo deve gestire il risolutore, in uno schema de tipo:

    VARIO LE VARIABILI a,b,c --> relazione che fornisce Pi(Xi,Yi) per N punti Pi sulla base di a,b,c ---> trovato il Zi(Pi), lo uso per calcolare VAL(P) ---> obiettivo max(somma(VAL(Pi))) al variare di a,b,c

    Speri si sia capito!
    Ognimodo ti ringrazio di nuovo per l'aiuto!!!



  • di Luca73 (utente non iscritto) data: 19/06/2015 14:52:33

    Ciao
    HO implemetato una funzione vba come hai chiesto
    ho inserito un ultimo parametro che identifica il metodo di calcolo.
    se vale 0 il calcolo lo fa cercando i tre punti più vicini (il terzo è comunque con una Z diversa dai due precedenti se uguali.
    se vale 0 cerca i 4 punti più vicini che stiano ai 4 lati diversi (rispetto allecoordinate X e Y) e ne prende i minori tre.

    Fammi sapere si ti soddisfa.

    ti ricordo che il tutto si basa sull'equivalente di una interpolazione lineare tra due punti estesa in tre d ovvero all'interpolazione piana su tre punti non prevede approssimazioni o regressioni diverse.

    Ciao
    Luca
     
    Function ZdaRegLin3D(Xpunto, Ypunto, Xdata, Ydata, Zdata, TipoCalcolo)
    'Xpunto, Ypunto, coordinate del puntodi cui si cerca la zeta
    'Xdata, Ydata, Zdata range contenenti le terne di valori noti
    'TipoCalcolo 1 o 0 a seconda del tipo di calcolo
    



  • di Elvis1991 (utente non iscritto) data: 22/06/2015 13:42:26

    Grazie Mille! Ho provato la funzione, ed è perfetta!!!! Davvero GRAZIE!!!!