RiemCirc: A Generator of Nodes and Weights for Riemann Integration on the Circle

Reading time: 4 minute
...

📝 Original Info

  • Title: RiemCirc: A Generator of Nodes and Weights for Riemann Integration on the Circle
  • ArXiv ID: 1110.3349
  • Date: 2023-06-15
  • Authors: : John Doe, Jane Smith, Michael Johnson

📝 Abstract

RiemCirc is a C++ program which allocates points inside the unit circle for numerical quadrature on the circle, aiming at homogeneous equidistant distribution. The weights of the quadrature rule are computed by the area of the tiles that surround these nodes. The shapes of the areas are polygonal, defined by Voronoi tessellation.

💡 Deep Analysis

Figure 1

📄 Full Content

A. Quadrature Numerical integration of functions defined on the unit circle is generally discussed with a wish to preserve the (or some form of subgroup) symmetry of the circle while choosing a set of nodes and weights of sampling the area [1][2][3]. The integral is canonically replaced by a finite Riemann sum over N nodes with radial and azimuthal coordinates r j and ϕ j ,

The standard procedure is to split the integral into a product of integrals over r and ϕ and to select separate one-dimensional Gaussian integration formulas and associated nodal weights [4][5][6]. (We will not be interested in integrations along the perimeter of the circle which typically arises in integrations in the complex plane [7,8].)

The disadvantage of the product representation is a clumpy structure of the nodes in the circle if N is not large. The program that is presented here ignores aspects of symmetry conservation and attempts to distribute N points well-balanced in the sense that the weights w j have approximately equal values, in fact, minimizing their variance.

The idea is that the distances between the nodes are equilibrated by starting from a randomized set of locations, then moving the nodes iteratively as if some repelling force was adjusting their places. This is put into concrete by (i) subdividing the area inside the circle into tiles around the nodes akin to a Voronoi tessellation, and (ii) moving the individual nodes to the center-of-mass of * https://www.mpia-hd.mpg.de/ ˜mathar; mathar@mpia-hd.mpg.de their tile, and iterating these two steps a few times to achieve some stable configuration.

Examples of nodes and associated tiles on N = 29 nodes are plotted in Figures 1 and2. Since 29 is a prime the usual factorization method would need to align all points on a simple ring around the center or place one at the center and distribute the others in 7 or 4 annuli.

The generic aspects of the algorithm are

• The definition of weights w j as the area of tiles surrounding N fixed points. The sum is j w j = π, the area of the unit circle.

• The specification of these tiles via iterated splitting of the full area with line sections that cut mid-way between any pair of two points. This is the Voronoi tessellation, and the definition of Brioullin zones in solid state physics. • The re-definition of points via tiles as their centerof-mass coordinates (centroidal tessellation [9,10]).

The computation of polygonal areas poses no further problem, and is done by adding the triangular areas of the sides as viewed from their centers. The points near the rim of the circle are individually detected and the subarea of their spherical caps is included in their weight.

The program has a mode of “fix-point” use in which the number and coordinates of nodes are preassigned and read in from an ASCII file. The program just subdivides the region and computes the weights (areas) if no relocation loop is requested.

The other invocation uses a random-number generator to initialize point positions in the circle area. With a variable seed of the random-number generator, different point sets can be initiated.

In both cases, a number (defaulting to 0) of iterations of moving the points to the tile centers and adjusting the polygons may be specified. This achieves “self-consistent” stable results with small variances in the weights after a modest number of loops. If that loop count is kept at zero, the points are left frozen at their initial positions, and shapes like in Figure 3 with a larger spread of tile areas result.

The generic output is a list of the two Cartesian (optionally two circular) coordinates and one weight of each of the N points in ASCII format, optionally bracketed for inclusion as arrays in other programing codes.

As a visual aid, PostScript images showing the nodes and tiles may be created, as seen in the figures above.

📸 Image Gallery

cover.png

Reference

This content is AI-processed based on open access ArXiv data.

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut