I have an equation in the following form that needs to be solved for $x$, with $x > 0$ and constants $a,b,c,d \geq 0$.

$\left(\frac{x - a}{b}\right)^2 + \left(\frac{x - c}{d}\right)^2 = 1$

From the following paper, which i am trying to implement: https://grail.cs.washington.edu/projects/crowd-flows/78-treuille.pdf

Wolfram Alpha gives the following solution:

$x = \frac{\sqrt{b^2 d^2 (-a^2 + 2 a c + b^2 - c^2 + d^2} + a d^2 + b^2 c}{b^2 + d^2}$


However this can result in the root of a negative number, and resulting in a complex number, which is not what the paper seems to want. I am unsure on how to solve this (in code) to get a real value for x.

So my question is, how do i solve this equation as desired by the paper?

PS. Limiting to real x still has the same problem


  • $\begingroup$ There might not always be a real solution possible, if $a$ and $c$ are sufficiently distant from one another. You can check for a negative, take the square root of the absolute value, then mark the result to indicate a complex value... $\endgroup$ – abiessu Mar 5 '18 at 16:28
  • 1
    $\begingroup$ There are possible {a,b,c,d} for which there is no real solution. This occurs when a and c are far away from eachother. (See the $+2 ac$ in the root). There is nothing wrong with this. If you only want real solutions you should put a boundry on your inputs. $\endgroup$ – Fibonacci Mar 5 '18 at 16:35
  • $\begingroup$ What exact part of the article you're trying to implement (page, row). $\endgroup$ – Kolya Ivankov Mar 5 '18 at 16:54
  • $\begingroup$ Ok, got it. Did you check if perhaps the conditions in the article prohibit negative roots. In light of my answer, if there is always an intersection? $\endgroup$ – Kolya Ivankov Mar 5 '18 at 17:01
  • $\begingroup$ They do say that when one of the terms is infinite you can drop it, maybe this can be interpreted as "so large that the root becomes negative". $\endgroup$ – Aedoro Mar 5 '18 at 17:29

Consider the equation $\left(\frac{x-a}{b}\right)^2 + \left(\frac{y-c}{d}\right)^2 = 1$. It is an ellipsis centered at $(a,c)$ with axes parallel to origin of lengths $b$ and $d$ respectively. The solution of your task are the points where this ellipsis intersects with the line $y=x$. There may be no intersection - and that is exactly the case of complex roots.


It's $$d^2(x^2-2ax+a^2)+b^2(x^2-2cx+c^2)=b^2d^2$$ or $$(b^2+d^2)x^2-2(d^2a+b^2c)x+a^2d^2+b^2c^2-b^2d^2=0,$$ which gives $$x=\frac{d^2a+b^2c\pm\sqrt{(d^2a+b^2c)^2-(b^2+d^2)(a^2d^2+b^2c^2-b^2d^2)}}{b^2+d^2}$$ or $$x=\frac{d^2a+b^2c\pm\sqrt{d^4a^2+2b^2d^2ac+b^4c^2-b^2a^2d^2-b^4c^2+b^4d^2-d^4a^2-b^2c^2d^2+d^4b^2}}{b^2+d^2}$$ or $$x=\frac{d^2a+b^2c\pm bd\sqrt{2ac-a^2-c^2+b^2+d^2}}{b^2+d^2}.$$ We need $b^2+d^2\neq0$ and $2ac-a^2-c^2+b^2+d^2\geq0$.

Thus, for the biggest root we obtain: $$x=\frac{d^2a+b^2c+bd\sqrt{2ac-a^2-c^2+b^2+d^2}}{b^2+d^2}.$$


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.