Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » Вложенные функции. Как записать уравнение равное нулю без символьного класса [RSS Feed]

#1 Фев. 21, 2022 18:55:45

alfrol
Зарегистрирован: 2022-02-21
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Вложенные функции. Как записать уравнение равное нулю без символьного класса

Привет! Ниже блок с кодом (вложенные функции), он работает, но результаты представляет в виде списка формул. До того, как я добавил строки 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)

Офлайн

  • Начало
  • » Центр помощи
  • » Вложенные функции. Как записать уравнение равное нулю без символьного класса[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version