Legge che lega due vettori
C'è qualche applicazione o sito online che, dati due vettori $X$ e $Y$ di lunghezza $l$, mi trova o mi propone una relazione $R$ tale che $R(X(i))\approxY(i)$ per ogni $i\le l$?
Risposte
Ciao,
non penso ti sia molto d'aiuto o sia legato con quello che cerchi, ma questa proprietà di $R$ che citi mi ricorda il teorema di punto fisso per un insieme chiuso di regole/assiomi (nel tuo caso vettore di regole).
Per intenderci: http://en.wikipedia.org/wiki/Fixed-poin ... _functions (o al Teorema di Cadiou)
non penso ti sia molto d'aiuto o sia legato con quello che cerchi, ma questa proprietà di $R$ che citi mi ricorda il teorema di punto fisso per un insieme chiuso di regole/assiomi (nel tuo caso vettore di regole).
Per intenderci: http://en.wikipedia.org/wiki/Fixed-poin ... _functions (o al Teorema di Cadiou)

Mah, in effetti non mi sembra che c'entri molto... :S
Se ho X=[0,1,2,3] e Y=[0,1,4,9] vorrei che questa applicazione mi restituisse una $R$ tale che $R(X)=Y$, in questo caso ad esempio potrebbe essere $R(X)=X^2$...
Se ho X=[0,1,2,3] e Y=[0,1,4,9] vorrei che questa applicazione mi restituisse una $R$ tale che $R(X)=Y$, in questo caso ad esempio potrebbe essere $R(X)=X^2$...
"nato_pigro":
Se ho X=[0,1,2,3] e Y=[0,1,4,9] vorrei che questa applicazione mi restituisse una $R$ tale che $R(X)=Y$, in questo caso ad esempio potrebbe essere $R(X)=X^2$...
a vederlo così cambia molto, mi ha tratto in inganno $i<=l$, lo leggevo in maniera diversa

