Download - OCTAVE. Octave Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Transcript
Page 1: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

OCTAVE

Page 2: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Octavehttp://octave.sourceforge.net/Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari e non lineari. Il linguaggio usato è compatibile con Matlab

Alternative a Matlabhttp://www.dedoimedo.com/computers/scientific.htmlScilabFeeMatEtc..

Page 3: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

OCTAVE

• Aprire un file di Octave: dalla finestra di Octave:>>edit prova5.m• Per cambiarlo:>>edit prova5 save • Per lanciarlo>> prova5• Per vedere la directory corrente>>pwd• Per risalire>>cd ..• Per entrare:>>cd nomedir• Per aggiungere un pathaddpath(genpath(‘C:/mfiles/’));savepath;

Page 4: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

• Come si inseriscono matrici e vettori

; , • Come si opera con matrici e vettori

• Grafici 2-d

plot, hist (help)

OCTAVE

Page 5: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

http://www.mit.edu/~gerganaa/downloads.html

Programmi Matlab per il calcolo di misure di reti (G. Bounova)

G. Bounova ha sviluppato diversi programmi MATLAB per il calcolo delle proprietà delle retiLi ho raccolti in «Bounova_nuovo».Calcolo dell’mst (algoritmo Prim’s)Calcolo del cammino minimo (Dijkstra)Calcolo del ClusteringCalcolo del diametroCalcolo della lunghezza caratteristicaCalcolo della distribuzione dei gradiGenerare una ER networkGenerare una SF networkEtc..

Page 6: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Esercizio

Dato seguente grafoCalcolare con Octave il cammino minimo l’albero di ricoprimento minimo, flusso massimo

Aggiungiamo il percorso addpath(genpath(‘C:/programmi/Bounova_nuovo’));savepath; Inseriamo la matrice di adiacenza

1

9

2

7 5

3

8 6

42

2

2

3

1

4

23

2

3

33

A=[0 2 0 0 0 0 0 2 3 2 0 1 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 3 3 0 0 0 3 0 0 0 0 3 0 0 2 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 3 0 0 0 0 3 0 0 0 0 0 2 0 0]

Page 7: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

% prova1000.mclearA=[0 2 0 0 0 0 0 2 3 2 0 1 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 3 3 0 0 0 3 0 0 0 0 3 0 0 2 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 3 0 0 0 0 3 0 0 0 0 0 2 0 0];%draw_circ_graph(A) % cammino minimo

s=1; target=4; [dist,P]=dijkstra(A,s,target),

% flusso massimo source=1; sink=4; capacity=A; nodes_number=9;

max_flow=ff_max_flow(source,sink,capacity,nodes_number),% minimum spanning tree

tr = min_span_tree(A),

Page 8: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

1

9

2

7 5

3

8 6

42

2

2

3

1

4

23

2

3

33

max

Output: dist=8P=1 8 5 4max_flow =5

Albero di ricoprimento minimo

2 3 3

min(2,3,3)=2

min(2,1,3,3)=1

min(3,2,2,3)=2

(5=2+1+2)

Page 9: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

% prova2000.mclearA=[0 2 0 0 0 0 0 2 3 2 0 1 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 3 3 0 0 0 3 0 0 0 0 3 0 0 2 0 0 0 0 0 0 0 2 0 0 2 2 0 0 0 3 0 0 0 0 3 0 0 0 0 0 2 0 0];…….

EsercizioDella rete precedente. Calcolare il diametro, la distanza caratteristica, i valori dei gradi di clustering, di betweennes e di closeness centrality. Fare gli istogrammi dei gradi, dei clustering,delle betweennes e delle closeness centrality.

Page 10: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

……..% grado mediom=numedges(A); n=numnodes(A); km =2*m/n;d2=link_density(A) ; %2*m/n/(n-1)diam= diameter(A);apl=ave_path_length(A);deg=degrees(A); subplot(221),hist(deg), title('degree');clo=closeness(A); subplot(222),hist(clo), title('closeness');bet=node_betweenness_slow(A);subplot(223),hist(bet), title('betweenness');[C1,C2,C] = clust_coeff(A); subplot(224),hist(C), title('clustering');%figure%draw_circ_graph(A)

Page 11: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.
Page 12: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.
Page 13: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Proviamo a rifare lo stesso esercizio con Pajek:

Da Octave generiamo il file provaPajek.netadj2pajek(A,’provaPajek.net’)

*Vertices 9 1 "v1" 0.5776 0.7561 0.0000 2 "v2" 0.3545 0.9017 0.0000 3 "v3" 0.3451 0.1743 0.0000 4 "v4" 0.2520 0.4123 0.0000 5 "v5" 0.9702 0.0730 0.0000 6 "v6" 0.5191 0.6884 0.0000 7 "v7" 0.3946 0.2572 0.0000 8 "v8" 0.5388 0.0573 0.0000 9 "v9" 0.0498 0.8002 0.0000*Edges 2 1 2 8 1 2 9 1 3 1 2 2 3 2 1 2 3 1 5 3 3........

Page 14: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Proviamo a rifare lo stesso esercizio con Pajek:

Aprire PajekPosizionarsi su C:…./bin/ProvaPajek.net

Net/transform/remove/multiple Line (max)

Page 15: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Info/net/general

Output OctaveKm=5.3333D2=0.6667Diam=9apl=5.1944E=0.0046

2*m/n=48/9=5.3333Considera gli archi di peso 1m=10; n=92*m/n=2.22

Diametro=4

Page 16: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Studiare la rete dining-table_partners.net del cap 1

Da Octave generiamo un file .m con la matrice di adiacenza

%Pajek2adj.m% This program extracts an adjacency matrix from a pajek text (.net) file% INPUT .net text filename, n - number of nodes in the graph% OUTPUT: adjacency matrix, nxn, n - # nodesadj = pajek2adj(filename,n)

adj = pajek2adj(dining-table_partners.net,26)

Page 17: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Esercizio A

Verificare che l’albero minimo del seguente grafo:

è:

Page 18: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Esercizio B

Si consideri il seguente grafo

Verificare che il cammino minimo da A a G è ABEG ed ha lunghezza 18

Page 19: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Esercizio C

Verificare che nel seguente grafo

Nota: Octave ne fornisce uno dei 2. per ottenere l’albero di ricoprimento minimo si deve aggiungere un arco da H ad esempio ad A con peso 6 (peso max)

Page 20: OCTAVE. Octave  Octave è uno stumento di calcolo di alto livello. Permette di risolvere problemi di analisi numerica lineari.

Esercizio

Inventare un grafo non diretto con 7 nodiInserire la matrice di adiacenza in Octave e calcolare Cammino minimo tra due nodi a casoFlusso massimo tra gli stessi nodiAlbero di ricoprimento minimoDistribuzione dei gradiDistribuzione delle betweenness e Distribuzione dei valori di clustering