Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #!/usr/bin/env python
  2.  
  3. import sys
  4. import math
  5. import cmath
  6. import matplotlib.pyplot as plt
  7. import numpy as np
  8.  
  9.  
  10.  
  11. def draww(q=0.994):
  12.  
  13.         lo_range=0.1
  14.         hi_range=10.0
  15.         steps = 1001
  16.  
  17.         lo_log = math.log10(lo_range)
  18.         hi_log = math.log10(hi_range)
  19.  
  20.         v_log = lo_log
  21.         v_step = (hi_log-lo_log)/steps
  22.  
  23.  
  24.         vs=[]
  25.         hh1=[]
  26.         hh2=[]
  27.         hh=[]
  28.  
  29.         while(v_log<=hi_log):
  30.  
  31.                 v = math.pow(10,v_log)
  32.  
  33.                 h1 = 1.0 / (1 - v*v + (1j/q)*v)
  34.                 h2 = 1.0 / (1 + 1j*v)
  35.  
  36.                 vs += [v]
  37.                 hh1 += [h1]
  38.                 hh2 += [h2]
  39.                 hh  += [h1*h2]
  40.  
  41.                 v_log = v_log + v_step
  42.  
  43.  
  44.         #print(values)
  45.  
  46.         x = np.array(vs)
  47.         yy1 = np.array(np.abs(hh1))
  48.         yy2 = np.array(np.abs(hh2))
  49.         yy  = np.array(np.abs(hh ))
  50.  
  51.         # plot
  52.         fig, (ax,ap) = plt.subplots(2,1)
  53.        
  54.         ax.loglog(x, yy1, linewidth=2.0, color='red')
  55.         ax.loglog(x, yy2, linewidth=2.0, color='green')
  56.         ax.loglog(x, yy , linewidth=2.0, color='blue')
  57.  
  58.         ax.grid(which="minor", color="0.9")
  59.         ax.grid(which="major", color="0.1")
  60.  
  61.  
  62.         ap.semilogx(x,np.angle(hh)*180.0/math.pi)
  63.         ap.grid(which="minor", color="0.9")
  64.         ap.grid(which="major", color="0.1")
  65.  
  66.        
  67.  
  68.  
  69.         plt.show()
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. def main():
  80.  
  81.         draww()
  82.  
  83.  
  84.  
  85.  
  86. if __name__=="__main__":
  87.     main()
  88.  
  89.  
  90.  
  91.