Wolfram mathematica 切片3D绘图和控件的动态数量MATHEMATICA

Wolfram mathematica 切片3D绘图和控件的动态数量MATHEMATICA,wolfram-mathematica,Wolfram Mathematica,我将有一个n维函数,并且我希望能够绘制2D平面,对于固定为一个数字的其余变量。例如: u = w^2 y^3 + x^5 z^4 + I z^6 + I z^2 Sin[y + x - 1]+k*Sin[w*pi] 这里有5个变量,假设我想要固定z w平面,并用滑动y、z和k绘图。我有很多问题要解决才能得到我想要的 1-实际上,代码不起作用。我需要弄清楚如何更新滑块的limsL和limsR。如果我删除doloop和限制,至少我不会得到红色的错误条。我需要更新这些值,可能需要使用一个按钮获取所

我将有一个n维函数,并且我希望能够绘制2D平面,对于固定为一个数字的其余变量。例如:

u = w^2  y^3 + x^5 z^4 + I z^6 + I z^2 Sin[y + x - 1]+k*Sin[w*pi]
这里有5个变量,假设我想要固定z w平面,并用滑动y、z和k绘图。我有很多问题要解决才能得到我想要的

1-实际上,代码不起作用。我需要弄清楚如何更新滑块的limsL和limsR。如果我删除doloop和限制,至少我不会得到红色的错误条。我需要更新这些值,可能需要使用一个按钮获取所有数据,然后使用第二个按钮进行绘图

2-但即使滑块[0,1]具有默认限制,我也无法获得绘图。这些值在接口处更新。在可变变量下,但不影响u函数。实际上,我更喜欢变量保持为z,y,x等等,而不是得到数值

Manipulate[DynamicModule[{u = 
z  Sin[\[Pi] x] + Cos[\[Pi] y] + y^6 Cos[2 \[Pi] y], vars = {x, y, z}, varlims = {{1, 2}, {3, 4}, {5, 6}}, poi = {x, y},
svars = {z, r}, data = Table[RandomReal[], {20}]}, Column[{Style["Ploter", "Function"],
Row[{"Function  ", InputField[u]}, Spacer[20]], 
Row[{"Variables ", InputField[Dynamic[vars]]}], 
Row[{"Variable limits ", InputField[Dynamic[varlims]]}], 
Row[{"Plane of interest", InputField[Dynamic[poi]]}], 
Row[{"Varying variables", InputField[Dynamic[svars]]}],
Plotslices[u, vars, varlims, poi, svars, size],

Dynamic[
 countersvar = Dimensions[svars][[1]];
 limsL = ConstantArray[0, countersvar];
 limsR = ConstantArray[0, countersvar];
 Do[

  v = svars[[i]];
  posv = Position[vars, v][[1]];
  lv = varlims[[posv, 1]][[1]];
  rv = varlims[[posv, 2]][[1]];
  limsL[[i]] = lv;
  limsR[[i]] = rv;
  , {i, countersvar}];
 Grid[
  Table[With[{i = i}, {svars[[i]], 
     Slider[Dynamic[svars[[i]], {limsL[[1]], limsR[[i]]}]], 
     Dynamic[svars[[i]]]}], {i, Dimensions[svars][[1]]}]]]


}]], {size, {Small, Medium, Full}}, ControlPlacement -> Bottom,ContinuousAction -> False, Initialization :> (

Plotslices[u_, vars_, varlims_, poi_, svars_, size_] := 
 Module[{v1, v2, lv1, lv2, rv1, rv2, posv1, posv2},
  v1 = poi[[1]];
  v2 = poi[[2]];
  posv1 = Position[vars, v1][[1]];
  posv2 = Position[vars, v2][[1]];
  lv1 = varlims[[posv1, 1]][[1]];
  lv2 = varlims[[posv2, 1]][[1]];
  rv1 = varlims[[posv1, 2]][[1]];
  rv2 = varlims[[posv2, 2]][[1]];
  psl = 
   Plot3D[u, {v1, lv1, rv1}, {v2, lv2, rv2}, 
    PerformanceGoal -> "Quality", Mesh -> None, 
    ColorFunction -> Function[{v1, v2, z}, Hue[z]], 
    ImageSize -> size];
  Return[psl];];
)
 ]
很抱歉格式化了。我试着把它放在一起,但没有成功