Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Una comparazione tra software di analisi numerica

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

12
voti

[1] Una comparazione tra software di analisi numerica

Messaggioda Foto UtenteDirtyDeeds » 5 dic 2012, 13:02

Ecco qui una comparazione tra diversi software di analisi numerica (Matlab, Octave, FreeMat, Scilab, R e IDL).

Mi sembra venga aggiornata ogni anno.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

1
voti

[2] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto Utentecarlomariamanenti » 5 dic 2012, 15:47

Muchas gracias! Esta información es muy, muy interesante! :ok:
Avatar utente
Foto Utentecarlomariamanenti
60,1k 6 11 13
G.Master EY
G.Master EY
 
Messaggi: 4324
Iscritto il: 18 gen 2012, 10:44

0
voti

[3] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto Utenteserbring » 21 dic 2012, 10:43

grazie mille, lo trovo molto interessante
Avatar utente
Foto Utenteserbring
19 5
Frequentatore
Frequentatore
 
Messaggi: 137
Iscritto il: 29 apr 2009, 9:49

0
voti

[4] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto UtenteF0112358 » 23 dic 2012, 17:17

=D>
Avatar utente
Foto UtenteF0112358
182 5 9
Expert
Expert
 
Messaggi: 351
Iscritto il: 9 mag 2010, 14:13

3
voti

[5] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto UtenteDirtyDeeds » 25 nov 2013, 13:10

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:

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 sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

4
voti

[6] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto Utenteangus » 25 nov 2013, 14:07

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
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[7] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto UtenteDirtyDeeds » 25 nov 2013, 15:16

Grazie Foto Utenteangus!

Con il tuo programma ho ottenuto circa 1.7 s.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

1
voti

[8] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto UtentePietroBaima » 25 nov 2013, 15:27

se hai Mathematica ancora aperto prova con

Codice: Seleziona tutto
Timing[Median[RandomVariate[NormalDistribution[0.0, 1.0], {20.0, 10^6}];];]


Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

1
voti

[9] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto Utentecronos80 » 25 nov 2013, 16:32

[quote="angus"]
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!
Avatar utente
Foto Utentecronos80
1.546 1 6 12
Expert EY
Expert EY
 
Messaggi: 636
Iscritto il: 17 gen 2012, 10:43

2
voti

[10] Re: Una comparazione tra software di analisi numerica

Messaggioda Foto UtenteDirtyDeeds » 25 nov 2013, 18:28

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 sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti