Перейти к содержанию
Форум химиков на XuMuK.ru.

Являются ли ферменты вечными двигателями второго рода?


Рекомендуемые сообщения

🚑 Решение задач, контроши, рефераты, курсовые и другое! Онлайн сервис помощи учащимся. Цены в 2-3 раза ниже! 200 руб. на 1-й заказ по коду vsesdal143982
В 17.12.2025 в 22:42, Мансур Фазлуллин сказал:

Увеличил геометрические размеры модели. Предыдущая модель была размером 12 на 16 клеток. Увеличенная 14 на 20 клеток.

Для увеличения модели пришлось усложнить программный код, что привело к снижению скорости расчётов, что не очень удобно.

Поэтому с помощью ИИ провёл рефакторинг кода, что позволило заметно увеличить скорость вычислений, изменения после строки "while t < 1000:"

Код после рефакторинга.

 

import random
import matplotlib.pyplot as plt

n = 0

n_out = 0

x_n = list(range(21))

y_n = []

for i in x_n:
    y_n += [0]

x_v = list(range(21))

y_v = []

for i in x_v:
    y_v += [14]

y_l = list(range(15))

x_l = []

for i in y_l:
    x_l += [0]
    
y_p = list(range(15))

x_p = []

for i in y_p:
    x_p += [20]


x_b = [6, 6, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 14]

y_b = [0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0] 

x_b1 = [5, 5, 5, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15]

y_b1 = [0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1, 0]

fnx_l = [9, 8, 7, 6, 5, 6, 7, 8, 9, 10]

fny_l = [4, 5, 6, 7, 8, 8, 7, 6, 5, 4]

fnx_r = [10, 11, 12, 13, 14, 15, 14, 13, 12, 11]

fny_r = [4, 5, 6, 7, 8, 8, 7, 6, 5, 4]

P = 0
k = True

while k:
    P += 1
    t = 0
    x = 1
    y = 1
    xn = x
    yn = y
    x1 = []
    y1 = []


    while t < 1000:  
        t += 1

        z = random.randint(1, 100)

        # Условия для движения вправо при z <= 25

        if z <= 25:
            if x < 20:
                x += 1

            if (x == 6 and y <=3) or (x == 15 and y <=3):
                x -= 1

            if x == 10 and y == 4:
                x -= 1

            if x == 9 and y == 5:
                y -= 1

            if x == 8 and y == 6:
                y -= 1

            if x == 7 and y == 7:
                y -= 1

            if x == 11 and y == 4:
                y += 1

            if x == 12 and y == 5:
                y += 1

            if x == 13 and y == 6:
                y += 1

            if x == 14 and y == 7:
                y += 1

        # Условия для движения влево при 26 <= z <= 50

        elif 26 <= z <= 50:
            if x > 0:
                x -= 1

            if (x == 5 and y <= 3) or (x == 14 and y <= 3):
                x += 1

            if x == 9 and y == 4:
                y += 1

            if x == 8 and y == 5:
                y += 1

            if x == 7 and y == 6:
                y += 1

            if x == 6 and y == 7:
                y += 1

            if x == 10 and y == 4:
                x += 1

            if x == 11 and y == 5:
                y -= 1

            if x == 12 and y == 6:
                y -= 1

            if x == 13 and y == 7:
                y -= 1

        # Условия для движения вверх 51 <= z <= 73

        elif 51 <= z <= 73:
            if y < 14:
                y += 1

            if (y == 4 and 6 <= x < 10) or (y == 4 and 10 < x <= 14):
                y -= 1

            if x == 9 and y == 5:
                x -= 1

            if x == 8 and y == 6:
                x -= 1

            if x == 7 and y == 7:
                x -= 1

            if x == 6 and y == 8:
                x -= 1

            if x == 11 and y == 5:
                x += 1

            if x == 12 and y == 6:
                x += 1

            if x == 13 and y == 7:
                x += 1

            if x == 14 and y == 8:
                x += 1

        # Условия для предотвращения проскока сквозь воронку

        elif x == 9 and y == 4 and 74 <= z <= 100:
            z = 101

        elif x == 11 and y == 4 and 74 <= z <= 100:
            z = 101        

        # Условия для движения вниз при 74 <= z <= 100


        elif 74 <= z <= 100:
            if y > 0:
                y -= 1

            if (y == 3 and 6 <= x < 10) or (y == 3 and 10 < x <= 14):
                y += 1

            if x == 9 and y == 4:
                x += 1

            if x == 8 and y == 5:
                x += 1

            if x == 7 and y == 6:
                x += 1

            if x == 6 and y == 7:
                x += 1

            if x == 11 and y == 4:
                x -= 1

            if x == 12 and y == 5:
                x -= 1

            if x == 13 and y == 6:
                x -= 1

            if x == 14 and y == 7:
                x -= 1


        x1.append(x)
        y1.append(y)


    if 6 <= x1[-1] <= 14 and y1[-1] <= 3:
        n += 1

    if  x1[-1] <= 5 and y1[-1] <=3:
        n_out += 1

    if 15 <= x1[-1] and y1[-1] <=3:
        n_out += 1
     

    if P == 10000:
        k = False


print('n=', n)

print('n/P', n/P)

print('n_out=', n_out)

print('n_out/P', n_out/P)

plt.grid(True)
plt.plot(x_n, y_n, 'k')
plt.plot(x_v, y_v, 'k')
plt.plot(x_l, y_l, 'k')
plt.plot(x_p, y_p, 'k')
plt.plot(x_b, y_b, 'k')
plt.plot(x_b1, y_b1, 'k')
plt.plot(fnx_l, fny_l, 'k')
plt.plot(fnx_r, fny_r, 'k')
plt.plot(x1, y1, 'b')
plt.plot(x1[-1], y1[-1], 'ro')
plt.plot(xn, yn, 'go')
plt.show()    

 

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.