#pragma css /css/2016.css <<BI>> = Вычисление параметров молекулы водорода = Вам дан файл с фунциями для расчёта основных матриц [[http://kodomo.fbb.msu.ru/~golovin/qm/hfscf.py| hfscf.py ]] Теория (ref 7) : https://chemistlibrary.files.wordpress.com/2015/02/modern-quantum-chemistry.pdf Более подробная реализация на Python : https://gitlab.com/LLindenbauer/Hartree-Fock-Tutorial/-/blob/master/Hartree-Fock%20Sample.ipynb Функция расчёта орбиталей на основе подхода Рутана Холла выглядит примерно так: {{{#!highlight python def SCF (r = 1.4632, Z=[1,1], b1 = GTO["H"], b2 = GTO["H"], b = 3, vbs=False): R = [0, r] if vbs: print("*) Generando matriz de traslape S.") s_scf = S(.... if vbs: print("\n*) Generando hamiltoniano H.") h_scf = H(.... # Diagonalizar matriz S y hallar matriz X if vbs: print("\n*) Diagonalizando matriz S y hallando matriz diagonal X.") X = diagon(m=s_scf) Xa = X.getH() # Estimar matriz de densidad P if vbs: print("\n*) Creando matriz de densidad P.") p_scf = np.matrix([[0,0],[0,0]], dtype=np.float64) # Referencia (7) p. 148 # Comenzar proceso iterativo if vbs: print("\n*) Comenzando con el SCF.") for iteracion in range(50): # Construir matriz de Fock F # F = H + G if vbs: print("\n**) Generando la matriz de Fock: calculando \ integrales de dos electrones.") g_scf = G(.... f_scf = h_scf + .... # Referencia (7) p. 141 eq. (3.154) # Construir matriz F' # F' = X_adj * F * X if vbs: print("**) Cambiando la base de F.") f_tra = Xa * f_scf * X # Diagonalizar matriz F y constuir matriz C' if vbs: print("**) Diagonalizando F' y generando C'.") c_tra = diagon2(m=f_tra) # Construir matriz C # C = X * C' if vbs: print("**) Construyendo matriz de coeficientes C.") c_scf = X * c_tra # Construir matriz P a partir de matriz C if vbs: print("**) Recalculando matriz de densidad P.") p_temp = P(C=c_scf) print("\nConcluida la " + str(iteracion + 1) + ". iteracion.\n") # Revisar convergencia if np.linalg.norm(p_temp - p_scf) < 1E-4: # Referencia (7) p. 148 print("\n\n-->El campo autoconsistente SI ha convergido!") return {"S":s_scf,"H":h_scf,"X": X,"F":f_scf,"C":c_scf,"P":p_temp} else: p_scf = p_temp print("\n\n-->El campo autoconsistente NO ha convergido!\nRevisar supuestos.") return {"S":s_scf,"H":h_scf,"X": X,"F":f_scf,"C":c_scf,"P":p_temp} }}} === Опишите : === * Добавьте коментарии в код функции * Опишите объекты S,F,X,H,C === Рссчитайте: === * Элеткронную энрегию молекулы * Полную эннергию молекулы === Постройте : === * 1D плот орбиталей * 2D плот орбиталей