Archivio Autore

Sia dato un sistema dinamico lineare stazionario e asintoticamente stabile, con la sua funzione di trasferimento amath G(s) endamath.

Supponiamo di forzare l’ingresso con un segnale sinusoidale a pulsazione specificata, del tipo

amath u(t) = X sin(omega t + phi) => U(s) = {s cos phi - omega sin phi}/{s^2 + omega^2} endamath

Dalla relazione tra funzione di trasferimento e ingresso, applicando lo sviluppo in fratti semplici, abbiamo che:

amath Y(s) = G(s) U(s) = (sum_{i=1}^n {k_i}/{s+p_i}) + {Q}/{s-j omega} + {bar(Q)}/{s + j omega} endamath

Possiamo dire, in parole semplici, che l’uscita è formata da due componenti:

  • Componente amath Y_1(s) endamath, corrispondente ai modi del sistema, destinati a generare una risposta nulla a regime per ipotesi (sistema asintoticamente stabile).
  • Componente amath Y_2(s) endamath, corrispondente ai modi forzanti applicati al sistema.

Determiniamo ora, sfruttando i teoremi sui residui, il valore di Q e del suo complesso coniugato.

amath Q = [(s - j omega) G(s) {s cos phi - omega sin phi}/{s^2 + omega^2} ]_{s = j omega} =

= X G(j omega) {j omega cos phi - omega sin phi}/{j omega + j omega}=

= X G(j omega) (1/2 cos phi - 1 / {2j} sin phi) = endamath

Applicando ora le relazioni di Eulero si ha

amath Q = X G(j omega) (1/2 {e^{j phi} + e^{-j phi}}/2 - 1 / {2j} {e^{j phi} - e^{-j phi}}/{2j}) =

= 1/4 X G(j omega) 2 e^{j phi} =

=1/2 X G(j omega) e^{j phi} endamath

La funzione amath G(j omega) è complessa di variabile complessa, pertanto rappresentabile nella sua forma esponenziale:

amath = G(j omega) = |G(j omega)| e^{j /_G(j omega)} endamath

Utilizzando questa notazione, riscriviamo il valore di Q.

amath Q = 1/2 X |G(j omega)| e^{j /_(G(j omega))} e^{j phi} =

= 1/2 X |G(j omega)| e^{j (phi + /_G(j omega))} endamath

Il numero Q è quindi complesso, caratterizzato da:

  • Modulo: amath 1/2 X |G(j omega)| endamath
  • Fase: amath phi + /_G(j omega) endamath

A questo punto è immediato, antitrasformando l’espressione dell’uscita, ricavare

amath y_2(t) = 2 |Q| cos (omega t + /_Q) =

= 2 1/2 X |G(j omega)| cos (omega t + phi + /_G(j omega)) =

= Y(omega) cos (omega t + phi(omega)) endamath

Come si nota, quindi, sull’uscita si presenta un segnale temporale di tipo periodico, che non si estingue nel tempo come le componenti asintoticamente stabili già descritte in precedenza. Il sistema continuerà quindi a presentare, sull’uscita, un segnale periodico di frequenza amath 1/omega endamath. Essendo tutti gli altri contribuiti destinati ad esaurirsi nel tempo (per l’ipotesi di asintotica stabilità), possiamo affermare che, terminato il transitorio, l’andamento a regime del sistema sarà proprio di tipo sinusoidale.

Questo importante risultato permette di formulare immediatamente il teorema del regime permanente:

Un sistema dinamico lineare, tempo invariante ed asintoticamente stabile, soggetto ad un’eccitazione sinusoidale, presenta, a regime, un’uscita sinusoidale di frequenza uguale a quella del segnale d’ingresso.

Vogliamo ora definire una funzione complessa, di variabile reale, che contenga al suo interno informazioni relative a quanto il segnale di ingresso viene amplificato/attenuato e di quanto sfasato. Risulta quindi intuitiva la definizione della seguente funzione di risposta armonica:

