Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Ivan Arsie
iarsie@unisa.it, www.macchine.unisa.it
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Introduzione
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Linguaggio di programmazione ad alto livello Learning by using Corredato da una famiglia di applicazioni specifiche (Toolbox): signal processing, statistics, optimization, neural networks, etc...
Ingresso da tastiera
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Le opzioni di formato
format short, long, short e, long e, hex, bank, rat,
Salvataggio in un file
>> save nomeFile nomeVar1 nomeVar2
Manipolazione di matrici
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Affiancamento di matrici
>> C=[A B] >> D=[A A+3;A+3 A]
Altri comandi
>> [m,n]=size(C) >> h=length(b) >> who
Rappresentazione di intervalli :
>> z=1:5 >> zd=1:.1:5 >> linspace(min,max,punti) (logspace)
Manipolazione di matrici
Elementi Fondamentali
Matrici speciali
>> eye(3) >> eye(3,4) >> zeros(2,3) >> ones(1,2) >> diag([4 5 6 7])
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Stringhe di caratteri
>> >> >> >> >> a=arpa >> b=unarpa findstr(a,a) (posizione di a in a) int2str(123) num2str(1.23) str2num(1.23)
Da stringa a matrice
>> A=str2mat(oggi,non,piove) >> A(:,1) >> A(:,5)
Elementi Fondamentali
Esercizi
1 Dato x=(1,2,3,4), si costruisca y=(1,3,4,5) 2 Dato x=(1,2,3,4,5,20), si costruisca y=(1,2,3,4,5,20,20,5,4,3,2,1) usando : e fliplr 3 Dati a=(1,2,3,4) e b=(7,8,9,10) si costruisca c=(1,7,2,8,3,9,4,10) 4 Data una stringa indicativa del proprio nome e cognome si definisca una procedura che separi luno dallaltro e li disponga sulle due righe di una matrice
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Grafici bidimensionali
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Grafici bidimensionali
Elementi Fondamentali
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Le opzioni sulla finestra di figura - File --> Save As - File --> Export - Tools --> Properties - Tools --> Legend - Tools --> Add - Tools --> Zoom Grafici multipli
>> >> >> >> >> plot(x1,y1,k,x2,y2) plot([1 2 3],[-1 -2 -3]) plot([1 2 3;-1 -2 -3]) teta=-pi:.1:pi; plot(teta,[sin(teta);cos(teta)]); legend(seno,coseno)
Introduzione Ingresso da tastiera Ingresso da files esterni Manipolazione di matrici Esercizi Grafici Bidimensionali Esercizi su 2D
Usando il comando patch e gli altri visti, si disegni uno spicchio di luna rossa
Operazioni
Operazioni aritmetiche Funzioni Operazioni di relazione Operazioni logiche Esercizi
Operazioni
Operazioni aritmetiche
Variabili predefinite (att.ne allunit immaginaria!)
ans, eps, pi, i, j, Inf, NaN, clock, cputime, date, flops, realmax, realmin, nargin, nargout
Operazioni aritmetiche
Operazioni
Operazioni aritmetiche
Operazioni
La soluzione del problema Ax=b - se length(x)>length(b), cio pi incognite che equazioni (o meglio se rank(A)=rank([A b])), esistono infinite soluzioni; due possibili soluzioni sono:
>> x=pinv(A)*b (soluzione a min norma) >> y=A\b (soluzione con maggior numero di zeri)
- se length(x)<length(b), cio pi equazioni che incognite (o meglio se rank(A)<rank([A b])), non esistono soluzioni; una soluzione approssimata
>> x=pinv(A)*b (soluzione a min norma derrore)
Funzioni
Operazioni
- ceil arrotonda per eccesso allintero pi vicino Approssimazioni razionali - rem resto di una divisione intera
>> rem(3,2) >> mod(3,7) >> rats(9.22) >> rem(2,3) >> mod(7,3) >> rem(2,0)
Funzioni
Operazioni
Aritmetica complessa - real parte reale - imag parte immaginaria - conj coniugato complesso - abs valore assoluto o modulo complesso - angle angolo di fase Esempi
>> 2+3i >> clear i >> 2+3j >> 2+3*i >> a=3,z=2+ai
Esercizio. Si tabelli il modulo e la fase della funzione razionale fratta riportata, per s=j ed [10^(-2):10^2]
3s 2 + 5s + 7 s 3 + 5s 2 + 7 s + 12
Funzioni
Operazioni
Funzioni esponenziali e logaritmiche - pow2 esponenziale in base 2 - exp esponenziale in base e - log logaritmo naturale - log2 logaritmo in base 2 - log10 logaritmo in base 10 Esempio
>> x=(1:.1:5); y=log(x); [x y] >> plot(x,y)
Funzioni
Operazioni
Funzioni trigonometriche - sin seno - cos coseno - tan tangente - asin arcoseno - acos arcocoseno - atan arcotangente - atan2 arcotangente a quattro quadranti - cart2pol da coordinate cartesiane a polari Lesempio della circonferenza
>> teta=-pi:.1:pi; x=cos(teta); y=sin(teta); >> [fase,modulo]=cart2pol(x,y) >> plot(x,y) >> plot(modulo,fase)
Funzioni
Operazioni
- sum, rank, det, poly, trace, norm, eig, mean, expm, logm, sqrtm
>> >> >> >> A=[0 1 1;0 0 1;0 0 0]; E1=exp(A); E2=expm(A); E3=eye(3)+A+A^2/2; E4= eye(3)+A+A.^2/2; E1, E2, E3, E4
Operazioni
Operazioni di relazione
Operatori di relazione - < minore - <= minore o uguale - > maggiore - >= maggiore o uguale - == uguale - ~= diverso Operatori logici - & and - xor or esclusivo Esempi
>> 2>3 >> 2+2~=4 >> P=(rem(A,2)==0) (gli elementi di A divisibili per 2)
- | or - ~ not
Operazioni
Operazioni logiche
Come sempre gli operatori su matrici agiscono per colonne - any d 1 se almeno un elemento diverso da 0 - all d 1 se tutti gli elementi sono diversi da 0
>> A=[0 1 1;0 0 1;0 0 0]; any(A), all(A) >> all(A<0) >> all(A>=0) >> any(A>0.5)
Esercizi
Operazioni
Dati x=3+j5, y=-2+j4, z=j3, si calcolino: x+y, x-z, (x+y)z, |x|, 1/y, z2, log(x), ey, |x/y| Si risolva il sistema di equazioni: x+y=a 3x+2y=b per a=(1, 4, 3) e b=(1, sqrt(3), 0.5) Si rappresenti la funzione e3tsin 5t per t[-2,2] con 45 punti
Esercizi
Operazioni
A partire dalle curve di coppia di un motore, individuare una regressione lineare del tipo [es_linreg]: x1 + x2* (rpm) + x3* (rpm)2 + x4* (throttle) = torque
RPM 6000 5222 4520 3740 3024 2250 6000 5240 4507 3750 3007 2250 THROTTLE 28.8655 28.8655 28.8655 28.8655 28.8655 28.8655 40.5933 40.5933 40.5933 40.5933 40.5933 40.5933 TORQUE 58.1854 72.3081 84.1771 89.6724 90.2083 92.1813 75.4997 89.2116 99.3314 100.6825 97.0504 94.1107
Esercizi
Operazioni Le prevalenze reale ed Euleriana di una pompa possono essere espresse in funzione della portata volumetrica Q e del regime di rotazione n attraverso le seguenti relazioni: Hr = k1* n2 + 2*k2 n*Q - k3*Q2
Op aritmetiche Funzioni Op di relazione Op logiche Esercizi
HE = k5* n2 k6*Q*n mentre la prevalenza esterna pu essere espressa come Hest = Hu + k4*Q2. A partire dai dati rilevati nelle quattro misure indicate rappresentare graficamente gli andamenti delle prevalenze Euleriana, reale ed esterna ed il rendimento al variare della portata volumetrica per vari regimi di rotazione [es_curvecaratt]. Si assuma k4 = k6 =1; k5 =14 1) Q=1 m3/h; n= 1000 rpm; Hr = 11 m 2) Q=2 m3/h; n= 2000 rpm; Hr = 44 m 3) Q=4 m3/h; n= 3000 rpm; Hr = 98 m 4) Q=10 m3/h; n= 3500 rpm; Hr = 92.5 m
Operazioni
Esercizi
Si rappresentino 5 periodi della funzione |sin t| Si definisca il vettore x contenente 31 valori dellintervallo [1/2, 25] ottenuti con spaziatura logaritmica in base 2 Definito un opportuno vettore x si valutino L=(x>=2), L=(x<3), L=(x>3), L=(x<4 & x>-4) Dato il vettore x=(1, 34, 2, -12, 56, 7, 0, 9) visualizzare i valori maggiori di 5.
Polinomi e Grafica 3D
Operazioni su polinomi Interpolazione Esercizi sui polinomi Grafici tridimensionali Esercizi su 3D
Definizione di un polinomio >> p=[1 0 -1]; (definisce il polinomio x2-1) Le radici di un polinomio
>> roots([1 0 -1]) >> roots([1 -2 -15])
Il prodotto di polinomi
>> a=[1 0 1]; b=[1 1]; c=conv(a,b)
Interpolazione
Polinomi e Grafica
Interpolazione
Polinomi e Grafica
Il comando spline (interpolazione con cubiche) - il significato fisico (la spline usata per disegnare) - si infittisce lintervallo tra i campioni, tra questi si cerca unapprossimazione polinomiale e si assicura la differenziabilit fino ad un certo ordine nei punti di giunzione (la cosiddetta pp-form):
x [a, b],
k i =1
x [a = 1 , 2 , K , h +1 = b] j = 1, K , h
p j ( x ) = ( x j ) k i /( k i )! cij ,
Interpolazione
Polinomi e Grafica
o altre opzioni come spline e cubic. Interpolazione bidimensionale: dati X ed Y monotoni ZI = interp2(X, Y, Z, XI, YI, method)
>> >> >> >> >> [x,y]=meshgrid(-3:1:3) z=x.*exp(-x.^2-y.^2) surf(x,y,z); [xi,yi]=meshgrid(-3:.25:3); zi=interp2(x,y,z,xi,yi); surf(xi,yi,zi)
Calcolare i punti estremali, le intersezioni con gli assi e gli eventuali punti di flesso della funzione f(x)=x4+5x3+1. [es_polinomi] Data la sequenza di punti y=[7.02 1.46 -1.55 0.94 2.21 7.95 15.56 19.22 32.80 37.72 59.79] per x=[0:10], individuare i polinomi di interpolazione di grado (1, 2, 3) e rappresentarli graficamente. La densit dellaria (in g/m3) varia con la quota h (in km) secondo la tabella riportata. Determinare un polinomio interpolatore di ordine n=1, 2, 3, , 6 e la norma dellerrore commesso. Si calcolino poi i valori della densit dellaria ai valori di quota 10, 20, 30, 40, 50 e 60. h=7, 10, 15, 21, 27, 34, 39, 43, 47, 51, 55, 59, 61 =556, 369, 191,75, 26.2, 9.9,4.4,2.3, 1.4,.8, .5,.33,.25
Rappresentare landamento delle emissioni in funzione di A/F, e determinare la migliore rappresentazione polinomiale delle emissioni in funzione di A/F in termini di precisione e generalizzabilit. Stimare il valore delle emissioni per A/F=15.2
Grafici tridimensionali
Polinomi e Grafica
Un primo esempio
>> >> >> >> t=0:pi/10:10*pi; plot3(sin(t),cos(t),t) x=0:.1:4; y=-2:.1:1; [X,Y]=meshgrid(x,y); Z=sin(X).*cos(Y); plot3(X,Y,Z); mesh(X,Y,Z); surf(X,Y,Z); surfc(X,Y,Z);
t=-pi:pi/10:pi; fi=(-pi/2:pi/20:pi/2); X=cos(fi)*cos(t); Y=cos(fi)*sin(t); Z=sin(fi)*ones(size(t)); surf(X,Y,Z) colormap([0 0 0;1 1 1]); C=rand(size(Z)); surf(X,Y,Z,C)
Grafici tridimensionali
Polinomi e Grafica
Le curve di livello
>> t=-2:.2:2; [X,Y,Z]=peaks(n); mesh(X,Y,Z); >> figure(2); contour(X,Y,Z,20); >> hold on; [U,V]=gradient(Z,.2); >> quiver(X,Y,U,V); hold off >> [C,h]=contour(Z,10); clabel(C,h) >> figure(3); mesh(X,Y,Z), hold on; >> contour3(X,Y,Z,[1 1],k); >> Az=180;El=0; view([Az El]) z y
El -y Az
Grafici tridimensionali
Polinomi e Grafica
I solidi di rotazione ottenuti col comando cylinder - due possibili rotazioni della retta y=x:
cylinder(0:.1:2) cylinder(-2:.1:2)
Polinomi e Grafica
Si rappresenti la funzione z=x2 + 4y nel piano [z,x] al variare di y, nel piano [z,y] al variare di x e nello spazio 3D [es_grafici3d]
%piano x,z x=[-10:10];hold on for y=-2:2 z=x.^2+4*y;plot(x,z) end hold off %piano y,z clear x, y;y=[-10:10];figure;hold on for x=-2:2 z=x.^2+4*y;plot(y,z) end hold off %spazio3D clear x,y;x=[-10:10];y=[-10:10]; figure [X,Y]=meshgrid(x,y); Z=X.^2+4*Y; plot3(X,Y,Z);mesh(X,Y,Z);surf(X,Y,Z);
Polinomi e Grafica
Si risolva graficamente il problema di ottimizzazione vincolata min x2+y2+z2 con il vincolo x2+2y+4z-14 Suggerimento: si disegni prima il vincolo. Ritornando allesempio della sfera presentato in precedenza, si disegni in nero la sola semisfera inferiore e poi la sola semisfera di destra. Utilizzando il comando help e la funzione peak, si utilizzino i comandi - hist, stem, stem3, pie, light
Programmazione
Le strutture fondamentali Script files Funzioni Esercizi sulla programmazione
Le strutture fondamentali
Programmazione
La struttura if-then-else if condizione, istruzioni elseif condizione, istruzioni else istruzioni end T=0:.1:2; for t=T, y=[y,sin(t)]; end
y=sin(T);
Literazione for for i=1:n, istruzioni end Literazione while while condizione, istruzioni end [m,n]=size(A); for i=1:m for j=1:n if A(i,j)>10, A(i,j)=0; end, end, end
A(A>10)=0*A(A>10);
Script files
Programmazione
Script files
Programmazione
Un esempio sulla dipendenza dei tempi di calcolo dalla struttura di programmazione adottata
[es_tempicalcolo] clear; tic for i=1:10000 t(i)=.1*i; y(i)=t(i)^2; end; toc clear tic t=[0:.1:1000]'; y=t.^2; toc
Funzioni
Programmazione
%Una funzione per la stima approssimata della funzione coseno attraverso lo sviluppo in serie di Mc Laurin, arrestato al quinto ordine. cos_approx=0; for i=0:5 termine_parziale=(-1)^i*x^(2*i)/factorial(2*i); cos_approx=cos_approx+termine_parziale; end y=cos_approx; t=x; end >>x=[-pi:.1:pi]; >>[t,y]=es_function(x)
Funzioni
Programmazione
Verificare che la funzione cos(x) nellintorno dellorigine approssimabile con le somme parziali del suo s viluppo in serie di Mc Laurin, tracciando i grafici della funzione cos(x) e delle prime 5 somme parziali nellintervallo [-, +] [es_taylor]:
x 2n cos( x ) = ( 1) ( 2n )! n =0
n
Verificare che il calcolo vettoriale consente di ridurre i tempi di elaborazione rispetto allimplementazione di una struttura classica di programmazione
Funzioni Avanzate
Analisi Statistica Ricerca dei Minimi e degli Zeri Derivazione ed Integrazione Numerica
Analisi Statistica
Funzioni Avanzate
Definizione di una distribuzione di variabili normale (oppure Beta, Binomiale, Chi-square, etc)
>> R=normrnd(10,1,100,1);
Assegnato il set di dati illustrato in figura e riportato nel file (es_minimo2_dati.mat), individuare i valori ottimali dei parametri lambda che ne consentano di riprodurre landamento attraverso la struttura funzionale seguente [es_minimo2]:
y=lambda(1)*exp[-lambda(2)*t]
6 5 4 3 2 1 0
0.2
0.4
0.6
0.8
1 t
1.2
1.4
1.6
1.8
Soluzione
function [err,z] = es_minimo2_fun(lambda) global dati t = dati(:,1);y = dati(:,2); z=lambda(1)*exp(-lambda(2)*t); err = norm(z-y);plot (t,y,'o',t,z) return
Assegnato il set di dati illustrato in figura e riportato nel file (es_minimo2_dati.mat), individuare i valori ottimali dei parametri non lineari lambda che ne consentano di riprodurre landamento attraverso la struttura funzionale seguente [es_minimo3]:
y=c(1)*exp[-lambda(1)*t]+c(2)*exp[-lambda(2)*t]
6 5 4 3 2 1 0
0.2
0.4
0.6
0.8
1 t
1.2
1.4
1.6
1.8
Una fabbrica decide di iniziare la produzione di un nuovo tipo di caramelle dietetiche. Il costo di produzione di L. 1000 per confezione e lufficio di marketing prevede una richiesta settimanale di 100000/p2 confezioni dove p il prezzo complessivo al quale ogni confezione venduta. Si calcoli il prezzo al quale sar messa in vendita una confezione di caramelle per massimizzare il profitto.
[es_cogenerazione]
Integrazione Numerica
Funzioni Avanzate
La risoluzione delle equazioni differenziali ordinarie in Matlab viene eseguita con due metodi: 1 - ode23 usa il metodo di Runge-Kutta del 2-3 ordine; 2 - ode45 usa il metodo di Runge-Kutta del 4-5 ordine; La sintassi identica per le due funzioni e richiede che lequazione da integrare sia espressa come sistema di equazioni ordinarie del primo ordine:
dx = f ( x, t ) dt
>> [t,x]=ode23(xpunto,t0,tf,x0)
Le equazioni di Volterra-Lokta descrivono un modello semplificato dellevoluzione di due specie in competizione tra loro (noto come modello predapredatore):
preda
predatore
dx = (a by ) x dt dy = (cx d ) y dt
Si studi la soluzione di queste equazioni a partire dai parametri nominali a=2.7, b=0.7, c=1, d=3 [es_loktavolterra]. Soluzione
Simulare il modello preda-predatore rappresentato dalle equazioni di Volterra - Lokta in presenza delleffetto pesca:
preda predatore dx = (a by ) x hx dt dy = (cx d ) y hy dt
1) Si studi la soluzione di queste equazioni a partire dai parametri nominali a=2.7, b=0.7, c=1, d=3, h=0.5 nellintervallo t = [0:.1:10] [es_loktavolterra2]. 2) Si identifichi il valore ottimale del parametro h che consenta di riprodurre attraverso il sistema di equazioni landamento preda/tempo riportato nel file loktavolterra.mat, lasciando invariati i valori degli altri parametri [es_loktavolterra2min].
Funzioni Avanzate
Funzioni Avanzate
Soluzione
Simulink
Come costruire uno schema Sources e Sinks La simulazione Esercizi
+ -
1/m
&& x
dt k
& x
dt
Simulink
Sources e Sinks
Simulink
Sources:
Il clock per il tempo simulato La costante anche definibile dal workspace Una generica variabile temporale definita col From Workspace ( necessario anche il tempo) Un segnale periodico con il Repeating Sequence La sinusoide e il gradino
Sinks:
Per assegnare il valore ad una variabile con il To Workspace (occhio ai parametri!) Stop Simulation per fermare la simulazione Lo Scope per visualizzare la variabile durante la simulazione
La simulazione
Simulink
* lopzione Mode/MultiTasking per consentire la verifica di incoerenza nella connessione di blocchi con diversi periodi di campionamento
La simulazione
Simulink
* per modificare la tolleranza assoluta sulla singola variabile, usare i paramaetri dellintegratore Lopzione Refine Output per valutare le uscite del sistema in un numero maggiore di punti (di un fattore e questa opzione non cambia lintervallo di integrazione), o in un numero prefissato di punti.
Esercizi
Simulink
Costruire lo schema Simulink per un sistema massa-molla-smorzatore ed analizzare la risposta ad una forzante sinusoidale (m=1, k=10, sigma=0.1, F0=10) [es_pendoloforzato]. Simulare la risposta dinamica di un autoveicolo ad una variazione a gradino della coppia motrice [es_dynvehicle].