Ecco qui una comparazione tra diversi software di analisi numerica (Matlab, Octave, FreeMat, Scilab, R e IDL).
Mi sembra venga aggiornata ogni anno.
Una comparazione tra software di analisi numerica
22 messaggi
• Pagina 1 di 3 • 1, 2, 3
12
voti
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
1
voti
Muchas gracias! Esta información es muy, muy interesante! 

-

carlomariamanenti
60,1k 6 11 13 - G.Master EY

- Messaggi: 4324
- Iscritto il: 18 gen 2012, 10:44
0
voti
grazie mille, lo trovo molto interessante
3
voti
Quando ne ho l'occasione faccio qualche piccolo confronto tra i vari software che mi capita di usare. Senza pretesa di sistematicità, sono semplicemente casi su cui mi è capitato di lavorare, ho deciso di riportare qui alcuni risultati. Il confronto sarà principalmente tra Octave 3.6.4, Scilab 5.4.1 e Mathematica 9.0.1. L'idea è quella di comparare sia la velocità che la facilità di programmare alcune operazioni. Visto il crescente uso di Python in ambito scientifico, se ci fosse qualche "pythonista" che avesse voglia di realizzare anche dei programmini che facciano le stesse operazioni, potremmo aggiungerlo alle comparazioni.
I test sono stati fatti su una macchina i7-3770 @ 3.40 GHz 8 cores.
Nel primo confronto ho fatto generare ai programmi una matrice 20*1000000 di numeri casuali; per ognuna delle 10^6 colonne ho fatto calcolare la mediana. Scilab esce un po' acciaccato da questo test.
1) Octave
La funzione è questa:
Richiamata con
Il tempo di calcolo della mediana è circa 0.3 s.
2) Scilab
La funzione è questa:
Richiamata con
Per poter eseguire la funzione con dimensioni così grandi è necessario incrementare la dimensione dello stack con
Il tempo di calcolo della mediana è risultato di circa 2016 s
3) Mathematica
Il programma eseguito è
E il tempo di calcolo è stato di circa 1.2 s.
I test sono stati fatti su una macchina i7-3770 @ 3.40 GHz 8 cores.
Nel primo confronto ho fatto generare ai programmi una matrice 20*1000000 di numeri casuali; per ognuna delle 10^6 colonne ho fatto calcolare la mediana. Scilab esce un po' acciaccato da questo test.
1) Octave
La funzione è questa:
- Codice: Seleziona tutto
function [t] = test_median(m,n)
Y = normrnd (0, 1, m, n);
tic();
M = median(Y,1);
t = toc();
end
Richiamata con
- Codice: Seleziona tutto
test_median(20,1000000)
Il tempo di calcolo della mediana è circa 0.3 s.
2) Scilab
La funzione è questa:
- Codice: Seleziona tutto
function [t] = test_median(m,n)
Y = grand(m, n, "nor", 0, 1);
tic();
M = median(Y,'r');
t = toc();
endfunction
Richiamata con
- Codice: Seleziona tutto
test_median(20,1000000)
Per poter eseguire la funzione con dimensioni così grandi è necessario incrementare la dimensione dello stack con
- Codice: Seleziona tutto
stacksize('max')
Il tempo di calcolo della mediana è risultato di circa 2016 s
3) Mathematica
Il programma eseguito è
- Codice: Seleziona tutto
Y = RandomVariate[NormalDistribution[0, 1], {20, 1000000}];
Timing[Median[Y];]
E il tempo di calcolo è stato di circa 1.2 s.
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
4
voti
- Codice: Seleziona tutto
def test_ey(m,n):
import numpy as np
a=np.array(np.random.random_sample(size=(m,n)))
b=np.median(a, axis=1)
test_ey(20,1000000)
ottengo circa 2.55 s
ma sicuramente si può ottimizzare, perché io sono un "pythonista" della domenica
(CPU i3 550 @ 3.20GHz)
Come confronto, con octave e la funzione del post precedente ottengo
- Codice: Seleziona tutto
octave:2> test_median(20,1000000)
ans = 0.41516
in /dev/null no one can hear you scream
0
voti
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
1
voti
se hai Mathematica ancora aperto prova con
Ciao,
Pietro.
- Codice: Seleziona tutto
Timing[Median[RandomVariate[NormalDistribution[0.0, 1.0], {20.0, 10^6}];];]
Ciao,
Pietro.
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
1
voti
[quote="angus"]
Per equilibrare la riga sopra non va messa nel computo del test, in quanto gli altri programmi le librerie le caricano all'avvio, di conseguenza non si vedono nei risultati.
Prova con:
- Codice: Seleziona tutto
import numpy as np
Per equilibrare la riga sopra non va messa nel computo del test, in quanto gli altri programmi le librerie le caricano all'avvio, di conseguenza non si vedono nei risultati.
Prova con:
- Codice: Seleziona tutto
import numpy
import time
def test_ey(m,n):
a=numpy.array(numpy.random.random_sample(size=(m,n)))
b=numpy.median(a, axis=1)
starttime=time.clock()
test_ey(20,1000000)
stoptime=time.clock()
print("%ds"%(stoptime-starttime))
Non cercare di piegare il cucchiaio. È impossibile. Cerca invece di fare l'unica cosa saggia: giungere alla verità. Il cucchiaio non esiste. Allora ti accorgerai che non è il cucchiaio a piegarsi, ma sei tu stesso!
2
voti
PietroBaima ha scritto:se hai Mathematica ancora aperto prova con
- Codice: Seleziona tutto
Timing[Median[RandomVariate[NormalDistribution[0.0, 1.0], {20.0, 10^6}];];]
Provato ora, viene 1.8 s circa. Però mi sembra che così si misuri anche il tempo di generazione dei numeri casuali, mentre negli altri misuro solo il tempo di calcolo della mediana che, visti i risultati di Scilab, sembrerebbe quello che può dare più problemi.
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
22 messaggi
• Pagina 1 di 3 • 1, 2, 3
Torna a Programmi applicativi: simulatori, CAD ed altro
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)





pigreco]=π