La descrizione di quello che vuoi fare è decisamente poco chiaro. Sembrerebbe che tu sia interessato ad un problema di regressione. A seconda dei casi, algoritmi come le reti neurali potrebbe esserti utili. Considera comunque che, senza aggiungere restrizioni aggiuntive alla tua funzione (spero che non si tratti realmente di una relazione per cui possano esserci più valori di Y corrispondenti ad un singolo valore di X..), non hai unicità della soluzione. Le funzioni \(cos(2 \pi X) \, X^2\) e \(2\,x^6 - 15\,x^5 + 40\,x^4 - 45\,x^3 + 19\,x^2\) sono infatti soluzioni possibili per il tuo esempio.
Sisi, volevo una funzione, ma non mi sembrava il caso di stare lì a definire dominio e codominio.
Non ho detto che sia un problema ben posto, quindi non mi aspetto l'unicità senza imporre qualche restrizione. Volevo più che altro uno strumento.
L'esigenza nasce da questo: ho dei tempi relativi alla risoluzione di un sistema lineare dipendente da un parametro (mettiamo la dimensione del sistema). Volevo sapere indicativamente come variano questi tempi al variare del parametro.
Non ho detto che sia un problema ben posto, quindi non mi aspetto l'unicità senza imporre qualche restrizione. Volevo più che altro uno strumento.
L'esigenza nasce da questo: ho dei tempi relativi alla risoluzione di un sistema lineare dipendente da un parametro (mettiamo la dimensione del sistema). Volevo sapere indicativamente come variano questi tempi al variare del parametro.
Come ti ho già detto, la soluzione più semplice è quella di utilizzare un qualche algoritmo di regressione.
Ok, ma credevo che il problema fosse più semplice di quello che è...
Ma è in realtà abbastanza semplice. Esistono strumenti per farlo in qualsiasi programma statistico o di calcolo numerico. La parte più complicata è quella di decidere come modellare la tua funzione. Il primo passo è probabilmente quello di fare un grafico della tua funzione (non è sempre possibile, ma essendoci un solo parametro è senza dubbio utile in questo caso). Dovrebbe aiutarti a capire che tipo di funzione usare per la regressione. I passaggi successivi sono poi abbastanza semplici (soprattutto considerando che il tuo problema non è molto ambizioso).
Bè si, io ho provato empiricamente a trovare l'andamento dei tempi confrontandolo con funzioni classiche ma non è nè lineare nè polinomiale nè logaritmica nè niente di "banale". E' qui che nasceva la mia esigenza.
E' difficile che segua esattamente una qualche funzione, i metodi a cui facevo ricevimento trovano invece la funzione di un certo tipo che minimizzi la differenza con quella "reale". Più che chiederti che tipo di funzione è dovresti chiederti a cosa assomiglia.
Prova a postare questi valori se non sono troppi in modo da poterli analizzare.
Il problema consiste nel risolvere numericamente un'equazione differenziale alle derivate parziali.
$h$: è il passo della griglia
$k$: la dimensione della matrice che viene fuori ($dim(A)=k*k$)
nonnulliA: gli elementi non nulli di $A$ (sparsa)
tempo: il tempo che ci mette matlab a risolvere il problema
temposimm: il tempo che ci metto tenendo conto di alcune simmetrie del problema
$h=[0.5, 0.2, 0.05, 0.02]$;
$k=[1476, 8850, 138600, 862500]$;
nonnulliA$=[6664, 42478, 685948, 4294888]$;
tempo$=[0.013378 , 0.072883 , 1.5591 , 22.9037 ]$;
temposimm$=[0.0088085, 0.019061, 0.36875 , 3.0767]$;
vorrei trovare un legame tra il passo o tra gli elementi non nulli di $A$ con i tempi di risoluzione
$h$: è il passo della griglia
$k$: la dimensione della matrice che viene fuori ($dim(A)=k*k$)
nonnulliA: gli elementi non nulli di $A$ (sparsa)
tempo: il tempo che ci mette matlab a risolvere il problema
temposimm: il tempo che ci metto tenendo conto di alcune simmetrie del problema
$h=[0.5, 0.2, 0.05, 0.02]$;
$k=[1476, 8850, 138600, 862500]$;
nonnulliA$=[6664, 42478, 685948, 4294888]$;
tempo$=[0.013378 , 0.072883 , 1.5591 , 22.9037 ]$;
temposimm$=[0.0088085, 0.019061, 0.36875 , 3.0767]$;
vorrei trovare un legame tra il passo o tra gli elementi non nulli di $A$ con i tempi di risoluzione
Quattro casi sono un po' pochi per poter stabilire una qualche legge significativa tra le diverse variabili.
Guarda che con la regressione e con un po' di tentativi secondo me puoi arrivare ad un risultato soddisfacente.
Lontano dall'aver dimostrato la relazione che intercorre tra i due fattori, ma almeno in grado di darti un'ordine di grandezza delle cose.
Comincia con il campionare i tempi di esecuzione al variare del parametro. E campiona anche molte volte i tempi su stessi valori del parametro. Insomma intanto metti da parte un sacco di dati.
Con questi, puoi provare un semplice metodo, un'approssimazione ai minimi quadrati. Si tratta di un metodo di regressione polinomiale. Andrebbe usato quando si conosce il grado della funzione che lega i nostri dati, però può essere utile. Dai in pasto i dati all'algortimo, prova gradi di polinomi via via crescenti fino a che non ottieni un'interpolazione dei dati soddisfacente.
è un po' rozzo come sistema e sinceramente non troppo scientifico, ma se, come ho capito, hai bisogno di darti un'ordine di idee della cosa, potrebbe bastare.
Certo che non puoi basare su queste prove empiriche una conclusione di un qualche trattato o tesi...
Tra parentesi, ho del codice matlab che dato un set di dati e il grado del polinomio che vogliamo usare per fare regressione, stampa un bel grafico (così ad occhio puoi vedere se ancora non ci sei con il grado del polinomio) della regressione e restituisce il vettore residuo con minima norma.
Basandoti sulla norma di quel vettore, più avvicini a 0 quella norma, migliore sarà la tua approssimazione. Se vuoi ti faccio vedere un po' come funziona.
Ripeto, è roba triviale la mia e non ci puoi basare sopra una conclusione seria, ma sempre meglio di nulla!
Lontano dall'aver dimostrato la relazione che intercorre tra i due fattori, ma almeno in grado di darti un'ordine di grandezza delle cose.
Comincia con il campionare i tempi di esecuzione al variare del parametro. E campiona anche molte volte i tempi su stessi valori del parametro. Insomma intanto metti da parte un sacco di dati.
Con questi, puoi provare un semplice metodo, un'approssimazione ai minimi quadrati. Si tratta di un metodo di regressione polinomiale. Andrebbe usato quando si conosce il grado della funzione che lega i nostri dati, però può essere utile. Dai in pasto i dati all'algortimo, prova gradi di polinomi via via crescenti fino a che non ottieni un'interpolazione dei dati soddisfacente.
è un po' rozzo come sistema e sinceramente non troppo scientifico, ma se, come ho capito, hai bisogno di darti un'ordine di idee della cosa, potrebbe bastare.
Certo che non puoi basare su queste prove empiriche una conclusione di un qualche trattato o tesi...
Tra parentesi, ho del codice matlab che dato un set di dati e il grado del polinomio che vogliamo usare per fare regressione, stampa un bel grafico (così ad occhio puoi vedere se ancora non ci sei con il grado del polinomio) della regressione e restituisce il vettore residuo con minima norma.
Basandoti sulla norma di quel vettore, più avvicini a 0 quella norma, migliore sarà la tua approssimazione. Se vuoi ti faccio vedere un po' come funziona.
Ripeto, è roba triviale la mia e non ci puoi basare sopra una conclusione seria, ma sempre meglio di nulla!
"apatriarca":
Quattro casi sono un po' pochi per poter stabilire una qualche legge significativa tra le diverse variabili.
Appunto. visto i tempi di esecuzione, fai centinaia di test...
anche di più. Usa 100 valori diversi per h, ed esegui, per ogni valore, 10 volte il test. Sono ancora pochi, ma sono già 1000!