Wednesday, October 13, 2010

Συνέλιξη στο Mathematica 7

Αφού μετά από προσπάθεια κατάφερα να λύσω κάποιες ασκήσεις της πολυσυζητιμένης συνέλιξης ήρθε η ώρα να ελέγξω αν τα αποτελέσματά μου ήταν σωστά.Για κακή μου (όπως αποδείχτηκε όχι και τόσο) τύχη το βιβλίο δεν διαθέτει λύσεις... Συνεπώς έπρεπε να βρώ άλλο τρόπο ώστε να επαληθεύσω τις ασκήσεις. Αυτή η ανάγκη αποτέλεσε την πρώτη μου γνωριμία με το πρόγραμμα συμβολικής άλγεβρας Mathematica 7 στο οποίο εν τέλη έλεγξα και τα αποτελέσματά μου.


Παρακάτω παρουσιάζεται ένας τρόπος επίλυσης ενός παραδείγματος συνέλιξης δύο σημάτων, στο Mathematica.


Έστω ένα απλό παράδειγμα που μπορούμε να υπολογίσουμε εύκολα και με το χέρι.

Σήμα εισόδου : x( t ) = u( t - 3) - u( t - 7 )
Κρουστική Απόκριση συστήματος : h( t ) = u(t+2)-u(t-1)

Αρχικά πρέπει να ορίσουμε τις συναρτήσεις μας. Αυτό γίνεται με τις εξής εντολές:

     x[t_] := UnitStep[t - 3] - UnitStep[t - 7];

Σημειώσεις
  •  Η ανάθεση γίνεται με  := .
  •  Η μεταβλητή της συνάρτησης στην δήλωσή της πρέπει να έχει και κάτω παύλα (underscore).  Με αυτό τον τρόπο δηλώνεται ότι το t είναι η ανεξάρτητη μεταβλητή της συνάρτησης.
    • x[ t_ ] , σωστό
    • x[ t ] , λάθος.
  •  Η UnitStep[] είναι η βηματική συνάρτηση στο Mathematica.
  •  Η εντολές είναι case sensitive, πράγμα που σημαίνει ότι UnitStep, unitStep, unitstep,UnItStEp είναι 4 διαφορετικές μεταβλητές , και μόνο για την πρώτη το Mathematica θα καταλάβει την βηματική συνάρτηση.
Αφού γράψουμε τον κώδικα που ορίζει την συνάρτηση την εκτελούμε με
Shift + Enter .

Για να κάνουμε τώρα την γραφική παράσταση της συνάρτησης μας δίνουμε την εντολή :
  
    Plot[ x[t], {t, -1, 8}, PlotRange -> {0, 3}, Filling -> Axis ] 
     (Shift + Enter)

x(t) = u(t-3)-u(t-7)

  • Το πρώτο όρισμα είναι η συνάρτησή μας. (εδώ x[t] )
  • Το δεύτερο είναι ως προς ποιά μεταβλητή θα γίνει η γραφική παράσταση, και μεταξύ ποιών ορίων θα την υπολογίσουμε. Εδώ ως προς την μεταβλητή t και θα την υπολογίσουμε μεταξύ -1 και 8. {t,-1,8}
Τρίτο και το τέταρτο όρισμα έιναι προεραιτικά. Μπορούμε να κάνουμε τη γραφική παράσταση και χορίς αυτά. Η σειρά σε αυτά δε παίζει ρόλο.

Σημειώσεις
  •   PlotRange->{ min, max } , καθορίζει μέχρι τί τιμές θα δείχνει ο άξονας y.
  •   Filling ->Axis, σκιαγραφεί το πεδίο μεταξύ της x(t) και του άξονα των χ, για καλύτερη εποπτική κατανόηση.

Ακολουθώντας ακόμα μια φορά τα ίδια βήματα ορίζουμε και την h(t).

     h[ t_ ] := UnitStep[ t + 2 ] - UnitStep[ t - 1 ];
     Plot[ h[t], {t, -4, 4}, PlotRange -> {0, 3}, Filling -> Axis ]

h(t)=u(t+2)-u(t-1) 


Για να δούμε την καθρεπτισμένη ως προς τον άξονα χ, h(t) , δηλαδή την h(-t).
Εκτελούμε
h(-t)      

Για να δούμε τις x(t) και h(-t) που χρειάζονται για την συνέλιξη δίνουμε την εντολή:

     Plot[ {h[-t], x[t]}, {t, -2, 8}, PlotRange -> {0, 3}, Filling -> Axis ]

Σημειώση
Τώρα που θέλουμε να κάνουμε τη γραφική παράσταση πολλών συναρτήσεων, το πρώτο όρισμα είναι η λίστα των συναρτήσεων που δίνεται ώς εξής: {x1[t],x2[t],...xn[t]}, στην περίπτωσή μας έχουμε τις { h[-t], x[t] }.Τα υπόλοιπα παραμένου ίδια.

Ορίσαμε τις συναρτήσεις, κάναμε και τις γραφικές παραστάσεις, καιρός να προχωρίσουμε στη συνέλιξη που μας ενδιαφέρει.

Η συνέλιξη δύο συναρτίσεων υπολογίζεται με την συνάρτηση Convolve .

  y[ s_ ] := Convolve[ x[t],h[t],t,s ]

τα πρώτα δύο ορίσματα είναι οι συναρτήσεις των οποίων θα υπολογίσουμε την συνέλιξη. Το τρίτο όρισμα είναι η μεταβλητή ως προς την οποία ολοκληρώνουμε και το τέταρτο η ανεξάρτητη μεταβλητή της συνέλιξης.

Επιδή θέλουμε το αποτέλεσμα της συνέλιξης (το οποίο θα είναι μία συνάρτηση) να το αναθέσουμε στην y(t), κάνουμε και την δήλωση/ανάθεση συνάρτησης
y[ s_ ].

Το αποτέλεσμα που παίρνουμε είναι

y[ s ] ->
   (-8 + s) UnitStep[-8 + s] - (-5 + s) UnitStep[-5 + s] - (-4 + s) UnitStep[-4 + s] +(-1 + s) UnitStep[-1 + s]

Το οποίο ίσως εκ πρώτης όψεως φανεί κάπως ακαταλαβίστικο. Συνεπώς κάνουμε τη γραφική παράσταση για να δούμε τι ακριβώς έχουμε.

 Plot[y[s], {s, -1, 11}, PlotRange -> {0, 4}, Filling -> Axis ]

y(t) = x(t)*h(t)

Τελικά παρατηρούμε ότι είναι μια απλή συνάρτηση , και της μορφής που περιμέναμε εφόσων έχουμε δύο παλμούς.

Και τί μάθαμε?
Μάθαμε να ορίζουμε μιά συνάρτηση, να κάνουμε τη γραφική της παράσταση και με 3 μόνο εντολές να βρίσκουμε και την συνέλιξη δύο σημάτων.