3 body symmetric non relativistic quantum kinetic energy operator in maxima computer symbolic math software

Assume 2 electrons about an infinite massive body such as is often done for Helium atom. r[1],r[2] are the radius of electrons 1,2 say wrt nucleus and r[3] is the distance between the 2 electrons. I use the following and get the correct answer in atomic units for ground state since there is no angular momentum only need 3 variables.

(kill(an,E,e,er,k,r,r1,r2,r12,r12s,r12,Z,z),nps:2,nn:2,for i thru 4 do assume(r[i]>0,es[i]>0) ,depends(f,[r[1],r[2],r[3],w]), assume(k>0,z>0,Z>0,r12s>0,rsq>0) ,td:-1/2*(sum((diff(f,w,2)(1-w^2)-2diff(f,w,1)w)/r[i]^2+2diff(f,r[i])/r[i] +diff(f,r[i],2),i,1,2)) ,r12s:sqrt(r[1]^2+r[2]^2-2 * w * r[1]*r[2]) , ee:exp(sum(a[i]*r[i],i,1,2)+a[3]*r12s) , te:expand(ev(subst(f=ee,td),diff,eval)/ee),ans:solve(r[3]^2-r12s^2,w) ,ts:expand(subst(ans,te)),lisv:makelist(r[i],i,1,3) ,lisaz:makelist(a[i]=0,i,1,3) ,tdf:sum(sum(sum(sum(lratsubst(lisaz,coeff(coeff(ts,a[i],k),a[j],m)*diff(f,r[i],k,r[j],m)),m,signum(j-i-1),min(2-k,3-i)),k,1,2),j,i+1,max(i+1,3)),i,1,3))

But now i should be able to get the answer without having to use that artifice sort of trick by finding coefficients of exponential... as i did just above. But i have tried in vain using jacobian, depends... etc. and just cannot come up with the correct answer that i just did get above. For example for the jacobian to get from the variables r[1],r[2],w to using r[1],r[2],r[3] instead use jacobian([r1,r2,(r1^2+r2^2-r12^2)/r1/r2/2],[r1,r2,r12]);

But actually don't need that directly as should be able to use depends as in

/chain rule interparticle 2 particles about inf wt mass/ [kill(f,r,w),depends(f,[r[1],r[2],r[3],w],[r],w),eq: expand(diff(f,r[1],2)/2+diff(f,r[2],2)/2+diff(f,r[1])/r[1]+diff(f,r[2]) /r[2]+ ((1-w^2)diff(f,w,2)/2-wdiff(f,w))*(1/r[1]^2+1/r[2]^2) )];

Now i need to explicitly substitute for those derivatives wrt w to get in terms of r[1],r[2],r[3] so using r[3]^2=r[1]^2+r[2]^2-2wr[1]r[2] which in the first routine above r[3]^2 was set to r12s so using this begin to set up some solutions as in: [tt:-r[2]^2+2r[1]*r[2]*w+r[3]^2,"ans"=ans:solve(tt,r[1])," t"=t:subst(diff(r[3],w)=-r[1]*r[2]/r[3],diff(part(ans,1,2),w)), " t1"= t1:subst(rr[1]=r[1],subst(rr[1]=r[2],subst(r[2]=r[1],subst(r[1]=rr[1],t)))) ,ans2:solve([diff(r[1],w)=t,diff(r[2],w)=t1], [diff(r[1],w),diff(r[2],w)]),t2:lratsubst(ans2,diff([part(ans2,1,1,2),part(ans2,1,2,2)],w)) ] I kind of stop there because the expressions are just so 'hairy' i just can't believe that substituting back with those expressions would possibly give the correct answer. There has to be an easier more direct way. So can anyone help with this ? Note this darn interface just like putting in a bug report in maxima insists on not showing multiplication signs. I have never figured a work around to remedy this problem and why anyone makes editors like these that don't show multiplication signs i don't know.

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论