From: Damon M. <dam...@gm...> - 2012-07-10 11:05:14
|
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 |