Exemplo n.º 1
0
     def __init__(self):
         #     .MODEL KT315 NPN (IS=10F BF=584.517 VAF=100 IKF=29.2714M ISE=131.803P
         # 3:  + NE=2.08337 BR=1.95214 IKR=9.99996M ISC=100.316P RE=0 RC=0 RB=0
         # 4:  + CJE=27.3893P VJE=700.001M MJE=500.287M CJC=27.3893P VJC=700.001M
         # 5:  + MJC=500.287M TF=450.287P XTF=499.984M VTF=10 ITF=10.2268M TR=153.383P)
         #
        Fianora_MainScripts.AbstractMainScript.__init__(self)
        self.options.verbose = 1
        self.options.verbose_wrapper = 1

        inf=10e10
        #числовые значения изменены шоб было по 7 значимых
        IS = 11.23456e-15
        BF = 584.5171
        VAF = 112.3456
        VAR = inf
        IKF =  29.27141e-3     # ток перехода к высококу уровню инжекции inf
        ISE = 131.8031e-12      # генерационно-рекомбинационный ток насыщения  эмиттерного перех 0
        NE = 2.083371       # коэфф. неидеальности ген-рек тока эмиттерного перех   1
        NR = 1       # коэфф неидеальности для диффузного тока в инв режиме  1
        NF = 1       # коэфф неидеальности для диффузионного тока в нормальном режиме        1
        NC = 1       # коэфф неидеальности генерационно-рекомбинацоинного тока коллектора    1
        BR = 1.952141      # инверсный коэфф усиления тока в схеме с ОЭ 1
        IKR = 9.999961e-3     # ток перехода к высокому уровню инжекции в инверсном включении inf
        ISC = 100.3161e-12     # генерационно-рекомбинационный ток насыщения колекторного перех 0
        RE = 1      # сопротивления эмиттера, коллектора, базы 0 0 0
        RC = 5.48635
        RB = 0
        parameter_str_list = ['IS', 'BF', 'NR', 'NF', 'BR']     # список параметров
        btrue = [IS, BF, NR, NF, BR]
        Ve = np.diag([1.9e-5]*3)
        bstart = np.array(btrue)-np.array(btrue)*0.3
        bend = np.array(btrue)+np.array(btrue)*0.3
        binit = f_sf.uniformVector(bstart, bend)
        xstart = np.array([0.001, 0.001])
        xend = np.array([1, 1])
        N = 30

        self.ec = f_sf.EstimationContext(bstart, bend, btrue, binit, xstart, xend, Ve, N) #упаковывание в контекст
        self.model = f_m.StringEMTransistorModel ('Q_NPN_KT513')



        self.measurer = f_me.ModelMeasurer(self.ec.Ve, self.model, self.ec.btrue) # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(self.measurer) # сделали измеритель по плану
        self.planner = f_p.UniformPlanner(self.ec)

        #формирование цепочки
        self.estimator = f_e.NGEstimator()

        self.measdata=None

        self.plan = self.planner.give_us_a_plan(nocache = True) # чтоб каждый раз не менять план, как оно делается,
