# Solving a System of Quadratic Equations for Sound Triangulation

I am currently attempting to solve a system of quadratic (and linear) systems that I have run into while trying to triangulate sound.

My hypothetical setup includes 3 sensors on a perfectly equilateral triangle, with one sensor located at $$(0,0)$$ and the other two located below it. (The specifics don't matter, as I am simply referring to the sensor locations using $$a_1,a_2,a_3$$ for the x-coordinates of the sensors, and $$b_1,b_2,b_3$$ for the y-coordinates of the sensors, with $$r_1,r_2,r_3$$ being the radii of the circles from each respective sensor to the sound point)

I am trying to specify equations for the x position of the sound, the y position of the sound, and finally the radius of the incident sensor to the sound (the sensor that picks up the sound wave first).

My equations are as follows:

$$(x - a_1)^2 + (y - b_1)^2 = r_1^2$$ $$(x - a_2)^2 + (y - b_2)^2 = r_2^2$$ $$(x - a_3)^2 + (y - b_3)^2 = r_3^2$$ $$r_3 = r_1 + (t_3 * \text{speed of sound})$$ $$r_2 = r_1 + (t_2 *\text{speed of sound})$$

In this example, I am assuming that the sound reaches sensor 1 first. I understand that a true solution requires 3 discrete solutions, one for each sensor being the "incident sensor". (assuming that there cannot be a scenario where sound perfectly reaches multiple sensors at the same time)

My known variables: $$a_1,a_2,a_3,b_1,b_2,b_3,\text{speed of sound}, t_1,t_2,t_3$$

My Unknown variables: $$x,y,r_1,r_2,r_3$$.

Now I understand that I can just substitute in the three linear equations, but that leaves me with three quadratic equations that I am unsure of how to solve and obtain a meaningful answer from.

I tried searching for revelant topics, and the closest I could come was this: https://math.stackexchange.com/a/187858/656339

Which has the same setup as I, but doesn't detail how to solve it.

Any help would be appreciated.

• What you’re trying to do is called “TDOA multilateration.” Technically speaking, triangulation involves angles, not arrival time differences.
– amd
Mar 21 '19 at 7:53
• You can convert the system of circle equations into a system of linear equations: the intersections of a pair of circles lie on their radical axis, an equation for which you can obtain by subtracting one circle equation from another. However, since you don’t know $r_1$, what you’re really going to end up having to do is compute intersections of hyperbolas.
– amd
Mar 21 '19 at 7:55
• The problem would be easier with a fourth sensor. Mar 21 '19 at 9:16
• @amd could you expound a little on how to go about doing that? Converting to a system of linear equations would be preferred Mar 21 '19 at 13:16
• Mar 21 '19 at 14:46

After comments, let us work with $$4$$ sonsors. So we have $$(x - a_1)^2 + (y - b_1)^2 = c^2(t_1-\tau)^2\tag 1$$ $$(x - a_2)^2 + (y - b_2)^2 = c^2(t_2-\tau)^2\tag 2$$ $$(x - a_3)^2 + (y - b_3)^2 = c^2(t_3-\tau)^2\tag 3$$ $$(x - a_4)^2 + (y - b_4)^2 = c^2(t_4-\tau)^2\tag 4$$ where $$c$$ is the speed of sound and $$\tau$$ the time at which was produced the sound.

Now, subtract $$(1)$$ from $$(2)$$, $$(3)$$ and $$(4)$$ to get $$2(a_1-a_2)x+2(b_1-b_2)y+2c^2(t_2-t_1)\tau=(a_1^2+b_1^2-c^2t_1^2)-(a_2^2+b_2^2-c^2t_2^2)\tag 5$$ $$2(a_1-a_3)x+2(b_1-b_3)y+2c^2(t_3-t_1)\tau=(a_1^2+b_1^2-c^2t_1^2)-(a_3^2+b_3^2-c^2t_3^2)\tag 6$$ $$2(a_1-a_4)x+2(b_1-b_4)y+2c^2(t_4-t_1)\tau=(a_1^2+b_1^2-c^2t_1^2)-(a_4^2+b_4^2-c^2t_4^2)\tag 7$$

Define, for more simplicity, $$\alpha_i=2(a_1-a_i)\qquad \beta_i=2(b_1-b_i)\qquad \gamma_i=2c^2(t_i-t_1)$$ $$k_i=(a_1^2+b_1^2-c^2t_1^2)-(a_i^2+b_i^2-c^2t_i^2)$$ $$(i=2,3,4)$$ to make $$\alpha_2x+\beta_2y+\gamma_2 \tau=k_2\tag 8$$ $$\alpha_3x+\beta_3y+\gamma_3 \tau=k_3\tag 9$$ $$\alpha_4x+\beta_4y+\gamma_4 \tau=k_4\tag {10}$$ So, three linear equations in $$(x,y,\tau)$$ (easy to solve - use matrix calculations or successive elimination as I did below) and the explicit solutions are

$$\tau=\frac{k_4 (\alpha_3 \beta_2-\alpha_2 \beta_3)+k_3 (\alpha_2 \beta_4-\alpha_4 \beta_2)+k_2 (\alpha_4 \beta_3-\alpha_3 \beta_4) } {\alpha_4 (\beta_3 \gamma_2-\beta_2 \gamma_3)+\alpha_3 (\beta_2 \gamma_ 4-\beta_4 \gamma_2)+\alpha_2 (\beta_4 \gamma_3-\beta_3 \gamma_4) }\tag {11}$$ $$y=\frac{\alpha_3 (\gamma_2 \color{red}{\tau} -k_2)+\alpha_2 (k_3-\gamma_3 \color{red}{\tau} )}{\alpha_ 2 \beta_3-\alpha_3 \beta_2}\tag {12}$$ $$x=\frac{k_2-\beta_2 \color{red}{y}-\gamma_2 \color{red}{\tau} }{\alpha_2}\tag {13}$$

• To clarify, is tau the time elapsed from the sound occurring relative to the first sensor that detects the sound wave? Mar 25 '19 at 13:29
• @ReThink. Suppose that the first sensor receives the information at 1:34.05, the second at 1:34.06, the third at 1:34.08 and the fourth at 1:34.08 and you find $\tau=1:31.01$; this is the time at which the sound was produced. Mar 25 '19 at 17:16
• Thanks a ton! One more question: When you define alpha, beta, gamma, and k, you use subscript '1', does this mean that these only hold if sensor #1 is the first to receive the sound? i.e., would I have to rearrange and replace with a subscript of 2,3,4 if the respective sensor is the first to receive the sound wave? ex: αi=2(a2−ai) if sensor #2 is the incident sensor? Or does your solution hold regardless of which sensor is the incident sensor? Mar 25 '19 at 18:12
• @ReThink. There is no incident sensor. You have sensors located at $x_i,y_i$ which at time $t_i$ receive an information. If you want to use this concept (which is dangerous at least to me), start defining $t_{min}$ and redefine the $t_i$ as $t_i-t_{min}$. Mar 26 '19 at 5:36
• I ran everything in Matlab just to visualize what's going on, and I understand now. Tau can be either an absolute or a relative time (it does not matter to the sensors) and t1 - t4 are offsets from this reference point (tau). The incident sensor does not matter, as that information is a part of the arrival times of the sound waves to the respective sensors, which is a fundamental part of t1-t4. Thank you very much for taking the time to explain this concept! It's fascinating that the problem can be simplified by just adding one more sensor. Mar 27 '19 at 2:12

Solving system of quadratic and indeed, general polynomial equations is possible with techniques like Buchberger's algorithm. See the first two chapters of the book by Cox et.al. There are also many numerical tools to assist you with this. Sympy in python is one alternative (the one I'd recommend) and there is also one I wrote in C# following the textbook cited.