<F 1s | H 1s>,<F 2s | H 1s>,<F 2p0 | H 1s>,氟化氢中有这三种情况是双中心积分,
列成表格
| n | l | n' | l' | λ | ζ | ζ' | R | Pople John A | 计算值 | 参考值/计算值 | <F 1s | H 1s> | 1 | 0 | 1 | 0 | 0 | 8.7 | 1 | 1.733 | -2.1798 | -2.179823778 | 0.999989092 | <F 2s | H 1s> | 2 | 0 | 1 | 0 | 0 | 2.6 | 1 | 1.733 | -4.3051 | -4.305097499 | 1.000000581 | <F 2p0 | H 1s> | 2 | 1 | 1 | 0 | 0 | 2.6 | 1 | 1.733 | -2.2822 | -2.282193291 | 1.00000294 |
利用前面得到Tab,VabA和VabB方法得到一个新的方法
?
public static double cou( double R ,int zn1, int zn2,double za,double zb, int n1,int L1 ,int m1 ,int n2 ,int L2 ,int m2 ) throws IOException, ParseException, InterruptedException {
double d= Tab (R , za , zb , n1, L1 , m1 , n2 , L2 , m2 );//0.00523319906316793
double d1= VabA( R , zn1 , za , zb , n1, L1 , m1 , n2 , L2 , m2 );//-2.152403725820715
double d2= VabB( R , zn2 , za , zb , n1, L1 , m1 , n2 , L2 , m2 );//-0.03265325106338999
double f=d+d1+d2;
return f;
}
直接代入这个新方法就可以得到这三个积分,
double d=cou( 1.733 ,9,1, 8.7 , 1 ,?? 1,? 0 , 0 , 1 , 0 , 0 ); //-2.1798237778209373
double d=cou( 1.733 ,9,1, 2.6 , 1 ,?? 2,? 0 , 0 , 1 , 0 , 0 ); //-4.305097498533459
double d=cou( 1.733 ,9,1, 2.6 , 1 ,?? 2,? 1 , 0 , 1 , 0 , 0 );//-2.282193290607004
完整的java程序
package greenwood;
import java.io.IOException;
import java.text.ParseException;
import udp.HFoverlapA;
public class kin {
public static double FACT( double n ) throws IOException, ParseException {
double prodt=1.0;
for(int a=1 ;a<n+1 ;a++)
{
prodt=prodt*a;
}
if(n<0){
System.out.println( prodt+ " 负数阶乘 " );
}
return prodt;
}
public static double Tab( double R,double za,double zb, int n1,int L1 ,int m1 ,int n2 ,int L2 ,int m2 ) throws IOException, ParseException, InterruptedException {
double f=0;
double f1=0;
double f2=0;
double f3=0;
f1= ( -zb*zb/2)*HFoverlapA.Sab ( R,za, zb, n1, L1 , m1 , n2 , L2 );
System.out.println( f1 +" f1 Tab " );
double d1=( ( 2*n2*zb*zb) /Math.pow ( 2*n2*(2*n2-1) ,0.5 ) );
double d2=HFoverlapA.Sab (R, za, zb, n1, L1 , m1 , (n2-1) , L2 );
f2=d1*d2;
System.out.println( f2 +" f2 Tab " +d1+" "+d2 );
double d5=0;
double d6=0;
if(n2>1){
double d4=2*zb*zb*(L2*(L2+1)-n2*(n2-1) );
if(Math.abs(d4)>1e-6){
d5=Math.pow ( 2*n2*(2*n2-1)*(2*n2-2)*(2*n2-3) ,0.5);
d6= HFoverlapA.Sab (R, za, zb, n1, L1 , m1 , (n2-2) , L2 );
f3=(d4/d5)*d6;
}
System.out.println( f3 +" f3 Tab " +d4+" "+d5+" "+d6 );
}
f=f1+f2+f3;
System.out.println( f+" "+ f1+" "+f2+" "+f3+" f Tab " );
return f;
}
public static double VabA( double R ,int zn, double za,double zb, int n1,int L1 ,int m1 ,int n2 ,int L2 ,int m2 ) throws IOException, ParseException, InterruptedException {
double f1=-zn* (2*za/ Math.pow(2*n1*(2*n1-1),0.5 ) )*HFoverlapA .Sab ( R, za, zb , n1-1, L1 , m1 ,n2 ,L2 );
return f1;
}
public static double VabB( double R ,int zn, double za,double zb, int n1,int L1 ,int m1 ,int n2 ,int L2 ,int m2 ) throws IOException, ParseException, InterruptedException {
double f1=-zn* (2*zb/ Math.pow(2*n2*(2*n2-1),0.5 ) )*
HFoverlapA .Sab ( R, za, zb , n1, L1 , m1 ,n2-1 ,L2 );
return f1;
}
public static double cou( double R ,int zn1, int zn2,double za,double zb, int n1,int L1 ,int m1 ,int n2 ,int L2 ,int m2 ) throws IOException, ParseException, InterruptedException {
double d= Tab (R , za , zb , n1, L1 , m1 , n2 , L2 , m2 );//0.00523319906316793
double d1= VabA( R , zn1 , za , zb , n1, L1 , m1 , n2 , L2 , m2 );//-2.152403725820715
double d2= VabB( R , zn2 , za , zb , n1, L1 , m1 , n2 , L2 , m2 );//-0.03265325106338999
double f=d+d1+d2;
return f;
}
public static void res( ) throws IOException, ParseException, InterruptedException {
// double d=cou( 1.733 ,9,1, 8.7 , 1 , 1, 0 , 0 , 1 , 0 , 0 ); //-2.1798237778209373
// double d=cou( 1.733 ,9,1, 2.6 , 1 , 2, 0 , 0 , 1 , 0 , 0 ); //-4.305097498533459
double d=cou( 1.733 ,9,1, 2.6 , 1 , 2, 1 , 0 , 1 , 0 , 0 );//-2.282193290607004
System.out.println( d+" res " );
}
public static void main(String[] args) throws IOException, ParseException, InterruptedException {
res( );
}
}
|