我在寻根方面遇到问题,并且在这种情况下很难让它发挥作用。
我需要一些复杂的功能。
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 是密度函数,F 是 CDF。
感谢您的阅读。
尝试在
:=
的定义中使用 =
代替 f
,看看是否有帮助。
顺便说一句,当您使用此
SetDelayed
语法时,不需要分号来抑制输出,因为它不会立即创建输出。
以下是一些示例输出,由 belisarius 和 WReach 提供: