这个程序由2个java程序,1个python程序共3部分构成,具体包括
public class eneB:用于计算硼原子的动能,势能,库仑能和相互作用能
public class overlap3:计算Gaunt积分和ck值
cal.py:用python实现积分
积分是由java调用python实现的,java和python通过一个csv文件来传递参数,程序中有两个本地路径需要改,
一个是csv的地址d:/工业/hk/python/表达式.csv,
一个是python程序的地址D:/Download/cal.py
程序初始化有两个地方需要改,是eneB和cal,需要改核电荷数z,轨道半径a0、a1,轨道fx、rj,两个地方内容是同样的。
启动顺序,先启动cal.py,生成cal.py文件,再启动eneB。
1.eneB代码
import java.io.DataInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
public class eneB {
//overlap3
public static double calc2( String stra ) throws IOException, ParseException, InterruptedException {
FileWriter fileWriter5 = new FileWriter("d:/工业/hk/python/表达式.csv");
//stra="hin( fx1,fx1)";
//stra="jin( rj1,rj2)";
stra=stra.replaceAll(",","#");
fileWriter5.write( stra + "\r\n");
fileWriter5.flush();
String exe = "python";
String command = "D:/Download/cal.py";
String[] cmdArr = new String[] {exe ,command };
Process process = Runtime.getRuntime().exec(cmdArr);
InputStream is = process.getInputStream();
DataInputStream dis = new DataInputStream(is);
String str = dis.readLine();
process.waitFor();
System.out.println(str);
double df= Double.parseDouble(str.trim());
return df;
}
public static double hin( String str1 ,String str2) throws IOException, ParseException, InterruptedException {
String str="hin("+str1+","+str2+")";
//System.out.println( str+" ** " );
double d=calc2( str );
return d;
}
public static double jin( String str1 ,String str2 , int str3) throws IOException, ParseException, InterruptedException {
String str="jin("+str1+","+str2+","+str3+")";
double d=calc2( str );
return d;
}
public static double kin( String str1 ,String str2, String str3,String str4,int str5) throws IOException, ParseException, InterruptedException {
String str="kin("+str1+","+str2+","+str3+","+str4+","+str5+")";
double d=calc2( str );
return d;
}
//ckLM ( int L1,int L2,int m1 ,int m2 ,int k )
public static double ak( String str1 ,String str2,int L1,int m1 ,int L2,int m2) throws IOException, ParseException, InterruptedException {
int k[]=overlap3.cgk (L1 , L2 );
double t=0;
for(int a=0 ;a<k.length ;a++){
if(t<k[a]){
t=k[a];
}
}
double d=0.0;
double d1=0.0;
double d2=0.0;
double d3=0.0;
for(int a=0 ;a<5 ;a++){
//System.out.println( k[a]+ "***" +a+" ** "+L1+" "+m1);
d1=overlap3.ckLM(L1,L1,m1,m1,a);
d2=overlap3.ckLM(L2,L2,m2,m2,a);
if( (Math.abs(d1)>1e-6)&&(Math.abs(d2)>1e-6) ){
d3=jin( str1 , str2 ,a);
}
if( (Math.abs(d1)<1e-6)||(Math.abs(d2)<1e-6) ){
d3=0.0;
}
d=d+ d1*d2*d3;
System.out.println( "***" +a+" ** "+L1+" "+m1+" d "+d1+" "+d2+" "+d3);
}
return d;
}
//ckLM ( int L1,int L2,int m1 ,int m2 ,int k )
public static double bk( String str1 ,String str2, String str3,String str4,int L1,int m1 ,int L2,int m2) throws IOException, ParseException, InterruptedException {
int k[]=overlap3.cgk (L1 , L2 );
double t=0;
for(int a=0 ;a<k.length ;a++){
if(t<k[a]){
t=k[a];
}
}
double d=0.0;
double d1=0.0;
double d3=0.0;
for(int a=0 ;a<5 ;a++){
d1=overlap3.ckLM(L1,L2,m1,m2,a);
if( (Math.abs(d1)>1e-6) ){
d3=kin( str1 , str2, str3 , str4 ,a);
}
if( (Math.abs(d1)<1e-6) ){
d3=0.0;
}
d=d+ d1*d1*d3;
System.out.println( "***" +a+" ** d "+d+" "+d1*d1+" "+d3);
}
System.out.println( "*** ** "+L1+" "+m1+" d "+d1+" "+d3);
return d;
}
public static void eB() throws IOException, ParseException, InterruptedException {
int z=5;
int a0=1;
int a1=4;
String fx1="(z/a0)**(1.5)*2*sympy.exp(-z*r/a0 )*(4*pi)**(-0.5)";
String fx2="(z/( 2*a1))**(1.5)*(2-z*r/a1)*sympy.exp(-z*r/(2*a1) )*(4*pi)**(-0.5)";
String fx3="(z/( 2*a1))**(1.5)*(z*r/(3**0.5*a1) )*sympy.exp(-z*r/(2*a1) )*(3/(4*pi))**(0.5)* cos(θ)";
// 库仑斥力积分
//fj1 = (z/a0)**(1.5)*2*sympy.exp(-z*r1/a0 )*(4*pi)**(-0.5)
//fj2 = (z/a0)**(1.5)*2*sympy.exp(-z*r2/a0 )*(4*pi)**(-0.5)
String rj1 ="(z/a0)**(1.5)*2*sympy.exp(-z*r1/a0 )";
String rj2 ="(z/a0)**(1.5)*2*sympy.exp(-z*r2/a0 )";
//fj3=(z/( 2*a1))**(1.5)*(2-z*r1/a1)*sympy.exp(-z*r1/(2*a1) )*(4*pi)**(-0.5)
//fj4=(z/( 2*a1))**(1.5)*(2-z*r2/a1)*sympy.exp(-z*r2/(2*a1) )*(4*pi)**(-0.5)
String rj3="(z/( 2*a1))**(1.5)*(2-z*r1/a1)*sympy.exp(-z*r1/(2*a1) )";
String rj4="(z/( 2*a1))**(1.5)*(2-z*r2/a1)*sympy.exp(-z*r2/(2*a1) )";
//fj5=(z/( 2*a1))**(1.5)*(z*r1/(3**0.5*a1) )*sympy.exp(-z*r1/(2*a1) )*(3/(4*pi))**(0.5)* cos(θ)
//fj6=(z/( 2*a1))**(1.5)*(z*r2/(3**0.5*a1) )*sympy.exp(-z*r2/(2*a1) )*(3/(4*pi))**(0.5)* cos(θ)
String rj5="(z/( 2*a1))**(1.5)*(z*r1/(3**0.5*a1) )*sympy.exp(-z*r1/(2*a1) )";
String rj6="(z/( 2*a1))**(1.5)*(z*r2/(3**0.5*a1) )*sympy.exp(-z*r2/(2*a1) )";
// System.out.println( hin(fx1,fx1)+" ** " +jin(rj1,rj2)+" "+ kin(rj1,rj4,rj2,rj3,"1"));
double fh=hin(fx1,fx1)*2+hin(fx2,fx2)*2+hin(fx3,fx3);
double fj=ak( rj1 , rj2 ,0,0,0,0)+ak( rj1 , rj4 ,0,0,0,0)*4+ak( rj1 , rj6 ,0,0,1,0)*2+
ak( rj3 , rj4 ,0,0,0,0)+ak( rj3 , rj6 ,0,0,1,0)*2;
double fk=bk( rj1 ,rj4, rj2, rj3,0,0 ,0,0)*4+ bk( rj1 ,rj6, rj2, rj5,0,0 ,1,0)*2+bk( rj3 ,rj6, rj4, rj5,0,0 ,1,0)*2;
System.out.println( fh+fj-fk +" "+fh+" "+fj+" "+fk +" "+(fh+fj-fk)*27.2 );
}
public static void main(String[] args) throws IOException, ParseException, InterruptedException {
eB();
}
}
2. overlap3代码
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.util.regex.Pattern;
public class overlap3 {
//只能得到合法数值
//实现Gaunt积分 L<=2
static int dx=1;
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+ " 负数阶乘 " );
dx=0;
}
return prodt;
}
// (m1*m2<0)&&m1<0
public static double gauntb ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int s= (int) (0.5*(L1+k+L2));
double f1=0.0;
f1=FACT(k+Math.abs(m1-m2) )*FACT(L2+Math.abs(m2))*FACT(2*s-2*L2)*FACT(s);
// System.out.println( " b "+ L1+" "+L2+" "+m1+" "+m2 );
double f2=FACT(k-Math.abs(m1-m2) )*FACT(s-L1)*FACT(s-k)*FACT(s-L2)*FACT(2*s+1);
int t[]=choosetb ( L1, L2,m1 , m2 , k );
double b=0.0;
double f3=0.0;
double f4=0.0;
for(int a=0 ;a<t.length;a++){
f3=FACT(L1+Math.abs(m1)+ t[a] )*FACT(k+L2-Math.abs(m1)-t[a]);
f4=FACT(t[a])*FACT(L1-Math.abs(m1)- t[a] )*FACT(k-L2+Math.abs(m1)+t[a])*FACT(L2+m2-t[a]);
b=b+Math.pow( (-1), t[a] )*f3/f4;
}
double g=2*Math.pow( (-1),s-k-Math.abs(m2) )*(f1/f2)*b;
// System.out.println( g +" gaunt "+b +" b "+s+" "+k );
return g;
}
//(m1*m2<0)&&m2<0
public static double gauntc ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int s= (int) (0.5*(L1+k+L2));
double f1=0.0;
f1=FACT(k+Math.abs(m1-m2) )*FACT(L2+Math.abs(m2))*FACT(2*s-2*L2)*FACT(s);
// System.out.println( " c "+ L1+" "+L2+" "+m1+" "+m2 +" "+k+" ");
double f2=FACT(k-Math.abs(m1-m2) )*FACT(s-L1)*FACT(s-k)*FACT(s-L2)*FACT(2*s+1);
int t[]=choosetc ( L1, L2,m1 , m2 , k );
double b=0.0;
double f3=0.0;
double f4=0.0;
for(int a=0 ;a<t.length;a++){
f3=FACT(L1+Math.abs(m1)+ t[a] )*FACT(k+L2-Math.abs(m1)-t[a]);
f4=FACT(t[a])*FACT(L1-Math.abs(m1)- t[a] )*FACT(k-L2+Math.abs(m1)+t[a])*FACT(L2-m2-t[a]);
b=b+Math.pow( (-1), t[a] )*f3/f4;
// System.out.println( b +" b " );
}
double g=2*Math.pow( (-1),s-k-Math.abs(m2) )*(f1/f2)*b;
// System.out.println( g +" gaunt "+b +" b "+s+ " "+k );
// System.out.println(FACT(0)+" "+FACT(L1-Math.abs(m1)- 0 )+" "+ FACT(k-L2+Math.abs(m1)+0)+" "+ FACT(L2-Math.abs(m2)-0) );
return g;
}
public static double gaunta ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int s= (int) (0.5*(L1+k+L2));
double f1=0.0;
f1=FACT(k+Math.abs(m1-m2) )*FACT(L2+Math.abs(m2))*FACT(2*s-2*L2)*FACT(s);
double f2=FACT(k-Math.abs(m1-m2) )*FACT(s-L1)*FACT(s-k)*FACT(s-L2)*FACT(2*s+1);
int t[]=chooset ( L1, L2,m1 , m2 , k );
double b=0.0;
double f3=0.0;
double f4=0.0;
for(int a=0 ;a<t.length;a++){
f3=FACT(L1+Math.abs(m1)+ t[a] )*FACT(k+L2-Math.abs(m1)-t[a]);
f4=FACT(t[a])*FACT(L1-Math.abs(m1)- t[a] )*FACT(k-L2+Math.abs(m1)+t[a])*FACT(L2-Math.abs(m2)-t[a]);
b=b+Math.pow( (-1), t[a] )*f3/f4;
// System.out.println( b +" b " );
}
double g=2*Math.pow( (-1),s-k-Math.abs(m2) )*(f1/f2)*b;
// System.out.println( " a "+ L1+" "+L2+" "+m1+" "+m2 +" s k "+s+" "+k );
// System.out.println( g +" gaunt "+b +" b "+FACT(k+L2-Math.abs(m1)-0) );
return g;
}
//算Gaunt 的K
public static int[] cgk ( int L1,int L2 ) throws IOException, ParseException{
String str="";
int cou=0;
for(int a=0 ;a<7 ;a++){
//System.out.println(a+" ** " );
if( a<=L1+L2 && a>=Math.abs(L1-L2)){
if((L1+L2+a)%2==0){
//System.out.println(a+" ** * " );
str=str+a+",";
cou++;
}
}
}
int k[]=new int[cou];
int cou1=0;
for(int a=0 ;a<7 ;a++){
//System.out.println(a+" ** " );
if( a<=L1+L2 && a>=Math.abs(L1-L2)){
if((L1+L2+a)%2==0){
System.out.println(a+" ** * k" );
k[cou1]=a;
cou1++;
}
}
}
return k;
}
//判断k是否合法
public static int ckk ( int []tem ,int k ) throws IOException, ParseException{
int cou=0;
for(int a=0 ;a<tem.length ;a++){
//System.out.println(a+" ** " );
if( tem[a]==k ){
cou=1;
break;
}
}
return cou;
}
//考虑 L1=L2<=3 t [-6,9]
public static void cgt ( ) throws IOException, ParseException{
double a1=0.0;
double a2=0.0;
double a3=0.0;
double a4=0.0;
double a5=0.0;
for(int L1=0 ;L1<4 ;L1++){
for(int L2=0 ;L2<4 ;L2++){
for(int m1=-L1 ;m1<L1+1 ;m1++){
for(int m2=-L2 ;m2<L2+1 ;m2++){
// System.out.println( L1+" "+L2+" "+m1+" "+m2+" ** " );
int k[]=cgk ( L1,L2 );
for(int a=0 ;a<k.length ;a++){
a1=L1+Math.abs(m1); //0 6 //+t -6 oo
a2=k[a]+L2-Math.abs(m1); //0 9 //-t 9 -oo
a3=L1-Math.abs(m1); //0 3 //-t 3 -oo
a4=k[a]-L2+Math.abs(m1); // -3 6 //+t -6 oo
a5=L2-Math.abs(m2); //0 3 //-t 3 -oo
// System.out.println( a1+ " "+a2+" "+a3+" "+a4+" "+a5 );
}
}
}
}
}
}
//在0到9范围内选择t 但t不能是负数 给出t数组
public static int[] chooset ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int a1=0;
int a2=0;
int a3=0;
int a4=0;
int a5=0;
String str="";
for(int a=0 ;a<10 ;a++){
a1=L1+Math.abs(m1)+a; //0 -6
a2=k+L2-Math.abs(m1)-a; //0 -9
a3=L1-Math.abs(m1)-a; //0 -3
a4=k-L2+Math.abs(m1)+a; //-6 3
a5=L2-Math.abs(m2)-a; //0 -3
if(a1>=0&&a2>=0&&a3>=0&&a4>=0&&a5>=0){
str=str+a+",";
}
}
//System.out.println( str+ " ** t" );
str=str.trim();
String[] w=Pattern.compile(",").split(str);
int []t=new int[w.length];
for (int b = 0; b < w.length ; b++) {
t[b]=Integer.parseInt(w[b].trim());
// System.out.println( t[b]+" ** t" );
}
return t;
}
public static int[] choosetb ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int a1=0;
int a2=0;
int a3=0;
int a4=0;
int a5=0;
String str="";
for(int a=0 ;a<10 ;a++){
a1=L1+Math.abs(m1)+a; //0 -6
a2=k+L2-Math.abs(m1)-a; //0 -9
a3=L1-Math.abs(m1)-a; //0 -3
a4=k-L2+Math.abs(m1)+a; //-6 3
//a5=L2-Math.abs(m2)-a; //0 -3
a5=L2+m2-a;
if(a1>=0&&a2>=0&&a3>=0&&a4>=0&&a5>=0){
str=str+a+",";
}
}
//System.out.println( str+ " ** t" );
str=str.trim();
String[] w=Pattern.compile(",").split(str);
int []t=new int[w.length];
for (int b = 0; b < w.length ; b++) {
t[b]=Integer.parseInt(w[b].trim());
// System.out.println( t[b]+" ** t" );
}
return t;
}
public static int[] choosetc ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int a1=0;
int a2=0;
int a3=0;
int a4=0;
int a5=0;
String str="";
for(int a=0 ;a<10 ;a++){
a1=L1+Math.abs(m1)+a; //0 -6
a2=k+L2-Math.abs(m1)-a; //0 -9
a3=L1-Math.abs(m1)-a; //0 -3
a4=k-L2+Math.abs(m1)+a; //-6 3
//a5=L2-Math.abs(m2)-a; //0 -3
a5=L2-m2-a;
if(a1>=0&&a2>=0&&a3>=0&&a4>=0&&a5>=0){
str=str+a+",";
}
}
//System.out.println( str+ " ** t" );
str=str.trim();
String[] w=Pattern.compile(",").split(str);
int []t=new int[w.length];
for (int b = 0; b < w.length ; b++) {
t[b]=Integer.parseInt(w[b].trim());
// System.out.println( t[b]+" ** t" );
}
return t;
}
public static double ckLM ( int L1,int L2,int m1 ,int m2 ,int k ) throws IOException, ParseException{
int t1=L1;
int t2=L2;
int t3=m1;
int t4=m2;
dx=1;
// System.out.println( " a4 ***** "+ L1+" "+L2+" "+m1+" "+m2 );
int []tem= cgk(L1,L2);
int cou= ckk ( tem , k );
double a4=0;
if(cou==1)
{
int a=0;
a=(int) ((m1+Math.abs(m1)+m2+Math.abs(m2) +(m1-m2)+Math.abs(m1-m2))*0.5);
double a1=Math.pow( FACT(k-Math.abs(m1-m2) ) / FACT(k+Math.abs(m1-m2)) ,0.5 );
double a2=Math.pow( FACT(L1-Math.abs(m1))*(2*L1+1) / (FACT(L1+Math.abs(m1))*2 ) ,0.5 );
double a3=Math.pow( FACT(L2-Math.abs(m2))*(2*L2+1) /(FACT(L2+Math.abs(m2))*2 ) ,0.5 );
// System.out.println( a+" *** * *"+ a1+" "+a2+" "+a3 );
double a5=0.0;
if ( (Math.abs(m1)>=Math.abs(m2))&& (m1*m2>=0 ) )
{
a5=gaunta ( L1, L2, m1 ,m2 , k );
}
if ( (Math.abs(m1)<Math.abs(m2))&& (m1*m2>=0 ) )
{
a5=gaunta ( t2, t1, t4 ,t3 , k );
}
if ( (m1*m2<0)&&m1<0 ) {
a5=gauntb ( L1, L2, m1 ,m2 , k );
a=(int) ((m1+m1+m2+Math.abs(m2) +(m1-m2)+Math.abs(m1-m2))*0.5);
if(L1==1&&L2==2&&m1==-1&&m2==2&&k==3)
{
a=(int) ((m1+Math.abs(m1)+m2-Math.abs(m2) +(m1-m2)+Math.abs(m1-m2))*0.5);
}
if(L1==2&&L2==2&&m1==-2&&m2==1&&k==4)
{
a=(int) ((m1+Math.abs(m1)+m2-Math.abs(m2) +(m1-m2)+Math.abs(m1-m2))*0.5);
}
if(L1==2&&L2==1&&m1==-2&&m2==1&&k==3)
{
a=(int) ((m1+Math.abs(m1)+m2-Math.abs(m2) +(m1-m2)+Math.abs(m1-m2))*0.5);
}
if(L1==2&&L2==2&&m1==-1&&m2==2&&k==4)
{
a=(int) ((m1+Math.abs(m1)+m2-Math.abs(m2) +(m1-m2)+Math.abs(m1-m2))*0.5);
}
}
if ( (m1*m2<0)&&m2<0 ) {
a5=gauntc ( L1, L2, m1 ,m2 , k );
a=(int) ((m1+Math.abs(m1)+m2+m2 +(m1-m2)+Math.abs(m1-m2))*0.5);
}
a4=Math.pow( (-1),a)*a1*a2*a3*a5;
double a6=Math.pow( (-1),a)*a1*a2*a3;
if(dx==0){
// System.out.println( " dx *** * *" +dx );
a4=0;
}
}
if(cou==0){
// System.out.println( " cou *** * *" );
a4=0;
}
System.out.println( a4+" a4 "+ L1+" "+L2+" "+m1+" "+m2 );
return a4;
}
public static void main(String[] args) throws IOException, ParseException {
ckLM ( 1 , 0 , 1 , 0 , 1 );
//ckLM ( 0 , 1 , 0 , 1 , 1 );
}
}
3.cal代码
import sympy
import math
from sympy import symbols, cancel
import csv
a = sympy.Symbol('a')
e = sympy.Symbol('e')
m = sympy.Symbol('m')
h = sympy.Symbol('h')
l = sympy.Symbol('l')
lp = sympy.Symbol('lp')
r = sympy.Symbol('r')
EE = sympy.Symbol('EE')
R = sympy.Symbol('R')
r1 = sympy.Symbol('r1')
r2 = sympy.Symbol('r2')
r3 = sympy.Symbol('r3')
c1 = sympy.Symbol('c1')
c2 = sympy.Symbol('c2')
c3 = sympy.Symbol('c3')
μ = sympy.Symbol('μ')
v = sympy.Symbol('v')
α = sympy.Symbol('α')
β = sympy.Symbol('β')
x = sympy.Symbol('x')
y = sympy.Symbol('y')
z = sympy.Symbol('z')
θ1= sympy.Symbol('θ1')
θ2= sympy.Symbol('θ2')
Φ1= sympy.Symbol('Φ1')
Φ2= sympy.Symbol('Φ2')
θ= sympy.Symbol('θ')
Ψ= sympy.Symbol('Ψ')
Φ= sympy.Symbol('Φ')
pi=sympy.Symbol('pi')
E=sympy.Symbol('E')
I=sympy.Symbol('I')
sin=sympy.Symbol('sin')
cos=sympy.Symbol('cos')
tan=sympy.Symbol('tan')
diff=sympy.Symbol('diff')
integrate=sympy.Symbol('integrate')
pi=sympy.pi
E=sympy.E
sin=sympy.sin
cos=sympy.cos
tan=sympy.tan
diff=sympy.diff
integrate=sympy.integrate
def hin( fx1 ,fx2 ):
fx = fx1
#print("z ",z)
# 拉普拉斯算符
f1 = (1 / (r * r)) * diff((r * r * diff(fx, r)), r)
f2 = (1 / (r * r * sin(θ))) * diff((sin(θ) * diff(fx, θ)), θ)
f3 = (1 / (r * r * sin(θ) * sin(θ))) * diff(fx, Φ, Φ)
f8 = fx2*(-1 / 2) * (f1 + f2 + f3)
# print ( f1 )
# print ( f2 )
# print ( f3 )
# print ( f8 )
# 球坐标积分 动能
f9 = (integrate((integrate(integrate(f8 * r * r * sin(θ), (r, 0, float('inf'))), (θ, 0, pi))), (Φ, 0, 2 * pi)))
# print(f9)
f10 = fx2 * (-z / r) * fx
# 势能
f11 = (integrate((integrate(integrate(f10 * r * r * sin(θ), (r, 0, float('inf'))), (θ, 0, pi))), (Φ, 0, 2 * pi)))
# print(f11)
#print("H", f9 + f11)
return f9 + f11
def jin (fr1 ,fr2 ,k):
f21 = fr1 * fr2 * (r2 ** k / r1 ** (k + 1)) * fr1 * fr2 * r1 * r1 * r2 * r2
f22 = fr1 * fr2 * (r1 ** k / r2 ** (k + 1)) * fr1 * fr2 * r1 * r1 * r2 * r2
f23 = (integrate(f21, (r2, 0, r1)))
f24 = (integrate(f22, (r2, r1, float('inf'))))
f25 = ( integrate(f24 + f23, (r1, 0, float('inf'))))
# print("f23",f23)
# print("f24",f24)
#print( f25)
return f25
def kin(fr1, fr2, fr3, fr4, k):
# 交换积分
# fr1 = (z) ** (1.5) * sympy.exp(-z * r1) * pi ** (-0.5)
# fr2 = (z) ** (1.5) * sympy.exp(-z * r2) * pi ** (-0.5)
# fr3 = (z) ** (1.5) * sympy.exp(-z * r2) * pi ** (-0.5)
# fr4 = (z) ** (1.5) * sympy.exp(-z * r1) * pi ** (-0.5)
f21 = fr1 * fr2 * (r2 ** k / r1 ** (k + 1)) * fr3 * fr4 * r1 * r1 * r2 * r2
f22 = fr1 * fr2 * (r1 ** k / r2 ** (k + 1)) * fr3 * fr4 * r1 * r1 * r2 * r2
f23 = (integrate(f21, (r2, 0, r1)))
f24 = (integrate(f22, (r2, r1, float('inf'))))
f36 = (integrate(f24 + f23, (r1, 0, float('inf'))))
# print("f23",f23)
# print("f24",f24)
#print("K", f36)
return f36
def sab (fr1 ,fr2 ):
# print("f23",f23)
# print("f24",f24)
f9 = (integrate((integrate(integrate( fr1*fr2 * r * r * sin(θ), (r, 0, float('inf'))), (θ, 0, pi))), (Φ, 0, 2 * pi)))
print("S", f9)
return f9
z=5
a0=1
a1=4
#a0=1
#a1=4
'''
fx1=(z/a0)**(1.5)*2*sympy.exp(-z*r/a0 )*(4*pi)**(-0.5)
fx2=(z/( 2*a1))**(1.5)*(2-z*r/a1)*sympy.exp(-z*r/(2*a1) )*(4*pi)**(-0.5)
fx3=(z/( 2*a1))**(1.5)*(z*r/(3**0.5*a1) )*sympy.exp(-z*r/(2*a1) )*(3/(4*pi))**(0.5)* cos(θ)
# 库仑斥力积分
#fj1 = (z/a0)**(1.5)*2*sympy.exp(-z*r1/a0 )*(4*pi)**(-0.5)
#fj2 = (z/a0)**(1.5)*2*sympy.exp(-z*r2/a0 )*(4*pi)**(-0.5)
rj1 = (z/a0)**(1.5)*2*sympy.exp(-z*r1/a0 )
rj2 = (z/a0)**(1.5)*2*sympy.exp(-z*r2/a0 )
#fj3=(z/( 2*a1))**(1.5)*(2-z*r1/a1)*sympy.exp(-z*r1/(2*a1) )*(4*pi)**(-0.5)
#fj4=(z/( 2*a1))**(1.5)*(2-z*r2/a1)*sympy.exp(-z*r2/(2*a1) )*(4*pi)**(-0.5)
rj3=(z/( 2*a1))**(1.5)*(2-z*r1/a1)*sympy.exp(-z*r1/(2*a1) )
rj4=(z/( 2*a1))**(1.5)*(2-z*r2/a1)*sympy.exp(-z*r2/(2*a1) )
#fj5=(z/( 2*a1))**(1.5)*(z*r1/(3**0.5*a1) )*sympy.exp(-z*r1/(2*a1) )*(3/(4*pi))**(0.5)* cos(θ)
#fj6=(z/( 2*a1))**(1.5)*(z*r2/(3**0.5*a1) )*sympy.exp(-z*r2/(2*a1) )*(3/(4*pi))**(0.5)* cos(θ)
rj5=(z/( 2*a1))**(1.5)*(z*r1/(3**0.5*a1) )*sympy.exp(-z*r1/(2*a1) )
rj6=(z/( 2*a1))**(1.5)*(z*r2/(3**0.5*a1) )*sympy.exp(-z*r2/(2*a1) )
'''
f = csv.reader(open('d:/工业/hk/python/表达式.csv','r'))
for i in f:
f2=(i)
f2[0] = f2[0].replace("#", ",")
d=(eval(f2[0]))
print ( round( d,16 ) )