Excel Forum Per condividere esperienze su Microsoft Excel

[RISOLTO] interpolazione dati

  • Messaggi
  • OFFLINE
    duccio.73
    Post: 98
    Registrato il: 27/12/2016
    Città: SIENA
    Età: 50
    Utente Junior
    Office 2019/Office 365
    00 15/09/2021 17:36
    Buonasera,
    questa volta faccio una domanda io. Ho una soluzione manuale al problema ma vorrei vedere se è possibile renderla più universale.
    Ho una serie di punti le cui coordinate sono nelle colonne (D e E).

    vorrei trovare i valori delle a1 che mi danno h1 e stanno sulla curva che interpola la serie

    io ho visualizzato sul grafico l'equazione di 5° che interpola la curva, ho copiato la formula, ho messo degli step e ho usato un cerca per trovare le coordinate più vicine (i risultati sono in colonna J)

    Esiste una formula o un modo tramite VBA per avere il tutto in automatico? Non vorrei copiare la formula a mano ogni volta (l'equazione di interpolazione va benissimo sempre di 5°)

    Non vorrei passare ad altri software tipo Octave o simili

    Spero di essere stato chiaro

    Grazie per ogni consiglio


    PS Ho provato anche a invertire le coordinate, si evita il cerca ma non riesco ad evitare di dover copiare la formula dell'equazione

    [Modificato da duccio.73 16/09/2021 16:44]
    ---
    pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione
  • OFFLINE
    Marius44
    Post: 932
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 15/09/2021 19:05
    Ciao
    Ho copiato i dati in Foglio2. In detto foglio nella cella H4 ho inserito questa formula


    =INDICE($E$4:$E$53;CONFRONTA($B4;$D$4:$D$53;1))+($B4-INDICE($D$4:$D$53;CONFRONTA($B4;$D$4:$D$53;1)))*(INDICE($E$4:$E$53;CONFRONTA($B4;$D$4:$D$53;1)+1)-INDICE($E$4:$E$53;CONFRONTA($B4;$D$4:$D$53;1)))/(INDICE($D$4:$D$53;CONFRONTA($B4;$D$4:$D$53;1)+1)-INDICE($D$4:$D$53;CONFRONTA($B4;$D$4:$D$53;1)))


    che poi ho copiato in basso. Ho assunto come dati di origine gli intervalli B4:B27 e H4:H27 ed ho creato un Grafico a dispersione.
    Vedi se è quello che ti serve.

    ecco il file

    Ciao,
    Mario
  • OFFLINE
    duccio.73
    Post: 98
    Registrato il: 27/12/2016
    Città: SIENA
    Età: 50
    Utente Junior
    Office 2019/Office 365
    00 15/09/2021 20:42
    Ciao,
    Grazie dell’interessamento ma forse mi sono spiegato male e il sistema non funziona per due motivi, io devo trovare il valore a2 che mi dà h1 cercato. La formula che hai suggerito cerca il valore h2 prendendo come input h1 (e qui sarebbe male di poco, basta aggiornare la formula con i riferimenti corretti).
    Il problema maggiore è che la formula approssima i vari intervalli con delle rette e non con una funzione di 5º come richiesto.
    La soluzione proposta potrebbe andare bene nel caso di dati distanziati bene ma mi servirebbe una cosa più versatile.
    Il problema maggiore è trovare il moto di impostare la corretta funzione di 5º in automatico e non copiandola a mano dal grafico, la ricerca è il minore dei mali.

    In ogni caso i risultati attesi sono quelli della colonna j del mio file

    Grazie
    ---
    pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione
  • OFFLINE
    Marius44
    Post: 933
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 16/09/2021 12:47
    Ciao
    Il mio suggerimento (e sicuramente ho capito male) fornisce, dato un valore h1, il relativo valore interpolato di a2 come a1

    Non sono in grado di continuare per due motivi:
    1°) non ho la tua versione di Excel e non "leggo" le tue formule in col.J;
    2°) il mio corso di stuti è tecnico e non scientifico.

    Ciao,
    Mario
  • OFFLINE
    duccio.73
    Post: 101
    Registrato il: 27/12/2016
    Città: SIENA
    Età: 50
    Utente Junior
    Office 2019/Office 365
    00 16/09/2021 16:26
    nel caso qualcuno fosse interessato ho risolto .
    usando la formula INDICE(REGR.LIN($E$4:$E$53;$D$4:$D$53^RIF.COLONNA($A$1:$E$1));1) e simili trovo i coefficienti del polinomio che approssima la distribuzione dei punti, a questo punto con il polinomio mi calcolo la serie di punti fitta quanto voglio e con il cerca trovo il valore desiderato.

    nel caso qualcuno volesse approfondire la questione della formula può guardare il file allegato.

    Ho messo per confronto anche la macro che estrae i dati dal grafico, i valori che si ottengono con questi valori, l'equazione trovata utilizzando regr.lin e i dati ottenuti con questa.

    Per confronto ho messo anche i coefficienti dei polinomi ottenuti da octave.

    ---
    pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione