#python #iteration #nonlinear-optimization
Вопрос:
На это уходит больше часа. Я задавал тот же вопрос ранее, но он был закрыт, потому что я не включил функции. Итак, вот они (ничего особенного). Я перебираю несколько значений и строю массив с минимальными значениями.
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 lt;= 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]])