(*Napisane przez Pawła Czachorowskiego. Wykorzystanie dowolne.*)
(*Wszelkie uwagi mile widziane.*)

(*To samo co poprzednio(no, nie całkiem - tam robiliśmy jeszcze sporo rzeczy o walorze dydaktycznym), ale zautomatyzowane. Jak widać bez normalizacji funkcji dostajemy ten sam wynik. *)

(*Funkcję En należy nakarmić listą (dowolnie długą) wykładników z funkcji Gaussa. Można wstawić w jakiś program optymalizujący wykładniki.*)

En[a_]:=Module[{S,T,V,H,HMat,SMat},
SIZ=Length[a];
S[e1_,e2_]:=1.*(Pi/(a[[e1]]+a[[e2]]))^(3/2);
T[e1_,e2_]:=3.*Pi^(3/2)*a[[e1]]*a[[e2]]/(a[[e1]]+a[[e2]])^(5/2);
V[e1_,e2_]:=-2.*Pi/(a[[e1]]+a[[e2]]);
H[e1_,e2_]:=T[e1,e2]+V[e1,e2];
HMat=Table[H[i,j],{i,1,SIZ},{j,SIZ}];
SMat=Table[S[i,j],{i,1,SIZ},{j,SIZ}];
Sort[Eigenvalues[{HMat,SMat}]][[1]]
];

(*Pierwsze zadanie.*)

En[{0.282942}]

(*Drugie zadanie.*)
En[{0.282942,2.0}]

(*Prymitywne STO-3G: jeden orbital Slatera przybliżony 3 Gaussami (do dwóch poprzednich dodaliśmy jeden "rozmyty", który ma poprawić zachowanie funkcji dla dużych r).*)

En[{0.282942,2.0,0.07}]

(*Poniższe polecenie jest mało wydajne, liczenie może chwilę zająć.*)

(*Plot[En[{0.282942,a2}],{a2,0,3}]*)