Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    [math inside] Processo di Wiener bidimesionale

    Lo scopo finale sarebbe quello di creare un generatore di fractional brownian motion bidimensionale, pero' e' meglio andare per gradi quindi vorrei partire con il creare un generatore di un processo di wiener bidimensionale.

    Il processo di Wiener unidimensionale e' semplice da capire ed implementare:



    e genera un "percorso" unidimensionale di questo tipo




    Nel caso bidimensionale spesso trovo algoritmi per generare immagini di questo tipo



    Ovvero una "percorso" che invece di muoversi su una sola dimensione si muove su due.
    Anche questo e' concettualmente facile da generare. E' facile da intuire come fare senza usare google ed e' anche facile trovare spiegazioni su come generarlo su google.

    Quello che invece vorrei creare io non e' un "percorso" ma una superficie, che dovrebbe essere simile a questa:



    stranamente, non riesco a trovare nulla che spieghi come generare una superficie, in altre parole non riesco ne a derivare ne a trovare equazioni del tipo
    W(x+dx, y+dy) - W(x, y) = f(dx, dy)
    anche magari assumendo che f() in questo caso sia una distribuzione normale bi-dimensionale, comunque mi troverei in difficolta' nell'implementazione pratica dell'algoritmo:
    infatti anche se avessi W(x+dx, y+dy) - W(x, y) = N([0;0], [dx, dy]*I*[dx; dy]) considerando f come distribuzione normale bidimensionale, per ogni W(x,y) da generare, da quale punto precedente dovrei generarlo? W(x-1,y)? W(x,y-1)? W(x-1,y-1)?
    Le tre soluzioni generano figure con pattern chiaramente diversi fra loro e questo mi fa capire che sono completamente fuori strada.

    Grazie

    ps: in realta' ho pensato a una soluzione che pare funzionare, pero' prima di esporla vorrei vedere cosa mi dite voi, visto che non l'ho trovata ma pensata io e che non e' quindi dimostrata essere corretta.
    Ultima modifica di mamo139; 13-11-2013 a 12:57

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287















  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Scusa l'ignoranza in materia, ma l'ultima immagine che hai postato è 3D, non 2D.
    Una superfice 2D è una superficie piana, quella lì è tutto fuorché piana.

  4. #4
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    posso farmi i c..i tuoi? A che ti serve?
    A volte penso che, nel darci l'intelletto, la natura sia stata più sadica che generosa.

  5. #5
    Poi leggo per bene, intanto
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Scusa l'ignoranza in materia, ma l'ultima immagine che hai postato è 3D, non 2D.
    Una superfice 2D è una superficie piana, quella lì è tutto fuorché piana.
    È una superficie, ovvero un oggetto bidimensionale (=senza spessore), in questo caso immerso in uno spazio tridimensionale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Quote Originariamente inviata da Reiuky Visualizza il messaggio
    posso farmi i c..i tuoi? A che ti serve?
    Ok..... non ho nulla da nascondere.....

    Il generatore relativo al caso della seconda immagine (quel "percorso"/scarabocchio bidimensionale) mi torna utile a volte a lavoro in ambito finanziario. Puo essere usato per generare il valore di due fattori di rischio (il fattore di rischio che muove due diversi titoli azionari ad esempio). Ad esempio inserendo questo generatore in un modello di valutazione di uno strumento finanziario derivato che si basa sul prezzo di due azioni (ad esempio un worst of) e' possibile calcolare il payoff futuro derivato, che viene usato per calcolarne il prezzo attuale oppure ancora il suo profilo di rischio.

    L'equazione di questo weiner process sarebbe qualcosa tipo:

    (x, y) = f(t)

    ovvero, dato come input il tempo t, il valore dei due fattori di rischio sara' x e y.
    Questo caso prende come in put una dimensione, il tempo, e restituisce un output a due dimensioni, ovvero i due fattori di rischio al tempo t.

    ----------------

    Il generatore usato per la terza immagine (quella della superficie) su cui ho chiesto aiuto invece lo vorrei utilizzare in un software 3D che sto sviluppando nel tempo libero. Lo vorrei usare per simluare la superficie di un pianeta.

    In questo caso come input non mi serve piu il tempo ma mi servono due dimensioni spaziali, che nel caso di un pianeta potrebbero essere le coordinate geografiche del punto (ad esempio in meridiani e paralleli). L'output sarebbe la distanza del punto dal centro del pianeta.

    quindi mi servirebbe un processo di weiner configurato in questo modo:

    h = f(x, y)

    Usando google mi pare di vedere in giro un sacco di confusione con il termine bidimensionale. Infatti tutti chiamano entrambi i casi come modello bidimensionale, ma nel primo caso e' l'output ad essere bidimensionale, mentre nel secondo caso, quello che interessa a me, e' l'input ad essere bidimensionale.

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Poi leggo per bene
    grazie

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    È una superficie, ovvero un oggetto bidimensionale (=senza spessore), in questo caso immerso in uno spazio tridimensionale.

  7. #7
    Utente di HTML.it L'avatar di metiu2001
    Registrato dal
    Aug 2009
    residenza
    Udine, Italy
    Messaggi
    5
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    È una superficie, ovvero un oggetto bidimensionale (=senza spessore), in questo caso immerso in uno spazio tridimensionale.
    wienerschnitzel.jpg
    Aristografico | portfolio

  8. #8
    Utente di HTML.it L'avatar di fred84
    Registrato dal
    Dec 2005
    Messaggi
    434
    Quote Originariamente inviata da mamo139 Visualizza il messaggio
    lo vorrei utilizzare in un software 3D che sto sviluppando nel tempo libero. Lo vorrei usare per simluare la superficie di un pianeta.
    [francesismo]hai detto cazzi[/francesismo]

    mica per altro, ma la superficie di un pianeta ti genera una serie di condizioni "al contorno" ("che non esiste", "appunto") mica banali da gestire, specie se vuoi generare l'elevazione con un cammino random.

    A naso, potresti generare l'elevazione lungo un meridiano "base", andando da un polo all'altro, usando come seme l'altezza del punto precedente. Poi passi al meridiano successivo, basandoti sull'altezza del punto precedente E su quella del punto corrispondente sul meridiano di prima. Procedi così fino a quando non arrivi all'ultimo meridiano, dove ti trovi con una bella gatta da pelare: le altezze del primo meridiano potrebbero essere profondamente diverse da quelle del penultimo, hai a disposizione solo l'ultimo meridiano per "congiungere" i due.

    a naso, direi un 100-200 righe in C++

  9. #9
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Quote Originariamente inviata da fred84 Visualizza il messaggio
    [francesismo]hai detto cazzi[/francesismo]


    mica per altro, ma la superficie di un pianeta ti genera una serie di condizioni "al contorno" ("che non esiste", "appunto") mica banali da gestire, specie se vuoi generare l'elevazione con un cammino random.


    A naso, potresti generare l'elevazione lungo un meridiano "base", andando da un polo all'altro, usando come seme l'altezza del punto precedente. Poi passi al meridiano successivo, basandoti sull'altezza del punto precedente E su quella del punto corrispondente sul meridiano di prima. Procedi così fino a quando non arrivi all'ultimo meridiano, dove ti trovi con una bella gatta da pelare: le altezze del primo meridiano potrebbero essere profondamente diverse da quelle del penultimo, hai a disposizione solo l'ultimo meridiano per "congiungere" i due.


    a naso, direi un 100-200 righe in C++



    Beh si, generata la mappa bisogna "allacciarla" al pianeta/sfera, con tutte le rogne che comporta, tipo la degenerazione di tutti i punti sui bordi superiori ed inferiori della mappa nei poli della sfera e anche la "cerniera" che colleghera' il polo nord al polo sud.


    Ma per questo ho gia pensato a come rimediare, quindi sono abbastanza sereno. Se riesco a generare sta superficie poi posso per divertimento condividere le soluzioni che ho pensato per avvolgere la mappa sulla sfera.


    La cosa che mi preme ora e' quella di avere un solido modello per la generazione dei punti casuali, per questo vorrei utilizzare uno strumento formale come possono essere il weiner process oppure il fractional brownian motion.


    Detto in altre parole, mi scoccerebbe molto non riuscire ad implementare sto benedetto weiner process ora che mi sono messo in testa di farlo

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.