0

我有以下功能,有点复杂:

   X1=Function[{r,\[Theta],l},4Re[(N[Integrate[E^(-(r^2+R^2)+2 I R l/r) (r+I R)^(2 l) 
(LaguerreL[1/2 (-l+n),l,(r^2+R^2)])^2 ,{R,-\[Infinity],\[Infinity]}]])]];

其中函数在 [Theta] 中是常数,假设该函数通过方程 X1(r, [Theta], l)=0.08 定义一个表面(或多或少是圆柱形)。

问题是我无法使用以下命令绘制它:ContourPlot3D,Mathematica 的 ListContourPlot3D,在 matlab 中我无法处理 Laguerre 广义多项式来绘制等值面 :_(

4

1 回答 1

0

假设n定义了拉盖尔多项式的阶,并且r是 3 维向量(x,y,z)的长度,我从您的方程中得到等高线图。

为了使计算更有效率,我将您的积分定义为备忘录函数:

fx1nl[n_, l_] := 
 fx1nl[n, l] = 
  4 Re[(N[Integrate[
       E^(-(r^2 + R^2) + 2 I R l/r) (r + I R)^(2 l) (LaguerreL[
           1/2 (-l + n), 
           l, (r^2 + R^2)])^2, {R, -\[Infinity], \[Infinity]}]])]

(我不知道如何在该定义中加入对r的依赖,因此请改用以下 hack:

fx1[rp_, n_, l_] := fx1nl[n, l] /. r -> rp

然后你可以继续

ContourPlot3D[ fx1[Sqrt[x^2 + y^2 + z^2], 1, 1] == 0.08, {x, 0, 1}, {y, 0, 1}, {z, 0, 1} ]

... 例如。

我没有太多运气来评估nl的其他值的函数,所以也许你需要在去那里之前计算出这些积分。

于 2013-05-07T18:31:37.830 回答