© 2020, antonio sala piqueras, universitat politècnica de
Post on 28-Jun-2022
2 Views
Preview:
TRANSCRIPT
Normas de sistemas dinámicos: norma (ejemplo Matlab)© 2020, Antonio Sala Piqueras, Universitat Politècnica de València. Todos los derechos reservados.
Este código ejecutó correctamente con Matlab R2020a
Objetivo: Comprobar la equivalencia entre diferentes definiciones de la norma de un sistema lineal.
Tabla de Contenidos
1.- Ejemplo Monovariable........................................................................................................................................ 11.1- Interpretación "frecuencial"...........................................................................................................................11.2- Interpretación temporal (ganancia máxima).................................................................................................3
2.- Ejemplo Multivariable..........................................................................................................................................42.1- Interpretación "frecuencial"....................................................................................................................... 52.2- Interpretación temporal (ganancia máxima)............................................................................................. 5
1.- Ejemplo Monovariable
s=tf('s');G=6/(s^2+s+9); %ejemplo monovariablev_2=norm(G,2) %calculamos la norma 2, sólo por curiosidad
v_2 = 1.4142
[v_inf,f_pico]=norm(G,inf)
v_inf = 2.0284f_pico = 2.9147
Obviamente, el valor de la norma infinito no tiene nada que ver con la norma 2.
1.1- Interpretación "frecuencial"
Como pico de la magnitud de resp. en frecuencia:
w=logspace(-2,1.3,1000);fr=abs(freqresp(G,w));max(fr)
ans = 2.0283
f2=reshape(fr,1,1000);plot(w, f2), grid on, title("Respuesta en frecuencia (no logarítmica)"),xlabel("freq. (rad/s)"); yline(v_inf,'-.r','LineWidth',4); xline(f_pico,'-.k');legend('Resp. frec. G(j\omega)','Máximo')
1
En escala logarítmica:
norma_inf_dB=20*log10(v_inf)
norma_inf_dB = 6.1429
bodemag(G,tf(v_inf),w),grid on,xline(f_pico,'-.')
2
abs(evalfr(G,f_pico*1j))
ans = 2.0284
1.2- Interpretación temporal (ganancia máxima)
T=0.02; Time_simul=0:T:175;Nmuestras=length(Time_simul);u=sin(f_pico*Time_simul); %se aproxima a ganancia máxima%u=sin(f_pico*12*sqrt(10+Time_simul)); %no tiene ganancia máximau(8000:end)=0;y=lsim(G,u,Time_simul); plot(Time_simul,[y u']), grid on, legend('y','u'), axis tight
3
Aproximaremos usando la integral numérica (trapecio), e idem con la entrada:
tamanyo_y=sqrt(trapz(Time_simul,y.^2))
tamanyo_y = 18.0203
tamanyo_u=sqrt(trapz(Time_simul,u.^2))
tamanyo_u = 8.9411
gan_simulada=tamanyo_y/tamanyo_u
gan_simulada = 2.0155
2.- Ejemplo Multivariable
G=[1/(s+1) -5/(s+2)^2; ... 5/(s+1)/(s^2+0.25*s+2) 6*(0.2*s+1)/(s^2+0.4*s+4)^2];
La norma , y la frecuencia a la que se produce, valen:
[v_inf,f_pico]=norm(G,inf)
v_inf = 10.2688f_pico = 1.9806
4
2.1- Interpretación "frecuencial"
norma_inf_dB=20*log10(v_inf)
norma_inf_dB = 20.2304
sigmaplot(G,tf(v_inf),w), grid onxline(f_pico,'-.k')legend('Resp. frec. \sigma_M(G(j\omega)), \sigma_m(G(j\omega))','Máximo','Location','best')
La matriz de respuesta en frecuencia a la frecuencia del pico es:
Gjw=evalfr(G,f_pico*1j)
Gjw = 2×2 complex 0.2031 - 0.4023i -0.0062 + 0.6311i -0.7481 + 0.8536i -8.5670 - 5.5090i
Y su máximo valor singular es, en efecto, la norma infinito.
[U,S,V]=svd(Gjw);diag(S)'
ans = 1×2 10.2688 0.4309
2.2- Interpretación temporal (ganancia máxima)
Construyamos la amplitud (módulo) y desfase (argumento) de la dirección de entrada que produce la ganancia
máxima:
5
V %estas son las direcciones de "entrada" (complejas)
V = 2×2 complex -0.1114 + 0.0000i 0.9938 + 0.0000i -0.1238 + 0.9860i -0.0139 + 0.1105i
peor_mag=abs(V(:,1))
peor_mag = 2×1 0.1114 0.9938
peor_desfase=angle(V(:,1))
peor_desfase = 2×1 3.1416 1.6957
T = 0.01; Time_simul = 0:T:4000;u = diag(peor_mag) * sin( f_pico * Time_simul + peor_desfase );plot(Time_simul(1:2500),u(:,1:2500)), grid onlegend("u_1", "u_2"), title('Entrada peor caso (25s)')
y=lsim(G,u,Time_simul)';plot(Time_simul(1:5000),y(1,1:5000),"Color",[.1 1 .6]);hold onplot(Time_simul(1:5000), y(2,1:5000),"Color",[.6 .4 .25]), grid on, hold offlegend("y_1", "y_2"), title('Salida ante entrada peor caso (50 s)')
6
Aproximaremos usando la integral numérica (método trapecio), idem con la entrada:
tamanyo_y=sqrt(trapz(Time_simul,y(1,:).^2+y(2,:).^2))
tamanyo_y = 458.4442
tamanyo_u=sqrt(trapz(Time_simul,u(1,:).^2+u(2,:).^2))
tamanyo_u = 44.7198
La suma de los cuadrados de las dos salidas en todos los instantes
tamanyo_y/tamanyo_u
ans = 10.2515
7
top related