On Tue, Jul 10, 2012 at 7:05 AM, Damon McDougall
<damon.mcdoug...@gmail.com>wrote:
> 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.
>
>
Another problem might be the "1/2" part, which in python2.x would yield 0
unless one does "from __future__ import division".
Ben Root
------------------------------------------------------------------------------
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