Se si risolve il problema per un valore di ritorno, è possibile trovare due funzioni f_1(x,y)
e f_2(x,y)
mediante l'interpolazione e comporre la propria funzione come f(x, y) = [f_1(x,y), f_2(x,y)]
. Scegli qualsiasi metodo per risolvere la funzione di interpolazione adatta al tuo problema.
Per il problema di interpolazione reale in due dimensioni, esistono molti modi per gestirlo. Se semplice è ciò che desideri, puoi procedere con l'interpolazione lineare. Se stai bene con le funzioni a tratti, puoi usare le curve di Bezier o le spline. Oppure, se i dati sono uniformi, potresti ottenere una semplice interpolazione polinomiale (beh, non abbastanza banale in 2D, ma abbastanza semplice).
MODIFICA: ulteriori informazioni e alcuni collegamenti.
Una soluzione a tratti è possibile utilizzando Bilinear interpolation (wikipedia).
Per l'interpolazione polinomiale, se i dati si trovano su una griglia, è possibile utilizzare il seguente algoritmo (non riesco a trovare il riferimento per esso, è dalla memoria).
Se i punti dati sono su una k
da l
griglia, riscrivere il polinomiale come segue:
f(x,y) = cx_1(x)*y^(k-1) + cx_2(x)*y^(k-2) + ... + cx_k(x)
Ecco, ogni coefficiente cx_i(x)
è anche un polinomio di grado l
. Il primo passo è trovare i polinomi k
di grado l
interpolando ogni riga o colonna della griglia. Quando questo è fatto, si ha l
insiemi di coefficienti (o, in altre parole, l
polinomi) come punti di interpolazione per ciascun cx_i(x)
polinomi come cx_i(x0)
, cx_i(x1)
, ..., cx_i(xl)
(dando un totale di punti l * k). Ora è possibile determinare questi polinomi usando le costanti sopra indicate come punti di interpolazione, che danno il risultato f(x,y)
.
Lo stesso metodo è utilizzato per curve o spline di bezier. L'unica differenza è che usi i punti di controllo invece dei coefficienti polinomiali. Per prima cosa ottieni una serie di spline che generano i tuoi punti dati e quindi interpola i punti di controllo di queste curve intermedie per ottenere i punti di controllo della curva di superficie.
Consentitemi di aggiungere un esempio per chiarire l'algoritmo di cui sopra.Diamo i seguenti punti dati:
0,0 => 1
0,1 => 2
1,0 => 3
1,1 => 4
Partiamo dal montaggio di due polinomi: uno per i punti di dati (0,0) e (0,1), e un altro per (1, 0) e (1, 1):
f_0(x) = x + 1
f_1(x) = x + 3
Ora, interpoliamo nell'altra direzione per determinare il coefficients.When leggiamo questi coefficienti polinomiali verticalmente, abbiamo bisogno di due polinomi. Si valuta a 1 sia a 0 che a 1; e un altro che restituisce 1 a 0, e 3 a 1:
cy_1(y) = 1
cy_2(y) = 2*y + 1
Se uniamo questi in f(x,y)
, otteniamo:
f(x,y) = cy_1(y)*x + cy_2(y)
= 1*x + (2*y + 1)*1
= x + 2*y + 1
Sei alla ricerca di qualcosa di simile a un'interpolazione polinomiale per una funzione con 2 variabili? – amit
si. Ma quella funzione dovrebbe restituire 2 variabili ... – Rella
Si potrebbe provare a farlo con numeri complessi. – starblue