我正在使用Mathematica 9学生版,并遇到递归限制错误的问题。我编写了一个可以工作并涉及数值积分的程序。如果我自己运行此过程并插入要测试的值,则此过程可以正常工作。该程序打印如下。任何有兴趣,它应该是两个随机变量,betaone和betazero转换成其他两个随机变量伽马和Rho,然后数值使用这些新的随机变量整合的概率密度函数:Mathematica中的递归限制错误
xtheta = .4; xx = .1;
c = 1/theta /. theta -> xtheta;
gamma = (Log[theta/(1 - theta)] - betazero - x*betaone)/
betaone;
rho = Exp[ betazero + x*betaone]/(1 +
Exp[betazero + x*betaone]);
JMatrix = {{D[gamma, betazero],
D[gamma, betaone]}, {D[rho, betazero], D[rho, betaone]}};
myJacobian = Det[JMatrix] ; gamma =.; rho =.;
betazero = (1/
gamma)*((x + gamma)*Log[rho/(1 - rho)] - x*Log[theta/(1 - theta)]);
betaone = (1/gamma)*(Log[theta/(1 - theta)] - Log[rho/(1 - rho)]);
finalPDF =
c * myJacobian /. {betazero -> (1/
gamma)*((x + gamma)*Log[rho/(1 - rho)] -
x*Log[theta/(1 - theta)]),
betaone -> (1/gamma)*(Log[theta/(1 - theta)] -
Log[rho/(1 - rho)])};
theta = xtheta; finalPDF2 = finalPDF /. {x -> xx};
n = NIntegrate[finalPDF2, {rho, 0, xtheta - .001}, {gamma, 0, 1}];
然而,随着一声,我在此过程之后添加一个Print [n]语句,代码无法运行,并且出现以下错误消息:“$ RecursionLimit :: reclim:超过1024的递归深度”。任何人都可以解释为什么我得到这个错误,我怎么可以补救?
此外,我希望在循环中使用此过程,以便我可以反复运行此过程并稍微更改其中一个变量并使用Print语句输出我的结果。我尝试过使用Do循环和For循环,但是我得到的问题与之前获得“$ RecursionLimit :: reclim:递归深度超过1024”错误消息的问题相同。有谁知道如果使用一个循环比另一个有优势,并且循环的问题与Print语句的问题相同?
谢谢你的帮助!
你已分配betazero /一个然后使用它们作为模式替代 – agentp
后续,第一遍时代码运行良好,重新运行时会出现错误结果,因为现在定义了betazero,betaone,并且您将衍生产品用于这些复杂表达式。简单地取消任务可以修复它(或在顶部清除它们) – agentp
现在有一个专门用于Mathematica的StackExchange站点:http://mathematica.stackexchange.com - 请在那里问你未来的问题。 –