Wolfram mathematica Mathematica中的表以错误的顺序返回输出值

Wolfram mathematica Mathematica中的表以错误的顺序返回输出值,wolfram-mathematica,Wolfram Mathematica,我已经将求解方程组的计算步骤嵌入到一个块中。然后,我使用定义为块的函数传递该代码块的局部变量值,其输出见下文。这一切都很好,除了当我尝试使用Table为一系列参数值计算此函数时,返回值的顺序错误 代码如下。我没有包括评估所需的所有函数,因为问题一定在于我定义evaluationfun的方式,对于更高级的Mathematica用户来说,这可能是显而易见的。但是,如果需要所有函数,我很乐意添加它们 evalfun[nn_, naa_, qap_, qbp_, outvar_] := Block[{

我已经将求解方程组的计算步骤嵌入到一个块中。然后,我使用定义为块的函数传递该代码块的局部变量值,其输出见下文。这一切都很好,除了当我尝试使用Table为一系列参数值计算此函数时,返回值的顺序错误

代码如下。我没有包括评估所需的所有函数,因为问题一定在于我定义evaluationfun的方式,对于更高级的Mathematica用户来说,这可能是显而易见的。但是,如果需要所有函数,我很乐意添加它们

evalfun[nn_, naa_, qap_, qbp_, outvar_] := 
Block[{n = nn, na = naa, qa = qap, qb = qbp, p = .1, \[Delta] = .9, 
out = outvar},

yeffafunMlit[yb_, xba_, Baeff_, Bb_] = NSolve[(u[yeffa, 0, Baeff, qa, p]) == (\[Delta] vam[yeffa, yeff[yb], xba, Baeff, Bb + yeff[yb] - yb, qa, p, n, na]), yeffa][[1]][[1]][[2]];

xbafunMlit[Baeff_, Bb_] = NSolve[u[yeff[0], xba, Bb + yeff[0], qa, p] == \[Delta] vam[yeffafunMlit[0, xba, Baeff, Bb], yeff[0], xba, Baeff, Bb + yeff[0], qa, p, n, na], xba][[1]][[1]][[2]];

Baeffsol = FindArgMax[u[yeffafunMlit[0, xbafunMlit[Baeff, Bb], Baeff, Bb], 
   Baeff - yeffafunMlit[0, xbafunMlit[Baeff, Bb], Baeff, Bb], 
   Baeff, qa, p] /. {Bb -> 1}, Baeff][[1]];

Bbsol = FindArgMax[u[yeff[0], 
  Bb - yeff[0] - na pcfun[n, na] xbafunMlit[Baeffsol, Bb], 
  Bb + yeff[0], qb, p], Bb][[1]];

Bbsoleff = Bbsol + yeff[0];

xbaMOlit = xbafunMlit[qa/(2 p), Bbsol];
yaeffMOlit = yeffafunMlit[0, xbaMOlit, qa/(2 p), Bbsol];
ybeffMOlit = yeff[0];
(*output desired outvar *)
outvar ]

(*Now evaluate evalfun for a range of values of qa output yaeffMOlit*)
Table[evalfun[21, 13, qi, -.5, yaeffMOlit], {qi,12,16}]
(* I get a return list with values in the wrong order *)

您是否可以一次消除几乎所有这些,只显示一个更简单的完整示例来演示这一点?您不关心计算值是什么,只关心顺序。你甚至可以在这样做的时候找到原因。如果我只是删除块中的所有内容,它似乎无法证明这一点,我也无法告诉你留下什么,这样我就可以看到你看到的内容。如果你是这个意思,你可以做{qi,16,12,-1}来颠倒顺序。比尔,我想不出一个最小的例子来重现特定的问题,即返回的值是非感官顺序的。然而,在剥离代码时,我意识到我应该在块之外定义我的函数,或者给它们一个块本地的名称。出现错误是因为我在块内定义全局。啊,是的,有些东西必须在其他东西内才能工作,有些东西必须在其他东西外才能工作,并且没有合理的错误消息解释为什么有些东西出错以及应该怎么做。因此,剥离代码有帮助。精彩的我曾希望这项运动可能会暴露出这个问题。你的问题现在解决了吗?