我试图在 Mathematica 中对两个图的交集的浓度(密度)进行建模,eggs[x,y,z,t]
并且sperm[x,y,z,t]
. 当人们试图将描述图形边界的方程实现(sperm[x,y,z,t] == eggs[x,y,z,t])
为任一DensityPlot3D
或说说明符时,就会出现问题RegionFunction -> Function[{x,y,z,t},func]
。ContourPlot3D
但是,该方法DensityPlot3D
适用于该任务,因为我正在尝试为解决方案设置动画并将图表的颜色作为浓度变量(精子和卵子方程的 4D 输出)。
这是我的ContourPlot3D
过程代码:
In[1]:= sperm[x_,y_,z_,t_]= 1/Sqrt[4*Pi*t]*E^((-x^2-y^2-z^2)/(4*t));
eggs[x_,y_,z_,t_]=1/Sqrt[4*Pi*t]*E^((-(x+3)^2-(y+3)^2-(z+3)^2)/(4*t));
Animate[ContourPlot3D[sperm[x, y, z, t] == eggs[x, y, z, t], {x, -10, 10}, {y, -10, 10}, {z, -10, 10}], {t, 0, 10}]
输出通常会使系统崩溃,因此无法在此处上传。
这是我尝试将此方法应用于DensityPlot3D
:
In[2]:= Animate[DensityPlot3D[sperm[x, y, z, t] == eggs[x, y, z, t], {x, -10, 10}, {y, -10, 10}, {z, -10, 10}], {t, 0, 10}]
输出只是一个空白的 3D 图。
经过研究,我发现RegionFunction
(and RegionPlot3D
) 似乎只使用了不等式,并且 in 的第一个参数DensityPlot3D
使用了一个不是方程形式的函数。我试图通过做类似的事情来绕过这个
f = Solve[sperm[x, y, z, t] == eggs[x, y, z, t], {x, y, z, t}, Reals]
并将该变量作为第一个参数输入,但这并没有帮助,因为结果仍然被认为是一个方程(一个复杂的方程)。
所以,我的问题是:我怎样才能将方程作为边界来实现DensityPlot3D
?
编辑:所以事实证明,第一个参数实际上可以包含方程式,因为我能够为s[x, y, t] == e[x, y, t]
.
这是代码:
In[1]:= s[x_, y_, t_] = 1/Sqrt[4*Pi*t]*E^((-(x + 0)^2 - (y + 0)^2)/(4*t));
e[x_, y_, t_] = 1/Sqrt[4*Pi*t]*E^((-(x + 3)^2 - (y + 3)^2)/(4*t));
Animate[DensityPlot[s[x, y, t] == e[x, y, t], {x, -10, 10}, {y, -10, 10}, ColorFunction -> "TemperatureMap"], {t, 0, 10}]
我不知道如何在此处保存动画,并且图片未在此处上传。
然而,问题很简单:为什么DensityPlot3D
“4D”案例是空白图表?