Форум сайта python.su
Привет! Ниже блок с кодом (вложенные функции), он работает, но результаты представляет в виде списка формул. До того, как я добавил строки 18-22 (добавление уравнения, равного нулю), вычисление занимало около 20-30 минут, и результат был отличным - по итогу были представлены варианты значений переменных. Но когда я добавил строки 18-22, вычисления стали бесконечными, и я вижу, что строка 21 выполняется часами. Результат выглядит так, как будто переменные из уравнения остаются символами, и вычисление не выполняется. Как изменить строки 18-22, чтобы избежать перевода переменных в класс символов? Помогите, пожалуйста
О моей цели: Для каждой из переменных с подчеркиванием установлен диапазон возможных значений, в пределах которого значения перебираются с заданным шагом. В этом блоке кода я пытаюсь учесть уравнения, содержащие неизвестные переменные, чтобы уменьшить исходные диапазоны возможных значений. После последней функции должны быть выведены окончательные комбинации значений (конкретные числа) для переменных (y00, y10, y20… y90_).
step = -0.01 for y30_ in np.arange(y30[0], y30[1], step): y00_ = function_vr(ph0b, et0, y30_) y10_ = function_vn(ph0b, et0, y30_) y20_ = function_o(ph0, et0, y30_) #print(f"y00_ = {y00_}, y10_ = {y10_}, y20_ = {y20_}, y30_ = {y30_}") for y50_ in np.arange(y50[0], y50[1], step): #print(y50_) for y60_ in np.arange(y60[1], y60[0], step): tn0_ = funct_tn(y50_, y60_) #print(y60_) for y70_ in np.arange(y70[1], y70[0], step): y80_ = funct_labt(y30_, y60_, y70_, y50_) function_gam(et0, y30_, ph0b, y50_, y60_, y70_, y80_) ht0, et0, y30_, ph0b, y50_, y60_, y70_, y80_ = symbols('ht0 et0 y30_ ph0b y50_ y60_ y70_ y80_') equation = Eq(ht0, (y50_ * et0 * cos(y30_) / sqrt(ph0b) + y60_ * -et0 * sin(y30_) / sqrt(ph0b) + y70_ * sqrt(1 / ph0b) * et0 * sin(y30_) + y80_ * (sqrt(1 / ph0b) * (1 + et0 * cos(y30_)) * (1 + et0 * cos(y30_))**2) / ph0b**2)) #Use sympy.subs() method ham0 = solve(equation.subs(ht0, 0)) #print(ham0) for y90_ in np.arange(y90[1], y90[0], step): function_propulsion(y40, y50_, y60_, y90_, ptb, mqb) function_deo(y40, y50_, y60_, y90_, ptb, mqb, pes) print(f"y00_ = {y00_}, y10_ = {y10_}, y20_ = {y20_}, y30_ = {y30_}, y50_ = {y50_}, y60_ = {y60_}, y70_ = {y70_}, y80_ = {y80_}, y90_ = {y90_}")
Отредактировано alfrol (Фев. 22, 2022 06:45:21)
Офлайн