Go Back   UseSrv Message Forum > Italiano > Scienza > Matematica
 

 
Thread Tools Display Modes
  #1  
Old 07-15-2008
foice
Guest
 
Posts: n/a
Default trasformate di fourier con mathematica

salve a tutti.
sono un neofita di mathematica.
vorrei sapere come si fanno le trafromate di fourier in n-dimensioni,
con n fissato.
la funzione FourierTransform[f,x,p] mi pare sia buona solo nel caso
unidimensionale e per vettori e 4-vettori come si dovrebbe fare?

grazie per l'aiuto.
  #2  
Old 07-15-2008
Hypermars
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica


"foice" <NONfoiceSPAMMARE@tiscalinet.it> wrote in message
news:9poksvssjggn4c1mepdn42brog47aterdf@4ax.com...

> vorrei sapere come si fanno le trafromate di fourier in n-dimensioni,
> con n fissato.
> la funzione FourierTransform[f,x,p] mi pare sia buona solo nel caso
> unidimensionale e per vettori e 4-vettori come si dovrebbe fare?


Guarda nell'help.

FourierTransform[expr,{t1,t2,...},{w1,w2,...}]

Comunque secondo me fai meglio a farti gli integrali che ti servono
separatamente con Integrate.

Bye
Hyper


  #3  
Old 07-15-2008
foice
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

On Mon, 1 Dec 2003 08:27:13 -0500, "Hypermars"
<hypermars@despammed.com> wrote:

>
>Guarda nell'help.


ho letto molto e non vedendo trasformate ad hoc per vettori e simili
eccomi qui. credevo che un software del genere accettasse input più
vicini al linguaggio umano che non una espressione per componenti ...

>FourierTransform[expr,{t1,t2,...},{w1,w2,...}]
>


questo significa che non posso definire un vettore K
ma per dire (K,X)
devo scrivere
{a,b,c}.{x,y,z}
e via dicendo per tutte le operazioni sui vettori o 4-vettori?
mi pare un po' pochino per un programma così famoso ... :-)

tra l'altro ho provato con le espressioni epslicite dei vettori e ho
solo ottenuto elaborazioni tanto lunghe da costringermi a chiudere il
kernel che eseguiva il calcolo.
>Comunque secondo me fai meglio a farti gli integrali che ti servono
>separatamente con Integrate.


Proverò ...
Grazie
>Bye
>Hyper
>


  #4  
Old 07-15-2008
Hypermars
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica


"foice" <NONfoiceSPAMMARE@tiscalinet.it> wrote in message
news:0frmsvkci9g24lm8q1tr94vgcu1aggpkki@4ax.com...

> ho letto molto e non vedendo trasformate ad hoc per vettori e simili
> eccomi qui. credevo che un software del genere accettasse input più
> vicini al linguaggio umano che non una espressione per componenti ...


Mi sa che chiedi troppo. Mathematica e' un software utilissimo e
preziosissimo, ma in quanto a elasticita' e intelligenza e' parecchio
carente (e non vedo come potrebbe essere altrimenti, essendo appunto un
software). Basta guardare che pasticci che fa con i Simplify...

> > FourierTransform[expr,{t1,t2,...},{w1,w2,...}]

>
> questo significa che non posso definire un vettore K
> ma per dire (K,X)
> devo scrivere
> {a,b,c}.{x,y,z}
> e via dicendo per tutte le operazioni sui vettori o 4-vettori?
> mi pare un po' pochino per un programma così famoso ... :-)


Mathematica e' un programma generale: fa "quasi tutto", ma non e'
ottimizzato per qualcosa in particolare. Es: number crunching, con M.
maneggi benissimo matrici, immagini, operazioni numeriche, le visualizzi,
sommi sottrai ecc. Pero' rispetto a un codice Fortran o similari a piu'
basso livello e piu' ottimizzati, non regge.

Comunque, se sai trattarlo bene, M. ti permette di fare molte piu' cose di
quanto non sembri. Puoi ad esempio definirti tu una FT vettoriale a seconda
delle tue esigenze, pero' bisogna saperlo fare (io sono il classico utonto,
sotto questo aspetto, mi accontento della programmazione piu' elementare).

> tra l'altro ho provato con le espressioni epslicite dei vettori e ho
> solo ottenuto elaborazioni tanto lunghe da costringermi a chiudere il
> kernel che eseguiva il calcolo.


Eh, abituati ;-)

Bye
Hyper


  #5  
Old 07-15-2008
Peltio
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

"foice" ha scritto

>questo significa che non posso definire un vettore K
>ma per dire (K,X)
>devo scrivere
>{a,b,c}.{x,y,z}
>e via dicendo per tutte le operazioni sui vettori o 4-vettori?


Naaaaa, puoi fargli fare parecchie cose del genere, e persino definire una
notazione tutta tua, introducendo degli alias per l'input delle strutture
bidimensionali. Dai un occhio al Package Notation (sotto utilities) e vedrai
che ti si aprirà un nuovo mondo (purtroppo non privo di idiosincrasie : ( )

Occhi che Notation per funzionare richiede che le forme di input e output di
default siano le stesse (entrambe standard o entrambe traditional, ad
esempio), altrimenti si incasina.

>tra l'altro ho provato con le espressioni epslicite dei vettori e ho
>solo ottenuto elaborazioni tanto lunghe da costringermi a chiudere il
>kernel che eseguiva il calcolo.


Sì, la mole di dati generata nelle 'terre di mezzo' è impressionante.
Tuttavia se ti interessa il risultato numerico puoi sempre sostituire i
valori prima di fargli macinare i simboli.

saluti,
Peltio


  #6  
Old 07-15-2008
Peltio
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

"Peltio" ha scritto
>Dai un occhio al Package Notation (sotto utilities)


Qui c'è il sito di Harris con le ultime versioni.
http://library.wolfram.com/packages/notation/

saluti,
Peltio


  #7  
Old 07-15-2008
foice
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

On Mon, 01 Dec 2003 19:13:48 GMT, "Peltio" <peltio@twilight.zone>
wrote:

>Naaaaa, puoi fargli fare parecchie cose del genere, e persino definire una
>notazione tutta tua, introducendo degli alias per l'input delle strutture
>bidimensionali. Dai un occhio al Package Notation (sotto utilities) e vedrai
>che ti si aprirà un nuovo mondo (purtroppo non privo di idiosincrasie : ( )
>
>Occhi che Notation per funzionare richiede che le forme di input e output di
>default siano le stesse (entrambe standard o entrambe traditional, ad
>esempio), altrimenti si incasina.
>

avevo iniziato a leggere come funziona un add-on chiamato Tensorial,
ma la strada era irta e lunga, e ho sospeso.
vedrò questo package che forse è pià facile ...
per ora mi sto difendendo con palette create ad hoc da me ...

>>tra l'altro ho provato con le espressioni epslicite dei vettori e ho
>>solo ottenuto elaborazioni tanto lunghe da costringermi a chiudere il
>>kernel che eseguiva il calcolo.

>


>Sì, la mole di dati generata nelle 'terre di mezzo' è impressionante.
>Tuttavia se ti interessa il risultato numerico puoi sempre sostituire i
>valori prima di fargli macinare i simboli.


eh, purtroppo non posso, mi serve l'espressione completa
cmq è troppo oscuro questo kernel, vorrei vedere cosa fa, sono
curioso.
vorrei vedere qualche scritta tipo quelle che si vedono nelle console
linux quando apri un programma per x dalla console e nella console
puoi leggere tutto quello che fa il programma, accessi alle librerie,
operazioni su disco ... la versione unix di mathematica fa di queste
cose?
>
>saluti,
>Peltio
>


  #8  
Old 07-15-2008
foice
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

Se do
FourierTransform[Exp[-Abs[x]],x,p]
ottengo
Sqrt(2/pi) * 1/(1+p^2)

Se faccio l'integrale esplcito

Integrate[Exp[-Abs[x]]*Exp[\[ImaginaryI]px], {x, -inf, inf}]
il risultato diventa
1/pi Exp[ipx]
ma che significa?
premesso che non conosco il risultato, se x è stato integrato perché
ancora compare nell'espressione ottenuta con integrate?
e come mai le due traformate sono tanto diverse?
non mi pare che qualche definizione di fattore pi possa bastare a
sistemare le cose.
dove sbaglio?
grazie
  #9  
Old 07-15-2008
Peltio
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

"foice" ha scritto

>FourierTransform[Exp[-Abs[x]],x,p]
>ottengo
>Sqrt(2/pi) * 1/(1+p^2)
>
>Se faccio l'integrale esplcito
>
>Integrate[Exp[-Abs[x]]*Exp[\[ImaginaryI]px], {x, -inf, inf}]
>il risultato diventa
>1/pi Exp[ipx]
>ma che significa?


Due cose, credo:
1) che non hai messo lo spazio tra la p e la x : )
2) che la convenzione usata di default da mma è differente da quella
esplicitata da te.

