Exemple #1
0
def extraction_Diode_In_mpmath():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """
    btrue = [mpm.mpf('1.238e-14'), mpm.mpf('1.3'), mpm.mpf('10')]
    c = None
    global FT
    funcf = solver_Diode_In_mpmath
    jacf = jac_Diode_In_mpmath
    #теперь попробуем сделать эксперимент.
    Ve = np.array([[1e-7]])
    bstart = [mpm.mpf('1.0e-14'), mpm.mpf('1.0'), mpm.mpf('9')]
    bend = [mpm.mpf('1.5e-14'), mpm.mpf('1.5'), mpm.mpf('14')]
    #binit=[mpm.mpf('1.1e-14'), mpm.mpf('1.1'), mpm.mpf('11')]

    binit = mpm.matrix([['1.1e-14', '1.1', '11.1']]).T

    xstart = [mpm.mpf('0.0001')]
    xend = [mpm.mpf('2')]

    N = 100
    NAprior = 20

    unifplan = o_pmpm.makeUniformExpPlan(xstart, xend, N)
    unifmeasdata = o_pmpm.makeMeasAccToPlan_lognorm(funcf, unifplan, btrue, c,
                                                    Ve)
    #print (unifmeasdata[0]['y'][0])

    import Fianora.Fianora_static_functions as f_sf

    for dps in [20, 10, 7]:

        with f_sf.Profiler():
            print()
            print('mantissa', dps)
            gknux = o_empm.grandCountGN_UltraX1_mpmath_mantissa(funcf,
                                                                jacf,
                                                                unifmeasdata,
                                                                binit,
                                                                c,
                                                                NSIG=dps,
                                                                implicit=True,
                                                                verbose=False,
                                                                mantissa=[dps])

            with mpm.workdps(dps):
                print('b', gknux[0])

                print('numiter', gknux[1])
                print('log', gknux[2])
                print('Sk', gknux[4])

    for f**k in range(10):
        with f_sf.Profiler():
            print()
            print('mantissa', 'variable')
            gknux = o_empm.grandCountGN_UltraX1_mpmath_mantissa(
                funcf,
                jacf,
                unifmeasdata,
                binit,
                c,
                NSIG=7,
                implicit=True,
                verbose=False,
                mantissa=[4, 5, 6, 7])
            with mpm.workdps(dps):
                print('b', gknux[0])
                print('numiter', gknux[1])
                print('log', gknux[2])
                print('Sk', gknux[4])
def extraction_Diode_In_mpmath():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """
    btrue=[mpm.mpf('1.238e-14'), mpm.mpf('1.3'), mpm.mpf('10')]
    c=None
    global FT
    funcf=solver_Diode_In_mpmath
    jacf = jac_Diode_In_mpmath
    #теперь попробуем сделать эксперимент.
    Ve=np.array([ [1e-7] ]  )
    bstart=[mpm.mpf('1.0e-14'), mpm.mpf('1.0'), mpm.mpf('9')]
    bend=[mpm.mpf('1.5e-14'), mpm.mpf('1.5'), mpm.mpf('14')]
    #binit=[mpm.mpf('1.1e-14'), mpm.mpf('1.1'), mpm.mpf('11')]

    binit=mpm.matrix([['1.1e-14', '1.1', '11.1']]).T

    xstart=[mpm.mpf('0.0001')]
    xend=[mpm.mpf('2')]

    N=100
    NAprior=20

    unifplan = o_pmpm.makeUniformExpPlan(xstart, xend, N)
    unifmeasdata = o_pmpm.makeMeasAccToPlan_lognorm(funcf, unifplan, btrue, c, Ve)
    #print (unifmeasdata[0]['y'][0])


    import Fianora.Fianora_static_functions as f_sf

    for dps in [20,10,7]:

        with f_sf.Profiler():
            print()
            print ('mantissa', dps)
            gknux = o_empm.grandCountGN_UltraX1_mpmath_mantissa(funcf, jacf, unifmeasdata, binit,c, NSIG=dps,implicit=True, verbose=False, mantissa=[dps])

            with mpm.workdps(dps):
                print ('b', gknux[0])

                print ('numiter', gknux[1])
                print ('log', gknux[2])
                print ('Sk', gknux[4])



    for f**k in range (10):
        with f_sf.Profiler():
            print()
            print ('mantissa', 'variable')
            gknux = o_empm.grandCountGN_UltraX1_mpmath_mantissa(funcf, jacf, unifmeasdata, binit,c, NSIG=7,implicit=True, verbose=False, mantissa=[4,5,6,7])
            with mpm.workdps(dps):
                print ('b', gknux[0])
                print ('numiter', gknux[1])
                print ('log', gknux[2])
                print ('Sk', gknux[4])