Frequently in Scientific Computing one needs to integrate polynomials over polygonal curves. This post derives a general formula for the integral of polynomial functions over two-dimensional polygonal curves.
Let $p_d(x,y)$ be a polynomial of degree $d$: $$ p_d(x,y) = \sum_{m,n = 0}^{d} c_{mn}x^m y ^n $$ For instance, if $d=2$: $$ p_2(x,y) = c_{00} + c_{10}x + c_{01}y + c_{20}x^2 + c_{11}xy + c_{02}y^2 \label{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_polyn_deg_2} $$ Let $S$ be a two-dimensional polygonal curve (in what follows, $S$ can actually be an arbitrary set of segments). We wish to compute the line integral of $p_d(x,y)$ over $S$: $$ \int_{S} p_d(x,y) dl $$ The curve $S$ is a collection of $n$ segments $S_i$, $i = 1,2,\ldots,n$. Let $L_i$ be the length of $S_i$ and $(x_i,y_i)$ and $(x_i + \Delta{x_i},y_i + \Delta{y_i})$ be the coordinates of its end nodes (see figure 1). We can parameterize the $i$-th segment of $S$ as shown below: $$ {\bf r}_i(s) = \left( \tilde{x}_i(s),\tilde{y}_i(s) \right) = (x_i + s\Delta{x_i}, y_i + s\Delta{y_i}),\quad s \in [0,1] \label{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_param_segm} $$
Fig. 1: | A polygonal curve $S$; $(x_{i+1},y_{i+1}) =$ $(x_i + \Delta{x_i}, y_i + \Delta{y_i})$ for $i = 1,2,3$. |
Let ${\bf r}_i'(s)$ be the derivative of ${\bf r}_i(s)$ with respect to $s$. The length of ${\bf r}_i'(s)$ is: $$ \big\|{\bf r}'_i(s)\big\| = \big\|(\Delta{x_i},\Delta{y_i})\big\| = \sqrt{\Delta{x_i}^2 + \Delta{y_i}^2} = L_i\ $$ We can now use the parameterization from equation \eqref{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_param_segm} directly to compute the desired line integral: $$ \begin{eqnarray} \label{post_c6d2b27efe4c87b1cc24686bf8793c0f_polyg_integ_param} \int_{S} p_d(x,y) dl &=&\sum_{i=1}^{n} \int_{S_i} p_d(x,y) dl = \nonumber\\[5pt] &=&\sum_{i=1}^{n} \int_0^1 p_d(\tilde{x}_i(s),\tilde{y}_i(s)) \big\|{\bf r}'_i(s)\big\|ds \nonumber\\[5pt] &=& \sum_{i=1}^{n} \int_0^1 p_d( x_i + s\Delta{x_i}, y_i + s\Delta{y_i} ) L_i ds \nonumber\\[5pt] &=& \sum_{i=1}^{n} L_i \int_0^1 \sum_{m,n = 0}^{d} c_{mn} ( x_i + s\Delta{x_i} )^m ( y_i + s\Delta{y_i})^n ds \end{eqnarray} $$ Using the polynomial expansions below: $$ \begin{eqnarray} ( x_i + s\Delta{x_i} )^m &=& \sum_{k = 0}^{m} \binom{m}{k} x_i^{m-k}\Delta{x_i}^k s^k \nonumber\\[5pt] ( y_i + s\Delta{y_i})^n &=& \sum_{p = 0}^{n} \binom{n}{p} y_i^{n-p}\Delta{y_i}^p s^p \end{eqnarray} $$ and doing a bit more algebraic work, one gets: $$ \displaystyle \int_0^1 p_d( \tilde{x}_i(s),\tilde{y}_i(s) ) ds = \sum_{m,n=0}^{d} \sum_{k = 0}^{m} \sum_{p = 0}^{n} \alpha_{mnkp} \frac{x_i^{m-k}\Delta{x_i}^k y_i^{n-p}\Delta{y_i}^p}{k+p+1} \label{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_poly_int_over_param_seg} $$ where: $$ \displaystyle\alpha_{mnkp} = \binom{m}{k} \binom{n}{p} c_{mn} $$ From the result above, we get: $$ \boxed{ \displaystyle \int_{S} p_d(x,y) dl = \sum_{i=1}^{n} L_i \left(\sum_{m,n=0}^{d} \sum_{k = 0}^{m} \sum_{p = 0}^{n} \alpha_{mnkp} \frac{x_i^{m-k}\Delta{x_i}^k y_i^{n-p}\Delta{y_i}^p}{k+p+1}\right) } \label{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_symb_integ_poly_over_segm_curve} $$
Unfortunately equation \eqref{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_symb_integ_poly_over_segm_curve} is not very efficient for numerical computations (although it can be used as a last resource). Whenever possible, it is better to compute the integrals explicitly and hard-code them. For example, if for a given problem all polyomials that must be integrated have degree $d=2$ (as in equation \eqref{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_polyn_deg_2}), then one can use equation \eqref{post_c6d2b27efe4c87b1cc24686bf8793c0f_eq_symb_integ_poly_over_segm_curve} to obtain a formula which is easy to hard-code: $$ \begin{eqnarray} \int_{S} p_2(x,y) dl = \sum_{i=1}^{n} L_i \Bigg[ \; & &c_{00} \nonumber\\[5pt] \; &+ & c_{10}\left(x_i + \frac{\Delta{x_i}}{2}\right) \nonumber\\[5pt] \; &+ & c_{01}\left(y_i + \frac{\Delta{y_i}}{2}\right) \nonumber\\[5pt] \; &+ &c_{20}\left(x_i^2 + x_i\Delta{x_i} + \frac{\Delta{x_i}^2}{3}\right) \nonumber\\[5pt] \; &+ &c_{11}\left(x_i y_i + \frac{x_i\Delta{y_i}}{2} + \frac{y_i \Delta{x_i}}{2} + \frac{\Delta{x_i} \Delta{y_i}}{3}\right) \nonumber\\[5pt] \; &+ &c_{02}\left(y_i^2 + y_i\Delta{y_i} + \frac{\Delta{y_i}^2}{3}\right) \Bigg] \end{eqnarray} $$
Comments
No comments posted yet.