Нахождение корня с квадратурой - PullRequest
1 голос
/ 16 октября 2011

У меня проблема с поиском корня, и мне трудно заставить его работать в этом случае.

Мне нужна сложная функция.

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.

Спасибо за чтение.

1 Ответ

5 голосов
/ 16 октября 2011

Попробуйте использовать := вместо = в определении f и посмотрите, поможет ли это.

Между прочим, когда вы используете этот синтаксис SetDelayed, вам не нужны точки с запятой для подавления вывода, потому что он не сразу создает вывод.

Вот пример выходных данных, любезно предоставленный Велизарием и WReach:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...