我遇到root查找问题,并且很难让它在这个实例中运行。
我需要一些复杂的功能。
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))
];
我想找到根的函数被定义为这个函数的积分,所以我使用正交:
F[x_, lambda_, alpha_, beta_, mu_] :=
NIntegrate[f[t, lambda, alpha, beta, mu], {t, 0, x}];
现在问题是,mathematica难以解决这个等式的根源,
Q[u_, lambda_, alpha_, beta_, mu_] :=
x /. FindRoot[F[x, lambda, alpha, beta, mu] == u, {x, 1}]
有人知道为什么吗?积分在R中的所有点定义。这里是密度函数,F是其CDF。
感谢阅读。
答案 0 :(得分:5)
尝试在:=
的定义中使用=
代替f
,看看是否有帮助。
顺便说一句,当您使用此SetDelayed
语法时,您不需要使用分号来抑制输出,因为它不会立即创建输出。
以下是一些示例输出,由belisarius和WReach提供: