Clear["`*"];
\[Epsilon]0=8.85*^-12;
\[Alpha]1=4.5*^5 (-100+T);
\[Alpha]11=-1.873*^8;
\[Alpha]111=8.852*^9;
\[Alpha]1111=9.465*^10;
\[Alpha]12=8.86*^8;
\[Alpha]112=-8.502*^9;
\[Alpha]1112=8.779*^9;
\[Alpha]1122=9.785*^10;
\[Alpha]123=-4.734*^9;
\[Alpha]1123=5.846*^10;
energy=\[Alpha]1*(px^2+py^2+pz^2)+\[Alpha]11*(px^4+py^4+pz^4)+\[Alpha]12*((px*py)^2+(py*pz)^2+(px*pz)^2)+\[Alpha]111*(px^6+py^6+pz^6)+\[Alpha]112*((py^4+pz^4)*px^2+(px^4+pz^4)*py^2+(px^4+py^4)*pz^2)+\[Alpha]123*(px*py*pz)^2+\[Alpha]1111*(px^8+py^8+pz^8)+\[Alpha]1112*((py^6+pz^6)*px^2+(px^6+pz^6)*py^2+(px^6+py^6)*pz^2)+\[Alpha]1122*((px*py)^4+(py*pz)^4+(px*pz)^4)+\[Alpha]1123*((px*py*pz^2)^2+(pz*px*py^2)^2+(pz*py*px^2)^2);
T=75;
"NMinimize"
p=NMinimize[energy ,{px,py,pz}]
" "
"NSolve"
F1=D[energy,px];
F2=D[energy,py];
F3=D[energy,pz];
q=NSolve[{F1==0,F2==0,F3==0},{px,py,pz},Reals];
FF=energy/.q;
n=Flatten[Position[FF,Min[FF]]];
{FF[[n[[1]]]],q[[n[[1]]]]}
这上面的是代码,一个三元8次函数,我要求最小值,但是用两种方法求出来的却不一样,运算后结果如下
NMinimize
{-206335.,{px->-0.127656,py->-7.94959*10^-22,pz->0.127656}}
NSolve
{-224139.,{px->0,py->0.154313,pz->0}}
很明显NSolve解出来的值更小,但是用解方程的方法太浪费时间了,求解决办法。