On Tue, Jul 10, 2012 at 12:27:59PM +0200, Fabien Lafont wrote:
> Hello everyone,
> 
> I try to plot the digamma function of (1/2 + 1/x) but I'm not sure that I'm
> plotting the good one.
> 
> I've tried:
> 
> special.polygamma(0, (1/2 + 1/x))
> 
> and
> 
> special.polygamma(1, (1/2 + 1/x))

You want special.polygamma(0, (1/2 + 1/x)). See
http://docs.scipy.org/doc/scipy/reference/generated/scipy.special.polygamma.html

The number specifies which derivative of the digamma function you want.
Surely you want the 0th derivative?

> But It returns zero division error even when x is in ]0,1]

I think it blows up at x = 0. What is the type of x in your usecase? Is
it an array? If x contains the element 0, you will get a zero
division error. You could try plotting the points explicitly:

from numpy import linspace
from pylab import *

x = linspace(0.5, 2, num=100, endpoint=True)
y = special.polygamma(0, (1/2 + 1/x))
plot(x, y)
show()

You can compare output against this:
http://www.wolframalpha.com/input/?i=digamma%281%2F2+%2B+1%2Fx%29+between+0.5+and+2

Hope this helps.

-- 
Damon McDougall
http://damon-is-a-geek.com
B2.39
Mathematics Institute
University of Warwick
Coventry
West Midlands
CV4 7AL
United Kingdom

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to