求积求根

问题描述 投票:0回答:1

我在寻根方面遇到问题,并且在这种情况下很难让它发挥作用。

我需要一些复杂的功能。

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。

感谢您的阅读。

wolfram-mathematica root-finding
1个回答
5
投票

尝试在

:=
的定义中使用
=
代替
f
,看看是否有帮助。

顺便说一句,当您使用此

SetDelayed
语法时,不需要分号来抑制输出,因为它不会立即创建输出。

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

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.