Unverstà degl Stud d Napol Federco II CdL Ing. lettrca Corso d Laboratoro d Crcut lettrc Introduzone a MATLAB Lezone n.5 Dr. Carlo Petrarca Dpartmento d Ingegnera lettrca e Tecnologe dell Informazone Unverstà d Napol FDICO II
soluzone d un crcuto elettrco () l 4; = 4 4 + A B = C J n ; 8 ncognte () () 5 () J 8 A (4) 5
Sstema fondamentale ) ( ) ( 4 B A ) ( ) ( 4 M M J 4 (4) () () () LKC LKT Bpol + 4 = 4 A = J B C
4 J 4 4 Sstema fondamentale n forma matrcale: Matrce A [8,8], vettore ncognte x[8,], vettore not b[8,]
=[ 5]; J=8; =5; nb=4; %vettore delle resstenze % corrente del generatore % f.e.m del generatore % Numero d bpol A=zeros(*nb); % Matrce de coeff. delle ncognte A(,)=; A(,4)=; A(,)=-; A(,)=-; A(,)=; A(,5)=; A(,6)=-; A(,8)=; A(4,6)=; A(4,7)=-; A(5,)=(); A(5,5)=-; A(6,)=(); A(6,6)=-; A(7,)=; A(8,8)=; b=zeros(8,); % ettore colonna de termn not b(7,)=j; b(8,)=; x=nv(a)*b; % ettore colonna delle ncognte dsp('alor delle corrent ncognte') dsp(' () () () (4)') dsp([x() x() x() x(4)]) dsp('') dsp('alor delle tenson ncognte') dsp(' v() v() v() v(4)') dsp([x(+nb) x(+nb) x(+nb) x(4+nb)]) 5
soluzone d un crcuto elettrco () + + + (t) ; ; ; ; ; ; 6
Convene ndcare tutte le ncognte (tenson e corrent su bpol) v = 4 + A v O v = 5 + 4 B v O' v = 6 5 + C v 6 7
8 Sstema fondamentale ') ( ) ( ) ( ) ( 6 5 4 O C B A ) ( ) ( 6 5 5 4 M M 6 5 4 6 5 4 LKC LKT Caratterstche
9 6 5 4 6 5 4 v v v v v v Sstema fondamentale n forma matrcale:
=[8 7 5]; =[ 5 8]; nb=6; %vettore delle resstenze % vettore f.e.m de generator % Numero d bpol A=zeros(*nb); % Matrce de coeff. delle ncognte A(,)=; A(,4)=-; A(,)=; A(,5)=-; A(,)=; A(,6)=-; A(4,)=; A(4,)=; A(4,)=; A(5,7)=-;A(5,8)=;A(5,)=; A(5,)=-; A(6,8)=-; A(6,9)=; A(6,)= ;A(6,)=-; A(7,)=(); A(7,7)=-; A(8,)=(); A(8,8)=-; A(9,)=(); A(9,9)=-; A(,)=; A(,)=; A(,)=; b=zeros(*nb,); % ettore colonna de termn not b(:,)=(:); x=nv(a)*b; % ettore colonna delle ncognte dsp('alor delle corrent ncognte') dsp(' () () () (4) (5) (6)') dsp([x() x() x() x(4) x(5) x(6)]) dsp('') dsp('alor delle tenson ncognte') dsp(' v() v() v() v(4) v(5) v(6) ') dsp([x(+nb) x(+nb) x(+nb) x(4+nb) x(5+nb) x(6+nb)])
opportuno usare metod dvers per la rsoluzone del crcuto Scrvamo le equazon nelle sole ncognte corrent Il Sstema da rsolvere s è notevomente rdotto!! 8; 7; 5; ; 5 ; 8 ; O + + + A B C v v v O'
% crcutobs.m - soluzone crcuto % uso come ncognte le sole corrent =[8 7 5]; %vettore delle resstenze =[ 5 8]; %vettore delle f.e.m de generator A=[ ; () -() ; () -()]; % Matrce de coeff. delle ncognte b=[; ()-(); ()-()]; % ettore colonna de termn not I=nv(A)*b; % ettore colonna delle ntenstà d corrente =.*I; % ettore colonna delle tenson su resstor Pr=.*I; % Potenza assorbta da resstor Pe=.*I; % Potenza erogata da generator
ersone alternatva: solvamo l crcuto con l metodo delle corrent d magla + + + A B C O O' v v v J J ; ; J J J J J J ; ; J J J J
serczo solvere l crcuto con l metodo de potenzal d nodo 4
MATLAB come lnguaggo d programmazone cclo for. cclo f cclo whle
Controllo d flusso: cclo for. Il cclo for consente d rpetere teratvamente un certo numero d volte le struzon n esso contenute Il cclo for ha la seguente struttura: for varable = espressone struzone sempo for k = : struzone Il numero d struzon è controllato dalla varable k, che assume valor da a a ntervall d. L operazone struzone contenuta nel cclo è eseguta volte.
sempo: Calcolare l quadrato del numero k per k=,,, 4 for k=:4 y(k)=k^; Inzalmente k= e MATLAB esegue l operazone y()=^ Successvamente k= e y()=^; k= e y()=^; e nfne k=4 e y(4)=4^; Le operazon termnano perchè k ha raggunto l valore fnale 4 >> y y = 4 9 6
L uso eccessvo d ccl for può allungare temp d calcolo Basta fare una verfca con le struzon sotto rportate. Il vettore =*I vene rcavato n due mod dvers: a) s usa un cclo for; b) s usa l prodotto elemento per elemento. Il rsultato è lo stesso, ma temp d calcolo sono estremamente dvers! a) =[::e+5]; I=[::e+5];tc; for k=:e+5; (k)=(k)*i(k); ;toc; b) =[::e+5]; I=[::e+5]; tc;=.*i;toc; N.B. utlzzando l comando tc all nzo d un operazone ed l comando toc alla fne della stessa, MATLAB resttusce l tempo mpegato per l calcolo
Controllo d flusso: cclo f else- Il cclo f consente d esegure struzon solo se una determnata espressone rsulta vera Il cclo f ha la seguente struttura: f espressone struzone A else struzone B L struzone A è eseguta solo se l espressone rsulta vera, altrment vene eseguta l struzone B
sempo: Calcolare la costante C b=; a=7; f a>5 C=6*a*b; else C=*a*b;
La varable a può anche essere mmessa da tastera % Immssone dat da tastera a=nput('insersc la varable a ='); b=; f a>5 C=6*a*b; else C=*a*b;
Immssone d dat da tastera: nput >> a=nput('insersc l numero desderato= ') Insersc l numero desderato= 8 a = 8 >> b=nput('insersc la strnga desderata= ', 's') Insersc la strnga desderata= Lezone b = Lezone >> c=nput('insersc l vettore desderato= ') Insersc l vettore desderato= [5 7 ] c = 5 7
Per l controllo d flusso occorrono gl operator relazonal gl operator relazonal pù comun sono: == uguale ~= dverso da < mnore d <= mnore o uguale > maggore d >= maggore o uguale
serczo Creare un vettore d. element scelt n modo casuale secondo una dstrbuzone unforme nell ntervallo [,]. alutare po la percentuale d element compresa ne seguent ntervall: I: [,5[ I: [5,5[ I: [5,75[ I4: [5,75[
Ntot=; % Numero d element a=; b=; U=a+(b-a).*rand(Ntot,); % creazone del vettore N=; N=; N=; N4=; % Inzalzzazone for k=:ntot f U(k)>= & U(k)<5 N=N+; elsef U(k)>=5 & U(k)<5 N=N+; elsef U(k)>=5 & U(k)<75 N=N+; elsef U(k)>=75 & U(k)< N4=N4+; dsp('percentual rlevate'); dsp(' %N %N %N %N4 ') dsp([n/ntot* N/Ntot* N/Ntot* N4/Ntot*])
I ccl possono essere nnestat, uno dentro l altro. for varable = espressone for varable = espressone struzon for k=: for j=: a(j,k)=k*j; >> a a = 4 6 sercz: Creare una matrce untà [5 5] Creare una matrce [5 4] trangolare superore
Controllo d flusso: whle Il cclo whle consente d esegure un blocco d struzon fnchè una determnata espressone rsulta vera. Quando l espressone rsulta falsa, l flusso del programma esce dal cclo. Il cclo whle ha la seguente struttura: whle espressone struzon num=; eps=.; k=; whle eps<num k=k+; a(k)=num; num=num/; >> a a =. 5..5.5.65.5.56
Il comando break Il comando break consente d uscre rapdamente da un cclo for o whle. Se break è presente n un cclo nnestato, esso consente l uscta solo dal cclo nterno. clear all; clc; k=; whle n=nput('scrv un numero= ') f n<, break, k=k+; m(k)=n^; Il cclo contnua fnchè non vene nserto un numero mnore d zero
serczo esempo.m Creare un fle.m con cu valutare l epslon d macchna L epslon d macchna è l numero pù pccolo che sommato ad resttusce un valore maggore d : dà ndcazon sul massmo numero d cfre sgnfcatve In Matlab la costante eps contene l valore dell epslon d macchna eps.4e 6
% sempo n. % Calcolo dell'epslon d macchna nella forma ^-k % pulsco la Command Wndow e cancello le varabl clc; clear all; k=; epslon=; whle ~=+epslon epslon = epslon/; k=k+; % Comnco dal numero ^ % Dmezzo l valore d epslon % Il cclo è eseguto una volta n pù del necessaro % Correggo valor d epslon e d k epslon=epslon* k=k-; % epslon=^-k
sercz ) Creare un fle.m con cu valutare l pù pccolo numero x mn rappresentable n Matlab nella forma ^k x mn è l numero per l quale s ha (x mn /)= ) Creare un fle.m con cu valutare l pù grande numero x max rappresentable n Matlab nella forma ^k x max è l numero per l quale s ha (x max *)=nf
sercz Nel crcuto rsolto n precedenza :.verfcare l PdK al nodo O con un cclo for.verfcare l teorema d Tellegen con un cclo for.verfcare l teorema d Tellegen senza usare ccl + A v O + B v O' + C v
soluzone esercz () % erfca la LKC al nodo O' % N.B. Le ntenstà d corrente sono calcolate tutte % con verso d rfermento entrante nel nodo O' Somma=; % Somma delle corrent nel nodo for k=: Somma=Somma+I(k); 4
soluzone esercz () % erfca del teorema d Tellegen for k=: Pe(k)=(k)*I(k); % Potenze Pe erogate da generator SommaPe=sum(Pe); % Somma delle potenze erogate for k=: (k)=(k)*i(k); % Tensone sul resstore Pa(k)=(k)*I(k); % Potenze Pa assorbte da resstor SommaPa=sum(Pa); % Somma delle potenze assorbte SommaPe-SommaPa % erfca d Tellegen 5
soluzone esercz () % erfca del teorema d Tellegen senza ccl for Pe=.*I; % Potenze Pe erogate da generator SommaPe=sum(Pe); % Somma delle potenze erogate =.*I; % Tensone sul resstore Pa=.*I; % Potenze Pa assorbte da resstor SommaPa=sum(Pa); % Somma delle potenze assorbte SommaPe-SommaPa % erfca d Tellegen 6