def grandCountGN_UltraX_ExtraStart(funcf, jacf, measdata: list, bstart: list, bend: list, c, Ve, NSIG=3, implicit=False, verbose=False, Ntries=10, name=''): """ Новая реализация оценки, в соответствии с методом выбора начального приближения (22.12.2014 tasklist) """ resarray = list() for i in range(Ntries): #получение uniform binit binit = o_g.uniformVector(bstart, bend) try: resarray.append( grandCountGN_UltraX_Qualitat(funcf, jacf, measdata, binit, c, Ve, NSIG, implicit, verbose, name)) except BaseException: pass return selectBestEstim(resarray)
def countMeanVbForAprior_S4000(expplan:list, bstart:list, bend:list, c, Ve, jac, func=None): """ :param expplan: план эксперимента :param bstart: начало диапазона b (вектор) :param bend: конец диапазона b (вектор) :param c: словарь доп. параметров :param Ve: ковариационная матрица ошибок экспериментов :param jac: функция якобиана (на входе x,b,c=None, y=None) :return: среднее значение определителя [0] и его дисперсию [1] """ DS=0 #среднее определителя SD=0 #дисперсия определителя for sss in range(1, 30): #30 - количество попыток в выборке b=o_g.uniformVector (bstart, bend) Vb=o_p.countVbForPlan(expplan, b, c, Ve, jac, func) 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
def makeRandomUniformExpPlan(xstart: list, xend: list, N: int): """ :param xstart: начало диапазона x :param xend: конец диапазона x :param N: Количество точек в плане :return: случайный план эксперимента, в котором точки равномерно распределяются в диапазоне в формате списка словарей 'x': вектор """ res = list() for i in range(0, N): res.append(o_g.uniformVector(xstart, xend)) return res
def makeRandomUniformExpPlan(xstart:list, xend:list, N:int): """ :param xstart: начало диапазона x :param xend: конец диапазона x :param N: Количество точек в плане :return: случайный план эксперимента, в котором точки равномерно распределяются в диапазоне в формате списка словарей 'x': вектор """ res=list() for i in range(0, N): res.append(o_g.uniformVector(xstart, xend)) return res
def makebinit_lambda (bstart, bend, lbinitbtrue): global btrue, bprev, lbinitbtrueprev if lbinitbtrueprev is None or lbinitbtrueprev!=lbinitbtrue: binit = o_g.uniformVector(bstart, bend) lbinitbtrueprev=lbinitbtrue bprev=binit else: binit=bprev return binit, np.linalg.norm(np.array(binit)-np.array(btrue))
def grandCountGN_UltraX_ExtraStart (funcf, jacf, measdata:list, bstart:list, bend:list, c, Ve, NSIG=3, implicit=False, verbose=False, Ntries=10, name=''): """ Новая реализация оценки, в соответствии с методом выбора начального приближения (22.12.2014 tasklist) """ resarray=list() for i in range (Ntries): #получение uniform binit binit = o_g.uniformVector(bstart, bend) try: resarray.append(grandCountGN_UltraX_Qualitat (funcf, jacf, measdata, binit, c, Ve, NSIG, implicit, verbose, name)) except BaseException: pass return selectBestEstim (resarray)