在Mathematica中绘制3D表面:NIntegrate评估为非数值,我该如何纠正?

时间:2017-07-30 03:27:15

标签: plot wolfram-mathematica

我试图在Mathematica 10中运行this,但我不知道如何处理我在尝试绘制我定义的曲面时收到的错误。 Here是我试图运行的,然后是我收到的错误:

In[1]: s[y_] = ceiling[y*(1 - UnitStep[-y])]

Out[1]: ceiling[y (1 - UnitStep[-y])]

In[2]: f[t_] = t^2

Out[2]: t^2

In[3]: (Integrate \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(x\)]\(\((\((x - 
         t)\)^\((\(-1\) - y - 
         ceiling[y*\((1 - UnitStep[\(-y\)])\)])\))\)*
     D[f[t], {t, 
       ceiling[y*\((1 - UnitStep[\(-y\)])\)]}] \[DifferentialD]t\)\))/
 Gamma[ceiling[y*(1 - UnitStep[-y])] - y]

Out[3]: (Integrate \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(x\)]\(\(
\*SuperscriptBox[\((\(-t\) + x)\), \(\(-1\) - y - 
      ceiling[y\ \((1 - UnitStep[\(-y\)])\)]\)]\ \*
SuperscriptBox["Power", 
TagBox[
RowBox[{"(", 
RowBox[{
RowBox[{"ceiling", "[", 
RowBox[{"y", " ", 
RowBox[{"(", 
RowBox[{"1", "-", 
RowBox[{"UnitStep", "[", 
RowBox[{"-", "y"}], "]"}]}], ")"}]}], "]"}], ",", "0"}], ")"}],
Derivative],
MultilineFunction->None][t, 2]\) \[DifferentialD]t\)\))/Gamma[-y + 
  ceiling[y (1 - UnitStep[-y])]]

In[4]: Plot3D[(Integrate \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(x\)]\(\((\((x - 
          t)\)^\((\(-1\) - y - 
          ceiling[y*\((1 - UnitStep[\(-y\)])\)])\))\)*
      D[f[t], {t, 
        ceiling[y*\((1 - 
            UnitStep[\(-y\)])\)]}] \[DifferentialD]t\)\))/
  Gamma[ceiling[y*(1 - UnitStep[-y])] - y], {x, -6, 6}, {y, -2, 2}]

Out[4] NIntegrate::inumr: The integrand (-5.99914-t)^(0.999714 -ceiling[0.]) (Power^(ceiling[0.],0))[t,2] has evaluated to non-numerical values for all sampling points in the region with boundaries {{0,-5.99914}}. >>

NIntegrate::inumr: The integrand (-5.99914-t)^(0.999714 -ceiling[0.]) (Power^(ceiling[0.],0))[t,2] has evaluated to non-numerical values for all sampling points in the region with boundaries {{0,-5.99914}}. >>

NIntegrate::inumr: The integrand (-5.99914-t)^(0.999714 -ceiling[0.]) (Power^(ceiling[0.],0))[t,2] has evaluated to non-numerical values for all sampling points in the region with boundaries {{0,-5.99914}}. >>

General::stop: Further output of NIntegrate::inumr will be suppressed during this calculation. >>

\!\(\*
Graphics3DBox[{},
Axes->True,
AxesLabel->{None, None, None},
BoxRatios->{1, 1, 0.4},
DisplayFunction->Identity,
FaceGridsStyle->Automatic,
Method->{"DefaultBoundaryStyle" -> Directive[
GrayLevel[0.3]], "RotationControl" -> "Globe"},
PlotRange->{{-6, 6}, {-2, 2}, {0., 0.}},
PlotRangePadding->{
Scaled[0.02], 
Scaled[0.02], 
Scaled[0.02]},
Ticks->{Automatic, Automatic, Automatic}]\)

有人能告诉我我是如何修复我的代码的,以便我可以绘制我想要绘制的表面吗?任何帮助都将不胜感激。 谢谢, 麦克

0 个答案:

没有答案