当前位置: 首页 > 计算模拟 >振荡的波函数如何求积分

振荡的波函数如何求积分

作者 问天卖饼2
来源: 小木虫 350 7 举报帖子
+关注

我用薛定谔方程分别求出199个phi和199个psi,现在的问题是phi*psi后求积分求不出来,代码如图所示。我尝试了很多种method都不行。求助广大强大的网友,该怎么求积分呢?

 返回小木虫查看更多

今日热帖
  • 精华评论
  • 问天卖饼2

    1D的高度振荡的波函数的积分

  • 问天卖饼2

    mathematica

  • 问天卖饼2

    L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole =
    0.34*9.1*10^-31; e = 1.6*10^-19; \[HBar] = 1.05*10^-34; Ne = 199;eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] +
       e*F*x*\[Phi][x]);{phivals, phifuns} =
      NDEigensystem[{eqn1,
        DirichletCondition[\[Phi][x] == 0,
         x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2,
        L/2}, Ne,
       Method -> {"SpatialDiscretization" -> {"FiniteElement", \
    {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] -
       e*F*x*\[Psi][x]);{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[[Psi][x] == 0, x [GreaterSlantEqual] L/2 || x <= -L/2]}, [Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];Etable = Table[(psivals[] + phivals[[j]])/(1.6*10^-22), {i, Ne}, {j, Ne}];Itable = Table[ Abs[NIntegrate[psifuns[]*phifuns[[j]], {x, -L/2, L/2}, Method -> {"ExtrapolatingOscillatory"}]], {i, Ne}, {j, Ne}];,

  • 问天卖饼2

    L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole =
    0.34*9.1*10^-31; e = 1.6*10^-19; \[HBar] = 1.05*10^-34; Ne = 199;eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] +
       e*F*x*\[Phi][x]);{phivals, phifuns} =
      NDEigensystem[{eqn1,
        DirichletCondition[\[Phi][x] == 0,
         x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2,
        L/2}, Ne,
       Method -> {"SpatialDiscretization" -> {"FiniteElement", \
    {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] -
       e*F*x*\[Psi][x]);{psivals, psifuns} = NDEigensystem[{eqn2, DirichletCondition[[Psi][x] == 0, x [GreaterSlantEqual] L/2 || x <= -L/2]}, [Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> {"FiniteElement", \ {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];Etable = Table[(psivals + phivals[[j]])/(1.6*10^-22), {i, Ne}, {j, Ne}];Itable = Table[ Abs[NIntegrate[psifuns[]*phifuns[[j]], {x, -L/2, L/2}, Method -> {"ExtrapolatingOscillatory"}]], {i, Ne}, {j, Ne}];

  • 问天卖饼2

    L = 1000*10^-10; F = 10^7; m = 0.0665*9.1*10^-31; mhole = 0.34*9.1*10^-31; e = 1.6*10^-19; [HBar] = 1.05*10^-34; Ne = 199;
    eqn1 = (-(\[HBar]^2/(2 m))* (\[Phi]^\[Prime]\[Prime])[x] + e*F*x*\[Phi][x]);
    eqn2 = (-(\[HBar]^2/(2 mhole))* (\[Psi]^\[Prime]\[Prime])[x] - e*F*x*\[Psi][x])
    {phivals, phifuns} = NDEigensystem[{eqn1, DirichletCondition[\[Phi][x] == 0,  x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Phi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" ->{"FiniteElement", {"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];
    {psivals, psifuns} =  NDEigensystem[{eqn2,  DirichletCondition[\[Psi][x] == 0, x \[GreaterSlantEqual] L/2 || x <= -L/2]}, \[Psi][x], {x, -L/2, L/2}, Ne, Method -> {"SpatialDiscretization" -> "FiniteElement", \{"MeshOptions" -> {MaxCellMeasure -> 10^-9}}}}];

  • 独孤神宇

    既然phi和psi都已经计算出来(离散数据点),那么phi*psi也是确定的离散点,直接用梯形公式求解,当然这种精度也较低。可以采用样条插值增加点数,然后再计算积分,这样可以提高精度

猜你喜欢