[Numerical Mathemtics] How to solve hexagonal central differences - MathOverflow most recent 30 from http://mathoverflow.net 2013-06-20T09:32:43Z http://mathoverflow.net/feeds/question/32667 http://www.creativecommons.org/licenses/by-nc/2.5/rdf http://mathoverflow.net/questions/32667/numerical-mathemtics-how-to-solve-hexagonal-central-differences [Numerical Mathemtics] How to solve hexagonal central differences CommuSoft 2010-07-20T18:03:25Z 2010-07-20T19:15:39Z <p>I want to simulate a 2d linear wave equation on a circle ($\displaystyle\frac{\partial^2 z(x,y,t)}{\partial t^2}=v^2\cdot\left(\displaystyle\frac{\partial^2 z(x,y,t)}{\partial x^2}+\displaystyle\frac{\partial^2 z(x,y,t)}{\partial y^2}\right)$).</p> <p>To have a more significant result, I decided to use a hexagonal pattern (each point has 6 closest points at equidistant distance) as shown here: <a href="http://upload.wikimedia.org/wikipedia/en/8/81/Uniform_polyhedron-63-t0.png" rel="nofollow">http://upload.wikimedia.org/wikipedia/en/8/81/Uniform_polyhedron-63-t0.png</a> where the white dots are discrete checkpoints who have describe the actual value of the wave at a certain time.</p> <p>To solve the problem, I want to use central differences to calculate a new situation out of the previous 2 (in time). How can I convert the central differences (that use $x,y$ values , however you rotate the situation there is maximum one dimension that fits) intro the checpoints based on the hexagonal structure?</p> <p>I suppose I have to interpolate the point of a square structure out of the hexagonal points, or are there better/faster ways?</p> http://mathoverflow.net/questions/32667/numerical-mathemtics-how-to-solve-hexagonal-central-differences/32672#32672 Answer by Steve Huntsman for [Numerical Mathemtics] How to solve hexagonal central differences Steve Huntsman 2010-07-20T18:39:52Z 2010-07-20T19:15:39Z <p>Write <code>$X_{B,b} = \{\alpha \in \mathbb{Z}^B : \sum_j \alpha_j = b\}$</code>. Now using the convention $0^0 \equiv 1$, define the matrix $W_{\alpha, \alpha'} := \alpha^{\alpha'}$. For arbitrary $f:X_{B,b} \rightarrow \mathbb{K}$ we can write $f_\alpha \equiv \sum_{\alpha'} c_{\alpha'}$ from which it follows that $c = W^{-1}f$. The facts that this procedure is well-defined, and that $W$ possesses an inverse, follow from a result in multivariate interpolation assuring us that the Lagrange interpolation problem on $X_{B,b}$ is "poised".</p> <p>Actually, although generic discrete point sets admit a specific multivariate Lagrange interpolation protocol that satisfies many desirable properties, only $X_{B,b}$ does it so beautifully. As a result, we obtain a Lagrange interpolation: <code>$f_{\mathfrak{I}}(x) := \sum_\alpha (W^{-1}f)_\alpha x^\alpha$</code> which satisfies <code>$f_{\mathfrak{I}}(\alpha) = f(\alpha)$</code>. </p> <p>You can use this to define differencing schemes on a triangular (or hexagonal by suitable dual hand-waving) grid by considering $B = 3$. An example of the interpolation is shown.</p> <p><img src="http://imgur.com/vMhNP.jpg" alt="" title="Hosted by imgur.com" /></p> <p>Define <code>$d_{\mathfrak{I}} f := d(f_{\mathfrak{I}})|_{X_{B,b}}$</code>. Note (e.g.) that </p> <p><code>$\partial_j f_{\mathfrak{I}} = \sum_\alpha (W^{-1} f)_\alpha \partial_j x^\alpha = \sum_\alpha (W^{-1} f)_\alpha \frac{\alpha_j}{x_j} \partial_j x^\alpha$</code> </p> <p>(suitably interpreted) is easy to compute <em>in silico</em>. Explicitly, set </p> <p><code>$\left(W_{(\partial_j)}\right)_{\alpha, \alpha'} := \frac{\alpha'_j}{\alpha_j} \alpha^{\alpha'}, \quad \left(\mathcal{W}_{(\partial_j)}\right)_{x, \alpha'} := \frac{\alpha'_j}{x_j} x^{\alpha'}.$</code></p> <p>Then</p> <p>$\partial_j f_{\mathfrak{I}} = \mathcal{W}_{(\partial_j)} W^{-1} f, \quad \partial_j f \equiv W_{(\partial_j)} W^{-1} f.$</p>