View Full Version : [Official Thread]Software scientifico
Ziosilvio
27-01-2009, 11:52
Bentrovati.
In séguito ad una richiesta sull'uso di R (http://www.hwupgrade.it/forum/showthread.php?t=1914257), ho pensato che possa essere utile avere una discussione in rilievo sui software scientifici, in cui poter chiedere aiuti, consigli e suggerimenti sul loro uso, sulle librerie aggiuntive, e simili.
In effetti, questi software vengono di solito adoperati dai ricercatori, piuttosto che dai programmatori; per cui, anche postando nell'altra sezione, potrebbe essere difficile trovare aiuto sul modo di risolvere un problema in Matlab, semplicemente perché chi ha pratica col loro uso frequenta più Scienza e tecnica che non Programmazione.
Per cui, ecco a voi questo thread in cui parlare di:
Maple
Matlab
Mathematica
Maxima
Octave
R
Scilab
e anche di:
BLAS
Lapack
SciPy
e chi più ne ha più ne metta ;)
Aspetto i vostri contributi ai post di servizio:
Matematica
Statistica
Fisica
Chimica
Biologia
Astronomia
Ziosilvio
27-01-2009, 11:58
Gnuplot
Sito ufficiale: http://www.gnuplot.info/
Licenza: Coperto da copyright ma distribuibile gratuitamente
Descrizione: (dal sito ufficiale)
Gnuplot è una utility a riga di comando per tracciamento di grafici. La sua versatilità è sufficiente a permetterne l'impiego da parte di software di terze parti. Traccia grafici 2D e 3D, produce output in diversi formati tra cui TeX e JPEG, ed è estendibile per includere nuove modalità.
Link utili:
Documentazione (http://www.gnuplot.info/docs/gnuplot.html)
Matlab
Sito ufficiale: http://www.mathworks.com/
Licenza: Commerciale
Descrizione:
Matlab è lo standard de facto per il calcolo numerico ingegneristico. Si basa su un linguaggio interpretato, i cui algoritmi interni sono ottimizzati per l'impiego di matrici di grandi dimensioni.
Link utili:
Documentazione (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.html)
Comandi grafici (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_plots/f9-53405.html) (contribuito da checcot)
Getting started with Matlab (http://www.cs.huji.ac.il/course/2004/ils/docs/getstart.pdf) (guida PDF, contribuita da lowenz)
Maxima
Sito ufficiale: http://maxima.sourceforge.net/
Licenza: GNU GPL
Descrizione: (dal sito ufficiale)
Maxima è un sistema per la manipolazione di espressioni simboliche e numeriche. Il codice sorgente di Maxima può essere compilato su vari sistemi, inclusi Windows, Linux e Mac OS X. Maxima è un discendente di MACSYMA, celebre sistema di computer algebra sviluppato al MIT di Boston alla fine degli anni Sessanta.
Link utili:
Documentazione ufficiale (http://maxima.sourceforge.net/documentation.html)
Manuale Maxima 5.9 di Michael Clarkson (PDF, 2002) (http://www.math.psu.edu/glasner/Max_doc/macref.pdf) (contribuito da Bounty_)
Tutorial di Ruben R. Puentedura (http://www.hippasus.com/resources/symmath/index.html) (contribuito da Bounty_)
Octave
Sito ufficiale: http://www.gnu.org/software/octave/
Licenza: GNU GPL v3
Descrizione: (dal sito ufficiale)
GNU Octave è un linguaggio di alto livello, pensato primariamente per la computazione numerica. Fornisce una comoda interfaccia a riga di comando per la soluzione numerica di problemi lineari e non-lineari, e per l'esecuzione di altri esperimenti adoperando un linguaggio che è per lo più compatibile con Matlab. Può anche essere adoperato come linguaggio batch oriented.
Link utili:
Documentazione completa (HTML) (http://www.gnu.org/software/octave/doc/interpreter)
FAQ (http://www.gnu.org/software/octave/FAQ.html)
R
Sito ufficiale: http://www.r-project.org/
Licenza: software libero
Descrizione: (dal sito ufficiale)
R è un ambiente software libero per computazione statistica e grafica. Può essere compilato ed eseguito su una grande varietà di piattaforme UNIX, Windows e Mac OS X.
Link utili:
Corso di statistica con R alla George Mason University (http://classweb.gmu.edu/dcarr/eda/schedule.html)
(contribuito da checcot)
Galleria di grafici fatti con R competi di codice (http://addictedtor.free.fr/graphiques/)
(contribuito da checcot)
wxMaxima (contribuito da The_ouroboros)
Sito ufficiale: http://wxmaxima.sourceforge.net/wiki/index.php/Main_Page
Licenza: GNU GPL v2
Descrizione:
wxMaxima è un'interfaccia grafica cross-platform per Maxima (vedi sopra) basato su wxWidgets. Le sue caratteristiche comprendono:
visualizzazione in grafica 2D dell'output di Maxima
menu per la maggior parte dei comandi, e pulsanti per quelli più usati
finestre di dialogo per l'inserimento dei comandi con più argomenti
possibilità di creare, salvare e modificare documenti mescolando testo e calcoli
animazioni (versione 0.7.4 e successive)
Ziosilvio
27-01-2009, 11:58
Crystal (contribuito da evelon)
Sito ufficiale: http://www.crystal.unito.it/
Licenza: Commerciale
Descrizione:
Crystal (Computational Tool for Solid State Chemistry and Physics) è un software computazionale per ricercatori nel campo della fisica e della chimica dello stato solido, sviluppato dall'Università di Torino.
Il codice è completamente parallelizzato.
Tra le operazioni gestite:
teoria di Hartree-Fock
funzionali di scambio e di correlazione
multipoli atomici
Link utili:
Documentazione ufficiale: http://www.crystal.unito.it/documentation.html
Tutorial: http://www.crystal.unito.it/tutorials/index.html
Ziosilvio
27-01-2009, 11:59
Gaussian (contribuito da Lucrezio)
Sito ufficiale: www.gaussian.com
Licenza: Commerciale
Descrizione:
Gaussian è fra i programmi più usati per simulazioni e calcoli di proprietà molecolari. Non solo svolge praticamente tutte le funzioni richieste ad un software della sua categoria, ma è anche dotato di un'interfaccia grafica user friendly.
Il software può calcolare:
Energie
Ottimizzazioni di geometria
Proprietà di risposta tramite la teoria delle derivate analitiche (frequenze vibrazionali, proprieta' elettriche e magnetiche, tensori di schermo...
Proprietà di risposta dinamica (tramite la teoria della risposta lineare)
il tutto a vari livelli di teoria, tra cui:
Hartree Fock
DFT, con la possibilità di scegliere fra numerosi funzionali, anche ibridi
Teoria perturbativa fino al quinto ordine
Interazione di configurazioni di singole e doppie, eventualmente quadratica
Coupled Cluster (CCSD, con eventuale inclusione perturbativa delle triple, CCSD(T))
CAS-SCF
Metodi semiempirici (AM1, PM3...)
Meccanica Molecolare (Amber...)
e per gli stati eccitati:
TDHF e TDDFT con tutti i funzionali (anche il cam-b3lyp e' disponibile nelle versioni piu' recenti)
ZINDO
CIS
SAC-CI
Per la maggioranza dei metodi sono disponibili i gradienti analitici. E' inoltre possibile includere l'effetto del solvente con modelli continui, come IEF-PCM o modelli piu' rudimentali.
Il software può gestire calcoli per sistemi open e closed shell; sono implementate basi gaussiane di svariata natura (basi di Pople, basi cc-pVXZ, basi ECP).
Link utili:
gasgas86
02-02-2009, 10:28
Buongiorno a tutti,
avendo poche conoscenze di matlab mi trovo in difficoltà con una cosa che potrebbe anche risultare ovvia.. Ho una serie di punti nello spazio,in quota x,y,z e li devo collegare creando una superficie (dovrebbe venire una specie di "montagna" ) ma non riesco a capire quale comando usare.. Il comando meshgrid mi chiede come terzo valore una matrice ma non capisco. Se qualcuno mi può aiutare! grazie mille
Buongiorno a tutti,
avendo poche conoscenze di matlab mi trovo in difficoltà con una cosa che potrebbe anche risultare ovvia.. Ho una serie di punti nello spazio,in quota x,y,z e li devo collegare creando una superficie (dovrebbe venire una specie di "montagna" ) ma non riesco a capire quale comando usare.. Il comando meshgrid mi chiede come terzo valore una matrice ma non capisco. Se qualcuno mi può aiutare! grazie mille
Qui trovi tutti i comandi grafici di Matlab:
Link (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_plots/f9-53405.html&http://www.google.com/search?hl=en&safe=off&client=firefox-a&rls=org.mozilla:en-US:official&hs=xbf&ei=ZQaHSdLEONCCtwfb4o3SCQ&sa=X&oi=spell&resnum=1&ct=result&cd=1&q=matlab+graphs&spell=1)
Quello che cerchi dovrebbe essere surf(X,Y,Z)
gasgas86
02-02-2009, 17:28
il problema è che anche con surf il terzo dato da inserire deve essere una matrice,mentre io ho i miei 3 vettori di punti nello spazio!!
il problema è che anche con surf il terzo dato da inserire deve essere una matrice,mentre io ho i miei 3 vettori di punti nello spazio!!
Hai ragione. Z deve essere una matrice di dimensioni [n,m], dove n è la lunghezza di x e m la lunghezza di y. e i valori sono quelli contenuti nel vettore z ripetuti tante volte quante volte è necessario per comporre la tua matrice.
Es:
Poniamo che il tuo x = [1,2,3], y = [4,5,6,7] e z = [8,9,10,11]. La tua nuova matrice Z deve essere:
8 9 10 11
8 9 10 11
8 9 10 11
8 9 10 11
Spero sia chiaro.
Lucrezio
03-02-2009, 08:18
Qualche parola si potrebbe spendere su uno dei software piu' completi per la chimica teorica, parlo del Gaussian
www.gaussian.com
Non e' un software libero - la licenza costa un botto di soldi! - ma e' fra i programmi piu' usati per simulazioni e calcoli di proprieta' molecolari.
Ha il vantaggio di essere user-friendly, grazie all'interfaccia grafica GaussView, e di fare praticamente tutto.
Ne riassumo rapidamente le caratteristiche.
Calcola a vari livelli di teoria
- Energie
- Ottimizzazioni di geometria
- Proprieta' di risposta tramite la teoria delle derivate analitiche (frequenze vibrazionali, proprieta' elettriche e magnetiche, tensori di schermo...
- Proprieta' di risposta dinamica (tramite la teoria della risposta lineare)
I livelli di teoria disponibili sono
- Hartree Fock
- DFT, con la possibilita' di scegliere fra numerosi funzionali, anche ibridi
- Teoria perturbativa fino al quinto ordine
- Interazione di configurazioni di singole e doppie, eventualmente quadratica
- Coupled Cluster (CCSD, con eventuale inclusione perturbativa delle triple, CCSD(T))
- CAS-SCF
- Metodi semiempirici (AM1, PM3...)
- Meccanica Molecolare (Amber...)
Per gli stati eccitati:
- TDHF e TDDFT con tutti i funzionali (anche il cam-b3lyp e' disponibile nelle versioni piu' recenti)
- ZINDO
- CIS
- SAC-CI
Per la maggioranza dei metodi sono disponibili i gradienti analitici, e' inoltre possibile includere l'effetto del solvente con modelli continui, come IEF-PCM o modelli piu' rudimentali.
Il programma e' in grado di gestire calcoli per sistemi open e closed shell; sono implementate basi gaussiane di svariata natura (basi di Pople, basi cc-pVXZ, basi ECP).
gasgas86
03-02-2009, 09:36
si,la zeta deve essere una matrice.. ma ora il problema che mi si pone è su come "pilotare" il collegamento dei punti come voglio io; c'è un modo per agire sulla sequenza di collegamento che opera mesh o i comandi di grafica in genere? grazie mille!
Buongiorno a tutti,
avendo poche conoscenze di matlab mi trovo in difficoltà con una cosa che potrebbe anche risultare ovvia.. Ho una serie di punti nello spazio,in quota x,y,z e li devo collegare creando una superficie (dovrebbe venire una specie di "montagna" ) ma non riesco a capire quale comando usare.. Il comando meshgrid mi chiede come terzo valore una matrice ma non capisco. Se qualcuno mi può aiutare! grazie mille
domanda: devi necessariamnete meshare i punti con Matlab o puoi ricorrere a un qualche altro software?
Esiste il surfer che legge terne di punti da file excel o TXT, ma anche in altri formati. Di ogni terna considera i primi due elementi come coordinata sul piano e a questo assegna la quota del terzo numero letto.
Quanto al problema del come collegarli... ovviamente una volta che hai la disposizione spaziale dovresti avere risolto... ma questo programma ti fa scegliere i diversi algoritmi di krieging
Ziosilvio
04-02-2009, 17:33
Esiste il surfer
A solo 599 dollari :eek:
Visto che già parecchi soldi sono stati investiti in Matlab, da gasgas86 o dalla sua università o azienda, tanto vale forse imparare a fare tutto con quello...
gasgas86
04-02-2009, 23:19
si in effetti se riuscivo a evitare è meglio,ma ho visto c'è anche la demo di surfer.. provo poi aggiorno qui! grazie comunque a tutti,al più chiedo una colletta per comprarlo...:D
entanglement
05-02-2009, 09:48
porto l'esperienza dell'uso di:
origin (il 6), ora è da poco uscito l'8. fa tutto quello che ad uno scienziato serve e per cui excel non è sufficiente.
http://www.originlab.com/
chemoffice (io ho usato il 2005), versione attuale: 2008. programma ormai standard per modellazione di molecole, computazioni varie (gaussian supportato, gamess incluso nel pacchetto. un po' costoso !
http://www.cambridgesoft.com/software/details/?ds=1&dsv=66
gasgas86
05-02-2009, 15:55
alla fine era solo questione di ricombinare correttamente i dati di inserimento,:doh: ,in quanto il mesh richiede tre matrici in ingresso nel tridimensionale quindi ho passato le mie tre matrici formate da tante righe quanti piani avevo creato... scusate se mi spiego male ma è difficile rendere l'idea,se qualcuno ha bisogno cerco di rendermi meno dislessico! grazie mille
Qui c'è una bella gallery di grafici fatti con R competi di codice:
http://addictedtor.free.fr/graphiques/
Mentre qui trovate altri esempi e file utili presi da un corso sulla visualizzazione dei dati in R:
http://classweb.gmu.edu/dcarr/eda/schedule.html
vincenzo83
13-02-2009, 09:29
:) Volendo nel primo post si può indicare quali sono i software gratuiti
The_ouroboros
20-02-2009, 23:18
wxMaxima is a cross platform GUI for the computer algebra system Maxima based on wxWidgets.
wxMaxima features include:
* 2D formatted math display: wxMaxima implements its own math display engine to nicely display maxima output.
* Menu system: most Maxima commands are available through menus. Most used functions are also available through a button panel below the document.
* Dialogs: commands which require more that one argument can be entered through dialogs so that there is no need to remember the exact syntax.
* Create documents: text can be mixed with math calculations to create documents. Documents can be saved and edited again later.
* Animations: version 0.7.4 adds support for simple animations.
wxMaxima is released under the GPL2 licence.
http://wxmaxima.sourceforge.net/wiki/index.php/Main_Page
--------------------Il mio apporto:-------------------------
Ottime e semplici spigazioni sull'uso di Maxima:
http://www.hippasus.com/resources/symmath/maximacalc.html
http://www.hippasus.com/resources/symmath/maximasym.html
http://www.hippasus.com/resources/symmath/maximatypeset.html
Spiegazione, un po' datata ma, corposa e scritta con un occhio di riguardo alla programmazione:
http://www.math.psu.edu/glasner/Max_doc/macref.pdf
Ciao ;)
====================Il mio problema===============
P: 10500;
Prog:0;
array (Pr, flonum, Prog);
fillarray (Pr, [P]);
if (1 < Pr[Prog]) then
do
(
P: 500*(300*(Prog+1))/10^Prog,
Prog: Prog+1,
rearray (Pr, ''Prog),
Pr[Prog]: P
);
Genera
Array Pr has dimensions [0], but was called with [1]
praticamente nella riga: Prog: Prog+1, non mi incrementa Prog :confused:
quindi quando dopo va' a ridimensionare l'array non lo incrementa e perche' poi,
quando ci voglio inserire il valore di P invece fa' riferimento ad un valore incrementato??
:muro: :muro: :muro: :muro:
L'espressione P: 500*(300*(Prog+1))/10^Prog,
e' solo dimostrativa, non e' quella con cui opero, pero' la sintassi e' quella e,
l'errore che mi si genera e' lo stesso.
Uso xMaxima su WinXP.
Aiuto grazie
Se ad altri puo' servire ho trovato questi collegamenti molto utili:
http://www.hippasus.com/resources/symmath/maximacalc.html
http://www.hippasus.com/resources/symmath/maximasym.html
http://www.hippasus.com/resources/symmath/maximatypeset.html
Spiegazione, un po' datata ma, corposa e scritta con un occhio di riguardo alla programmazione:
http://www.math.psu.edu/glasner/Max_doc/macref.pdf
P.S. ============================================
Se prossimamente si fa' una cena di gruppo finalmente non sono piu' :
http://www.hannabarbera.com.br/juca/juca.jpg ma sono: http://www.repubblica.it/speciale/poll/2007/motori/cartoni/paperinik.jpg Ho comprato un'autooo.
Ciao ;)
Ziosilvio
22-02-2009, 21:00
@Bounty:
Per la richiesta di aiuto: ho inserito nella discussione principale, che serve sia per dare consigli che per chiedere consigli ;)
Per i link: ringrazio, ma ho qualche dubbio sui primi tre, che puntano a documenti in una sezione ad accesso libero di una società di consulenza privata.
Ne parlo in staff e ti faccio sapere.
EDIT: tutto a posto, le risorse sono disponibili liberamente, quindi linkabili ;)
Per la firma:
Il regolamento dice, "3 righe a 1024 solo testo con un massimo di 3 smiles dell'Hardware Upgrade Forum oppure un'immagine 100 X 50 X 5KB e una riga di testo (non deve andare a capo)".
Questo vuol dire che delle due cose:
tre righe con un massimo di tre faccine del forum
un'immagine max 100x50x5kB e una riga di testo che non va a capo
devi sceglierne una e una sola, ma non puoi averle entrambe.
Quindi la tua sign attuale è irregolare. Sei pregato di editarla.
Forse ho capito come risolvere, sto provando dipende dalle '' e dalle ()
P: 200;
Prog:0;
array (Pr, flonum, Prog);
fillarray (Pr, [P]);
(
do
(
P: ''((50*3-(''Prog+2))/1),
''(Prog: ''(''Prog+1)),
''(rearray (Pr, ''Prog)),
Pr[Prog]: ''P,
if (1 > ''Pr[''Prog]) then return (Prog)));
Cosi' pero' non mi esce mai dal loop.
Ho modificato la firma.
Ciao ;)
P: 200;
Prog: 0;
array (Pr, flonum, 0);
fillarray (Pr, [P]);
(
for a: 0 thru 3 step 1
do
(
P: ''a*3,
ev(Prog: Prog+1, numer), /* senno' scritto cosi' Prog: Prog+1, non lo cicla, lo calcola una volta solo */
ev(rearray (Pr, ''Prog), numer),
ev(Pr[Prog]: ''P, numer),
display(a),
display(Prog),
display(P),
ev(display(Pr[''Prog]), numer) ));
Le rige in grassetto e corsivo non riesco a farle funzionare. :mc: :mc: :mc: :muro: :muro: :muro:
La riga ev(rearray (Pr, ''Prog), numer), non sono sicuro che funzioni.
Il resto funziona.
Per provare che le altre righe funzionano potete far diventare un commento quelle che non funzionano
mettendole tra: /* */
Aiutooo :nera::nera::nera::nera:
- - - - - - - - - - - - - - Curiosita' - - - - - - - - - - - - - -
Per curiosita'
P: ''a*3, lo cicla in quanto a e' la variabile del ciclo
ev(Prog: Prog+1, numer), /* senno' scritto cosi' Prog: Prog+1, non lo cicla, lo calcola una volta solo */
sertor185
16-03-2009, 14:15
ho questo problema devo caricare un file c generato da un programma contenete caratteri e intei e devo estrarre alcuni interi.
ci sono delle righe che contengono delle informazioni inutili e certe altre che contengono sia caratteri che numeri io in quella riga devo estrarre solamente il numero esempio:
----------------------------------------------------------
#include <stdio.h> RIGA INUTILE
#include "Fuzzy.h" RIGA INUTILE
int num_inputs = 4; RIGA UTILE
-----------------------------------------------.TXT-------
nella mia riga utile mi serve estrarre solo il 4 ok??
il mio codice che apre e scarica le varie righe è questo
dati = fopen('fuzzy.c','rt')
for i= 1:inf
s = fgetl(dati);
if (s == -1), break, end
c(i) = cellstr(s);
end
ora mi serve capire come da una determinata riga posso estrarre solo la parte intera!
GRAZIE
Ziosilvio
16-03-2009, 14:28
Sposto nel thread in rilievo ;)
EDIT: vedo che hai inviato un messaggio uguale in Programmazione.
Questo si chiama crossposting e :nonsifa:
Ho segnalato ai moderatori di sezione.
ho questo problema devo caricare un file c generato da un programma contenete caratteri e intei e devo estrarre alcuni interi.
ci sono delle righe che contengono delle informazioni inutili e certe altre che contengono sia caratteri che numeri io in quella riga devo estrarre solamente il numero esempio:
----------------------------------------------------------
#include <stdio.h> RIGA INUTILE
#include "Fuzzy.h" RIGA INUTILE
int num_inputs = 4; RIGA UTILE
-----------------------------------------------.TXT-------
nella mia riga utile mi serve estrarre solo il 4 ok??
il mio codice che apre e scarica le varie righe è questo
dati = fopen('fuzzy.c','rt')
for i= 1:inf
s = fgetl(dati);
if (s == -1), break, end
c(i) = cellstr(s);
end
ora mi serve capire come da una determinata riga posso estrarre solo la parte intera!
GRAZIE
Puoi usare la funzione isstrprop(s, 'digit') (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/isstrprop.html) dove s è la tua stringa.
alimatteo86
08-04-2009, 23:53
ho un problemuccio con matlab
è banale....ma sono stanco e devo avere tutto pronto per domattina, quindi chiedo il vostro aiuto....
ho vari file txt di dimensione 3x15000 che rappresentano 2 valori che variano nel tempo (in genere in maniera lineare o sinusoidale)
quello che vorrei fare è di creare un grafico (e, magari, una o più funzioni) che rappresenti media e varianza di quei valori in funzione del tempo
a me era venuto in mente giusto di calcolare media e varianza a gruppi di 10 o 20 dati e interpolare i punti....però mi sembra decisamente una porcata, soprattutto quando c'è da lavorare in zone sinusoidali a frequenza elevata
idee migliori?:help:
Bentrovati.
...
per chi può interessare c'è Cristal (Computational Tool for Solid State Chemistry and Physics) ora giunto alla versione 0.6 (credo)
qualche nota:
Full Features
Hamiltonians
• Hartree-Fock Theory
o Restricted
o Unrestricted
• Density Functional Theory
o Local functionals [L] and gradient-corrected functionals [G]
Exchange functionals
Slater (LDA) [L]
von Barth-Hedin (VBH) [L]
Becke '88 (BECKE) [G]
Perdew-Wang '91 (PWGGA) [G]
Perdew-Burke-Ernzerhof (PBE) [G]
Correlation functionals
VWN (#5 parameterization) (VWN) [L]
Perdew-Wang '91 (PWLSD) [L]
Perdew-Zunger '81 (PZ) [L]
von Barth-Hedin (VBH) [L]
Lee-Yang-Parr (LYP) [G]
Perdew '86 (P86) [G]
Perdew-Wang '91 (PWGGA) [G]
Perdew-Burke-Ernzerhof (PBE) [G]
o Hybrid HF-DFT functionals
B3PW, B3LYP (using the VWN5 functional)
User-defined hybrid functionals
o Numerical-grid based numerical quadrature scheme
Energy derivatives
• Analytical first derivatives with respect to the nuclear coordinates and cell parameters
o Hartree-Fock and Density Functional methods
o All-electron and Effective Core Potentials
Type of calculation
• Single-point energy calculation
• Automated geometry optimization
o Uses a modified conjugate gradient algorithm
o Optimizes in symmetry-adapted cartesian coordinates
o Optimizes in redundant coordinates
o Full geometry optimization (cell parameters and atom coordinates)
o Freezes atoms during optimization
• Harmonic frequencies at Gamma
• Anharmonic frequencies for X-H bonds
Basis set
• Gaussian type functions basis sets
o s, p, d, and f GTFs
o Standard Pople Basis Sets
STO-nG n=2-6 (H-Xe), 3-21G (H-Xe), 6-21G (H-Ar)
polarization and diffuse function extensions
o User-specified basis sets supported
• Pseudopotential Basis Sets
o Available sets are:
Hay-Wadt large core
Hay-Wadt small core
o User-defined pseudopotential basis sets supported
Periodic systems
• Periodicity
o Consistent treatment of all periodic systems
o 3D - Crystalline solids (230 space groups)
o 2D - Films and surfaces (80 layer groups)
o 1D - Polymers (75 rod groups)
o 0D - Molecules (32 point groups)
• Automated geometry editing
o 3D to 2D - slab parallel to a selected crystalline face (hkl)
o 3D to 0D - cluster from a perfect crystal (H saturated)
o 3D to 0D - extraction of molecules from a molecular crystal
o 3D to n3D - supercell creation
o Several geometry manipulations (reduction of symmetry; insertion, displacement, substitution, deletion of atoms)
Wave function analysis and properties
• Band structure
• Density of states
o Band projected DOSS
o AO projected DOSS
• All Electron Charge Density - Spin Density
o Density maps
o Mulliken population analysis
o Density analytical derivatives
• Atomic multipoles
• Electric field
• Electric field gradient
• Structure factors
• Compton profiles
• Electron Momentum Density
• Electrostatic potential and its derivatives
o Quantum and classical electrostatic potential and its derivatives
o Electrostatic potential maps
• Fermi contact
• Localized Wannier Functions (Boys method)
• Dielectric properties
o Spontaneous polarization (Berry Phase)
o Spontaneous polarization (Localized Wannier Functions)
o Dielectric constant
Software performance
• Memory management: dynamic allocation
• Full parallelization of the code
o parallel SCF and gradients for both HF and DFT methods
o Replicated data version (MPI)
o Massive parallel version (MPI) (distributed memory)
serbring
27-04-2009, 15:43
ho una serie di punti che descrivono una funzione di trasferimento. E' possibile con matlab calcolare i parametri di un'equazione interpolante che abbia una ben precisa struttura? Nel mio caso l'equazione che devo usare per fare il fit, deve essere costituita da uno zero semplice e da un polo complesso e coniugato.
global T = 11807
Temperatura (1,1) = T
global PmolKg = 1.00794*2/1000
global R = 8.314472
global vp = 0
vp = sqrt((2*R*Temperatura(1,Prog))/PmolKg)
In quest'ultima riga Octave mi segnala errore di sintassi. :(
Cosi' perchè sappiate di cosa si tratta,
sto calcolandola velocità più probabile nella distribuzione di Maxwell-Boltzmann a 11807°K:
http://upload.wikimedia.org/math/c/b/4/cb4cb933eb3cc3ddec3f3184248a223c.png
http://en.wikipedia.org/wiki/Maxwell-Boltzmann_distribution
Il problema che avevo nei post sopra ci ho rinunciato a farlo con Maxima,
ho tradotto il programma in linguaggio Octave=Matlab e lo sto correggendo in Octave appunto.
Grazie in anticipo per tutto l'aiuto che riuscite/potete.
Ciao
serbring
28-04-2009, 12:56
ho una serie di punti che descrivono una funzione di trasferimento. E' possibile con matlab calcolare i parametri di un'equazione interpolante che abbia una ben precisa struttura? Nel mio caso l'equazione che devo usare per fare il fit, deve essere costituita da uno zero semplice e da un polo complesso e coniugato.
ho risolto con questo tool per matlab è fantastico
http://www.physicsforums.com/showthread.php?t=203898
serbring
28-04-2009, 15:54
vi descrivo per bene il problema perchè mi sono bloccato più avanti.
Ho una serie di punti che descrivono il guadagno di una certa risposta in frequenza misurata sperimentalmente. Ho l'equazione teorica della funzione di risposta armonica del mio sistema. Attraverso il fit del guadagno voglio calcolare certi parametri che sono contenuti nell'equazione, che mi risulterebbero impossibili da calcolare. C'è un modo da matlab per passare dalla risposta armonica al guadagno? Ho provato a calcolare il guadagno a mano ma mi è venuta una slavagnata di conti che ho paura di aver sbagliato.
Detto in altre parole ho il diagramma di bode del guadagno ricavato sperimentalmente e l'equazione teorica del modello con dei parametri incogniti; io voglio fare il fit del digramma del guadagno per ricavare questi parametri incogniti.
global T = 11807
Temperatura (1,1) = T
global PmolKg = 1.00794*2/1000
global R = 8.314472
global vp = 0
vp = sqrt((2*R*Temperatura(1,Prog))/PmolKg)
In quest'ultima riga Octave mi segnala errore di sintassi. :(
Cosi' perchè sappiate di cosa si tratta,
sto calcolandola velocità più probabile nella distribuzione di Maxwell-Boltzmann a 11807°K:
http://upload.wikimedia.org/math/c/b/4/cb4cb933eb3cc3ddec3f3184248a223c.png
http://en.wikipedia.org/wiki/Maxwell-Boltzmann_distribution
Il problema che avevo nei post sopra ci ho rinunciato a farlo con Maxima,
ho tradotto il programma in linguaggio Octave=Matlab e lo sto correggendo in Octave appunto.
Grazie in anticipo per tutto l'aiuto che riuscite/potete.
Ciao
Non avevo messo il ";" alla fine della riga che era all'interno di un ciclo.
vp = sqrt((2*R*Temperatura(1,Prog))/PmolKg);
Ciao
Devo fare una ricerca dicotomica (Binary search algorithm)
su una matrice per trovarmi o, l'indice del valore corrispondente,
oppure l'indice del valore appena minore.
http://en.wikipedia.org/wiki/Binary_search
http://en.wikipedia.org/wiki/Interpolation_search
Prog = 7; % nel programma definitivo questa riga non serve, e' qui' solo per dargli l'indice massimo della Matrice in cui cercare (cosa che nel programma definitivo avra' a disposizione proprio nel valore di questa variabile)
tempo = [4, 6, 6, 8, 1, 2, 9]; % nel programma definitivo questa riga non serve, e' qui' solo per dargli una Matrice dove cercare
% Algoritmo di ricerca dicotomica Binary search algorithm
function secondi = Proggr_s (secondi)
Sup = Prog;
Infer = 0;
Uscita = 2;
while Uscita != 1
Medio = floor((Sup-Infer)/2)+Infer;
if tempo(1,Medio) == tempo(1,secondi)
secondi=Medio;
Uscita = 1;
else
if tempo(1,Medio) < tempo(1,secondi)
Infer = tempo(1,Medio);
else
if Medio-Infer==1
secondi=Infer;
Uscita = 1;
else
Sup = tempo(1,Medio);
endif
endif
endif
endwhile
endfunction
Mi da' l'errore:
"can't perform indexing operations for <unknown type> type" :muro: :muro: :muro:
Aiutooo :mc: :mc: grazie
Beh, l'errore non l'ho trovato pero' ho risolto lo stesso.
function i = bsearch(x,n);
i = find(x<=n)(end);
endfunction
Trovato qui':
http://www.nabble.com/Re%3A-bsearch-in-octave-p276416.html
Ciao :)
Qualcuno sa se per caso il vecchio Derive per Dos e' disponibile sotto freeware oggi (abandonware), oppure esistono pacchetti free simili?
Devo giocare con delle sommatorie - serie
Ziosilvio
12-05-2009, 08:43
Qualcuno sa se per caso il vecchio Derive per Dos e' disponibile sotto freeware oggi (abandonware), oppure esistono pacchetti free simili?
Devo giocare con delle sommatorie - serie
"Abandonware" non è una categoria legalmente riconosciuta. A scaricare abandonware si rischia comunque di violare i diritti d'autore.
Prova Maxima, è software libero.
dario fgx
13-05-2009, 15:38
salve ragazzi, devo chiedere l'aiuto di voi smanettoni perchè ho smesso di usare matlab almeno 2 anni fà ed ho bisogno di rinfrescarmi la memoria.
Non entrerò nei dettagli della fisica che devo simulare (fasci gaussiani) ma mi limiterò a spiegare cosa vorrei realizzare:
Ho una funzione q(z) immaginaria della variabile reale z, questa q(z) a sua volta dipende da 2 funzioni reali w(z) ed r(z) della stessa variabile z.
innanzitutto vorrei sapere come poter maneggiare in maniera facile e veloce questa dipendenza senza incorrere in una pletora di errori.
Il calcolo simbolico dichiarando
"syms z"
potrebbe essere la soluzione?
C'è qualcuno disposto a seguirmi in questo e in quello che devo fare dopo?
Grazie a tutti.
dario fgx
14-05-2009, 12:32
help!
dario fgx
15-05-2009, 17:44
salve ragazzi, devo chiedere l'aiuto di voi smanettoni perchè ho smesso di usare matlab almeno 2 anni fà ed ho bisogno di rinfrescarmi la memoria.
Non entrerò nei dettagli della fisica che devo simulare (fasci gaussiani) ma mi limiterò a spiegare cosa vorrei realizzare:
Ho una funzione q(z) immaginaria della variabile reale z, questa q(z) a sua volta dipende da 2 funzioni reali w(z) ed r(z) della stessa variabile z.
innanzitutto vorrei sapere come poter maneggiare in maniera facile e veloce questa dipendenza senza incorrere in una pletora di errori.
Il calcolo simbolico dichiarando
"syms z"
potrebbe essere la soluzione?
C'è qualcuno disposto a seguirmi in questo e in quello che devo fare dopo?
Grazie a tutti.
allora q(z) descrive un fascio gaussiano.
Ecco un primo abbozzo ed il problema
>> syms z real
>> r = z*(1+((0.5*10^(-3))^2)/(z.^2));
>> w = (10*10^(-6))*(sqrt(1+(z/(0.5*10^(-3))).^2));
>> qinv = 1/r - i*((633*10^(-9)/pi)/(w).^2);
>> f = imag(qinv);
>> w2 = (-(633*10^(-9)/pi)/f)^0.5
dunque con queste righe mi calcolo 1/q(z).
adesso voglio fare una verifica:
mi calcolo la parte immaginaria di qinv (1/q(z))
da questa mi ricavo di nuovo w (w(2))
verifico con un ezplot che w e w(2) coincidano
d infatti facendo il plot ed assegnando dei valori numerici coincidono!
Poi devo vedere cosa accade al fascio gaussiano q(z) quando si propaga attraverso degli elementi ottici.
per fare questo si usano le matrici ABCD che richiedono non 1/q(z) ma richiedono q(z)
mi calcolo q(z), lo faccio propagare attraverso le matrici ABCD
a questo punto l'espressione di q(z) si è complicata e quando vado a calcolare la parte immaginaria del nuovo q(z) accade che il matlab sbaglia, mi da una espressione assurda che contiene l'immaginario "i"
Help!
dario fgx
16-05-2009, 16:15
ragazzi nessuno mi sa aiutare?
Ho provato anche a semplificare le espressioni col comando simplify ma nada!
Se può servire, vi indico un software (non gratuito eh!!) per calcolare svariate proprietà di qualsiasi molecola. Il suo nome è Spartan, e lo usano dei ricercatori nella mia facoltà (a Venezia).
In ordine sparso, vi indico alcune delle innumerevoli applicazioni del porgramma:
Ottimizzazioni geometriche
generazione di conformeri
calcolo delle relative Energie
angoli di legame, lunghezze e forze di legame
interazioni deboli, vdw, idrogeno
studio di stati di transizione
etc...
Termodinamica
Entalpia di formazione
Entropia
Energia libera di solvatazione
Altro
simulazioni IR e UV-VIS
momenti di multipolo
analisi di popolazione
energie di ionizzazione
zero point vibrational energy (isotopo selettiva)
modelli di solvatazione
etc...
-----
Le opportunità offerte da questo software sono pressochè infinite....certo dietro gira tutta una matematica che o si capisce o non si inizia nemmeno ad utilizzare il programma.
Ad esempio occorre conoscere un po' di quantistica (densità elettroniche, Hamiltoniani, autovalori e autovettori), di fisica classica (campi, momenti, induzioni, potenziali, costanti varie) e di statistica (Maxwell-Boltzmann, Fermi-Dirac, Bose-Einstein), dato che tutti i principali metodi di computazione (Hartree-Fock e DFT in primis) si basano completamente su queste teorie. (qualche info --> http://www.wavefun.com/products/macintosh/Spartan08/mac_spartan_cm1.html)
-----
il link al produttore è
http://www.wavefun.com/products/spartan.html
mi pare sia possibile richiedere una demo, tramite form da compilare sul sito e richiesta diretta di un professore (nel caso siate studenti)
:)
http://www.computational-chemistry.co.uk/images/spartan_screenshot_benzene.jpg
ho appena installato SAGE_Math sulla mia Ubunta, è un clone di Mathematica Open Source gratuito ma è estremamente completo anche se l'interfaccia grafica è decisamente più scarna e spartana
qualche link :
http://it.wikipedia.org/wiki/SAGE_Math
http://www.sagemath.org/
qualcuno lo usa ??
ho provato a installare la versione per Linux di Mathematica ma i grafici non vengono visualizzati a causa di un conflitto fra i driver grafici ( fatti da cane ) della Intel e X.org
e dato che il problema persiste ho deciso di orientarmi unicamente su software open source gratuito
yellowBaron
23-06-2009, 14:05
devo trovare il nullspace di una matrice.
in pratica ho una matrice di rotazione, e devo trovare l'asse di rotazione.
cosi' ho pensato:
l'asse di rotazione non sara' variato dalla rotazione stessa, quindi
R v = v
quindi
R v = I v
(R-I)v=0
cosi' mi son detto: basta cercare il nullspace di R-I
allora do'
null(R-eye(3))
in matlab ma mi restituisce Empty matrix: 0-by-3 :muro:
non so piu' cosa fare...
killercode
03-07-2009, 20:28
e boinc? qualcuno mi da il link per il 3d uficiale se esiste?
c'è un'intera sezione cerca più su
Statistica
http://statsoft.com/
Analisi statistiche in generale, molto completo per i modelli GLM e non lineari.
SPSS
www.spss.com
Il sw statistico più utilizzato, specialmente in ambito sociale
Lisrel
sw per analisi fattoriali esplorative e confermative; analisi multivariata
http://www.ssicentral.com/
Versione per studenti con limitazioni nel numero di variabili utilizzabili
MRIcro
http://www.sph.sc.edu/comd/rorden/mricron/
Visualizzazione di TC / RM
Analisi ROI
Analisi lesionale con metodo addittivo e sottrattivo
Voxel Based Chi square analysis
many more... (anche il mio avatar)
da ciò si capisce cosa uso di più e cosa faccio....
ciao vorrei partecipare attivamente al thread segnalando per chi già non lo conoscesse:
Wolframe Alpha prodotto dallo stesso inventore di Mathematica è un "motore computazionale della conoscenza" o almeno così lo definisce il suo creatore.
Mathematica fa parte del motore di Wolframe Alpha che pare cavarsela abb. bene con i numeri (sicuramente può dare un aiuto ad uno studente universitario o liceale), studia le funzione dando molte informazioni oltre che disegnare i grafici ed e possibile vedere i passaggi (ad esempio di derivate, integrali) e tra questi vengono anche citate le regole utilizzate).
Personalmente mi sta dando un grande aiuto nello studio, (quantomeno per avere un feedback circa le funzioni da me studiate.. e se qualcosa non va poter controllare passo passo i calcoli da lui svolti non è una cosa da poco).
Oltre alla matematica pare siano "coperti" molti ambiti scientifici ma non posso darne un giudizio.
E' in inglese.
Unica pecca riscontrata fin'ora (x/0)=infinito.
Chiaramente è free (è una normale pagina web) dateci un occhiata.. !
LINK: http://www.wolframalpha.com/
NEL CASO IN CUI DATO CHE NON E' PROPRIAMENTE UN SOFTWARE, FOSSI OFFTOPIC SI PREGA DI CANCELLARE IL MESSAGGIO GRAZIE
serbring
15-07-2009, 23:02
Statistica
http://statsoft.com/
Analisi statistiche in generale, molto completo per i modelli GLM e non lineari.
SPSS
www.spss.com
Il sw statistico più utilizzato, specialmente in ambito sociale
Lisrel
sw per analisi fattoriali esplorative e confermative; analisi multivariata
http://www.ssicentral.com/
Versione per studenti con limitazioni nel numero di variabili utilizzabili
MRIcro
http://www.sph.sc.edu/comd/rorden/mricron/
Visualizzazione di TC / RM
Analisi ROI
Analisi lesionale con metodo addittivo e sottrattivo
Voxel Based Chi square analysis
many more... (anche il mio avatar)
da ciò si capisce cosa uso di più e cosa faccio....
Manca R (programma freeware di statistica) ;)
http://cran.r-project.org/
Manca R (programma freeware di statistica) ;)
http://cran.r-project.org/
è presente nel catalogo in prima pagina :)
serbring
16-07-2009, 09:20
è presente nel catalogo in prima pagina :)
mi era sfuggito, scusate.
Samb1985
24-07-2009, 16:02
Ho un problema con la funzione what.
Cioè se utilizzo dir = what('Folder') e nei miei path ci sono una cartella Folder e una classe @folder, su dir ritorna due path. Il primo si riferisce a @folder e il secondo a Folder che è il path che desidero.
C'è un moto per far ritornare l'unico path che desidero (la cartella Folder) e non anche la classe ?
serbring
25-07-2009, 09:29
Ho un problema con la funzione what.
Cioè se utilizzo dir = what('Folder') e nei miei path ci sono una cartella Folder e una classe @folder, su dir ritorna due path. Il primo si riferisce a @folder e il secondo a Folder che è il path che desidero.
C'è un moto per far ritornare l'unico path che desidero (la cartella Folder) e non anche la classe ?
toh un sambenedettese! Io sono un neo fermano :( Mi dispiace non ti posso aiutare...;)
Manca R (programma freeware di statistica) ;)
http://cran.r-project.org/
Lo so, mancanza consapevole visto che l'ho sempre guardato con rispetto, ma non ho mai deciso di impararlo. Fino ad ora per i miei scopi ho sempre risolto con i sw sopra citati.
Se a ottobre mi va bene dovrò imparare matlab + spm
http://it.wikipedia.org/wiki/Mappatura_statistica_parametrica
http://www.fil.ion.ucl.ac.uk/spm/
serbring
25-07-2009, 13:05
Lo so, mancanza consapevole visto che l'ho sempre guardato con rispetto, ma non ho mai deciso di impararlo. Fino ad ora per i miei scopi ho sempre risolto con i sw sopra citati.
Se a ottobre mi va bene dovrò imparare matlab + spm
http://it.wikipedia.org/wiki/Mappatura_statistica_parametrica
http://www.fil.ion.ucl.ac.uk/spm/
io sto usicchiando, ma solo per fare delle regressioni, ho trovato delle comunity molto attive
Samb1985
26-07-2009, 14:44
Qualcuno conosce qualche forum/community molto attivo su matlab ?
columbia83
26-07-2009, 17:30
Qualcuno conosce qualche forum/community molto attivo su matlab ?
Mi associo alla domanda.
Anche se forse sono più intenzionato ad approfondire R.
Devo iniziare a dedicarmi a qualche software del genere per riuscire ad implementare qualcosa per la mia tesi.
serbring
26-07-2009, 17:35
Qualcuno conosce qualche forum/community molto attivo su matlab ?
http://www.mathworks.com/matlabcentral/newsreader/
serbring
26-07-2009, 17:35
Mi associo alla domanda.
Anche se forse sono più intenzionato ad approfondire R.
Devo iniziare a dedicarmi a qualche software del genere per riuscire ad implementare qualcosa per la mia tesi.
questa è una community molto attiva per R
http://www.nabble.com/R-help-f13820.html
columbia83
26-07-2009, 18:43
Grazie mille! :)
columbia83
27-07-2009, 19:30
Chiedo una cortesia, potete indicarmi quali sono i comandi per massimizzare con Matlab o con R?
Vi ringrazio in anticipo.
Salve dopo aver eseguito dei calcoli in un solutore agli elementi finiti, ho salvato a diversi istanti di tempo i dati riguardati una funzione obiettivo in formato ASCII. Ho due domnde:
1) Fino ad li ho importati attraverso Import Data... uno ad uno ma sono 440, esist una modo un pò più veloce? Mi sono un pò documentato e il fatto che i flies contengano un header testuale con la descizione non facilita le cose.
2) Una volta convertiti diventano matrici 2161x6, se faccio una selezione multipla e le salvo in un unico file, perdo la possibilità di lavorare sulle matrici singolarmente come ad esempio sommare alcune colonne di queste matrici tra di loro?
Grazie delle risposte.
Salve, ho ancora una domanda, una volta ottenuti i valori che cercavo vorrei graficare tutto in una mappa con curve isolivello, però ho bisogno di associare i valori alle coordinate dei nodi, sembrebbe facile entrambi stanno sulla stessa riga della matrice, ma non riesco ad ottenere la forma originale circolare della mia superficie su cui ho eseguito la misura, ma soltanto i classici grafici sui 3 assi con gli intervalli deltax, deltay, deltaz inoltre si perde del tutto la coretta rappresentazione dell' informazione. Avete qualche idea per ricostruire la griglia della mia superficie sotto matlab?
serbring
25-08-2009, 17:49
Chiedo una cortesia, potete indicarmi quali sono i comandi per massimizzare con Matlab o con R?
Vi ringrazio in anticipo.
vai sul sito di mathwors e cerca il getting start
Per R cerca su internet la reference card
te la cercherei io, ma vado di fretta
serbring
25-08-2009, 17:50
Salve, ho ancora una domanda, una volta ottenuti i valori che cercavo vorrei graficare tutto in una mappa con curve isolivello, però ho bisogno di associare i valori alle coordinate dei nodi, sembrebbe facile entrambi stanno sulla stessa riga della matrice, ma non riesco ad ottenere la forma originale circolare della mia superficie su cui ho eseguito la misura, ma soltanto i classici grafici sui 3 assi con gli intervalli deltax, deltay, deltaz inoltre si perde del tutto la coretta rappresentazione dell' informazione. Avete qualche idea per ricostruire la griglia della mia superficie sotto matlab?
non ho capito, potresti spiegarmi meglio la cosa?
Ciao, è un pò difficile da spiegare in due parole, comunque ho salvato dei dati presi da una simulazione fatta con un solutore CFD in ASCII per poter fare un postprocessing particolare in matlab, dato che con gli strumenti dati nel solutore non c'è stato verso. Adesso ho i dati che volevo ma solo in forma numerica sotto forma di matrice, e non riesco a rappresentarli come vorrei, ovvero non nella solita forma cartesiana, ma associando i valori che ho calcolato alle posizioni spaziali dei nodi, ritornando così alla forma originale della mia superficie di controllo (un cerchio) nel domimio di calcolo. Spero di essere stato un pò più chiaro.
serbring
26-08-2009, 22:31
Ciao, è un pò difficile da spiegare in due parole, comunque ho salvato dei dati presi da una simulazione fatta con un solutore CFD in ASCII per poter fare un postprocessing particolare in matlab, dato che con gli strumenti dati nel solutore non c'è stato verso. Adesso ho i dati che volevo ma solo in forma numerica sotto forma di matrice, e non riesco a rappresentarli come vorrei, ovvero non nella solita forma cartesiana, ma associando i valori che ho calcolato alle posizioni spaziali dei nodi, ritornando così alla forma originale della mia superficie di controllo (un cerchio) nel domimio di calcolo. Spero di essere stato un pò più chiaro.
sinceramente ancora non ho capito, ma non credo di poterti aiutare. Prova a scrivere al newsgroup di matlab. Lo trovi nel sito di mathworks.
columbia83
02-09-2009, 23:26
vai sul sito di mathwors e cerca il getting start
Per R cerca su internet la reference card
te la cercherei io, ma vado di fretta
Solo ora ho visto la risposta!
Grazie 1000!
Provo a cercare in questi giorni.
Se non trovo niente, chiedo il tuo aiuto. :)
Varhamir
06-09-2009, 13:28
Salve a tutti, sono un neofita di matlab, tuttavia mi sono ritrovato a dover creare un programmino per la tesi e sono un tantino in panico!
Avrei bisogno di un paio di dritte.
1) ad un certo punto del programma l'utente deve scegliere un numero tra 1 e 15, se l'utente immette un numero superiore al 15 o immette 0 ho fatto in modo che il programma dia un messaggio di errore. Io vorrei che però il programma riformulasse la domanda invece di chiudersi. C'è qualche comando per fare ciò?
2)nel programma utilizzo molte variabili che non vorrei venissero viste nel workspace perchè servono solo al programma per capire cosa fare. C'è un modo per non farle vedere? Oppure mi conviene scrivere nel codice di cancellarle quando non servono più? E se si come?
3) quando uso il comando var= menu ('prompt',opzioni), è possibile fare in modo che la finestra appaia al centro dello schermo e non in alto a sinistra?
Scusate se vi disturbo con domande che per molti di voi risulteranno banali, ma vi assicuro che mi aiutereste molto!
Grazie in anticipo!
serbring
06-09-2009, 15:24
Salve a tutti, sono un neofita di matlab, tuttavia mi sono ritrovato a dover creare un programmino per la tesi e sono un tantino in panico!
Avrei bisogno di un paio di dritte.
1) ad un certo punto del programma l'utente deve scegliere un numero tra 1 e 15, se l'utente immette un numero superiore al 15 o immette 0 ho fatto in modo che il programma dia un messaggio di errore. Io vorrei che però il programma riformulasse la domanda invece di chiudersi. C'è qualche comando per fare ciò?
2)nel programma utilizzo molte variabili che non vorrei venissero viste nel workspace perchè servono solo al programma per capire cosa fare. C'è un modo per non farle vedere? Oppure mi conviene scrivere nel codice di cancellarle quando non servono più? E se si come?
3) quando uso il comando var= menu ('prompt',opzioni), è possibile fare in modo che la finestra appaia al centro dello schermo e non in alto a sinistra?
Scusate se vi disturbo con domande che per molti di voi risulteranno banali, ma vi assicuro che mi aiutereste molto!
Grazie in anticipo!
per il primo punto non sò aiutarti.
2) ti conviene cancellare le varibiali una volta che le hai create attraverso il comando clear nomevar
3) Prova a guardare in questo link:http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/uimenu_props.html&http://www.google.it/search?q=matlab+menu+position&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:it:official&client=firefox-a
Varhamir
06-09-2009, 15:40
Grazie per la risposta.
Credo di aver risolto il problema numero 1 con un ciclo di while in cui se il numero è uguale a 0 o è magigore di 15 viene richiesto di nuovo l'input.
Per quanto riguarda il secondo problema il fatto è che io non so come si chiameranno quelle variabili in alcuni casi, perhè il nome viene immesso in input.( ad esempio viene chiesto quali files aprire)
Per il tero seguirò il tuo consiglio.
serbring
06-09-2009, 21:37
Grazie per la risposta.
Credo di aver risolto il problema numero 1 con un ciclo di while in cui se il numero è uguale a 0 o è magigore di 15 viene richiesto di nuovo l'input.
Per quanto riguarda il secondo problema il fatto è che io non so come si chiameranno quelle variabili in alcuni casi, perhè il nome viene immesso in input.( ad esempio viene chiesto quali files aprire)
Per il tero seguirò il tuo consiglio.
scusami, ma il risultato in input non puoi metterlo in una variabile di cui conosci il nome?
Ho ripensato a come forse spiegare meglio il problema, infondo non è altro che una funzione del tipo dpm-concentration=f(y,z), però la grandezza è legata alle due varibili attraverso la soluzione del campo fluidodinamico ed ad un modello matematico per il calcolo della traiettoria di particelle, quindi non in forma analitica. Il dominio su cui è definita è una superficie di controllo che ha per normale il suo asse, che geometricamente si traduce in un cerchio di raggio 28.5, quello che vorrei ottenere è usando y-coordinate, z-coordinate e dpm-concentration come coordinate, piazzare i miei 2830 punti in uno spazio cartesiano, unirli fra di loro per ottenere una superficie composta da trangoli simile alla mesh originale, ed infine su questa tracciare curve isolivello.
Rimane da vedere se è possibile ricostruire i triangoli dato che mesh è non strutturata, e quindi non penso che i nodi con le loro posizioni siano riportati nel file con un ordine di qualche tipo.
Varhamir
07-09-2009, 22:55
scusami, ma il risultato in input non puoi metterlo in una variabile di cui conosci il nome?
Purtroppo no, perchè il programma apre automaticamente i file che l'utente vuole analizzare, e io non so i nomi di questi files.
Qualcun mi spiega gentilmente come risolvere un sistema di equazioni con wolfram mathematica?
Ogni guida mi è avversa ed è da ore che cerco.
Non voglio usare wolfram per pigrizia ma per sapere se il risultato viene.
Posseggo la versione 7.
Grazie.
simone89
29-10-2009, 16:34
Salve ragazzi,
ho da poco iniziato ad usare Mathematica ed ho provato a fare qualche grafico. Qualche volta anzi direi spesso mi capita che il programma non mi faccia il disegno del grafico e si limita a tracciarmi solamente i 3 assi con l'asse z che ha come valore max 1.0 !
Questo è quello che scrivo, dovrebbe essere giusto siccome in certi casi il grafico con una funzione diversa mi compare senza problemi.
f[x_, Y_] := x^4 + 4 y^4 - 4 xy
Plot3D[f[x, y], {x, -100, 100}, {y, -100, 100}]
Poi avrei due domandine da porvi:
mi spiegate come faccio a zoomare il disegno?
è possibile farlo scalare direttamente dal programma?
Grazie
Salve ragazzi,
ho da poco iniziato ad usare Mathematica ed ho provato a fare qualche grafico. Qualche volta anzi direi spesso mi capita che il programma non mi faccia il disegno del grafico e si limita a tracciarmi solamente i 3 assi con l'asse z che ha come valore max 1.0 !
Questo è quello che scrivo, dovrebbe essere giusto siccome in certi casi il grafico con una funzione diversa mi compare senza problemi.
f[x_, Y_] := x^4 + 4 y^4 - 4 xy
Plot3D[f[x, y], {x, -100, 100}, {y, -100, 100}]
Poi avrei due domandine da porvi:
mi spiegate come faccio a zoomare il disegno?
è possibile farlo scalare direttamente dal programma?
Grazie
Y maiuscola e * nell'ultimo termine:
f[x_, y_] := x^4 + 4 y^4 - 4 x*y
Per zoomare, Ctrl + mouse.
simone89
29-10-2009, 21:13
Grazie mille!
killercode
22-11-2009, 11:48
Qualcuno di voi ha provato l'ultima versione di maxima?
Sembra tutto normale, ma quando inserisco un'espressione e do invio non esegue il comando ma va semplicemente a capo.
E' buggata?
nessuno ha mai sentito parlare di mathcad ??
Qualcuno di voi ha provato l'ultima versione di maxima?
Sembra tutto normale, ma quando inserisco un'espressione e do invio non esegue il comando ma va semplicemente a capo.
E' buggata?
Shift + invio?
nessuno ha mai sentito parlare di mathcad ??
Hai qualche quesito in particolare?
Hai qualche quesito in particolare?
al momento no... lo ho chiesto perche non lo vedevo in lista nel primo post...
a quanto ho letto sembra discretamente più potente rispetto a matlab, e anche maggiormente orientato verso il calcolo simbolico...
salve...
qualcuno di voi sa dirmi se è possibile ( e come ) usare matlab per il calcolo simbolico? utilizzando la guida non sono arrivato molto lontano...
mi sarebbe piaciuto risolvere un sistema di equazioni a variabili complesse ma pare che matlab si incarti pressochè immediatamente.
anche con la fft ( su un vettore simbolico ) non va da nessuna parte... :D
mi sto perdendo qualcosa per strada o devo proprio cambiare software?
Python(x,y) (http://www.pythonxy.com/foreword.php)
mastodontica e gratuita distribuzione di software basato su python per l'analisi numerica e la visualizzazione di dati in 2d e 3d .
la sto installando ora , qualcuno la conosce ? .. qualche suggerimento ? :fagiano:
salve...
qualcuno di voi sa dirmi se è possibile ( e come ) usare matlab per il calcolo simbolico? utilizzando la guida non sono arrivato molto lontano...
mi sarebbe piaciuto risolvere un sistema di equazioni a variabili complesse ma pare che matlab si incarti pressochè immediatamente.
anche con la fft ( su un vettore simbolico ) non va da nessuna parte... :D
mi sto perdendo qualcosa per strada o devo proprio cambiare software?
Devi aver installato il Symbolic Toolbox:
http://www.mathworks.com/products/symbolic/
Devi aver installato il Symbolic Toolbox:
http://www.mathworks.com/products/symbolic/
si appunto...
era quello che stavo cercando di usare...
killercode
25-11-2009, 11:14
Python(x,y) (http://www.pythonxy.com/foreword.php)
mastodontica e gratuita distribuzione di software basato su python per l'analisi numerica e la visualizzazione di dati in 2d e 3d .
la sto installando ora , qualcuno la conosce ? .. qualche suggerimento ? :fagiano:
non la conosco, sembra interessante, e poi il python mi piace, l'aggiungerò alla liste dei candidati per il software numerico del resto della mia carriera universitaria :D
killercode
25-11-2009, 12:16
p.s secondo voi conviene comprarlo matlab a 89 $ o fare con software gratuito/open?
p.s secondo voi conviene comprarlo matlab a 89 $ o fare con software gratuito/open?
dipende da quale SO usi
con Windows o OSX puoi anche comprarlo ma se usi Ubuntu o altre distro linux allora non ha senso , ti consiglio di installare : Octave ( con le varie IDE disponibili ) , SageMath, Scilab e Python(x,y ) .
io li utilizzo con l'interfaccia grafica di Texmacs che permette di renderizzare il testo con qualità uguale a quella degli IDE commerciali .
killercode
26-11-2009, 13:06
dipende da quale SO usi
con Windows o OSX puoi anche comprarlo ma se usi Ubuntu o altre distro linux allora non ha senso , ti consiglio di installare : Octave ( con le varie IDE disponibili ) , SageMath, Scilab e Python(x,y ) .
io li utilizzo con l'interfaccia grafica di Texmacs che permette di renderizzare il testo con qualità uguale a quella degli IDE commerciali .
al momento uso scilab e mi trovo bene, faccio cose facili, quindi non è che sia necessario matlab, però è il più famoso e usato, saperlo usare bene può portare vantaggi futuri?
con la mia solita fortuna ho scoperto perchè non riuscivo a fare quello che volevo...
è un bug di matlab che stando al forum riguarda almeno le versioni 2008b 2009a e 2009b...
niente di meglio per prendere confidenza con certi strumenti... :asd:
Salve,datemi una mano che non so + quante istruzioni ho letto sul manuale di Matlab! Vi spiego il problema:
Ho due matrici X e Y (diciamo 3x3 ) composte da numeri...voglio creare una matrice Z, sempre 3x3, composta dagli elementi dell'una e dell'altra. Ossia, in posizione Z(1,1) voglio avere gli elementi X(1,1) e Y(1,1)! E devo avere in più la possibilità di usare una funzione, in cui in IN metto i parametri "x" e "y", e in uscita avere la posizione in cui è memorizzata questa coppia, all'interno della matrice Z! Pensate che si possa fare?
Io avevo provato a fare un array di celle, in cui ogni cella conteneva un vettore di due elementi, il tutto andava, per quanto riguarda la creazione della matrice Z, ma il problema è ke con questa matrice di celle non mi permette di usare la funzione "found", la quale prende come input il dato da cercare nella matrice,e restituisce quindi la posizione nella matrice! o forse non so, può darsi ke sbagliavo la sintassi...io scrivevo +o -:
[riga,colonna]=found(Z=={[x; y]})
non so + cosa fare! se c'è un modo + ovvio per fare la matrice Z, invece che usare le celle (che per la prima volta ho usato oggi), ditemelo!
grazie mille di cuore a ki mi aiuta! :help:
Salve,datemi una mano che non so + quante istruzioni ho letto sul manuale di Matlab! Vi spiego il problema:
Ho due matrici X e Y (diciamo 3x3 ) composte da numeri...voglio creare una matrice Z, sempre 3x3, composta dagli elementi dell'una e dell'altra. Ossia, in posizione Z(1,1) voglio avere gli elementi X(1,1) e Y(1,1)! E devo avere in più la possibilità di usare una funzione, in cui in IN metto i parametri "x" e "y", e in uscita avere la posizione in cui è memorizzata questa coppia, all'interno della matrice Z! Pensate che si possa fare?
Io avevo provato a fare un array di celle, in cui ogni cella conteneva un vettore di due elementi, il tutto andava, per quanto riguarda la creazione della matrice Z, ma il problema è ke con questa matrice di celle non mi permette di usare la funzione "found", la quale prende come input il dato da cercare nella matrice,e restituisce quindi la posizione nella matrice! o forse non so, può darsi ke sbagliavo la sintassi...io scrivevo +o -:
[riga,colonna]=found(Z=={[x; y]})
non so + cosa fare! se c'è un modo + ovvio per fare la matrice Z, invece che usare le celle (che per la prima volta ho usato oggi), ditemelo!
grazie mille di cuore a ki mi aiuta! :help:
[riga,colonna] = find(Z(:,:,1) == x & Z(:,:,2) == y)
[riga,colonna] = find(Z(:,:,1) == x & Z(:,:,2) == y)
wow grazie davvero per la risposta veloce! ma questa è l'istruzione che posso usare cn l'array di celle immagino!
una cosa ancora...6 legittimato a dirmi "vattelo a vedere"...ma gli argomenti della Z , non mi sono molto chiari :muro:
bhe cmq grazie ancora...anke se non rispondi più :D :D :D
wow grazie davvero per la risposta veloce! ma questa è l'istruzione che posso usare cn l'array di celle immagino!
una cosa ancora...6 legittimato a dirmi "vattelo a vedere"...ma gli argomenti della Z , non mi sono molto chiari :muro:
bhe cmq grazie ancora...anke se non rispondi più :D :D :D
Nel tuo esempio, Z è un array 3X3X2. I due puni ( : ) inicano tutti gli elementi nelle righe o nelle colonne di una matrice.
Ad esempio, se hai la matrice:
A = 1 2 3
4 5 6
7 8 9
A(:,1) indica la prima colonna della matrice (1 4 7), A(1,: ) la prima riga (1 2 3) e così via. In altre parole i due punti dicono a Matlab di scorrere un array in una certa dimensione.
Nel tuo esempio, Z è un array 3X3X2. I due puni ( : ) inicano tutti gli elementi nelle righe o nelle colonne di una matrice.
ah è vero! mi era sfuggito...è un bel pò ke nn uso + matlab! Però, perdonami ke ti assillo, ma perchè Z è 3x3x2? cioè, il 2 indica ke ciascuna cella ha 2 elementi?
cmq grazie ancora! :)
Nel tuo esempio, Z è un array 3X3X2. I due puni ( : ) inicano tutti gli elementi nelle righe o nelle colonne di una matrice.
Ho provato a fare come mi hai detto ma mi dice questo:
" ??? Undefined function or method 'eq' for input arguments of type 'cell'. "
quindi non esiste un modo per creare una matrice di matrici? o qualke function preesistente per unire 2 matrici ? Avevo pensato ke nella peggiore delle ipotesi, avrei potuto creare una matrice (Z) di numeri complessi, in cui la parte reale era l'elemento della prima matrice(X) e la parte immaginaria era l'elemento della seconda (Y). E in questo modo penso ke la function "found" funzioni...ma mi sembra un modo troppo stupido e poco elegante!
Non c'è un modo per fare quest'unione, per poi poter usare sempre la function per la restituzione degli indici? AIUTOOO :muro:
Ho provato a fare come mi hai detto ma mi dice questo:
" ??? Undefined function or method 'eq' for input arguments of type 'cell'. "
quindi non esiste un modo per creare una matrice di matrici? o qualke function preesistente per unire 2 matrici ? Avevo pensato ke nella peggiore delle ipotesi, avrei potuto creare una matrice (Z) di numeri complessi, in cui la parte reale era l'elemento della prima matrice(X) e la parte immaginaria era l'elemento della seconda (Y). E in questo modo penso ke la function "found" funzioni...ma mi sembra un modo troppo stupido e poco elegante!
Non c'è un modo per fare quest'unione, per poi poter usare sempre la function per la restituzione degli indici? AIUTOOO :muro:
Incolla il codice che stai usando.
Comunque si possono creare facilmente matrici di matrici. Per esempio, il comando rand(3,3,3) crea una matrice 3X3 di matrici 3X3 con valori casuali.
Incolla il codice che stai usando.
Comunque si possono creare facilmente matrici di matrici. Per esempio, il comando rand(3,3,3) crea una matrice 3X3 di matrici 3X3 con valori casuali.
Esempio prova che ho fatto:
a=[4 5 6;1 2 3;7 8 9];
b=[78 98 64;12 13 45;95 75 74];
for i=1:1:9
matrice(i)={[a(i);b(i)]};
end
celldisp(matrice)
[riga,colonna]=find(matrice(:,:,1)==2 & matrice(:,:,2)==13)
Ops ho appena provato a fare una matrice di matrice come mi hai detto... Ma allora misà ke sono io ke non so cercare nell'HELP! :) grazie cmq dell'aiuto
a=[4 5 6;1 2 3;7 8 9];
b=[78 98 64;12 13 45;95 75 74];
dim = size(a);
matrice = zeros(dim(1),dim(2),2);
matrice(:,:,1) = a;
matrice(:,:,2) = b;
[riga colonna] = find(matrice(:,:,1)==2 & matrice(:,:,2)==13);
a=[4 5 6;1 2 3;7 8 9];
b=[78 98 64;12 13 45;95 75 74];
dim = size(a);
matrice = zeros(dim(1),dim(2),2);
matrice(:,:,1) = a;
matrice(:,:,2) = b;
[riga colonna] = find(matrice(:,:,1)==2 & matrice(:,:,2)==13);
G-R-A-Z-I-E!!! ammazza, immaginavo che matlab offrisse istruzioni brevi e veloci, ma non pensavo così!!! Cmq complimenti a te! ma dove lo hai studiato matlab? non mi dire sull'help! :D Penso proprio ke comprerò un libro!
nel fare le operazioni prima dette, sulle matrici che devo usare, quando voglio visualizzare la matrice completa, esce scritto:
Cannot display variables with more than 524288 elements.
la matrice ha in totale circa 20 milioni di numeri...ma per caso matlab non riesce a elaborare matrici così grandi? per favore non mi rispondete in maniera affermativa!
E la cosa strana, è che il tuo codice funziona per le matrici piccole di prova, ma cn questa, mi dice:
riga=Empty matrix: 0-by-1
Colonna=Empty matrix: 0-by-1
e sottolineo che ho cercato una coppia di valori sicuramente presente nella matrice.
Allora...il problema è un pò diverso, perchè ho appena visto che, la cosa strana avviene già sulle 2 matrici (A e B): se digito per esempio A(i,j), visualizzo il valore memorizzato in quella posizione...se però scrivo :
find(A==valore) dove "valore" è quello che ho appena letto dalla stampa precedente, mi dice : Empty matrix: 0-by-1
quindi? qual'è il problema? il valore che cerco lo copio e incollo, quindi deve per forza esserci, cosa sbaglio?
DarKilleR
06-12-2009, 22:52
perchè tra i software scientifici non ci avete messo Mathcad?
se digito per esempio A(i,j), visualizzo il valore memorizzato in quella posizione...se però scrivo :
find(A==valore) dove "valore" è quello che ho appena letto dalla stampa precedente, mi dice : Empty matrix: 0-by-1
Mi autoquoto per aggiungere che, leggendo dall'help ho trovato:
If X is a vector of all zeros, find(X) returns an empty matrix. For example,
indices = find([0;0;0])
indices =
Empty matrix: 0-by-1
quindi a questo punto dovrei pensare che la matrice sulla quale richiamo il "find", sia riempita con zeri...ma non è così perchè una volta creata la matrice, andando in workspace e selezionando "open selection" sulla variabile della matrice, visualizzo tutti i valori della stessa,che quindi non è evidentemente piena di zeri.L'unica cosa, è che molte "caselle"(probabilmente 1/4 del tot delle caselle) della matrice hanno il valore NaN, ma le restanti hanno valori Reali. Quindi quale pensate possa essere il problema per il quale "find" non mi trova il valore, sicuramente presente?grazie in anticipo
scusate per i tanti msg uguali...cmq il problema l'ho trovato: la matrice salvata ha elementi con troppe cifre significative, e matlab, quando me li stampa, li approssima, quindi se cerco questo numero stampato, ovviamente risulta non essere presente! che voi sappiate esiste un modo per stampare gli elementi completi, cioè senza approssimazione?
Per non diventare matti a scrivere le formule nei forum :
https://sourceforge.net/projects/dragmath/
http://www.dragmath.bham.ac.uk/
Se volete vedere come funziona :
http://www.dragmath.bham.ac.uk/demo.html
Ad esempio:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <msubsup> <mo>∫</mo> <mrow><mn>1</mn></mrow> <mrow><mn>7</mn></mrow> </msubsup> <mrow><mroot> <mrow><mfrac> <mrow><mn>5</mn><mo> ⋅ </mo><mi>x</mi></mrow> <mrow><mn>7</mn></mrow> </mfrac><mo> ⋅ </mo><mi> log </mi><mfenced> <mrow><mi>x</mi></mrow> </mfenced></mrow> <mrow> <mi> π </mi> </mrow> </mroot></mrow> <mo>ⅆ</mo> <mrow><mi>x</mi></mrow> </mrow></math>
\int_{1}^{7} \sqrt[ \pi ]{ \frac{5 \cdot x}{7} \cdot \log \left(x\right)} \,dx
http://www.mathtran.org/cgi-bin/mathtran?D=1;tex=+\int_{1}^{7}+\root++\pi++\of+{+\frac{5+\cdot+x}{7}++\cdot++\log+\left%28x\right%29}\%2Cdx
Io ne ho curato la traduzione in Italiano
Ciao ;)
io ci riprovo, anke se per ora tutto tace: esiste una function che, dato un numero (con un numero non noto di cifre decimali) permetta di scegliere le cifre decimali che si desidera avere? cioè voglio poter troncare alcune cifre decimali, di una matrice di numeri! sottolineo che finora ho trovato solo funzioni che permettono di scegliere il numero di cifre significative, ma non è questo quello di cui necessito, perchè i numeri che devo troncare non li conosco a priori, e le cifre prima della virgola non sono sempre in egual numero (cioè alcuni ne hanno 1,altri 2, altri 3,altri 4)...quindi servirebbe una funzione che non considera proprio le cifre prima della virgola, ma he si concentri solo sulle cifre dopo la virgola! :help:
io ci riprovo, anke se per ora tutto tace: esiste una function che, dato un numero (con un numero non noto di cifre decimali) permetta di scegliere le cifre decimali che si desidera avere? cioè voglio poter troncare alcune cifre decimali, di una matrice di numeri! sottolineo che finora ho trovato solo funzioni che permettono di scegliere il numero di cifre significative, ma non è questo quello di cui necessito, perchè i numeri che devo troncare non li conosco a priori, e le cifre prima della virgola non sono sempre in egual numero (cioè alcuni ne hanno 1,altri 2, altri 3,altri 4)...quindi servirebbe una funzione che non considera proprio le cifre prima della virgola, ma he si concentri solo sulle cifre dopo la virgola! :help:
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fix.html
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/fix.html
questa l'avevo già vista ma non fa al caso mio, perchè non permette di scegliere il numero di cifre decimali da non elidere! grazie lo stesso
questa l'avevo già vista ma non fa al caso mio, perchè non permette di scegliere il numero di cifre decimali da non elidere! grazie lo stesso
Se hai installato il mapping toolbox, dovrebbe esserci una funzione chiamata roundn.
Se non ce l'hai, te la mando in pm.
*nicola*
13-12-2009, 17:50
nessuno usa Xpress IVE Mosel?
Mi pare di essere l'unico che usa 'sto software in tutta Italia, non trovo nessuno che lo abbia anche solo sentito tranne il mio prof.:D :D :D
Se hai installato il mapping toolbox, dovrebbe esserci una funzione chiamata roundn.
Se non ce l'hai, te la mando in pm.
grazie mille, domani vedo sul pc che uso e ti avviso! grazie ancora
Se hai installato il mapping toolbox, dovrebbe esserci una funzione chiamata roundn.
Se non ce l'hai, te la mando in pm.
ah si grazie! Lo trovai! ciao grazie di nuovo :)
serbring
19-12-2009, 00:02
nessuno usa Xpress IVE Mosel?
Mi pare di essere l'unico che usa 'sto software in tutta Italia, non trovo nessuno che lo abbia anche solo sentito tranne il mio prof.:D :D :D
che tipo di software è?
*nicola*
19-12-2009, 08:35
che tipo di software è?
Serve per risolvere problemi di ottimizzazione di praticamente qualsiasi genere, in sostanza gli esercizi che si incontrano solitamente nei corsi di ricerca operativa e modelli e metodi di ottimizzazione.
Es semplice: sono un pasticcere, ho 4 kg di cioccolato, 15 uova, 10 kg di farina e 7 kg di zucchero: quante e quali torte devo fare conoscendo i ricavi per ogni torta e volendo massimizzare il ricavo totale?
Naturalmente funziona anche per problemi molto più complessi...
serbring
19-12-2009, 16:25
Serve per risolvere problemi di ottimizzazione di praticamente qualsiasi genere, in sostanza gli esercizi che si incontrano solitamente nei corsi di ricerca operativa e modelli e metodi di ottimizzazione.
Es semplice: sono un pasticcere, ho 4 kg di cioccolato, 15 uova, 10 kg di farina e 7 kg di zucchero: quante e quali torte devo fare conoscendo i ricavi per ogni torta e volendo massimizzare il ricavo totale?
Naturalmente funziona anche per problemi molto più complessi...
capito, chissà se può essere utile anche nell'ambito dell'ingegneria meccanica
*nicola*
19-12-2009, 19:46
capito, chissà se può essere utile anche nell'ambito dell'ingegneria meccanica
Direi proprio di sì, in realtà il fattore discriminante è naturalmente il modello matematico realizzato che deve avere delle determinate caratteristiche prima fra tutte quella di essere "velocemente" risolvibile.
Cmq sono sicuro che per qualche applciazione specifica per l'ing meccanica tu possa cercare su Google "operational research" o "ricerca operativa" insieme ai campi che più ti interessano. Vedrai che qualcosa di buono e di interessante per utilizzare questa disciplina lo trovi sicuramente!
Qualcuno usa o ha usato Psychtoolbox
http://psychtoolbox.org/wikka.php?wakka=HomePage
in mathlab?
who_is4tlas
26-12-2009, 18:46
Una domanda veloce veloce: qualcuno mi sa dire se è possibile configurare REDUCE in modo che visualizzi su schermo oltre al risultato delle computazioni anche i passaggi intermedi? Un grazie a chi mi saprà dare una mano :)
Ziosilvio
26-12-2009, 19:59
Unisco al thread in rilievo sul software scientifico.
Salve, non so se in matlab si possa fare questa cosa (e neanke so come cercare nell'help):
nei vari linguaggi, tipo C o Java, se per esempio si fa un ciclo for (con la solita variabile i : for(i=0,...,...) ) all'interno dello stesso, si può stampare, per es. su schermo, il valore attuale dell'indice, mi sembra mettendo semplicemente %d !
Mi chiedevo se quindi questa cosa banale possa esssere fatta anke in codici matlab!
Altra cosa...dato che in uno script ke ho fatto ci sono molti cicli for, ho messo un indice diverso per ogni ciclo pur sapendo ke non è bello da vedere :D; e ho fatto questo per evitare eventuali impallamenti di matlab, non conoscendolo alla perfezione...quindi vorrei chiedere se secondo voi posso mettere le stesse variabili (posto ke queste non le uso + una volta uscite dai cicli)?
grazie per le eventuali risposte
Salve, non so se in matlab si possa fare questa cosa (e neanke so come cercare nell'help):
nei vari linguaggi, tipo C o Java, se per esempio si fa un ciclo for (con la solita variabile i : for(i=0,...,...) ) all'interno dello stesso, si può stampare, per es. su schermo, il valore attuale dell'indice, mi sembra mettendo semplicemente %d !
Mi chiedevo se quindi questa cosa banale possa esssere fatta anke in codici matlab!
Altra cosa...dato che in uno script ke ho fatto ci sono molti cicli for, ho messo un indice diverso per ogni ciclo pur sapendo ke non è bello da vedere :D; e ho fatto questo per evitare eventuali impallamenti di matlab, non conoscendolo alla perfezione...quindi vorrei chiedere se secondo voi posso mettere le stesse variabili (posto ke queste non le uso + una volta uscite dai cicli)?
grazie per le eventuali risposte
1) disp(i)
2) Puoi usare le stesse variabili fuori da ogni ciclo. Ad ogni modo, cerca di minimazzare l'uso di cicli for su i vettori e vedi se riesci a compiere le stesse operazioni usando funzioni sui vettori stessi.
1) disp(i)
2) Puoi usare le stesse variabili fuori da ogni ciclo. Ad ogni modo, cerca di minimazzare l'uso di cicli for su i vettori e vedi se riesci a compiere le stesse operazioni usando funzioni sui vettori stessi.
grazie mille! cmq infatti anche io sto cercando di trovare un modo per togliere qualke ciclo for, perchè è troppo lento...è quasi perennemente in busy! :D
1) disp(i)
A pensarci in effetti così non mi è molto utile...nel senso, una cosa che mi servirebbe sarebbe questa (faccio un misto matlab e C):
display('Il valore corrente di i è: %d ',i)
solo ke in matlab non so come fare! c'è un modo?
A pensarci in effetti così non mi è molto utile...nel senso, una cosa che mi servirebbe sarebbe questa (faccio un misto matlab e C):
display('Il valore corrente di i è: %d ',i)
solo ke in matlab non so come fare! c'è un modo?
for i = 1:10
fprintf('Il valore corrente di i è %d \n',i)
end
Oppure:
for i = 1:10
disp(['Il valore corrente di i è: ' int2str(i)])
end
for i = 1:10
fprintf('Il valore corrente di i è %d \n',i)
end
Oppure:
for i = 1:10
disp(['Il valore corrente di i è: ' int2str(i)])
end
grazie mille! ah però è proprio come gli altri linguaggi! senti sto avendo un problema con matlab, spero ke tu mivpossa aiutare: finora l'ho smepre usato tranquillamente, ieri però ho installatoil pacchetto office, e nell'aprire matlab mi dava un warning, ma i codici cmq potevo aprirli ed eseguirli, solo che non mi apriva altri file non .m (sempre con matlab). Quindi dovendo per forza aprirli ho pensato di disinstallare matlab e reinstallarlo, e ora mi da questo errore durante l'installazione:
"The following error was detected while installing Video and Image Processing Blockset:
invalid entry size (expected 10137600 but got 10137628 bytes)
Would you like to retry installing Video and Image Processing Blockset? If you press No, the installer will exit without completing the installation. More information can be found at C:\Users\Ale\AppData\Local\Temp\mathworks."
pur premendo Yes, continua ad uscire questa finestra! Hai idea di cosa possa essere successo? E' possibile ke il pacchetto Office crei problemi a matlab?
uffffffffffff help!
devo fare un codice che deve incrementarmi la data di partenza di 15 min, e deve farlo qualke migliaio di volte...l'ho fatto ma dopo il 150-esimo incremento, incrementa di 14 min e 59 sec, cosa ke mi sballa tutto! sapete dirmi perchè?
devo fare un codice che deve incrementarmi la data di partenza di 15 min, e deve farlo qualke migliaio di volte...l'ho fatto ma dopo il 150-esimo incremento, incrementa di 14 min e 59 sec, cosa ke mi sballa tutto! sapete dirmi perchè?
Posta il codice.
Posta il codice.
Ora non ce l'ho sottomano! cmq grazie lo stesso, ora ho raggirato il problema :D speriamo bene
devo plottare dei valori contenuti in un array, ma sull'asse delle ascisse dovrei mettere delle stringhe ad ogni corrispondetne valore plottato. Cioè per esempio ad un punto sul piano cartesiano, di coordinate (1,3), voglio "assegnargli un etichetta" visualizzata sull'asse delle ascisse in cui ci sia scritto "punto 1".Quindi sull'asse delle ascisse non voglio mettere numeri. è possibile farlo o devo per forza mettere 2 vettori di double nel plot?
io ho provato a passare come primo argomento del plot, un array di celle, in cui ciascuna cella contiene una stringa. Ma mi dà errore perchè cerca di fare la conversione in double delle stringhe, e quindi sulle celle questa conversione non si può fare! ma anke se l'avesse fatta, non mi sarebbe andato bene, perchè voglio cmq mettere delle stringhe sulle ascisse! c'è un modo x risolvere?
ciao
grazie
Salve a tutti,
avrei un problemino con la FFT (Fast Fourier Transform) di MATLAB....non riesco a venirne a capo :(
Riporto i dati:
fX=10000000; % Massima frequenza significativa [Hz]
fc=2*fX; % Frequenza di campionamento
Tc=1/fc; % Periodo di campionamento
Nc=32768; % Numero campioni
t=(0:Nc-1)*Tc; % Vettore dei tempi [s]
FREQ=fc*linspace(0,1,Nc); % Vettore delle frequenze [Hz]
a questo punto, se it è la mia funzione del tempo, per ottenere una stima della If (cioè la trasformata di Fourier della funzione it), è sufficiente eseguire:
If=fft(it,Nc);
???
Perchè ho letto da più parti che bisognerebbe moltiplicare per il tempo di campionamento Tc:
If=fft(it*Tc,Nc);
ma mi sfugge il motivo...
Grazie
Salvo
Ziosilvio
10-02-2010, 14:19
Unito al thread in rilievo sul software scientifico.
giubenez
15-02-2010, 15:07
uso sempre Mathematica ed è proprio eccellente!!
Poi fanno molte offerte per studenti etc...e supporta sia Windows che Mac che Linux!
Non a caso Wolfram era un fisico ;)
Segnalo che se si vuole aggiungere nel primo topic questo link è inerente all'argomento!
http://www.wolframalpha.com/
mai moltiplicato per il tempo di campionamento in vita mia. fai la fft sul segnale specificando il numero di punti in cui campionare la trasformata di fourier e poi scali opportunamente l'asse delle frequenze (la fft ti restituisce i bin in frequenza da 0 alla frequenza di campionamento, per cui per segnali reali ottieni un andamento simmetrico rispetto a Fs/2 (Fs: Sampling Frequency)
Grazie.
Come posso trattare problemi di singolarità per frequenza f=0?
Ecco come devo procedere:
- parto da una grandezza nel dominio del tempo (ovviamente campionata).
- Trasformo.
- Faccio diversi conti con le grandezze nel dominio della frequenza. E qui sorge il problema della singolarità per frequenza nulla!
- Antitrasformo per ottenere le grandezze di interesse nel dominio del tempo.
killercode
07-04-2010, 17:45
Se c'è qualcuno che ha questa risposta gli bacio i piedi.
Esiste un software che permette di; dati gli errori delle variabili e la formula; ricavare tramite la propagazione degli errori, l'errore sul risultato?
killercode
09-04-2010, 16:48
Se c'è qualcuno che ha questa risposta gli bacio i piedi.
Esiste un software che permette di; dati gli errori delle variabili e la formula; ricavare tramite la propagazione degli errori, l'errore sul risultato?
up :stordita:
questo lavoro è in assoluto la cosa più noiosa e frustrante di tutta l'attività di laboratorio
*nicola*
09-04-2010, 18:42
up :stordita:
questo lavoro è in assoluto la cosa più noiosa e frustrante di tutta l'attività di laboratorio
Questo interessa anche a me, tra qualche settimana affronterò questo argomento all'università.
contemascetti
10-04-2010, 09:10
Salve a tutti, vorrei sapere se è possibile realizzare un grafico 3D in cui rappresentare punti di coodinate note {x,y,z} uniti da una linea.
Per rendere l'idea, vorrei realizzare un grafico simile a questo mostrato in figura:
http://i40.tinypic.com/2v2e5wp.png
grafico molto rude, ma rende il concetto :)
Grazie in anticipo a chi risponderà.
A presto
contemascetti
11-04-2010, 11:33
Finalmente ho risolto!
Non conoscevo la funzione "Line" che nidificata nella funzione "Graphics3D" permette di ottenere quello che cercavo.
Ecco il risultato:
http://i40.tinypic.com/do9smd.png
Le istruzioni inserite sono le seguenti:
list = {{1, 0, 1}, {2, 2, 3}, {3, 0, 2}, {3, 4, 1}, {3, 3, 3}, {1, 4,
4}, {4, 2, 5}, {1, 4, 3}};
Graphics3D[Line[list], PlotRange -> {{0, 5}, {0, 5}, {0, 5}},
AspectRatio -> 1, Axes -> True, AxesLabel -> {x, y, z}]
A presto!
Un programma particolare ma molto utile per chi fa ricerche bibliografiche e poi, come me, si ritrova sul PC decine di PDF che a catalogarli ci vogliono giorni (non mi pronuncio sul leggerli :D )...
http://www.mendeley.com/
Permette di gestire collezioni di articoli all'interno del proprio PC e gestisce in modo molto carino anche le citazioni. Da provare, a me ha svoltato
Un programma particolare ma molto utile per chi fa ricerche bibliografiche e poi, come me, si ritrova sul PC decine di PDF che a catalogarli ci vogliono giorni (non mi pronuncio sul leggerli :D )...
http://www.mendeley.com/
Permette di gestire collezioni di articoli all'interno del proprio PC e gestisce in modo molto carino anche le citazioni. Da provare, a me ha svoltato
Bella segnalazione, grazie!
serbring
22-04-2010, 21:13
Un programma particolare ma molto utile per chi fa ricerche bibliografiche e poi, come me, si ritrova sul PC decine di PDF che a catalogarli ci vogliono giorni (non mi pronuncio sul leggerli :D )...
http://www.mendeley.com/
Permette di gestire collezioni di articoli all'interno del proprio PC e gestisce in modo molto carino anche le citazioni. Da provare, a me ha svoltato
esiste anche zotero. E' molto simile....
jacopetto
08-06-2010, 10:57
Salve! Dubito che la mia richiesta troverà risposta, ma io ci provo lo stesso.:rolleyes:
Qualcuno di voi per caso (direi in particolare ingegneri, o architetti) conosce il programma PCMexpress? Avrei bisogno di rimediare qualche libreria in più... :(
P.S.: occhio e croce direi di aver postato nel thread giusto... :rolleyes:
contemascetti
02-08-2010, 11:04
Buon giorno a tutti.
Vorrei sapere se qualcuno di voi usa (oppure ha usato) entrambi i software elencati nel titolo, Maple e Mathematica e quali sono, secondo voi, le maggiori differenze tra i due.
Io uso Mathematica ma ultimamente ho avuto modo di usare Maple in modo sporadico.
La principale differenza che ho notato da subito riguarda l'help del software.
Quello di Mathematica lo trovo molto più interattivo e "pronto ad aiutarti" in ogni momento.
Saluti.
Un programma particolare ma molto utile per chi fa ricerche bibliografiche e poi, come me, si ritrova sul PC decine di PDF che a catalogarli ci vogliono giorni (non mi pronuncio sul leggerli :D )...
http://www.mendeley.com/
Permette di gestire collezioni di articoli all'interno del proprio PC e gestisce in modo molto carino anche le citazioni. Da provare, a me ha svoltato
Spero che mi sia utile perchè la mia cartella pdf è arrivata a quota 862 articoli, e non è una cartella fogna, ogni articolo ha un senso ed è catalogato (al max una decina di pdf da catalogare).
Una volta avevo trovato utile pdf explorer sito (http://www.rttsoftware.com/index.html), ma è shareware e dopo 30g scaduto.
Distraibile come al solito, dovevo scrivere una cosa e ne ho scritta un altra.
Domanda x mathlab o altro sw free/OS se è possibile:
Devo riconvertire dei dati, ma in maniera non lineare, cioè in maniera dipendente dalle risposte.Ho tre colonne:
la prima ha la condizione
la seconda i tempi
la tera le risposte
siccome le risposte sono variabili, devo poter calcolare i tempi in bse alle risposte cioè ad esempio:
Se risposta =1 segue risposta =2 allora prendi tempo dalla riga della risposta 1
Se risposta =1 segue risposta =1 prosegui fino a quando trovi risposta 2 e somma i valori dei tempi dalla riga della prima risposta 1 fino alla riga della risposta 2 -1
Ovviamente il tutto separato per ogni condizione e soggetto (file)
Mi han detto: Is easy with mathlab, write a script e puff, data translated!
Io: :incazzed:
(a mano richiede un tempo esorbitante)
sapete darmi info?
Ciao a tutti!
Per lavoro utilizzo simulink per generare modelli per lo studio della dinamica del volo di velivoli. Vorrei trovare un'alternativa open source e al momento scicos non mi sembra adeguato. Ho trovato openmodelica (http://www.openmodelica.org/) e vorrei sapere se qualcuno lo usa o lo ha usato.
Grazie,
Xwang
Ciao a tutti!
Per lavoro utilizzo simulink per generare modelli per lo studio della dinamica del volo di velivoli. Vorrei trovare un'alternativa open source e al momento scicos non mi sembra adeguato. Ho trovato openmodelica (http://www.openmodelica.org/) e vorrei sapere se qualcuno lo usa o lo ha usato.
Grazie,
Xwang
ho usato ma per poco modelica e l'ho trovato meno usabile di simulink soprattutto perchè i modelli simulink girano direttamente sull'hw sperimentale
cmq da quel poco che mi ricordo devi conoscere il c per mdoelica
Distraibile come al solito, dovevo scrivere una cosa e ne ho scritta un altra.
Domanda x mathlab o altro sw free/OS se è possibile:
Devo riconvertire dei dati, ma in maniera non lineare, cioè in maniera dipendente dalle risposte.Ho tre colonne:
la prima ha la condizione
la seconda i tempi
la tera le risposte
siccome le risposte sono variabili, devo poter calcolare i tempi in bse alle risposte cioè ad esempio:
Se risposta =1 segue risposta =2 allora prendi tempo dalla riga della risposta 1
Se risposta =1 segue risposta =1 prosegui fino a quando trovi risposta 2 e somma i valori dei tempi dalla riga della prima risposta 1 fino alla riga della risposta 2 -1
Ovviamente il tutto separato per ogni condizione e soggetto (file)
Mi han detto: Is easy with mathlab, write a script e puff, data translated!
Io: :incazzed:
(a mano richiede un tempo esorbitante)
sapete darmi info?
a occhio l'unica è farsi uno scrippettino che faccia il lavoro riga per riga
... me lo hanno fatto!
funziona tutto correttamente dopo un paio di revisioni
killercode
03-11-2010, 11:43
*
killercode
03-11-2010, 11:47
domanda sul symbolic toolbox di matlab, io creo la mia bella funzione simbolica e ci faccio le mie belle operazioni
syms x, y
f = cos(x)+sin(y)
diff(f,x)+diff(f,y)
A questo punto è possibile ritrasformare l'equazione ottenuta in forma numerica, dare un valore numerico a x e y e ottenere quindi un risultato numerico per f?
serbring
03-11-2010, 18:29
domanda sul symbolic toolbox di matlab, io creo la mia bella funzione simbolica e ci faccio le mie belle operazioni
syms x, y
f = cos(x)+sin(y)
diff(f,x)+diff(f,y)
A questo punto è possibile ritrasformare l'equazione ottenuta in forma numerica, dare un valore numerico a x e y e ottenere quindi un risultato numerico per f?
certamente, prova a dare una vista in questa lista che contiene tutte le funzioni del symbolic toolbox, così puoi trovare quella che fà al tuo caso
http://www.mathworks.com/help/toolbox/symbolic/f3-157665.html#f3-158993
te di cosa hai bisogno nello specifico? dati vettori x e y avere il vettore dato da diff(f,x)+diff(f,y)?
serbring
11-12-2010, 10:39
segnalo questo link, nel quale ci sono diversi tutorial per usare excel per il calcolo scientifico
http://excelunusual.com/
Ho bisogno di una enorme mano con MATLAB :)
Sto preparando la tesi, in particolare sto studiando la stabilità di un sistemino parametrico, e mi trovo nei casini perchè, senza dei valori precisi per i punti di equilibrio (Ue,We), non posso fare nulla.
In ogni caso: ho un'equazione parametrica di terzo grado e delle condizioni:
(1/3)*x^3+(1-B)*x-a=0
0<b<1
1-2/3*b<a<1
Non è difficile risolvere l'equazione; ciò che è difficile è invece risolverla rispetto ai vari valore di (a, b). Dato che devo fare uno studio qualitativo sto cercando le soluzione rispetto a (valore_minimo_a;qualsiasi_valore_b) e (valore_massimo_a;qualsiasi_valore_b).
intervallo=0.0001;
b=0.0001:intervallo:0.9999;
syms x real;
% In questo ciclo abbiamo
% b = tutti i valori dal minimo al massimo
% a = valore minimo (funzione di b)
for index=1:3332,
B=b(index);
a=(1-(2/3)*B+0.0001);
g=solve((1/3)*x^3+(1-B)*x-a);
if isreal(g(1))
Ue(1, index)=g(1);
elseif isreal(g(2))
Ue(1, index)=g(2);
elseif isrealg((3))
Ue(1, index)=g(2);
end;
We(1, index)=(a-Ue(1, index))/B;
In questa maniera funziona, ma ha dei tempi di computazione della madonna.
Allora cosa ho fatto? Sapendo che la soluzione dell'equazione di terzo grado è del tipo radice cubica di tot con dentro radice quadrata di tot eccetera eccetera, ho creato questo codicillo alternativo:
intervallo=0.0001;
b=0.0001:intervallo:0.9999;
syms x real;
syms c3 c1 c0;
for index=1:3332,
B=b(index);
a=(1-(2/3)*B+0.0001);
c3=B/3; c1=(1-B); c0=-a;
k = (vedi spoiler sotto)
Ue(1, index)=k;
We(1, index)=(a-Ue(1, index))/B;
end;
Dove k è la seguente espressione
((3*a)/(2*B) + ((9*a^2)/(4*B^2) - (B - 1)^3/B^3)^(1/2))^(1/3) + (B - 1)/(B*((3*a)/(2*B) + ((9*a^2)/(4*B^2) - (B - 1)^3/B^3)^(1/2))^(1/3));
che altro non è che la soluzione reale dell'equazione di terzo grado sopra citata calcolata con matlab.
Problema: con questo secondo codice, l'array Ue mi viene sempre uguale. In particolare, ho fatto una prova memorizzando TUTTI i valori delle varie iterazioni rendendo k un array con k(index), e di nuovo anche lì mi viene che i valori sono tutti uguali. E non riesco a capire il perchè di questa cosa...
PS regalo uno smile a chi indovina che modello è :)
maurizio88x
18-01-2011, 17:42
salve a tutti :)
sono nuovo e ho disperato bisogno del vostro aiuto.
In matlab ho scritto un programma che legge dei dati da un file (.txt) per poi elaborarli. Il problema è che i dati nel file sono di tipo long con 16 cifre dopo la virgola (esempio 0.02463744916723528) ma quando sono importati in matlab diventano con solo 4 cifre dopo la virgola (es. 0.0246).:muro:
Come devo fare per mantere il formato originario???
Ho usato un pò tutti i comandi (load, fopen, fscanf, fread)...please aiutatemi è imporatante.
grazie in anticipo:)
Salve ragazzi vorrei dei consigli su come muovermi per realizzare questo preogetto in matlab magari se c'è qualche funzione più particolare da usare ecc.
La traccia dice questo:
Il file complementare traccia5 è composto da 1048576 campioni. La frequenza di campionamento è di 44,1KHz. Il file può essere ascoltato eseguendo il comando load traccia5 seguito da sound(y; Fs; bits).
Data la lunghezza e la frequenza di campionamento:
– quanti secondi della traccia sono stati registrati?;
– Calcolare la DFT del segnale e plottare lo spettro (in scala logaritmica);
– Si osserva una distinta diminuzione di energia ad una determinata frequenza?;
– Qual’è la banda effetiva del segnale? E’ stato sovracampionato?;
– Per far risaltare i toni bassi, amplificare le componenti a bassa frequenza del segnale corrispondenti
alle frequenze minori di 500Hz di un fattore 3. Determinare quali coefficienti della DFT
dovrebbero essere amplificati per ottenere questo risultato;
– Ascoltare la traccia ottenuta al passo precedente, plottare il suo spettro e confrontarlo con quello
originale;
– Se si costruisce un sistema DSP che processa blocchi di lunghezza 1048576 del segnale intero (e di quello elaborato utilizzando il metodo DFT di cui sopra) quale sarebbe il ritardo temporale dell’intero sistema?
Grazie mille
serbring
19-01-2011, 23:23
Salve ragazzi vorrei dei consigli su come muovermi per realizzare questo preogetto in matlab magari se c'è qualche funzione più particolare da usare ecc.
La traccia dice questo:
Il file complementare traccia5 è composto da 1048576 campioni. La frequenza di campionamento è di 44,1KHz. Il file può essere ascoltato eseguendo il comando load traccia5 seguito da sound(y; Fs; bits).
Data la lunghezza e la frequenza di campionamento:
– quanti secondi della traccia sono stati registrati?; num_campioni*f-1
– Calcolare la DFT del segnale e plottare lo spettro (in scala logaritmica); funzione fft
– Si osserva una distinta diminuzione di energia ad una determinata frequenza?;
– Qual’è la banda effetiva del segnale? E’ stato sovracampionato?; credo che dovresti calcolare la psd (funzione PSD) e calcolarne l'area (funzione trapz)
– Per far risaltare i toni bassi, amplificare le componenti a bassa frequenza del segnale corrispondenti
alle frequenze minori di 500Hz di un fattore 3. Determinare quali coefficienti della DFT
dovrebbero essere amplificati per ottenere questo risultato;
– Ascoltare la traccia ottenuta al passo precedente, plottare il suo spettro e confrontarlo con quello
originale;
– Se si costruisce un sistema DSP che processa blocchi di lunghezza 1048576 del segnale intero (e di quello elaborato utilizzando il metodo DFT di cui sopra) quale sarebbe il ritardo temporale dell’intero sistema?
Grazie mille
Per le altre cose, non saprei aiutarti, ma sono interessato alla cosa
Per le altre cose, non saprei aiutarti, ma sono interessato alla cosa
Grazie mille per la risposta, i passi più complessi sono dal terzo in poi, infatti è li che ho i maggiori dubbi!
Quindi se qualcuno con più esperienza di me ci può dare un aiuto gliene saremo grati!
Grazie mille ancora! :help:
serbring
14-02-2011, 08:13
Per chi fosse interessato, esiste una versione di matlab per IPhone..:)
http://www.mathworks.com/mobile/
serbring
02-03-2011, 21:49
Grazie mille per la risposta, i passi più complessi sono dal terzo in poi, infatti è li che ho i maggiori dubbi!
Quindi se qualcuno con più esperienza di me ci può dare un aiuto gliene saremo grati!
Grazie mille ancora! :help:
com'è andata?
Ciao a tutti
mi hanno indirizzato in questo thread per la soluzione di quesiti su Matlab.
Volevo chiedere se c'è la possibilità di collegare due punti A e B con una linea che non sia retta, ma con una curva da caratteristiche casuali.
Mi hanno detto che non si può fare se non si hanno almeno 3 punti..ma non è la soluzione che cerco.
Non c'è ad esempio la possibilità di creare un arco di circonferenza passante tra due punti?
Grazie
salve a tutti :)
sono nuovo e ho disperato bisogno del vostro aiuto.
In matlab ho scritto un programma che legge dei dati da un file (.txt) per poi elaborarli. Il problema è che i dati nel file sono di tipo long con 16 cifre dopo la virgola (esempio 0.02463744916723528) ma quando sono importati in matlab diventano con solo 4 cifre dopo la virgola (es. 0.0246).:muro:
Come devo fare per mantere il formato originario???
Ho usato un pò tutti i comandi (load, fopen, fscanf, fread)...please aiutatemi è imporatante.
grazie in anticipo:)
prova a dare il comando
format long
ShadowMan
01-07-2011, 15:31
Posso chiedere di programmazione in ampl qui? :confused:
serbring
08-07-2011, 12:49
Ciao a tutti
mi hanno indirizzato in questo thread per la soluzione di quesiti su Matlab.
Volevo chiedere se c'è la possibilità di collegare due punti A e B con una linea che non sia retta, ma con una curva da caratteristiche casuali.
Mi hanno detto che non si può fare se non si hanno almeno 3 punti..ma non è la soluzione che cerco.
Non c'è ad esempio la possibilità di creare un arco di circonferenza passante tra due punti?
Grazie
per una circonferenza hai bisogno dell'angolo dell'arco e pertanto la soluzione non è univoca
per una circonferenza hai bisogno dell'angolo dell'arco e pertanto la soluzione non è univoca
cosa intendi? io non ho bisogno di soluzioni univoche. Ho coppie di punti che mi piacerbbe collegare con linee non rette. esiste qualche funzione matlab che permetta di farlo?
grazie
serbring
09-07-2011, 10:00
cosa intendi? io non ho bisogno di soluzioni univoche. Ho coppie di punti che mi piacerbbe collegare con linee non rette. esiste qualche funzione matlab che permetta di farlo?
grazie
certo che puoi, ma se ad esempio lo volessi fare con una circonferenza hai bisogno di conoscere l'angolo sotteso all'arco che lo collega, perchè ci sono infinite circonferenze che colegano due punti
daniele87
31-08-2011, 10:42
ciao a tutti! qualcuno qui si intende di ansys/fluent?:)
serbring
04-09-2011, 08:38
ciao a tutti! qualcuno qui si intende di ansys/fluent?:)
prova a porre la domanda, magari qualche suggerimento arriverà...ho un po' di esperienza di sw agli elementi finiti ed avevo anche usato fluent 3 anni fà.
daniele87
04-09-2011, 10:35
prova a porre la domanda, magari qualche suggerimento arriverà...ho un po' di esperienza di sw agli elementi finiti ed avevo anche usato fluent 3 anni fà.
Grazie :)
Partiamo dal presupposto che di fluent non so nulla, devo solo scoprire se è in grado o meno di simulare una cosa (e se si di farlo, ma quello sarà un problema successivo di quando inizierò a studiarmi davvero i manuali :stordita: ), ma dopo aver sfogliato le 2500 pagine di manuale pdf del software non sono riuscito a capire.
Abbiamo due lastre piane parallele di dimensione finita chiuse ai bordi in modo da formare un tubo largo e sottile, diviso in due da una membrana permeabile all'ossigeno.
Nel lato liquido passa questa portata pulsatile di liquido di cui conosco la forma d'onda.
Nel lato ossigeno idem, portata pulsatile di O2 di cui conosco la forma d'onda.
---------------------------------
ossigeno
---------------------------------membrana permeabile all'ossigeno
liquido
----------------------------------
E' possibile modellizzare lo scambio di massa (ossigeno)? (distribuzione della concentrazione di ossigeno, scambio totale etc)
grazie:)
serbring
04-09-2011, 10:59
Grazie :)
Partiamo dal presupposto che di fluent non so nulla, devo solo scoprire se è in grado o meno di simulare una cosa (e se si di farlo, ma quello sarà un problema successivo di quando inizierò a studiarmi davvero i manuali :stordita: ), ma dopo aver sfogliato le 2500 pagine di manuale pdf del software non sono riuscito a capire.
Abbiamo due lastre piane parallele di dimensione finita chiuse ai bordi in modo da formare un tubo largo e sottile, diviso in due da una membrana permeabile all'ossigeno.
Nel lato liquido passa questa portata pulsatile di liquido di cui conosco la forma d'onda.
Nel lato ossigeno idem, portata pulsatile di O2 di cui conosco la forma d'onda.
---------------------------------
ossigeno
---------------------------------membrana permeabile all'ossigeno
liquido
----------------------------------
E' possibile modellizzare lo scambio di massa (ossigeno)? (distribuzione della concentrazione di ossigeno, scambio totale etc)
grazie:)
non saprei...non sembra un problema facile..siccome fluent è il miglior CFD ti consiglierei di farti dei tutorial di fluent così da capire che cosa può fare. A volte questi sw non hanno implementato direttamente certe funzionalità, ma in qualche modo te le puoi creare usandone delle altre. Fancedoti dei tutorial potresti avere delle risposte...
Questo ti potrebbe essere utile?
http://my.fit.edu/itresources/manuals/fluent6.3/help/html/ug/node917.htm
jacopetto
16-05-2012, 11:48
Salve a tutti. Avrei bisogno di un aiuto in MatLab. Premetto che non sono affatto esperto, ho appena iniziato ad usarlo.
Allora. Io ho una equazione differenziale del secondo ordine, dipendente da un parametro F:
z'' = -3.5520*z - 0.1184*z' + 4e-06*F.
L'equazione la posso risolvere tranquillamente con il comando dsolve, ma ovviamente nella soluzione mi rimane sempre il parametro F.
Avrei bisogno di creare una nuova funzione test.m, che prende come input un singolo valore, e lo va a sostituire al suddetto parametro e risolve l'equazione differenziale.
Ad es, test(2) mi deve risolvere l'equazione differenziale in oggetto con il valore F=2.
Leggendo un po' di guide e libri su matlab, ho iniziato a cercare di capire come funzionano gli m-files, e questo è quello che avevo provato a scrivere, anche leggendo gli help di MatLab:
function [ z ] = test( F )
z = dsolve('D2z = -3.5520*z - 0.1184*Dz + 4e-06*F');
end
Ma non funziona. La F nella prima linea di codice è evidenziata, e mi dice "input argument F might be unused".
E infatti se uso questa funzione, indipendentemente dal valore che metto in ingresso a test, l'equazione differenziale viene risolta sempre dipendente da F.
Dove è che sbaglio? Cosa manca? Come faccio a fargli capire che quella F in input è la stessa che deve usare in dsolve?
serbring
16-05-2012, 17:29
scusami se sono sbrigativo, non ho molto tempo. Io avevo trovato la soluzione in questo (http://www.mathkb.com/Uwe/Forum.aspx/matlab/96076/use-of-anonymous-functions-in-conjunction-with-ode-suite-and-eval) link. In caso non riesci a capire, scrivi che ti faccio un esempio :)
jacopetto
16-05-2012, 19:52
Sinceramente non è che ci abbia capito molto...
Ma poi da quello che leggo lì usano i solver ode...Avevo provato a leggerli ma non l'ho capiti molto...
serbring
16-05-2012, 19:58
Sinceramente non è che ci abbia capito molto...
Ma poi da quello che leggo lì usano i solver ode...Avevo provato a leggerli ma non l'ho capiti molto...
Puoi usare i solver ode, in ogni modo il modo è lo stesso per il solver dsolve. Cmq dopo options devi passare la tua F
jacopetto
16-05-2012, 20:29
Puoi usare i solver ode, in ogni modo il modo è lo stesso per il solver dsolve. Cmq dopo options devi passare la tua F
Sì, ma il fatto è che proprio non ho capito la procedura...
serbring
17-05-2012, 08:36
Sì, ma il fatto è che proprio non ho capito la procedura...
allora fai così
function [ z ] = test( F )
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*' num2str(F)'];
z = dsolve(eq);
end
jacopetto
17-05-2012, 09:58
allora fai così
function [ z ] = test( F )
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*' num2str(F)'];
z = dsolve(eq);
end
Sicuro che la sintassi è corretta? Mi sembra ci sia un apice di troppo, e dopo il * non c'è nulla...
EDIT: ho fatto delle prove con altre semplici equazioni, e sembra funzionare. L'unica cosa è che la sintassi corretta dovrebbe essere questa:
function [ z ] = test( F )
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*', num2str(F)];
z = dsolve(eq);
end
Grazie mille!!!
EDIT2: stavo leggendo l'help sulla funzione num2str, ma non capisco come "funziona" nel mio caso. Come fa a capire che 4e-06 è moltiplicato per F? Vorrei capire come funziona, piuttosto che semplicemente avere la pappa pronta... ;)
serbring
17-05-2012, 12:08
Sicuro che la sintassi è corretta? Mi sembra ci sia un apice di troppo, e dopo il * non c'è nulla...
EDIT: ho fatto delle prove con altre semplici equazioni, e sembra funzionare. L'unica cosa è che la sintassi corretta dovrebbe essere questa:
function [ z ] = test( F )
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*', num2str(F)];
z = dsolve(eq);
end
Grazie mille!!!
EDIT2: stavo leggendo l'help sulla funzione num2str, ma non capisco come "funziona" nel mio caso. Come fa a capire che 4e-06 è moltiplicato per F? Vorrei capire come funziona, piuttosto che semplicemente avere la pappa pronta... ;)
hai ragione sulla sintassi...
cmq lo scopo è generare una stringa che dsolve converte come equazione differenziale. num2str converte brutalmente una cifra numerica in una stringa
jacopetto
17-05-2012, 12:37
hai ragione sulla sintassi...
cmq lo scopo è generare una stringa che dsolve converte come equazione differenziale. num2str converte brutalmente una cifra numerica in una stringa
Perfetto.
Quello che però non riesco a capire è come mai funziona anche se nell'equazione differenziale in realtà non è specificata la F. Se ho capito come funziona la sintassi di matlab, l'equazione differenziale finisce dopo il secondo apice, quindi il parametro F non compare nell'equazione.
Mi spiego meglio con un esempio. Se il parametro F fosse stato da un'altra parte, diciamo ad esempio come coefficiente della derivata prima, quale sarebbe stata la sintassi corretta?
Sto cercando di capire perché dovrei fare la stessa cosa con un'altra equazione, che stavolta però ha due parametri...
jacopetto
17-05-2012, 13:39
Già che ci sono aggiungo un'altra domanda. Nella equazione di prima, dovrei aggiungere pure le condizioni iniziali, in modo da ottenere una soluzione numerica, senza le costanti di integrazione.
Mi servono due condizioni da aggiungere al dsolve. La prima è z(0)=0, e fin qui tutto ok. La seconda dovrebbe essere che quando F=0, allora z=0. Il problema è che non so come scriverla...
serbring
17-05-2012, 14:09
Perfetto.
Quello che però non riesco a capire è come mai funziona anche se nell'equazione differenziale in realtà non è specificata la F. Se ho capito come funziona la sintassi di matlab, l'equazione differenziale finisce dopo il secondo apice, quindi il parametro F non compare nell'equazione.
Mi spiego meglio con un esempio. Se il parametro F fosse stato da un'altra parte, diciamo ad esempio come coefficiente della derivata prima, quale sarebbe stata la sintassi corretta?
Sto cercando di capire perché dovrei fare la stessa cosa con un'altra equazione, che stavolta però ha due parametri...
['a' num2str(1)] è una semplice concatenazione di stringhe :)
serbring
17-05-2012, 14:27
Già che ci sono aggiungo un'altra domanda. Nella equazione di prima, dovrei aggiungere pure le condizioni iniziali, in modo da ottenere una soluzione numerica, senza le costanti di integrazione.
Mi servono due condizioni da aggiungere al dsolve. La prima è z(0)=0, e fin qui tutto ok. La seconda dovrebbe essere che quando F=0, allora z=0. Il problema è che non so come scriverla...
allora devi scrivere una cosa del tipo:
function [ z ] = test( F )
if F==0
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*', num2str(F),z(0)=0];
else
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*', num2str(F),z(0)=1];
end
z = dsolve(eq);
end
jacopetto
17-05-2012, 14:42
['a' num2str(1)] è una semplice concatenazione di stringhe :)
Mmhh, ok.
allora devi scrivere una cosa del tipo:
function [ z ] = test( F )
if F==0
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*', num2str(F),z(0)=0];
else
eq=['D2z = -3.5520*z - 0.1184*Dz + 4e-06*', num2str(F),z(0)=1];
end
z = dsolve(eq);
end
Infatti immaginavo che avrei potuto usare l'if, ma non ero sicuro di come fare.
Però aspetta, non capisco bene perché cambi la condizione nell'else.
La condizione z(0)=0 c'è sempre. Perché la cambi quando F è diverso da 1?
Forse non mi sono spiegato bene, o molto più probabile non ho capito.
Nel dubbio, rispiego ;)
Allora, l'eq è di secondo ordine, quindi mi servono due condizioni. La prima è z(0)=0, e la seconda è che quando il parametro F=0, allora z=0. Il mio problema è che non sapevo come esprimerla in maniera "classica", dato che non è una condizione relativa alla variabile indipendente, ma al parametro.
Poi in realtà potrei aggirare il problema semplicemente lasciando una sola condizione, applicando la funzione test(0), e poi "a mano" trovare la costante di integrazione ponendo z=0.
Ma se posso semplificare, ben venga. D'altronde è anche a questo che servono gli m-files. :)
Anche perché lo scopo finale è di creare uno script per risolvere tipo un sistema di 9 equazioni differenziali, pieno di parametri. :D
EDIT: Stavo pensando che in realtà sono un idiota. Invece di complicarmi la vita, mi sono rimesso a ri-ragionare sull'equazione per vedere se mi era sfuggito qualcosa, e sì, mi era sfuggito. Molto semplicemente la seconda condizione è Dz(0)=0...
serbring
17-05-2012, 15:55
Mmhh, ok.
Infatti immaginavo che avrei potuto usare l'if, ma non ero sicuro di come fare.
Però aspetta, non capisco bene perché cambi la condizione nell'else.
La condizione z(0)=0 c'è sempre. Perché la cambi quando F è diverso da 1?
Forse non mi sono spiegato bene, o molto più probabile non ho capito.
Nel dubbio, rispiego ;)
Allora, l'eq è di secondo ordine, quindi mi servono due condizioni. La prima è z(0)=0, e la seconda è che quando il parametro F=0, allora z=0. Il mio problema è che non sapevo come esprimerla in maniera "classica", dato che non è una condizione relativa alla variabile indipendente, ma al parametro.
Poi in realtà potrei aggirare il problema semplicemente lasciando una sola condizione, applicando la funzione test(0), e poi "a mano" trovare la costante di integrazione ponendo z=0.
Ma se posso semplificare, ben venga. D'altronde è anche a questo che servono gli m-files. :)
Anche perché lo scopo finale è di creare uno script per risolvere tipo un sistema di 9 equazioni differenziali, pieno di parametri. :D
EDIT: Stavo pensando che in realtà sono un idiota. Invece di complicarmi la vita, mi sono rimesso a ri-ragionare sull'equazione per vedere se mi era sfuggito qualcosa, e sì, mi era sfuggito. Molto semplicemente la seconda condizione è Dz(0)=0...
scusami ma non ho capito molto qual'è il tuo dubbio..
jacopetto
17-05-2012, 15:58
scusami ma non ho capito molto qual'è il tuo dubbio..
Non avevo capito da dove salta fuori la condizione z(0)=1 nell'else...
serbring
17-05-2012, 16:38
Non avevo capito da dove salta fuori la condizione z(0)=1 nell'else...
l'ho messa per farti vedere come potevi fare a cambiare la condizione iniziale al variare del valore di F visto che non ho capito qual'è il tuo dubbio :)
jacopetto
17-05-2012, 17:04
l'ho messa per farti vedere come potevi fare a cambiare la condizione iniziale al variare del valore di F visto che non ho capito qual'è il tuo dubbio :)
Vabbè, tanto ho risolto diversamente. :)
Mi permetto di continuare a fare domande.
Ho provato a creare un'altra funzione, che prende in ingresso due input e restituisce due output.
Questa funzione risolve una equazione differenziale, e una equazione lineare, entrambe dipendenti dai parametri di input.
Le due equazioni sono:
x'=(1/50)*((A/B)-x)
y=B*x
dove A e B sono i parametri.
Seguendo quanto ho capito dall'esempio precedente, questa è la funzione che ho creato (cambiano i nomi di variabili e parametri, ma è quella):
function [ Tg , Pe ] = generator( wg , Pref )
eq = ['DTg = (1/50)*((',num2str(Pref),'/',num2str(wg),')-(Tg))'];
Tg = dsolve(eq, 'Tg(0)=0');
Pe = wg*Tg;
end
Se come mi hai detto num2str non fa altro che concatenare stringhe, la sintassi in quell'equazione dovrebbe essere più o meno corretta.
E infatti non mi da' nessun errore.
L'unico problema è che quando applico la funzione, mi restituisce lo stesso risultato per entrambe le variabili. In pratica ignora completamente l'ultimo comando, Pe = wg*Tg;.
Dove sbaglio?
P.S.: infinite grazie per il supporto! =D
serbring
17-05-2012, 18:38
Vabbè, tanto ho risolto diversamente. :)
Mi permetto di continuare a fare domande.
Ho provato a creare un'altra funzione, che prende in ingresso due input e restituisce due output.
Questa funzione risolve una equazione differenziale, e una equazione lineare, entrambe dipendenti dai parametri di input.
Le due equazioni sono:
x'=(1/50)*((A/B)-x)
y=B*x
dove A e B sono i parametri.
Seguendo quanto ho capito dall'esempio precedente, questa è la funzione che ho creato (cambiano i nomi di variabili e parametri, ma è quella):
function [ Tg , Pe ] = generator( wg , Pref )
eq = ['DTg = (1/50)*((',num2str(Pref),'/',num2str(wg),')-(Tg))'];
Tg = dsolve(eq, 'Tg(0)=0');
Pe = wg*Tg;
end
Se come mi hai detto num2str non fa altro che concatenare stringhe, la sintassi in quell'equazione dovrebbe essere più o meno corretta.
E infatti non mi da' nessun errore.
L'unico problema è che quando applico la funzione, mi restituisce lo stesso risultato per entrambe le variabili. In pratica ignora completamente l'ultimo comando, Pe = wg*Tg;.
Dove sbaglio?
P.S.: infinite grazie per il supporto! =D
l'operatore [] concatena stringe num2str converte un num in stringa.
La condizione iniziale non deve essere passata come stringa...quindi devi togliere gli apici Tg(0)=0
jacopetto
17-05-2012, 19:02
l'operatore [] concatena stringe num2str converte un num in stringa.
La condizione iniziale non deve essere passata come stringa...quindi devi togliere gli apici Tg(0)=0
Niente, problema rientrato. Sono un deficiente io. Ho sbagliato, funziona tutto.
Comunque, giusto per chiarezza, gli apici ci vogliono nella dichiarazione delle condizioni. La sintassi corretta è quella che ho usato.
Grazie ancora per l'aiuto!!
Ora c'è qualcos altro che dovrei fare con matlab, ma prima ci provo da solo. In caso ripasso qui. ;)
Intanto grazie infinitamente!
P.S.:comunque, giusto per la cronaca, quelle sono alcune delle equazioni che descrivono i sottosistemi di una turbina eolica, che sto cercando di scrivere in matlab. ;)
serbring
17-05-2012, 19:23
Niente, problema rientrato. Sono un deficiente io. Ho sbagliato, funziona tutto.
Comunque, giusto per chiarezza, gli apici ci vogliono nella dichiarazione delle condizioni. La sintassi corretta è quella che ho usato.
Grazie ancora per l'aiuto!!
Ora c'è qualcos altro che dovrei fare con matlab, ma prima ci provo da solo. In caso ripasso qui. ;)
Intanto grazie infinitamente!
P.S.:comunque, giusto per la cronaca, quelle sono alcune delle equazioni che descrivono i sottosistemi di una turbina eolica, che sto cercando di scrivere in matlab. ;)
mi fà piacere che ti ho aiutato. In caso di dubbio chiedi pure...fà sempre comodo aiutare qualcuno, ad esempio ho scoperto la funzione dsolve :)
jacopetto
23-05-2012, 12:15
Ho un altro dubbio con matlab. Che in realtà è un dubbio di pura matematica, però mi serve per matlab...
Sto cercando di far risolvere a matlab un sistema di 3 equazioni differenziali tramite questa funzione da me creata:
function [ x y z ] = drivetrain( Ta , Tg )
eq1 = ['Dx = (-0.0286)*x + 3.2454e-04*y + (-19.8851)*z + ', num2str(Ta)];
eq2 = ['Dy = 18.8235*x + (-0.2671)*y + 1.3569e+04*z - ', num2str(Tg)];
eq3 = ('Dz = x - 0.0118*y');
[x y z] = dsolve(eq1, eq2, eq3, 'x(0)=0', 'y(0)=0', 'z(0)=0');
x = matlabFunction(x);
y = matlabFunction(y);
z = matlabFunction(z);
end
Dato che però sono 3 ore che sta calcolando, senza ancora nessun risultato, nonostante il pc abbia 16 giga di ram, mi domandavo se fosse possibile scomporre il sistema in più sistemi...
Si può fare in matematica? Mica mi ricordo...:oink:
serbring
23-05-2012, 12:28
Ho un altro dubbio con matlab. Che in realtà è un dubbio di pura matematica, però mi serve per matlab...
Sto cercando di far risolvere a matlab un sistema di 3 equazioni differenziali tramite questa funzione da me creata:
function [ x y z ] = drivetrain( Ta , Tg )
eq1 = ['Dx = (-0.0286)*x + 3.2454e-04*y + (-19.8851)*z + ', num2str(Ta)];
eq2 = ['Dy = 18.8235*x + (-0.2671)*y + 1.3569e+04*z - ', num2str(Tg)];
eq3 = ('Dz = x - 0.0118*y');
[x y z] = dsolve(eq1, eq2, eq3, 'x(0)=0', 'y(0)=0', 'z(0)=0');
x = matlabFunction(x);
y = matlabFunction(y);
z = matlabFunction(z);
end
Dato che però sono 3 ore che sta calcolando, senza ancora nessun risultato, nonostante il pc abbia 16 giga di ram, mi domandavo se fosse possibile scomporre il sistema in più sistemi...
Si può fare in matematica? Mica mi ricordo...:oink:
sei sicuro per certo che il sistema abbia una soluzione? Quello che puoi fare è usare uno dei solutori ode visto che dsolve solve l'equazione in modo simbolico
serbring
23-05-2012, 12:39
nel caso tu abbia bisogno di una soluzione analitica, allora può essere che ci mette molto tempo. Ti consiglio di provare ad usare Maple che è nettamente superiore a matlab per i calcoli simbolici
jacopetto
23-05-2012, 12:40
Sì, il sistema ha una soluzione. E non posso usare i solutori ode; non ho un intervallo di integrazione, e non mi serve la soluzione numerica. Devo trovare le tre equazioni, che poi devo graficare (ecco il perché del matlabFunction).
EDIT: devo usare matlab, dato che si tratta della mia tesi, e sto lavorando con matlab...
Certo che caspita... se ci mette tutto sto tempo per 3 equazioni, non oso immaginare cosa succede quando assemblo tutto il codice, che diventerà un sistema di 9 equazioni...
serbring
23-05-2012, 13:03
Sì, il sistema ha una soluzione. E non posso usare i solutori ode; non ho un intervallo di integrazione, e non mi serve la soluzione numerica. Devo trovare le tre equazioni, che poi devo graficare (ecco il perché del matlabFunction).
EDIT: devo usare matlab, dato che si tratta della mia tesi, e sto lavorando con matlab...
Certo che caspita... se ci mette tutto sto tempo per 3 equazioni, non oso immaginare cosa succede quando assemblo tutto il codice, che diventerà un sistema di 9 equazioni...
se la risolvi numericamente riesci a plottare l'andamento della soluzione in quanto la soluzione è una serie di punti. Estremi di integrazione?
jacopetto
23-05-2012, 13:08
se la risolvi numericamente riesci a plottare l'andamento della soluzione in quanto la soluzione è una serie di punti. Estremi di integrazione?
Mmhh... In realtà non ho un intervallo di integrazione... Dunque, la variabile indipendente è il tempo, quindi in teoria sarebbe da 0 a infinito, dato che devo valutare come si comportano quelle grandezze nel tempo...
Come si usano i solutori ode? Avevo iniziato a leggere l'help, ma qualcosa non mi era chiaro....
serbring
23-05-2012, 13:17
Mmhh... In realtà non ho un intervallo di integrazione... Dunque, la variabile indipendente è il tempo, quindi in teoria sarebbe da 0 a infinito, dato che devo valutare come si comportano quelle grandezze nel tempo...
Come si usano i solutori ode? Avevo iniziato a leggere l'help, ma qualcosa non mi era chiaro....
Se non ti serve un comportamento asintotico usa i solutori ODE. Per come utilizzarli vai sulla guida di matlab ci sono degli esempi fantastici. Se hai qualche dubbio fammi vedere l'esempio specifdico
jacopetto
23-05-2012, 14:24
Ok, credo più o meno di aver capito come funzionano gli ode.
Però mi viene un dubbio...
Le mie equazioni differenziali sono parametriche... Il sistema è:
Dx = (-0.0286)*x + 3.2454e-04*y + (-19.8851)*z + H
Dy = 18.8235*x + (-0.2671)*y + 1.3569e+04*z - K
Dz = x - 0.0118*y
E io dovrei essere in grado di creare una funzione che prende come input H e K, e restituisce x,y,z.
Come faccio con i parametri?
serbring
23-05-2012, 14:59
Ok, credo più o meno di aver capito come funzionano gli ode.
Però mi viene un dubbio...
Le mie equazioni differenziali sono parametriche... Il sistema è:
Dx = (-0.0286)*x + 3.2454e-04*y + (-19.8851)*z + H
Dy = 18.8235*x + (-0.2671)*y + 1.3569e+04*z - K
Dz = x - 0.0118*y
E io dovrei essere in grado di creare una funzione che prende come input H e K, e restituisce x,y,z.
si
Come faccio con i parametri?
cioè?
jacopetto
23-05-2012, 15:14
Allora, ragionando un pochino, e usando per il momento un semplice sistema di sole due equazioni, questo è quello che ho cavato:
function [ a b ] = Untitled3( Ta,Tg )
function [ dy ] = system2( t,y )
A = [-1,-4; 1,-3];
dy = A*y + [Ta ; Tg];
end
[t,a,b]=ode45(@system2,[0,5],[1,1]);
end
E sembrerebbe funzionare. L'unica cosa è che il risultato è sotto forma di vettore. A me invece servirebbe che l'output siano le due colonne in due variabili separate. Come faccio?
Ma prima di tutto, è corretto il codice che ho scritto?
EDIT 2: Ho ragionato, fatto prove, e questo è il codice modificato. Sembra funzionare... Ora l'output della funzione sono le due colonne in due variabili separate. Wow, sono fiero di me stesso. :D
function [ b,c ] = Untitled3( Ta,Tg )
%UNTITLED3 Summary of this function goes here
% Detailed explanation goes here
function [ dy ] = system2( t,y )
A = [-1,-4; 1,-3];
dy = A*y + [Ta ; Tg];
end
[t,a]=ode45(@system2,[0,5],[1,1]);
b = a;
c = a;
b(:,2)=[];
c(:,1)=[];
end
jacopetto
23-05-2012, 18:32
E mi stavo domandando...
Posso integrare tra 0 e infinito con gli ode? O Matlab diventa pazzo?
serbring
23-05-2012, 19:21
E mi stavo domandando...
Posso integrare tra 0 e infinito con gli ode? O Matlab diventa pazzo?
certo che no. A che ti serve integrare fino all'infinito? Devi valutare il comportamento asintotico? In alternativa usa maxima per risolvere il sistema di equazioni in modo simbolico
jacopetto
23-05-2012, 21:08
certo che no. A che ti serve integrare fino all'infinito? Devi valutare il comportamento asintotico? In alternativa usa maxima per risolvere il sistema di equazioni in modo simbolico
Sì, in effetti c'hai ragione...
Il fatto è che il grafico che ottengo dalla soluzione numerica non è molto preciso. Anzi, in alcuni casi è parecchio sballato. Questo è il grafico di una stessa equazione differenziale del secondo ordine calcolata prima analiticamente, poi numericamente:
http://img843.imageshack.us/img843/4136/graph1w.png (http://imageshack.us/photo/my-images/843/graph1w.png/)http://img401.imageshack.us/img401/4083/graph2g.png (http://imageshack.us/photo/my-images/401/graph2g.png/)
Come si vede, c'è una differenza abissale. Se è così, non mi è utile la risoluzione numerica...
serbring
23-05-2012, 22:29
Sì, in effetti c'hai ragione...
Il fatto è che il grafico che ottengo dalla soluzione numerica non è molto preciso. Anzi, in alcuni casi è parecchio sballato. Questo è il grafico di una stessa equazione differenziale del secondo ordine calcolata prima analiticamente, poi numericamente:
http://img843.imageshack.us/img843/4136/graph1w.png (http://imageshack.us/photo/my-images/843/graph1w.png/)http://img401.imageshack.us/img401/4083/graph2g.png (http://imageshack.us/photo/my-images/401/graph2g.png/)
Come si vede, c'è una differenza abissale. Se è così, non mi è utile la risoluzione numerica...
considerando che dal punto di vista pratico ben poche cose vengono risolte analiticamente, sicuramente c'è stato un errore nell'implementazione. Magari hai sbagliato il solutore o lo step size. A giudicare dall'equazione, i coefficienti essendo fortemente squilibrati in termini di valori, alcuni sono vicini all'unità, altri sono vicini al milione. In molti casi come questo il
sistema è detto stiff. Quindi devi provare ad usare un solutore idoneo. Quale comando ode hai usato? Ti consiglio di leggere le sezioni 10,11 e 12 di questo link http://www.mathworks.it/support/tech-notes/1500/1510.html#stiff
jacopetto
23-05-2012, 22:57
considerando che dal punto di vista pratico ben poche cose vengono risolte analiticamente, sicuramente c'è stato un errore nell'implementazione. Magari hai sbagliato il solutore o lo step size. A giudicare dall'equazione, i coefficienti essendo fortemente squilibrati in termini di valori, alcuni sono vicini all'unità, altri sono vicini al milione. In molti casi come questo il
sistema è detto stiff. Quindi devi provare ad usare un solutore idoneo. Quale comando ode hai usato? Ti consiglio di leggere le sezioni 10,11 e 12 di questo link http://www.mathworks.it/support/tech-notes/1500/1510.html#stiff
Ho letto l'help, e le caratteristiche dei vari solutori. In realtà però non ho capito cosa sia un problema stiff... Ho provato con tutti i solutori, e il risultato è sempre più o meno quello. Questo è quello che si avvicina di più alla sinusoide smorzata che dovrebbe essere (l'equazione descrive infatti un oscillamento smorzato).
Comunque posto anche i codici. L'equazione in oggetto è
250E03*z''=-8.88E05*z-296E02*z'+F
Questo è il codice della soluzione analitica:
function [ z ] = tower( F )
%Calculates the tower bending taking as input the thrust force F
eq = ['D2z = (-8.88e5/250e3)*z + (-296e2/250e3)*Dz + (1/250e3)*' num2str(F)];
z = dsolve(eq,'z(0)=0','Dz(0)=0');
z = matlabFunction(z);
end
Mentre questo è il codice per la soluzione numerica:
function [ z ] = tower2( F )
%TOWER2 Calculates the tower bending taking as input the thrust force F
%(numerical solution)
function [ dy ] = twoeq( t,y )
A = [0,1;(-8.88e5/250e3),(-296e2/250e3)];
dy = A*y + [0;(1/250e3)*F];
end
[t,a]=ode45(@twoeq,[0,100],[0,0]);
z = a(:,2);
end
La curva va bene, perché è una sinusoide smorzata, il problema è che lo smorzamento è molto più lento, di più o meno un ordine di grandezza...
serbring
23-05-2012, 23:12
Ho letto l'help, e le caratteristiche dei vari solutori. In realtà però non ho capito cosa sia un problema stiff... Ho provato con tutti i solutori, e il risultato è sempre più o meno quello. Questo è quello che si avvicina di più alla sinusoide smorzata che dovrebbe essere (l'equazione descrive infatti un oscillamento smorzato).
Comunque posto anche i codici. Questo è quello della soluzione analitica:
function [ z ] = tower( F )
%Calculates the tower bending taking as input the thrust force F
eq = ['D2z = (-8.88e5/250e3)*z + (-296e2/250e3)*Dz + (1/250e3)*' num2str(F)];
z = dsolve(eq,'z(0)=0','Dz(0)=0');
z = matlabFunction(z);
end
Mentre questo è il codice per la soluzione numerica:
function [ z ] = tower2( F )
%TOWER2 Calculates the tower bending taking as input the thrust force F
%(numerical solution)
function [ dy ] = twoeq( t,y )
A = [0,1;(-8.88e5/250e3),(-296e2/250e3)];
dy = A*y + [0;(1/250e3)*F];
end
[t,a]=ode45(@twoeq,[0,100],[0,0]);
z = a(:,2);
end
La curva va bene, perché è una sinusoide smorzata, il problema è che lo smorzamento è molto più lento, di più o meno un ordine di grandezza...
non sono un grande esperto di queste cose. Cmq ode45 non è un solutore per problemi stiff. Un'equazione diff stiff è un'equazione che cambiando di poco i valori iniziali i risultati sono notevolmente diversi. Cmq potresti provare ad adimensionalizzare i coefficienti dividendoli per -8.88e5/250e3 e moltiplicando la y per -8.88e5/250e3. Non ne sono certo ma potrebbe aiutare
jacopetto
23-05-2012, 23:28
non sono un grande esperto di queste cose. Cmq ode45 non è un solutore per problemi stiff. Un'equazione diff stiff è un'equazione che cambiando di poco i valori iniziali i risultati sono notevolmente diversi. Cmq potresti provare ad adimensionalizzare i coefficienti dividendoli per -8.88e5/250e3 e moltiplicando la y per -8.88e5/250e3. Non ne sono certo ma potrebbe aiutare
Mah...Se ho capito bene, non credo cambi molto...
Intendi dire di divere per -8.88e5/250e3 la matrice A? Per quale motivo potrebbe aiutare?
serbring
23-05-2012, 23:35
Mah...Se ho capito bene, non credo cambi molto...
Intendi dire di divere per -8.88e5/250e3 la matrice A? Per quale motivo potrebbe aiutare?
come ti ho detto nn sono un grande esperto. Cmq potrebbe aiutare perchè se
hai un'equazione diff del tipo
10^6y''+y'+10^-6*y=c
un certo dt crea una differenza grande nel termine y'' e piccola nel termine y. Adimensionalizzando i coefficienti riduci questo effetto.
jacopetto
23-05-2012, 23:39
come ti ho detto nn sono un grande esperto. Cmq potrebbe aiutare perchè se
hai un'equazione diff del tipo
10^6y''+y'+10^-6*y=c
un certo dt crea una differenza grande nel termine y'' e piccola nel termine y. Adimensionalizzando i coefficienti riduci questo effetto.
Quindi rendendo unitario il coefficiente del termine di ordine maggiore dovrebbe ridurre tale differenza, se non ho capito male...
EDIT: comunque no, non aiuta per niente.
Ma come è possibile che la differenza sia così tanta? C'è esattamente un ordine di grandezza di differenzatra la soluzione analitica e quella numerica...Ho sbagliato io?
serbring
24-05-2012, 07:56
Quindi rendendo unitario il coefficiente del termine di ordine maggiore dovrebbe ridurre tale differenza, se non ho capito male...
EDIT: comunque no, non aiuta per niente.
Ma come è possibile che la differenza sia così tanta? C'è esattamente un ordine di grandezza di differenzatra la soluzione analitica e quella numerica...Ho sbagliato io?
Sicuramente hai sbagliato te, in ambito ingegneristico si usa la soluzione numerica per quasi tutti problemi. Prova a prensare hai sw fem o multibody. Cmq hai letto quello che ti ho segnalato? L'hai applicato? Prova ad esempio il solore ode15s
jacopetto
24-05-2012, 08:50
Sicuramente hai sbagliato te, in ambito ingegneristico si usa la soluzione numerica per quasi tutti problemi. Prova a prensare hai sw fem o multibody. Cmq hai letto quello che ti ho segnalato? L'hai applicato? Prova ad esempio il solore ode15s
Ho letto un po', ma non è che abbia capito molto, sinceramente...
Ho usato tutti i solutori, ma il risultato è sempre quello...
serbring
24-05-2012, 09:12
Ho letto un po', ma non è che abbia capito molto, sinceramente...
Ho usato tutti i solutori, ma il risultato è sempre quello...
non sono un esperto, ma secondo me il problema è stiff quindi cerca qualche soluzione su quell'argomento, magari facendo degli esempi semplici che ti dicono come gestire eq di tipo stiff. Oppure risolvi tutto simbolicamente con maple
serbring
24-05-2012, 09:36
sicuramente troverai un esempio per risolvere un equazione del genere di tipo stiff, cerca in internet.
Questo è un link interessante
https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/14IVPs/stiff/complete.html
Raghnar-The coWolf-
17-09-2012, 17:13
sto cercando un software, possibilmente linux compatibile, abbastanza versatile che permetta di costruire dei grafici belli e consistenti.
gnuplot non mi pare abbastanza bello, xmgrace lo trovo un po' incasinato e non ci siamo con la versatilità.
Avete qualche idea?
Software per Chimica
MDynaMix = Molecular Dynamics of Mixtures
Licenza GPL (http://it.wikipedia.org/wiki/GNU_General_Public_License)
http://people.su.se/~lyuba/mdynamix/
Ciao ;)
dario fgx
16-04-2013, 20:13
ciao ragazzi, c'è qualcuno che può aiutarmi con comsol?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.