Using Simpson's method to integrate a complex function

  • #1
amjad-sh
246
13
Homework Statement
The question includes programming, but the basic problem is related to mathematics, that's why I posted it here.

In fact, I'm working on a condensed matter physics paper,where I need to draw integral

##g(\nu,2k_fz)## in units of ##(2k_f)^{-1}## and interms of z.

##g(\nu,2k_fz)=\int_{1}^{-1}\dfrac{\nu^2(1-u^2)usin(2k_fzu)}{u^2-\nu^2/2+u\sqrt{u^2-\nu^2}}\, du##, where ##\nu=0.5##



I'm using Simpson's method to evaluate this integral. The problem is that the sign inside the the radical in the denominator will be negative while evaluating this method, that's why we need to treat the integrand as a complex function. The program(python) will plot for me just the real part of the result.

But my main question is: Is it Ok to use Simpson's method in order to evaluate integrals that their integrand is a complex function?

because the graph I'm getting is not even close to the graph depicted in the paper.



Is contour integration a better choice?
Relevant Equations
Simpson's method :
simpson.PNG
 
Physics news on Phys.org
  • #2
amjad-sh said:
But my main question is: Is it Ok to use Simpson's method in order to evaluate integrals that their integrand is a complex function?
Yes, that shouldn't be a problem.
 
  • Informative
Likes amjad-sh
  • #3
DrClaude said:
Yes, that shouldn't be a problem.
Yes, it was a tiny mistake in my code that was stopping the graph to appear as it should.
But if we consider the problem in case ##\nu=0##,a singularity will arise while applying Simpson's method for u=0.
Do you know a trick or a way to go around this singularity?
 
  • #4
quadpack has routines to deal with integration of functions with singularities. It has been ported to C in GSL, but I don't think it is available in python.
 
  • Like
Likes amjad-sh
  • #5
DrClaude said:
quadpack has routines to deal with integration of functions with singularities. It has been ported to C in GSL, but I don't think it is available in python.

Scipy provides an interface to quadpack via the integrate.quad function
 
  • #6
cpt_carrot said:
Scipy provides an interface to quadpack via the integrate.quad function
I don't use python, but from the information I could find, only a basic quadrature method from quadpack is implemented in scipy, not the routines for dealing with singularities.
 
  • #7
DrClaude said:
I don't use python, but from the information I could find, only a basic quadrature method from quadpack is implemented in scipy, not the routines for dealing with singularities.

By default I think quad calls qagse which does support singularities, you can also specify a series of domains to avoid them. With the right set of options you can get to most of the quadpack routines.
 
  • Like
Likes amjad-sh and DrClaude
  • #8
  • Like
Likes cpt_carrot, jim mcnamara and amjad-sh

Similar threads

Replies
11
Views
1K
Replies
17
Views
2K
Replies
27
Views
2K
Replies
5
Views
1K
Replies
3
Views
1K
Replies
9
Views
2K
Replies
8
Views
773
Back
Top