Process synchronization

Slides:



Advertisements
Presentazioni simili
MATLAB.
Advertisements

MATLAB.
MATLAB. Outline Grafica 2D Esercizi Grafica 3D Esercizi.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
3 a lezione - laboratorio a.a Corso di Laurea Ingegneria MECCANICA.
Esercitazione MATLAB (13/5)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Metodi FEM per problemi ellittici lineari a tratti Gabriella Puppo.
Metodi numerici per equazioni lineari iperboliche Gabriella Puppo.
Trimr Gauss, tra le altre, fornisce una preziosissima funzione che risulta di estrema utilità nell’ambito matriciale. Questa funzione, chiamata trimr(x,t,b),
INTRODUZIONE A MATLAB.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 7 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni –
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
NUMERI RELATIVI I numeri relativi comprendono i numeri positivi, negativi e lo 0 Esempio: +10, -5, +3, 0, -2 I numeri relativi si possono trovare all’interno.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Giovanni Finaldi Russo Pietro Bruno
Diagrammi 2D e 3D Funzioni di ordine superiore
(7x + 8x2 + 2) : (2x + 3) 8x2 + 7x + 2 2x + 3 8x2 + 7x + 2 2x + 3 4x
Corso di Segnali e Sistemi
7. Strutture di controllo
Array n-dimensionali e tipi di dati strutturati
Programmazione strutturata
Informatica per Scienze Geologiche LT a.a
Diagrammi 2D e 3D Funzioni di ordine superiore
Process synchronization
ELEMENTI DI GRAFICA IN MATLAB/OCTAVE
Linearizzazione di un sensore
Process synchronization
Process synchronization
TERNE PITAGORICHE Obiettivi dell’esercitazione
Informatica per Scienze Geologiche LT a.a
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Impariamo a conoscere le Matrici
Linearizzazione di un sensore
Scrivere programmi corretti
Process synchronization
Programmazione e Laboratorio di Programmazione
Process synchronization
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Process synchronization
POTENZA con numeri relativi (esponente +)
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Process synchronization
Programmazione e Laboratorio di Programmazione
Process synchronization
Array n-dimensionali e tipi di dati strutturati
Matrici e determinanti
Process synchronization
Diagrammi 2D e 3D Funzioni di ordine superiore
Programmazione e Laboratorio di Programmazione
Process synchronization
Corso di Fondamenti di Informatica
Process synchronization
Process synchronization
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Corso di Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Corso di Fondamenti di Informatica
Transcript della presentazione:

Process synchronization Operating System Operating System Lab 5 – Info B Luca M. Cassano– luca.cassano@polimi.it SadeghM. Astaneh– sadegh.astaneh@unimi.it © 2005 William Fornaciari © 2005 William Fornaciari 1

Process synchronization Lab 5: Obiettivi Operating System Introduzione a Matlab/Octave Funzioni Grafici 2 © 2005 William Fornaciari

Process synchronization WARM-UP Operating System Disegnare la “gittata” di un corpo che cade da 100m di altezza quando lanciato orizzontalmente con un velocità a vostro piacimento Quanto tempo impiega a cadere a terra? Quanto si sposta in orizzontale prima di cadere a terra? 3 © 2005 William Fornaciari 3

Process synchronization WARM-UP Operating System 4 © 2005 William Fornaciari 4

Process synchronization WARM-UP Operating System step=0.01; v=8.9; t=[0:step:100]; y=(100-9.8.*(t.^2)); x=(v.*t); y1=abs(y); [w, p]=min(y1); disp('Time:'); disp(t(p)); disp('Distance:'); disp(x(p)); plot(x,y); 5 © 2005 William Fornaciari 5

Process synchronization Problema 1 Operating System 6 © 2005 William Fornaciari 6

Process synchronization Soluzione 1 Operating System function rango = rango(M) if size(M,2)~=size(M,1) display('La matrice non e'' quadrata'); return end n = size(M,2); if det(M) ~= 0 rango = n; elseif n==1 rango=0; else % Calcolo tutte le sottomatrici possibili % Il rango sar? pari al massimo rango delle sottomatrici 7 © 2005 William Fornaciari 7

Process synchronization Soluzione 1 Operating System r=[]; for i = 1:n for j = 1:n M_temp = M; M_temp(i,:) = []; M_temp(:,j) = []; r = [r rango(M_temp)]; end rango = max(r); 8 © 2005 William Fornaciari 8

Process synchronization Problema 2 Operating System 9 © 2005 William Fornaciari 9

Process synchronization Soluzione 2 Operating System t = -10:0.01:10; x = cos(t); y = sin(t); z = t; plot3(x,y,z) title("3D plot") ylabel("sin(t)") xlabel("cos(t)") zlabel("t") % Per abilitare tutte le grigliegrid on Se voglio abilitare una o % piu' griglie in particolare (qui abilito solo griglia su x e y) % set (gca, "xgrid", "on") % set (gca, "ygrid", "on") 10 © 2005 William Fornaciari 10

Process synchronization Problema 3 Operating System 11 © 2005 William Fornaciari 11

Process synchronization Soluzione 3 Operating System N = 1:100; e = exp(1); ii = 0; for j=N r(j) = approx_e(j); err(j) = abs(r(j)-e); if err(j) > 0.001 ii = j; end display(['L''errore diventa inferiore di 0.001 a partire da N=' num2str(ii+1)]); % Si possono usare indistintamente sia v_iter che v_rec nel % grafico figure hold onplot(N, r, '-ro') plot([min(N) max(N)], [exp(1) exp(1)], 'g') title('Approssimazione di e') ylabel('e') xlabel('n') hold off 12 © 2005 William Fornaciari 12

Process synchronization Problema 4 Operating System 13 © 2005 William Fornaciari 13

Process synchronization Soluzione 4 Operating System stampagriglia; giocatore1.nome = input('Come si chiama il primo giocatore: '); giocatore1.simbolo = -1; giocatore1.colore = 'g'; giocatore1.stampa = @stampacroce; giocatore2.nome = input('Come si chiama il secondo giocatore: '); giocatore2.simbolo = 1; giocatore2.colore = 'b'; giocatore2.stampa = @stampacirc; giocate = 0; % simboli posizionati vincitore = 0; A = zeros(3,3); giocatorecur = giocatore1; 14 © 2005 William Fornaciari 14

Process synchronization Soluzione 4 Operating System function r=approx_e(n) r = 0; for i=0:n r = r + 1/factorial(i); end 15 © 2005 William Fornaciari 15

Process synchronization Soluzione 4 Operating System while (giocate<9 && vincitore==0) valida = false; while(valida==false) a = input([giocatorecur.nome ' comunicami un array con riga e colonna che rappresenta la tua mossa: ']); if(A(a(1),a(2))==0) valida = true; else display('mossa non valida! riprova'); end A(a(1),a(2)) = giocatorecur.simbolo; centro.x = a(2) + 0.5; centro.y = 4.5 - a(1); 16 © 2005 William Fornaciari 16

Process synchronization Soluzione 4 Operating System giocatorecur.stampa(centro,0.5,giocatorecur.colore); % leggere dove il giocatore vuole inserire il suo segno if (vittoriaTris(A,giocatorecur)) disp(['Complimenti ' giocatorecur.nome ', hai vinto!']); vincitore = 1; end giocate = giocate + 1; if strcmp(giocatorecur.nome,giocatore1.nome)==1 giocatorecur = giocatore2; else giocatorecur = giocatore1; 17 © 2005 William Fornaciari 17

Process synchronization Problema 5 Operating System 18 © 2005 William Fornaciari 18

Process synchronization Soluzione 5 Operating System function c = controllaRiga(v) if size(v)~=[1, 9] c = 0; return end % Genero il vettore di tutti ed i soli numeri che voglio V = 1:9; % Controllo che il vettore in ingresso ordinato sia uguale a % quello generato sopra se lo e' significa che tutti i numeri sono % interi, sono tutti da 1 a 9 e non ci sono ripetizioni c = all(sort(v)==V); 19 © 2005 William Fornaciari 19

Process synchronization Problema 6 Operating System 20 © 2005 William Fornaciari 20

Process synchronization Soluzione 6 Operating System function c = sudoku(S) if size(S)~=[9,9] c = 0 return end % Suppongo che la matrice soddisfi la soluzione c = true; % Per tutte le righe e le colonne controllo che queste soddisfino % la condizione del problema Non ho bisogno di due cicli, mi % basta chiamare la funzione es3 selezionando la riga o la % colonna opportunamente Quando seleziono la colonna devo % fare attenzione a trasporre il vettore altrimenti la funzione no % funziona. 21 © 2005 William Fornaciari 21

Process synchronization Soluzione 6 Operating System for i=1:9 c = c && controlloRiga(S(i,:)) && controlloRiga (S(:,i)'); end % A questo punto la condizione c e' verificata se e solo se tutti I % controlli del ciclo hanno ritornato risultato positivo Volendo si % poteva ottimizzare la funzione interrompendo il ciclo appena % c diventa falso 22 © 2005 William Fornaciari 22

Process synchronization Problema 7 Operating System 23 © 2005 William Fornaciari 23

Process synchronization Soluzione 7 Operating System % La funzione ritorna la x e la y dello 0, il numero di iterazioni i %effettuate e tutti i punti analizzati durante le iterazioni function [x, y, i, xp, yp] = bisezione(f, a, b, toll) nCoeff = length(f); % Calcolo il valore della funzione nel punto a e b Ho supposto % che nel caso della funzione y = 2*x^2 - 10 la f passata sia % [2 0 -10] quindi con il coefficiente della potenza piu' elevate % in prima posizione Se cosi' non fosse basta cambiare questo % vettore invertendo l'ordine [nCoeff-1:-1:0] va = sum(((a * ones(1,nCoeff)) .^ [nCoeff-1:-1:0]).*f); vb = sum(((b * ones(1,nCoeff)) .^ [nCoeff-1:-1:0]).*f); i = 0; 24 © 2005 William Fornaciari 24

Process synchronization Soluzione 7 Operating System if va*vb>0 display('Estremi dell''intervallo non validi') return end x = (a + b)/2; vx = sum(((x * ones(1,nCoeff)) .^ [nCoeff-1:-1:0]).*f); while abs(vx)>toll % Calcolo il punto medio ed il valode della funzione nel % punto medio % Aggiorno gli estremi dell'intervallo if va*vx>0 a=x; 25 © 2005 William Fornaciari 25

Process synchronization Soluzione 7 Operating System else b=x; end % Incremento il numero delle iterazioni Salvo i valori trovati a % questo passo nel vettore i = i + 1; xp(i) = x; yp(i) = vx; % Continuo fino a quando il valore assoluto del punto e' % maggiore del valore di tolleranza Posso quindi decidere la % precisione con cui volgio calcolare lo 0 y = vx; 26 © 2005 William Fornaciari 26