La soluzione al punto 1) è semplice: metti lo spazio tra le variabili.
La soluzione al punto 2) dipende dalla versione: prima della versione 4 devi
giocare con le costanti $OverallFourierConstant e $FrequencyConstant (ora
non ricordo i nomi esatti, ma li trovi nell'help del package
FourierTransform); Dalla 4 in poi mma usa delle opzioni per impostare le
convenzioni (io per la verisone 3 avero realizzato un package
FourierConvention che faceva più o meno le stesse cose permettendo di
memorizzare le convenzioni con dei nomi (ad esempio il nome dei testi che le
usano) per poi richiamarle e settare le costanti).

Comunque le differenze in quest'ultimo caso sono dei fattori: 2, Sqrt[2] o
1/Sqrt[2].

saluti,
Peltio

PS
Quando posti codice mma, convertilo prima in testo normale (ad esempio
tramutandolo in InputForm dopo aver sostituito le lettere greche con lettere
normali) perchè diventa difficile seguire formule con le variabili
rappresentate da \[nomesimbolo]




  #10  
Old 07-15-2008
Peltio
Guest
 
Posts: n/a
Default Re: trasformate di fourier con mathematica

"foice" ha scritto

>>Sì, la mole di dati generata nelle 'terre di mezzo' è impressionante.
>>Tuttavia se ti interessa il risultato numerico puoi sempre sostituire i
>>valori prima di fargli macinare i simboli.

>
>eh, purtroppo non posso, mi serve l'espressione completa


In questo caso potresti trarre vantaggio da semplificazioni intermedie,
cercando di rendere le più semplici possibili le funzioni da integrare e
spezzare i domini di integrazione quando hai funzioni di tipo 'piecewise'.
Non è una soluzione miracolosa, ma può aiutare.
A volte inoltre sono i nomi dei contesti delle variabili a portare via
spazio. Per quello però la soluzione è più complicata (caricare il package
nel contesto globale con il rischio di collisioni) che è meglio far finta di
non conoscerla. : )
Anche se dovrebbe esserci un package che strippa i contesti dalle funzioni
importate, ma... boh dovrei cercarlo...

>cmq è troppo oscuro questo kernel, vorrei vedere cosa fa, sono
>curioso.


Mathematica è software proprietario. Non è open source. E non credo che
trarresti alcun vantaggio da sapere come si comportano le routine di
integrazione simbolica. Tutti quelli che sanno cosa fanno concordano nel
dire che i risultati intermedi non sono adatti ad essere visti da occhi
umani : )))

Piuttosto con la versione 3 o precedenti puoi dare un'occhiata al package
FourierTransform per vedere come sono implementate le trasformate e volendo
ti puoi creare un package tuo per gestire le funzioni di tuo interesse in
maniera più efficiente. Un package ad hoc scritto da te avrebbe il vantaggio
di

1) fare quello che dici tu (se glielo dici bene: ) )
2) essere più leggero perchè puoi evitare la gestione
di casi speciali,
di errori,
di funzioni esotiche che capitano una volta ogni morte di papa
ma che in un package ufficiale devono essere contemplate
con conseguente complicazione del codice
3) essere più efficiente
(ho scritto delle procedure barbare di integrazione numerica a la
simpson che sono di gran lunga più veloci di NIntegrate e dei
package specifici, proprio per i motivi illustrati al punto 2)
4) poter includere delle 'hack' su misura tipo
myTransform[integralecomplicatochecimetteere]=risultatocopiato

Potresti anche cercare di usare i package di Signal Processing: la versione
precedente a quella commercializzata è ancora disponibile gratuitamente in
rete su mathsource. C'è da sacramentare per adattarli alle versioni 3 e
superiori però e non ricordo più cosa c'era da fare.
Però che all'epoca ci avevo sacramentato dietro lo ricordo perfettamente.
Magari hai accesso direttamente al package commerciale Signal Processing per
la tua versione di mma, però.

>vorrei vedere qualche scritta tipo quelle che si vedono nelle console
>linux quando apri un programma per x dalla console e nella console
>puoi leggere tutto quello che fa il programma, accessi alle librerie,
>operazioni su disco ... la versione unix di mathematica fa di queste
>cose?


Boh, io l'ho usato su win31, win9x e su Solaris ma, almeno su quest'ultimo
dato che gli altri due... vabbè..., non mi sono mai posto il problema di
voler vedere queste cose. Ma che ci fai una volta che sai che invocando
integrate apre la libreria pippo quattro volte, invoca la funzione luisa,
apre la libreria caio 5 volte per invocare pina e giorgia e scrive dieci
mega su disco?

Gli innards si mma sono scritti in mma e in C (e C++). E non sono
accessibili (a parte gli add-ons). Vedresti delle scatole nere e basta.

saluti,
Peltio










Thread Tools
Display Modes

Forum Jump


All times are GMT. The time now is 12:18 AM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0