寻找正交的根

mar*_*ark 1 wolfram-mathematica

我有根查找的问题,并且在这个实例中很难让它工作.

我需要一些复杂的功能.

f[x_, lambda_, alpha_, beta_, mu_] = 
   Module[{gamma}, 
     gamma = Sqrt[alpha^2 - beta^2]; 
     (gamma^(2*lambda)/((2*alpha)^(lambda - 1/2)*Sqrt[Pi]*Gamma[lambda]))*
      Abs[x - mu]^(lambda - 1/2)*
      BesselK[lambda - 1/2, alpha Abs[x - mu]] E^(beta (x - mu))
   ];
Run Code Online (Sandbox Code Playgroud)

我想找到根的函数被定义为这个函数的积分,所以我用正交:

F[x_, lambda_, alpha_, beta_, mu_] := 
    NIntegrate[f[t, lambda, alpha, beta, mu], {t, 0, x}]; 
Run Code Online (Sandbox Code Playgroud)

现在问题是,mathematica很难解决这个等式的根源,

Q[u_, lambda_, alpha_, beta_, mu_] := 
    x /. FindRoot[F[x, lambda, alpha, beta, mu] == u, {x, 1}]
Run Code Online (Sandbox Code Playgroud)

有人知道为什么吗?积分在R中的所有点处定义.这里是密度函数,F是其CDF.

谢谢阅读.

Ver*_*eia 5

尝试使用:=而不是=在定义中f,看看是否有帮助.

顺便说一句,当您使用此SetDelayed语法时,您不需要使用分号来抑制输出,因为它不会立即创建输出.

以下是一些示例输出,由belisarius和WReach提供:

在此输入图像描述

  • 您可以通过重新定义`F`消除"非有效限制"警告消息:`Clear @ F; F [x_?NumericQ,...]:= ......` (3认同)