Skip to main content
added 6 characters in body
Source Link
Greg Hurst
  • 36.8k
  • 1
  • 94
  • 143

Somewhat surprisingly, roots of a holomorphic function over a bounded domain can be found exactly in terms of Root objects.

sol = Reduce[2 Sin[Exp[x]] - Cos[Pi x] == 1/3 && Abs[x] < 1, x]
   x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 - 0.243578228378785204 I}] 
|| x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 + 0.243578228378785204 I}]
N[sol, 30]
   x == -0.108292008603703700225204957273 - 0.243578228378785204495911435207 I 
|| x == -0.108292008603703700225204957273 + 0.243578228378785204495911435207 I

Here's a blog post about it: https://blog.wolfram.com/2008/12/18/mathematica-7-johannes-kepler-and-transcendental-roots/


A relevant excerpt from that post:

So how do we solve transcendental equations?

We start by looking at the class of holomorphic functions—essentially polynomials of infinite degree. A holomorphic function will often have infinitely many roots. But a key fact is that the roots are always countable—and, more importantly, there can only be finitely many roots in a given closed and bounded region.

Now we get to use some complex analysis. Given a region, we can tell how many roots are inside it either by directly computing the winding number around its boundary, or by using numerical integration and Cauchy’s theorem.

Once we have a count of the roots in a region we have a variety of methods for working out their rough specific locations. (Some methods are based on computational geometry and curve-curve intersections, some on complex interval arithmetic, and some on generalized eigenvalues derived from Cauchy’s theorem.) Given rough locations for roots, we then use Newton-like iterative methods to home in on the roots. And finally, we use Mathematica’s interval arithmetic to prove that there can only be one root inside each small region we’ve identified.

(There is some subtlety here. Proving zero equivalence is in general undecidable—and the way this shows up is that in pathological cases it can in principle require unboundedly much precision to distinguish multiple roots from closely spaced single roots.)

Somewhat surprisingly, roots of a holomorphic function over a bounded domain can be found exactly in terms of Root objects.

sol = Reduce[2 Sin[Exp[x]] - Cos[Pi x] == 1/3 && Abs[x] < 1, x]
x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 - 0.243578228378785204 I}] 
|| x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 + 0.243578228378785204 I}]
N[sol, 30]
x == -0.108292008603703700225204957273 - 0.243578228378785204495911435207 I 
|| x == -0.108292008603703700225204957273 + 0.243578228378785204495911435207 I

Here's a blog post about it: https://blog.wolfram.com/2008/12/18/mathematica-7-johannes-kepler-and-transcendental-roots/


A relevant excerpt from that post:

So how do we solve transcendental equations?

We start by looking at the class of holomorphic functions—essentially polynomials of infinite degree. A holomorphic function will often have infinitely many roots. But a key fact is that the roots are always countable—and, more importantly, there can only be finitely many roots in a given closed and bounded region.

Now we get to use some complex analysis. Given a region, we can tell how many roots are inside it either by directly computing the winding number around its boundary, or by using numerical integration and Cauchy’s theorem.

Once we have a count of the roots in a region we have a variety of methods for working out their rough specific locations. (Some methods are based on computational geometry and curve-curve intersections, some on complex interval arithmetic, and some on generalized eigenvalues derived from Cauchy’s theorem.) Given rough locations for roots, we then use Newton-like iterative methods to home in on the roots. And finally, we use Mathematica’s interval arithmetic to prove that there can only be one root inside each small region we’ve identified.

(There is some subtlety here. Proving zero equivalence is in general undecidable—and the way this shows up is that in pathological cases it can in principle require unboundedly much precision to distinguish multiple roots from closely spaced single roots.)

Somewhat surprisingly, roots of a holomorphic function over a bounded domain can be found exactly in terms of Root objects.

sol = Reduce[2 Sin[Exp[x]] - Cos[Pi x] == 1/3 && Abs[x] < 1, x]
   x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 - 0.243578228378785204 I}] 
|| x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 + 0.243578228378785204 I}]
N[sol, 30]
   x == -0.108292008603703700225204957273 - 0.243578228378785204495911435207 I 
|| x == -0.108292008603703700225204957273 + 0.243578228378785204495911435207 I

Here's a blog post about it: https://blog.wolfram.com/2008/12/18/mathematica-7-johannes-kepler-and-transcendental-roots/


A relevant excerpt from that post:

So how do we solve transcendental equations?

We start by looking at the class of holomorphic functions—essentially polynomials of infinite degree. A holomorphic function will often have infinitely many roots. But a key fact is that the roots are always countable—and, more importantly, there can only be finitely many roots in a given closed and bounded region.

Now we get to use some complex analysis. Given a region, we can tell how many roots are inside it either by directly computing the winding number around its boundary, or by using numerical integration and Cauchy’s theorem.

Once we have a count of the roots in a region we have a variety of methods for working out their rough specific locations. (Some methods are based on computational geometry and curve-curve intersections, some on complex interval arithmetic, and some on generalized eigenvalues derived from Cauchy’s theorem.) Given rough locations for roots, we then use Newton-like iterative methods to home in on the roots. And finally, we use Mathematica’s interval arithmetic to prove that there can only be one root inside each small region we’ve identified.

(There is some subtlety here. Proving zero equivalence is in general undecidable—and the way this shows up is that in pathological cases it can in principle require unboundedly much precision to distinguish multiple roots from closely spaced single roots.)

Source Link
Greg Hurst
  • 36.8k
  • 1
  • 94
  • 143

Somewhat surprisingly, roots of a holomorphic function over a bounded domain can be found exactly in terms of Root objects.

sol = Reduce[2 Sin[Exp[x]] - Cos[Pi x] == 1/3 && Abs[x] < 1, x]
x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 - 0.243578228378785204 I}] 
|| x == Root[{1/3 + Cos[\[Pi] #1] - 2 Sin[E^#1] &, -0.108292008603703700 + 0.243578228378785204 I}]
N[sol, 30]
x == -0.108292008603703700225204957273 - 0.243578228378785204495911435207 I 
|| x == -0.108292008603703700225204957273 + 0.243578228378785204495911435207 I

Here's a blog post about it: https://blog.wolfram.com/2008/12/18/mathematica-7-johannes-kepler-and-transcendental-roots/


A relevant excerpt from that post:

So how do we solve transcendental equations?

We start by looking at the class of holomorphic functions—essentially polynomials of infinite degree. A holomorphic function will often have infinitely many roots. But a key fact is that the roots are always countable—and, more importantly, there can only be finitely many roots in a given closed and bounded region.

Now we get to use some complex analysis. Given a region, we can tell how many roots are inside it either by directly computing the winding number around its boundary, or by using numerical integration and Cauchy’s theorem.

Once we have a count of the roots in a region we have a variety of methods for working out their rough specific locations. (Some methods are based on computational geometry and curve-curve intersections, some on complex interval arithmetic, and some on generalized eigenvalues derived from Cauchy’s theorem.) Given rough locations for roots, we then use Newton-like iterative methods to home in on the roots. And finally, we use Mathematica’s interval arithmetic to prove that there can only be one root inside each small region we’ve identified.

(There is some subtlety here. Proving zero equivalence is in general undecidable—and the way this shows up is that in pathological cases it can in principle require unboundedly much precision to distinguish multiple roots from closely spaced single roots.)