python - 我需要帮助优化此迭代
问题描述
这需要一个多小时才能运行。我之前问过同样的问题,但是因为我没有包含这些功能,所以它被关闭了。所以,他们在这里(没什么特别的)。我正在遍历几个值并构建一个具有最小值的数组。
def chi_interaction(theta1,theta2,phi1,phi2):
return np.sin(theta1)*np.sin(phi2) - np.sin(theta2)*np.sin(phi1)
def xi_interaction(a,theta1,theta2,phi1,phi2):
return a*np.cos(theta1)*np.cos(phi2) - 2*a*np.cos(theta2)*np.cos(phi1)
N = np.pi/12
internal_angle = np.pi/3
theta_list = np.arange(0,np.pi+N,N)
phi_list = np.arange(0,2*np.pi,N)
v = []
parameter_list = []
temp1 = 0
import itertools
for i,j,k,l1,l2,l3 in itertools.product(theta_list,theta_list,theta_list,phi_list,phi_list,phi_list):
a = 2.5e-1
m2 = l2 - 4*internal_angle
m3 = l3 + 2*internal_angle
n1 = l1 + internal_angle
n3 = l3 + internal_angle
temp2 = chi_interaction(i,j,l1,l2) + chi_interaction(j,k,m2,m3) \
+ chi_interaction(i,k,n1,n3) \
+ (xi_interaction(a,i,j,l1,l2) + xi_interaction(a,j,k,m2,m3) \
+ xi_interaction(a,i,k,n1,n3))
if temp2 <= temp1:
v.append(temp2)
temp1 = temp2
parameter_list.append([i,j,k,l1,n1,l2,m2,m3,n3])
interaction_array = np.array(v)
parameter_array = np.rad2deg(np.array(parameter_list))
print(np.amin(interaction_array))
interaction_min = np.where(interaction_array == np.amin(interaction_array))
print("[theta1, theta2, theta3, phi1-1, phi1-3, phi2-1, phi2-2, phi3-2, phi3-3] :",\
parameter_array[interaction_min[0]])
解决方案
推荐阅读
- soap - 如何使用 MIT App Inventor 与 SOAP API 进行通信
- amazon-web-services - 如何使用 Amazon EventBridge 发送预定的自定义消息
- php - MongoDB 拒绝 Laravel 8
- javascript - 检测电子邮件是否来自多个域的更好方法
- android - Flutter:“未找到方法的实现” - 用于缓存的颤振引擎
- node.js - 如何使用带有 as400 smtp 服务的 nodemailer 发送电子邮件
- java - 如何解决java反向整数leetcode问题
- r - 累积常设作物随时间变化公式
- javascript - Express 后端中的用户事件和数据
- r - GGplot geom_bar 以均匀间距堆叠项目