Ejemplo n.º 1
0
def main_diode():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
    bstart = [6.15200000e-08, 1.16000000e00, 3.37600000e-02]  # 20%
    bend = [9.22800000e-08, 1.74000000e00, 5.06400000e-02]  # 20%

    #    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
    #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%

    iia = IterationInfoAcceptor("resfiles/M1_Diode.txt", verbose=1)

    msa = DiodeMainScriptMantissaEx1()

    for i in range(50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        # msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            rs = msa.proceed()
            iia.accept(numiter=rs["numiter"], Sk=rs["Sk"], AvDif=rs["AvDif"])

        except:
            print("uno problemo")
            pass

    plt.hist([x["numiter"] for x in iia], 20)
    plt.show()
    plt.savefig("resfiles/MantissaResDiode.png")
Ejemplo n.º 2
0
def main_diode():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
    bstart = [  6.15200000e-08  , 1.16000000e+00,   3.37600000e-02] # 20%
    bend =   [  9.22800000e-08 ,  1.74000000e+00 ,  5.06400000e-02] # 20%


#    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
 #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%


    iia = IterationInfoAcceptor ('resfiles/M1_Diode.txt', verbose=1)

    msa = DiodeMainScriptMantissaEx1()

    for i in range (50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        #msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            rs = msa.proceed()
            iia.accept(numiter=rs['numiter'], Sk=rs['Sk'], AvDif=rs['AvDif'])

        except:
            print ('uno problemo')
            pass




    plt.hist ([x['numiter'] for x in iia],20)
    plt.show()
    plt.savefig('resfiles/MantissaResDiode.png')
Ejemplo n.º 3
0
def main_transistor():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
    # bstart = [  6.15200000e-08  , 1.16000000e+00,   3.37600000e-02] # 20%
    # bend =   [  9.22800000e-08 ,  1.74000000e+00 ,  5.06400000e-02] # 20%

    #    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
    #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%

    # transistor

    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
    btrue = [IS, BF, NR, NF, BR]
    bstart = np.array(btrue) - np.array(btrue) * 0.3
    bend = np.array(btrue) + np.array(btrue) * 0.3

    from Cases.Mantissa2 import IterationInfoAcceptor

    iia = IterationInfoAcceptor("resfiles/M1.txt")

    msa = TransistorMainScriptMantissaEx1()

    for i in range(50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            print("entering")
            rs = msa.proceed()
            iia.accept(numiter=rs["numiter"], Sk=rs["Sk"], AvDif=rs["AvDif"])

        except:
            print("uno problemo")
            pass

        try:
            plt.hist([x[0] for x in iia], 20)
            plt.show()
            plt.savefig("resfiles/MantissaResTransistor.png")
        except:
            pass
Ejemplo n.º 4
0
def main_transistor ():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
     #bstart = [  6.15200000e-08  , 1.16000000e+00,   3.37600000e-02] # 20%
    #bend =   [  9.22800000e-08 ,  1.74000000e+00 ,  5.06400000e-02] # 20%


#    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
 #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%

    # transistor

    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
    btrue = [IS, BF, NR, NF, BR]
    bstart = np.array(btrue)-np.array(btrue)*0.3
    bend = np.array(btrue)+np.array(btrue)*0.3

    from Cases.Mantissa2 import IterationInfoAcceptor

    iia = IterationInfoAcceptor ('resfiles/M1.txt')

    msa = TransistorMainScriptMantissaEx1()

    for i in range (50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            print ('entering')
            rs = msa.proceed()
            iia.accept(numiter=rs['numiter'], Sk=rs['Sk'], AvDif=rs['AvDif'])


        except:
            print ('uno problemo')
            pass

        try:
            plt.hist ([x[0] for x in iia],20)
            plt.show()
            plt.savefig('resfiles/MantissaResTransistor.png')
        except:
            pass
Ejemplo n.º 5
0

        except:
            print ('uno problemo')
            pass

        try:
            plt.hist ([x[0] for x in iia],20)
            plt.show()
            plt.savefig('resfiles/MantissaResTransistor.png')
        except:
            pass


if __name__=='__main__':
    iia = IterationInfoAcceptor ('resfiles/M1_Diode.txt', verbose=1, read=1)
    plt.hist ([x['numiter'] for x in iia if x['numiter']<20 ],10)
    plt.show()


    #main_diode()




# l = [14, 14, 10, 27, 10, 8, 10, 11, 51, 10, 48, 19, 8, 5, 31, 15, 9, 10, 13, 5, 15, 15, 51, 34, 49, 6, 5, 10, 15, 46, 11, 10, 16, 22, 7, 11, 42, 7, 10, 29, 27, 15, 9, 7, 38, 27, 10, 29, 15, 12, 17, 7, 11, 8, 32, 51, 12, 23, 40, 10, 24, 34, 34, 40, 9, 7, 26, 51, 51, 51, 23, 14, 29, 22, 10, 50, 33, 8, 6, 6, 19, 11, 22, 9, 14, 30, 51, 14, 15, 13, 10, 6, 7, 17, 17, 23, 51, 17, 7, 10, 5, 7, 24, 29, 7, 21, 47, 7, 16, 20, 19, 23, 5, 22, 9, 7, 12, 9, 15, 32, 29, 13, 11, 16, 9, 16, 51, 20, 5, 8, 24, 46, 9, 25, 6, 10, 7, 36, 21, 10, 6, 11, 17, 15, 51, 8, 10, 11, 19, 30, 9, 51, 34, 9, 27, 22, 15, 14, 9, 45, 16, 29, 9, 10, 17, 10, 20, 51, 20, 17, 51, 11, 30, 20, 8, 11, 19, 41, 14, 12, 49, 14, 10, 5, 13, 8, 10, 28, 7, 7, 6, 8, 11, 8, 10]
#binit const btrue unif

#ll=[18, 7, 13, 13, 12, 9, 7, 51, 6, 9, 9, 5, 7, 6, 7, 8, 14, 7, 12, 13, 6, 12, 9, 14, 20, 18, 18, 7, 43, 22, 11, 29, 6, 10, 34, 9, 9, 13, 7, 5, 12, 10, 7, 15, 13, 9, 12, 6, 19, 6, 12, 33, 13, 9, 13, 5, 11, 9, 6, 7, 12, 24, 8, 11, 12, 7, 51, 5, 10, 6, 10, 17, 12, 18, 12, 32, 9, 13, 7, 8, 15, 7, 11, 30, 8, 23, 16, 7, 9, 6, 6, 10, 6, 8, 16, 6, 12, 16, 5, 9, 6, 8, 26, 8, 8, 6, 5, 8, 10, 9, 12, 33, 7, 8, 10, 9, 9, 17, 7, 25, 10, 35, 7, 13, 12, 7, 9, 6, 14, 4, 10, 16, 8, 8, 22, 16, 9, 7, 21, 22, 12, 11, 12, 7, 14, 8, 10, 17, 7, 7, 6, 16, 17, 23, 9, 29, 15, 6, 20, 7, 11, 37, 47, 20, 8, 8, 8, 13, 12, 29, 9, 25, 5, 8, 9, 11, 8, 17, 7, 20, 10, 5, 10, 12, 10, 18, 14, 22, 18, 12, 15, 9, 34, 11, 7, 8, 7, 20, 24, 6]
#binit const btrue norm
Ejemplo n.º 6
0
def main():

    rs = []
    nirc = 205  # рассматриваемое число кейсов

    iiadumplist = []

    for i in range(nirc):
        try:
            dms = DiodeMainScriptMantissaEx2()

            iia = IterationInfoAcceptor()

            dms.options.lst_data_abt_iteration = iia
            dms.proceed()
            # получили список значений b на каждой итерации

            btrue = dms.ec.btrue

            #Здесь определяется норма <<<>>>
            # такщем-та вроде как выводятся гистограммы для каждой итерации начиная с 4-й по эвклидовой норме
            # iia - это список данных по каждой итерации

            normfunc = norm1
            #list_of_errors = [normfunc(btrue, m['b']) for m in iia]

            # for k in iia:
            #     print (k, '\n')

            #plt.plot([z['b'][0] for z in iia])
            #plt.plot([z['b'][1] for z in iia])

            #plt.plot([z['b'][2] for z in iia])
            #print (iia)

            iiadumplist.append(iia)

            # fig, ax = plt.subplots( nrows=1, ncols=1 )  # create figure & 1 axis
            # ax.plot([z['b'][1] for z in iia])
            # #это у нас графики значений компонента вектора по итерациям.
            # fig.savefig ('resfiles/M2/graphs/img_{0}.png'.format(i))
            # plt.close(fig)

            #получили список ошибок

            # print ('len', len(list_of_errors))
            # #if len(list_of_errors)<20: #работать только с теми случаями, где кол-во итераций не превысило обычное
            # #    #rs.append(list_of_errors)
            # print (list_of_errors)
            # rs.append(list_of_errors)

            #всадили его в результат
        except:

            pass

    # # складываем все результаты в пикулёвую БД в файл. Так-то б в мускул сложить, но то надо табличечку делать

    # # проще всего вытянуть из пикуля

    import pickle
    with open('resfiles/resdump205_DISP__.dat', 'wb') as f:
        pickle.dump(iiadumplist, f)

    # теперь rs это матрица список ошибок, прикол в том, шо каждая всунутая строка с инфой по итерациям
    # какбы чуть разной длины
    # берём срез в другую сторону
    rsT = []
    for i in range(
            20
    ):  #свыше 20 итераций уже не рассматриваем, нах, до 3й тоже неинтересно
        try:
            rsT.append([rs[k][i] for k in range(nirc)])
        except:
            break
    #теперь есть список списков погрешностей на первой, второй и далее итерациям
    #фигарим гистограммы за каждый список

    #[print (d) for d in rs]
    #print ()
    #[print (d) for d in rsT]

    ni = 0

    import os

    filelist = [
        f for f in os.listdir("resfiles/M2/hists") if f.endswith(".png")
    ]
    for f in filelist:
        try:
            os.remove("resfiles/M2/hists/" + f)
        except:
            pass

    for d in rsT:
        #d = [x for x in d if x<.1]
        ni += 1
        fig, ax = plt.subplots(nrows=1, ncols=1)  # create figure & 1 axis

        d = list(filter(lambda x: x < .01, d))
        print(d)
        ax.hist(d, 50)
        fig.savefig('resfiles/M2/hists/img_{0}.png'.format(ni))
        plt.close(fig)