|
#1
|
|||
|
|||
|
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
|
|||
|
|||
|
"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
|
|||
|
|||
|
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
|
|||
|
|||
|
"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
|
|||
|
|||
|
"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
|
|||
|
|||
|
"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
|
|||
|
|||
|
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
|
|||
|
|||
|
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
|
|||
|
|||
|
"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
|
|||
|
|||
|
"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 | |
|