Exemplo n.º 2
0
    def __init__(self):
        #     .MODEL KT315 NPN (IS=10F BF=584.517 VAF=100 IKF=29.2714M ISE=131.803P
        # 3:  + NE=2.08337 BR=1.95214 IKR=9.99996M ISC=100.316P RE=0 RC=0 RB=0
        # 4:  + CJE=27.3893P VJE=700.001M MJE=500.287M CJC=27.3893P VJC=700.001M
        # 5:  + MJC=500.287M TF=450.287P XTF=499.984M VTF=10 ITF=10.2268M TR=153.383P)
        #
        Fianora_MainScripts.AbstractMainScript.__init__(self)
        self.options.verbose = 1
        self.options.verbose_wrapper = 1

        inf = 10e10
        # числовые значения изменены шоб было по 7 значимых
        IS = 11.23456e-15
        BF = 584.5171
        VAF = 112.3456
        VAR = inf
        IKF = 29.27141e-3  # ток перехода к высококу уровню инжекции inf
        ISE = 131.8031e-12  # генерационно-рекомбинационный ток насыщения  эмиттерного перех 0
        NE = 2.083371  # коэфф. неидеальности ген-рек тока эмиттерного перех   1
        NR = 1  # коэфф неидеальности для диффузного тока в инв режиме  1
        NF = 1  # коэфф неидеальности для диффузионного тока в нормальном режиме        1
        NC = 1  # коэфф неидеальности генерационно-рекомбинацоинного тока коллектора    1
        BR = 1.952141  # инверсный коэфф усиления тока в схеме с ОЭ 1
        IKR = 9.999961e-3  # ток перехода к высокому уровню инжекции в инверсном включении inf
        ISC = 100.3161e-12  # генерационно-рекомбинационный ток насыщения колекторного перех 0
        RE = 1  # сопротивления эмиттера, коллектора, базы 0 0 0
        RC = 5.48635
        RB = 0
        parameter_str_list = ["IS", "BF", "NR", "NF", "BR"]  # список параметров
        btrue = [IS, BF, NR, NF, BR]
        Ve = np.diag([1.9e-5] * 3)
        bstart = np.array(btrue) - np.array(btrue) * 0.3
        bend = np.array(btrue) + np.array(btrue) * 0.3
        binit = f_sf.uniformVector(bstart, bend)
        xstart = np.array([0.001, 0.001])
        xend = np.array([1, 1])
        N = 30

        self.ec = f_sf.EstimationContext(bstart, bend, btrue, binit, xstart, xend, Ve, N)  # упаковывание в контекст
        self.model = f_m.StringEMTransistorModel("Q_NPN_KT513")

        self.measurer = f_me.ModelMeasurer(self.ec.Ve, self.model, self.ec.btrue)  # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(self.measurer)  # сделали измеритель по плану
        self.planner = f_p.UniformPlanner(self.ec)

        # формирование цепочки
        self.estimator = f_e.NGEstimator()

        self.measdata = None

        self.plan = self.planner.give_us_a_plan(nocache=True)  # чтоб каждый раз не менять план, как оно делается,
    def countMeanVbForAprior_S4000(self,  expplan:list):
        """


        :return: среднее значение определителя [0] и его дисперсию [1]
        """
        DS=0 #среднее определителя
        SD=0 #дисперсия определителя

        for sss in range(1, 30): #30 - количество  попыток в выборке
            b=o_g.uniformVector (self.bstart, self.bend)
            Vb=self.countVbForPlan(expplan, b)
            D=np.linalg.det(Vb)
            if D:
                DS=(D+(sss-1)*DS)/sss  #среднее определителя
                SD=((DS-D)*(DS-D)+(sss-1)*SD)/sss #дисперсия определителя

        return DS, SD
Exemplo n.º 4
0
    def countMeanVbForAprior_S4000(self, expplan: list):
        """


        :return: среднее значение определителя [0] и его дисперсию [1]
        """
        DS = 0  #среднее определителя
        SD = 0  #дисперсия определителя

        for sss in range(1, 30):  #30 - количество  попыток в выборке
            b = o_g.uniformVector(self.bstart, self.bend)
            Vb = self.countVbForPlan(expplan, b)
            D = np.linalg.det(Vb)
            if D:
                DS = (D + (sss - 1) * DS) / sss  #среднее определителя
                SD = ((DS - D) * (DS - D) +
                      (sss - 1) * SD) / sss  #дисперсия определителя

        return DS, SD
Exemplo n.º 5
0
 def make_plan(self):
     res = list()
     for i in range(0, self.N):
         res.append(o_g.uniformVector(self.xstart, self.xend))
     return res
 def make_plan(self):
     res=list()
     for i in range(0, self.N):
         res.append(o_g.uniformVector(self.xstart, self.xend))
     return res