Как создать уравнения с модулем с переменными, а затем передать их другому модулю? - PullRequest
1 голос
/ 07 ноября 2019

Я хочу решить нелинейную систему, используя root от scipy. Я генерировал уравнения с помощью петель. Каждый раз, когда решатель выполняет итерации, чтобы найти решения, все циклы, которые генерируют уравнения, запускаются снова, что замедляет время решения. Я хочу создать код, который генерирует уравнения только один раз, а затем с помощью сгенерированных уравнений решить систему.

Например, следующий код находится в коде. Для каждой итерации он снова генерирует уравнения. Я хочу сгенерировать уравнения один раз, а затем решить систему с корнем, а не генерировать уравнение снова и снова на каждой итерации решателя.

def Colebrook(R,Re,d,f):
    F =  (-2.0*np.log10((R/(3.7*d) + (2.51/(Re*(np.sqrt(f)))))) - 1.0/(np.sqrt(f)))
    return F

def ec(y):
    if usar_darcy ==True:
        for i in range(len(n)):
            for a in range(len(n[i])):
                for b in range(n[i][a]):
                    if y[Cont_col+Cont_cau]>=2000 and usar_darcy == True:
                        col = Colebrook(Rl,y[Cont_col+Cont_cau],Dl,
                                    y[Cont_col + Cont_cau + Contador_re])
                        colebrook2.append(col)
                    if y[Cont_col+Cont_cau]<=2000 and usar_darcy == True:
                        col = Laminar2(y[Cont_col+Cont_cau],
                                   y[Cont_col + Cont_cau + Contador_re])
                        colebrook2.append(col)
                    Cont_col = Cont_col + 1
    return list_with_all_The_equations

def solver():
    sol = root(ec, Guess,method='hybr', jac=False)    
    print(sol)

    return sol

solver()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...