home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / gp371os2.zip / demo / multiplt.dem < prev    next >
Text File  |  1998-04-15  |  3KB  |  136 lines

  1. #   GNUPLOT v3.6 beta multiplot script file
  2. #
  3. # Second Order System Characteristics
  4. #
  5. #       D**2 + 2*zeta*wn*D + (wn**2)y = (wn**2)*x
  6. #
  7. #   x           input variable
  8. #   y           output variable
  9. #   w           frequency ratio (w/wn)
  10. #   wn          natural frequency
  11. #   wd          damped natural frequency
  12. #   zeta        damping ratio 
  13. #   mag(w)      amplitude response
  14. #   phi(w)      phase response
  15. #   wdwn        damped natural frequency ratio
  16. #   wnt         normalized time
  17. #
  18. #   Plots:
  19. #   Frequency domain    magnitude response
  20. #                           phase response
  21. #
  22. #   Time domain         unit step response
  23. #                       unit impulse response
  24. #
  25. #
  26. # Created by: W. D. Kirby email: wdkirby@ix.netcom.com 
  27. # Date: 1/18/96
  28. # Released to the public domain with no warranty of any kind
  29. #
  30. reset
  31. set function style lines
  32. set size 1.0, 1.0
  33. set origin 0.0, 0.0
  34. set multiplot
  35. set size 0.5,0.5
  36. set origin 0.0,0.5
  37. set grid
  38. set nokey
  39. set angles radians
  40. set samples 250
  41. #  Plot Magnitude Response
  42. set title "Second Order System Transfer Function - Magnitude"
  43. mag(w) = -10*log10( (1-w**2)**2 + 4*(zeta*w)**2)
  44. set dummy w
  45. set logscale x
  46. set xlabel "Frequency (w/wn)"
  47. set ylabel "Magnitude (dB)" 1,0
  48. set label 1 "Damping =.1,.2,.3,.4,.5,.707,1.0,2.0" at .14,17
  49. set xrange [.1:10]
  50. set yrange [-40:20]
  51. plot \
  52.   zeta=.1,mag(w), \
  53.   zeta=.2,mag(w), \
  54.   zeta=.3,mag(w), \
  55.   zeta=.4,mag(w), \
  56.   zeta=.5,mag(w), \
  57.   zeta=.707,mag(w), \
  58.   zeta=1.0,mag(w), \
  59.   zeta=2.0,mag(w),-6
  60. #  Plot Phase Response
  61. set size 0.5,0.5
  62. set origin 0.0,0.0
  63. set title "Second Order System Transfer Function - Phase"
  64. set label 1 ""
  65. set ylabel "Phase (deg)" 1,0
  66. set ytics -180, 30, 0 
  67. set yrange [-180:0]
  68. tmp(w) = (-180/pi)*atan( 2*zeta*w/(1-w**2) )
  69. # Fix for atan function wrap problem
  70. tmp1(w)= w<1?tmp(w):(tmp(w)-180)
  71. phi(w)=zeta==1?(-2*(180/pi)*atan(w)):tmp1(w)
  72. plot \
  73.   zeta=.1,phi(w), \
  74.   zeta=.2,phi(w), \
  75.   zeta=.3,phi(w), \
  76.   zeta=.4,phi(w), \
  77.   zeta=.5,phi(w), \
  78.   zeta=.707,phi(w), \
  79.   zeta=1,phi(w), \
  80.   zeta=2.0,phi(w), \
  81.   -90
  82. #  Plot Step Response
  83. set size 0.5,0.5
  84. set origin 0.5,0.5
  85. set dummy wnt
  86. set nologscale x
  87. set title "Second Order System - Unit Step Response"
  88. set ylabel "Amplitude y(wnt)" 1,0 
  89. set xlabel "Normalized Time (wnt)"
  90. set xrange [0:20]
  91. set xtics 0,5,20
  92. set yrange [0:2.0]
  93. set ytics 0, .5, 2.0
  94. set mytics 5
  95. set mxtics 10
  96. wdwn(zeta)=sqrt(1-zeta**2)
  97. shift(zeta) = atan(wdwn(zeta)/zeta)
  98. alpha(zeta)=zeta>1?sqrt(zeta**2-1.0):0
  99. tau1(zeta)=1/(zeta-alpha(zeta))
  100. tau2(zeta)=1/(zeta+alpha(zeta))
  101. c1(zeta)=(zeta + alpha(zeta))/(2*alpha(zeta))
  102. c2(zeta)=c1(zeta)-1
  103. y1(wnt)=zeta==1?1 - exp(-wnt)*(wnt + 1):0
  104. y2(wnt)=zeta<1?(1 - (exp(-zeta*wnt)/wdwn(zeta))*sin(wdwn(zeta)*wnt + shift(zeta))):y1(wnt)
  105. y(wnt)=zeta>1?1-c1(zeta)*exp(-wnt/tau1(zeta))+c2(zeta)*exp(-wnt/tau2(zeta)):y2(wnt)
  106. plot \
  107.   zeta=.1,y(wnt), \
  108.   zeta=.2,y(wnt), \
  109.   zeta=.3,y(wnt), \
  110.   zeta=.4,y(wnt), \
  111.   zeta=.5,y(wnt), \
  112.   zeta=.707,y(wnt), \
  113.   zeta=1,y(wnt), \
  114.   zeta=2,y(wnt)
  115. #
  116. #  Plot Impulse Response
  117. set origin .5,0.
  118. set title "Second Order System - Unit Impulse Response"
  119. y(wnt)=exp(-zeta*wnt) * sin(wdwn(zeta)*wnt) / wdwn(zeta)
  120. set yrange [-1. :1.]
  121. set ytics -1,.5,1.
  122. plot \
  123.   zeta=.1,y(wnt), \
  124.   zeta=.2,y(wnt), \
  125.   zeta=.3,y(wnt), \
  126.   zeta=.4,y(wnt), \
  127.   zeta=.5,y(wnt), \
  128.   zeta=.707,y(wnt), \
  129.   zeta=1,y(wnt), \
  130.   zeta=2,y(wnt)
  131. set nomultiplot
  132. #
  133. #  Clean up: reset parameter defaults
  134. #
  135. reset
  136.