Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Mathematica: Simplifying a feedback system

  1. Nov 23, 2013 #1

    I have given a complex feedback system in z domain like:

    Y = 2*W2 + E
    W2 = z^-1/(1-z^-1) * (W1 + (1-z^-1)*W2 - 1/2*(1-z^-1)*Y)
    W1 = V - Y + z^-1/(1-z^-1) * 1/2 * (V - Y)

    where Y is the system output, V is the system input, W1 and W2 are intermediate nodes and E is an error input

    I and want to get an expression like

    Y(z) = E(z)*(...) + X(z)*(...)

    i.e., the system output as a sum of the error input and the input. Alternatively: signal transfer function and error transfer function.

    Just defining the terms as above and using Solve[] or so is not really successful.

    Anyone a hint how to do that?

  2. jcsd
  3. Nov 24, 2013 #2


    User Avatar
    Gold Member

    Does this get what you want?:

    Code (Text):

    Solve[{Y == 2*W2 + e, W2 == z^(-1)/(1 - z^(-1))*(W1 + (1 - z^(-1))*W2 - 1/2*(1 - z^(-1))*Y),
       W1 == V - Y + z^(-1)/(1 - z^(-1))*1/2*(V - Y)}, {Y, W1, W2}];

    Collect[Expand[%], e, Simplify]
    Gives : (where I use little "e" as E, since E is the Exp[1] exponential.

    Y\to \frac{e (-1+z)^3}{z^3}+\frac{V (-1+2 z)}{z^2}
  4. Nov 24, 2013 #3
    Woow! Thanks a lot.
    It doesn't match with my hand calculations :-( - buts that's the reason I wanted to check it.

    So the key here is to supply Solve[] a list of the indendent set of equations and a list of all inter connected variables?
  5. Nov 25, 2013 #4


    User Avatar
    Gold Member

    You need to supply it with N equations and solve for N independent variables. I don't know if i put in enough assumptions to let MM know if z was compelx or not, of it it just assumes it.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook