2016-07-11 1 views
2

Je dois trouver la valeur de l'intégrale suivante:Y a-t-il une fonction intégrée dans Matlab pour calculer l'intégrale suivante?

enter image description here

Est-ce que quelqu'un sait s'il y a une fonction intégrée dans Matlab pour le calcul de cela?

+1

Voulez-vous le résoudre analytiquement ou numériquement? Avez-vous essayé d'autres alternatives, comme wolframalpha? – jerpint

+1

Je veux le résoudre numériquement. Oui j'ai essayé dans WA mais le problème est que je veux courir l'intégrale dans une boucle donc c'est mieux si je trouve une certaine fonction dans matlab –

+1

Je vais entrer dans "probablement pas". Il ressemble à un gamma incomplet supérieur avec un facteur d'échelle/d'amortissement exponentiel bizarre. À moins que quelqu'un d'autre n'ait déjà vu cela auparavant, je suggèrerais de le lancer à travers «integral» comme un chemin possible vers l'avant. – TroyHaskin

Répondre

3

En lisant les referenced paper, qui a ensuite été étendu à a book, je ne vois pas l'égalité directe exprimée pour la définition de l'auteur de la fonction gamma incomplète généralisée qui peut être reproduit en utilisant la bibliothèque de Matlab Elementary Math. Les auteurs utilisent effectivement le sous-programme IDL Fortran QDAGI pour directement intégrer et générer leur table de valeurs (malheureusement, seulement donné à cinq décimales). Par conséquent, la route la plus directe dans l'évaluation d'une telle fonction est d'utiliser integral.

La fonction gamma incomplète généralisée brute peut être écrit en ligne comme

iggamma = @(x,alpha,b) integral(@(t) (t+x).^(alpha-1) .* exp(-(t+x)-b./(t+x)),0,Inf,'ArrayValued',true) 

où je changeai t-t+x de telle sorte que la limite inférieure était toujours 0 et un pourrait être passé d'une valeur tableau-x. Le tableau du livre met à l'échelle cette fonction brute par un terme impliquant ce que les auteurs appellent une fonction modifiée de Bessel du troisième type, mais ce que Mathworks appelle une fonction de Bessel modifiée du second type (parce que ce n'est pas du tout déroutant). La version mise à l'échelle serait:

iggammas = @(x,alpha,b) iggamma(x,alpha,b) ./ (2*b.^(alpha/2) .* besselk(alpha,2*sqrt(b))) 

La version mis à l'échelle correspond à la plupart des valeurs que j'ai vérifié à quatre décimales avec quelques en désaccord sur le cinquième; cependant, je voudrais craindre jusqu'à des différences dans les paramètres de tolérance d'arrondi et d'intégration.