def F(Sa,Sb):
if Sa > Sb:
return Sa + np.log(1 + np.exp(Sb - Sa))
else:
return Sb + np.log(1 + np.exp(Sa - Sb))
def Stirling(n): #aproximaçao de Stirling
if n == 0:
return 0
else:
return n * np.log(n) - n + 1/2 * np.log(2*np.pi*n)
spins = np.array([-2,-1,0,1,2])
def Omega(Mi,N):
VStirling = np.vectorize(Stirling)
Log_Omega_M = -np.inf*np.ones(len(Mi))
for N_2minus in range(N+1):
for N_1minus in range( N - N_2minus + 1):
for N_0 in range(N- N_2minus - N_1minus +1):
for N_1plus in range(N- N_2minus - N_1minus - N_0 + 1):
N_2plus = N- N_2minus - N_1minus - N_0 - N_1plus
N_alphas = np.array([N_2minus, N_1minus, N_0, N_1plus, N_2plus])
M = np.sum(N_alphas*spins)
index = np.where(Mi == M)
s = VStirling(N) #O numerador do quociente
s -= np.sum(VStirling(N_alphas))
Log_Omega_M[index] = F(Log_Omega_M[index],s)
return np.exp(Log_Omega_M)
N = 64
Ms = np.arange(-2*N, 2*N + 1)
Res= Omega(Ms,N)
print(np.sum(Res)/(5**N))
t2=time.time()
print(t2-t1)
Код хорош, но с большим N все начинает работать очень медленно. Для N>50 бег занимает более минуты, а для N=100 бег занимает около 10 метров. Есть ли способ ускорить мой код? Я думал об использовании np.meshgrid(), но не знаю как.
Я пытаюсь сделать домашнее задание по физике на Python. Я написал следующий код: t1=time.time() [code]def F(Sa,Sb): if Sa > Sb: return Sa + np.log(1 + np.exp(Sb - Sa)) else: return Sb + np.log(1 + np.exp(Sa - Sb))
def Stirling(n): #aproximaçao de Stirling if n == 0: return 0 else: return n * np.log(n) - n + 1/2 * np.log(2*np.pi*n)
for N_2minus in range(N+1): for N_1minus in range( N - N_2minus + 1): for N_0 in range(N- N_2minus - N_1minus +1): for N_1plus in range(N- N_2minus - N_1minus - N_0 + 1):
t2=time.time() print(t2-t1) [/code] Код хорош, но с большим N все начинает работать очень медленно. Для N>50 бег занимает более минуты, а для N=100 бег занимает около 10 метров. Есть ли способ ускорить мой код? Я думал об использовании np.meshgrid(), но не знаю как.
На моем устройстве Android в Google Lens доступны только три параметра (перевод, поиск и домашнее задание) внизу. Также не работают результаты поиска. В чем проблема и как ее исправить.
havoc os 2.5 с pico Gapps android 9
я хочу получить все нижние...
Напишите программу, состоящую из цикла while, который (каждый раз в цикле) считывает два целых числа и затем печатает их. Выйдите из программы, когда появится завершающий '|' вводится.
Задача «простая». Используя ключи RSA, которые вы генерируете (вы создаете свою собственную реализацию), шифруйте и дешифруйте файлы, такие как .txt, .png, .pdf и т. д. Проблема в том, что он полностью работает для файлов .txt. Для файлов .pdf это...