amath F(omega) = {Y(omega)}/X e^{j (phi(omega) - phi} endamath

In cui:

  • amath X endamath rappresenta il modulo del segnale in ingresso
  • amath phi endamath rappresenta la fase del segnale di ingresso
  • amath Y(omega) endamath e amath phi(omega) endamath rappresentano le funzioni sovra definite e dipendono, in generale, sia dalle caratteristiche del sistema che da quelle della forzante

Sviluppando i calcoli, si ottiene l’importante relazione tra funzione di trasferimento e funzione di risposta armonica.

amath F(omega) = {Y(omega)}/X e^{j (phi(omega) - phi} =

= {X |G(j omega)|}/X e^ {j (phi + /_G(j omega) - phi} =

= |G(j omega)| e^{j /_G(j omega)} =

= G(j omega) endamath

L’importante conclusione è dunque la seguente:

Sussiste una relazione di equivalenza tra funzione di trasferimento e funzione di risposta armonica. In particolare, si ha che amath F (omega) = G(j omega) endamath.

La seguente relazione è molto importante, poiché permette di analizzare le prestazioni di un sistema partendo da un’analisi sperimentale. Infatti la funzione di risposta armonica, per come è stata definita, si presta molto bene ad una determinazione sperimentale, come descritto di seguito.

Si supponga di avere un sistema (dinamico, lineare, stazionario, asintoticamente stabile) e di forzarlo con un segnale sinusoidale ad ampiezza e fase fissati e frequenza variabile. Terminato il transitorio, come detto, l’uscita avrà andamento sinusoidale con la stessa frequenza del segnale di ingresso. Misurando quindi ampiezza e fase dell’uscita, e registrandone i valori opportunamente modificati (l’ampiezza deve essere divisa per quella del segnale di ingresso ed alla fase deve essere sottratta quella del segnale d’ingresso), sarà possibile tracciare un diagramma approssimato sia del modulo che della fase della funzione di risposta armonica. Mediante tecniche di interpolazione, poi, sarà possibile determinarne l’espressione analitica e, attraverso diverse tecniche, anche l’espressione della corrispondente funzione di trasferimento.

Comments 1 Commento »

Sia dato un sistema dinamico lineare tempo invariante, dotato di funzione di trasferimento G(s). Trascuriamo per ipotesi il caso di presenza di stato iniziale diverso da zero, riferendoci quindi sempre a situazioni del tipo

amath Y(s) = G(s) * U(s) endamath

Dove

  • Y(s) rappresenta l’uscita
  • G(s) rappresenza la funzione di trasferimento
  • U(s) rappresenza l’ingresso

La trattazione farà inoltre riferimento a sistemi di tipo SISO (Single - Input, Single - Output), ma è naturale ed immediato estenderla a sistemi MIMO.

Altro requisito importante per lo studio di questa proprietà è l’asintotica stabilità esterna del sistema, che viene tradotta, normalmente, nella condizione che i poli della funzione di trasferimento siano tutti a parte reale negativa.

La proprietà bloccante degli zeri afferma che modi forzanti coincidenti con zeri della funzione di trasferimento non hanno effetti sull’andamento asintotico del sistema.

Per chiarire meglio, si supponga di avere un sistema caratterizzato da:

amath G(s) = {s^2+omega_i^2}/{s+2} endamath

e che si ponga al suo ingresso un segnale sinusoidale elementare, del tipo

amath u(t) = sin(omega_u t) => U(s) = {omega_u^2}/{s^2 + omega_u^2} endamath

Distinguiamo allora due casi:

  • amath w_i != w_u endamath
  • amath w_i = w_u endamath

Il secondo caso è di particolare interesse, poiché avviene una semplificazione tra il denominatore della forzante e il numeratore della funzione di trasferimento:

amath Y(s) = G(s)*U(s) = {s^2+omega^2}/{s+2} * {omega^2}/{s^2 + omega^2} = {omega^2}/{s+2} endamath

E’ facile calcolare quindi l’uscita nel dominio temporale:

amath y(t) = L^{-1}[Y(s)] = L^{-1}[{omega^2}/{s+2}] = omega^2 e^(-2t) endamath

L’uscita, a regime, sarà quindi nulla. Come si vede, quindi, la presenza di una forzante su un sistema di per sé asintoticamente stabile non porta ad alcuna modifica dello stesso. La forzante non ha effetti a regime.

Ancora più interessante è il caso di analisi della proprietà bloccante degli zeri nel dominio delle frequenze. In questo caso, la coppia di zeri complessi coniugati genera una risposta in ampiezza con un picco di amath -oo d B endamath in corrispondenza della pulsazione amath omega endamath.

Bode

Bode

Questa proprietà ha un’interessante conseguenza: l’utilizzo, come forzante, di un’armonica a pulsazione amath omega endamath genera un’uscita a pulsazione nulla (attenuazione totale). Infatti, si ha che

amath|G(j omega)| = -oo d B => 20 log |G(j omega)| = -oo => |G(j omega)| = 0 endamath

Pertanto, rappresentando il modulo della funzione di trasferimento il fattore di amplificazione o attenuazione dell’uscita, abbiamo un’armonica nulla in corrispondenza di tale pulsazione.

Comments Nessun Commento »

Il nostro intento è creare un programma ed implementarlo in linguaggio Assembly 8086, che stampi a schermo un orologio digitale. Inizialmente il valore sarà sincronizzato con l’orologio di sistema, in seguito la modifica avverrà attraverso la gestione del TIC.

Leggi il resto di questo articolo »

Comments Nessun Commento »

Testo del problema

Dati due byte residenti in memoria, depositare in una terza locazione la loro somma.

Analisi del problema

Per sommare due byte non abbiamo alcun tipo di problema dal punto di vista hardware: essendo il processore 8086 dotato di un circuito interno per la somma aritmetica, possiamo tranquillamente utilizzare le rispettive istruzioni per eseguire la somma.
L’unico problema a cui dobbiamo prestare sufficiente attenzione è quello relativo all’eventuale overflow: eseguendo la somma tra due byte, infatti, è possibile che questo risultato non sia contenibile in un byte, ma sia invece necessaria una word. In realtà, trattandosi di due soli byte, basterebbero 1 byte più un eventuale bit per il riporto finale, ma ragionando dal punto di vista software, l’elemento di definizione dato minimo dopo il byte è la word (2 byte).

Leggi il resto di questo articolo »

Comments Nessun Commento »

Una delle strutture fondamentali di tutta la programmazione è l’albero. Esiste un particolare tipo di albero, detto binario, che per le sue particolari proprietà si presta molto bene ad alcuni tipi di operazioni, quali l’analisi di espressioni matematiche o la ricerca dicotomica.
Particolari tipi di alberi binari sono utilizzati come nuovi tipi di strutture dati, particolarmente ottimizzati per operazioni di ricerca o ordinamento: è il caso degli heap, degli alberi di ricerca e così via.
In questo fascicolo analizzeremo tutti gli algoritmi basilari per la gestione di un albero binario, partendo dalle definizioni e ragionando su ogni algoritmo.
Il linguaggio scelto per la stesura dei programmi è il C++, anche se in realtà saranno utilizzati concetti del tutto compatibili con il C. E’ da sottolineare, tuttavia, che il codice è compilabile in ANSI C++, per la compilazione in C saranno necessarie alcune modifiche. Quindi quando vedete scritto [C/C++] non significa che il codice è compilabile in C, ma solo che la sintassi utilizzata non prevede elementi proprietari del C++, quali classi, template, reference e così via.
Naturalmente questo fascicolo è dedicato esclusivamente alla parte relativa all’albero binario come struttura dati, quindi tutti i discorsi relativi alla sintassi del linguaggio adottato sono dati per scontati. In particolare, è bene avere buona padronanza delle strutture, dei puntatori e delle funzioni ricorsive, anche se quest’ultimo punto è presente una piccola digressione.
Non c’è altro da dire: buona lettura e buona programmazione.

Leggi il resto di questo articolo »

Comments Nessun Commento »

Dopo tanto tempo lontano dall’informatica e dalle scienze, ho pensato fosse il caso di dare una spolveratina ai miei vecchi lavori e mettere su il nuovo portfolio. Dopo diverse meditazioni, ho deciso di buttarmi su WordPress, lo stesso sistema che già uso per Volley World. Le motivazioni sono molteplici, ma partono tutte dal presupposto che ormai, con tutti gli standard esistenti e tutte le buone regole di programmazione ed accessibilità, ritengo non sia più conveniente creare un sito standard da zero.

Mi spiego: se non ho esigenze particolari (come può essere, per l’appunto, il caso di un portfolio), creare un sito da zero richiede oggi molto più tempo di quanto ne richiedeva una decina di anni fa. Allora bastava aprire il proprio editor preferito, inserire due o tre tabelle, qualche gif animata e tutto era pronto. Adesso bisogna rispettare gli standard, è consigliabile utilizzare fogli di stile, bisogna validare il codice, provarlo con diversi browser e diverse versioni. In più, per dare un senso a ciò che si sta facendo, è bene non trascurare le regole per la reperibilità dei motori di ricerca, sfruttare sistemi XML (quali possono essere i feed RSS e le SiteMap) e, insomma, avere la voglia e il tempo di creare un progetto solido e robusto. Non dimentichiamo, infine, l’importanza basilare dell’utilizzo “sensato” di linguaggi lato server e database, che fanno crescere esponenzialmente la complessità dei propri problemi (si pensi, banalmente, ad un sito web gestito da 2-3 persone, che richiede quindi la creazione di un pannello amministrativo con, magari, tre livelli di accesso). Orbene, ce n’è davvero l’esigenza? L’utente moderno cerca il contenuto o il sito fatto in casa? Sinceramente, credo che ormai non sia più così divertente e fruttifero creare un sito web standard da zero. I CMS esistono e hanno successo proprio per questo motivo.

Si pongono poi problemi etici e egocentristi, del tipo: “I CMS li usa chi non sa fare i siti, io che sono capace me lo faccio da solo“. Ma il punto di riflessione è sempre lo stesso: ce n’è veramente il bisogno? All’utente interessa veramente? E’ lo stesso spirito con cui, ad oggi, non conviene più riscriversi le proprie funzioni, all’interno di un programma, da soli. Se esistono e sono disponibili, utilizziamole! Non è forse questa la filosofia dei recenti linguaggi di progrmamazione, quali Java o C#?

Siamo quindi al punto cruciale: esistono ancora siti che vale la pena programmare? La risposta è sì. Ma con cautela. Nel senso, io mi metto a scrivere codice da zero solo quando sono sicuro che ciò che sto facendo è veramente innovativo. E’ questo il succo di tutto. Io studio, raccolgo materiale, riutilizzo codice degli altri al puro scopo di innovare. L’innovazione è, a mio avviso, il vero step che serve all’informatica. Lavorare su progetti nuovi ed interessanti. Ad esempio, lavoro da più di un anno ad un sito web (che andrebbe definito come Web-Application) per allenatori di pallavolo, il Volley Coaching System. Valeva la pena programmarlo da zero? Certamente! Perché, banalmente, tutto ciò che è quel progetto non esiste altrove.

Fatte queste premesse, ripartiamo: nei prossimi giorni, settimane, mesi, tenterò di ripristinare il vecchio materiale e di inserirne di nuovo. Nel frattempo, buona navigazione.

Comments 1 Commento »

FireStats iconPowered by FireStats