[Teoria dei sistemi] Come faccio a calcolare con Matlab risultato di un esercizio di sistemi?

Messaggioda MrChopin » 02/11/2019, 21:06

Salve a tutti vi volevo, non sono molto esperto ne del mondo Matlab ne di quello Simulink, ma vorrei conoscere il più possibile di questo mondo. Fino ad ora ciò che sono stato in grado di fare e riuscire a calcolarmi graficamente gli andamenti delle risposte di alcuni problemi di teoria dei sistemi. Ma volevo riuscire a migliorarmi e volevo capire se ci fosse un modo, tramite Matlab/Simulink, per ottenere il risultato di questi tipi di problemi oltre che graficamente anche il risultato in termini di funzioni, cioè le funzioni che sono associate al grafico e che quindi rappresentino il grafico. Potreste darmi una mano?

Metto sotto un problema che in parte ho risolto ma mi manca il risultato analitico del problema.

L'esercizio mi chiede di calcolare per la seguente f.d.t:

$ G(s)=-10(s^(2)+400)/(s^(3)+22s^(2)+22s+K) $

1) I valori di K per cui esso è asintoticamente stabile, ed il valore di $ K=K_(1) $ per cui esso ha un polo in $ s=-1 $ e per questo valore tracciare i diagrammi di Bode e fornire la stima della banda passante.

Visto che il polinomio è di terzo grado applico routh ottengo:

$ | ( 1 , 41 ),( 22 , K ),( (K-902)/-22 , 0 ),( K , 0 ) | $ $ =>0<K<902$

Dove

$ b_(1)=| ( 1 , 41 ),( 22 , K ) | /(-22)=(K-902)/-22 $

$ c_(1)=| ( 22 , K),( (K-902)/-22, 0) |/((K-902)/-22)=K $

Prima domanda: Come faccio a fare il calcolo di routh tramite matlab?

Ho provato usando questo algoritmo, vorrei capire ho sbagliato a calcolarmelo oppure a programmare?
>> syms K
>> p3=[1 22 41 K]

p3 =

[ 1, 22, 41, K]

>> p4=roots(p3)

p4 = 361/(9*(((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)) + (((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3) - 22/3
- (3^(1/2)*(361/(9*(((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)) - (((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3))*1i)/2 - 361/(18*(((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)) - (((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)/2 - 22/3
(3^(1/2)*(361/(9*(((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)) - (((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3))*1i)/2 - 361/(18*(((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)) - (((K/2 + 6589/27)^2 - 47045881/729)^(1/2) - K/2 - 6589/27)^(1/3)/2 - 22/3

Per quanto riguarda i diagrammi grafici come quelli di Bode e nyquist sono riuscito a farli non ho avuto difficoltà.

2) Calcolare la risposta al segnale $ u(t)=tdelta_(-1)(t-5)+ 2 sen(3t)+delta_(-1)(-t) $

Ho considerato per:

- $ t=<0 $ che il gradino riflesso, che parte da $ 0 $ a va a $ -oo $ si somma al seno gli fa aumentare l'ampiezza e quindi ottengo il segnale $ 3 sen(3t) $,
- $ 0=<t=<5 $ c'è solo come ingresso il $ 2 sen(3t) $
- $ t=>5 $ $ u(t)=tdelta_(-1)(t-5)+ 2 sen(3t) $ si sommano solo questi due segnali

Credo di trovarmi con matlab con il mio ragionamento:

Immagine

- $ t=<0 $ ho calcolato la risposta in frequenza di $ 3 sen(3t) $

$ y_(sen)(t)= |G(jomega_(0))|U_(0)sin(omega_(0)t+ /_G(3jomega_(0))) =57.99sen(3t+0.50) $

- $ 0=<t=<5 $ c'è solo come ingresso il $ 2 sen(3t) $

$ y_(sen)(t)= |G(jomega_(0))|U_(0)sin(omega_(0)t+ /_G(jomega_(0))) =38.66sen(3t+0.50) $


- $ t=>5 $ $ u(t)=tdelta_(-1)(t-5)+ 2 sen(3t) $ si sommano le due risposte:

La prima già l'ho calcolata: $ y_(sen)(t)=38.66sen(3t+0.50) $

La seconda è la risposta al gradino e la calcolo trasformando $ u(t)=tdelta_(-1)(t-5) = (t-5)delta_(-1)(t-5) + 5delta_(-1)(t-5)$ ottenendo: $ U(s)=[1/s^(2)+1/s]_(t=t-5) = [U_(1)(s)+U_(2)(s)]_(t=t-5)$

$ y_(g)(t)= L^(-1)[W(s)U_(1)(s)+W(s)U_(2)(s)]_(t=t-5)=L^(-1)[Y_(A)(s)+Y_(B)(s)]_(t=t-5)$

$ y_(A)(t)=e^(-5t)delta_(-1)(t)(-200-410t-0.05e^(-20t)-211.05e^(-t)+410.06te^(-t)) $

$ y_(B)(t)=e^(-5t)delta_(-1)(t)(-1000+5.54e^(-20t)+1055.26e^(-t)+94.46te^(-t)) $

Risposta totale:

$ y(t)={ ( 57.99sen(3t+0.50)| t<=0 ),(),( 38.66sen(3t+0.50)| 0<=t<=5 ),(),( e^(-5t)delta_(-1)(t)[-1200-410t-5.49e^(-20t)+e^(-t)(-8044.21+504.52t)]|t>=5 ):} $

Questo è il sistema fatto in simulink e la sua risposta:
Immagine
Immagine

Seconda domanda: Vorrei confrontare il mio risultato con matlab, come faccio a far calcolare a Matlab/Simulink la risposta $ y(t) $ del mio sistema al segnale? Quindi come faccio ad avere la mia risposta al sistema in termini di funzioni e non di grafici? Mi genererebbe mai una risposta così matlab:
.
$ y(t)={ ( 57.99sen(3t+0.50)| t<=0 ),(),( 38.66sen(3t+0.50)| 0<=t<=5 ),(),( e^(-5t)delta_(-1)(t)[-1200-410t-5.49e^(-20t)+e^(-t)(-8044.21+504.52t)]|t>=5 ):} $
MrChopin
New Member
New Member
 
Messaggio: 60 di 63
Iscritto il: 14/10/2016, 16:54

Re: [Teoria dei sistemi] Come faccio a calcolare con Matlab risultato di un esercizio di sistemi?

Messaggioda Quinzio » 09/11/2019, 20:35

Prima domanda: Come faccio a fare il calcolo di routh tramite matlab?


Ad esempio cercando su Google "routh matlab" e cliccando sul primo link che vedi.
Quinzio
Cannot live without
Cannot live without
 
Messaggio: 4361 di 4423
Iscritto il: 24/08/2010, 06:50


Torna a Ingegneria

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti