Confusion with equations with no explicit solution
Hello,
I started getting into sage a couple of days ago. To do so I’m following the handbook « Computational Mathematics with SageMath » and I came across something that I would like to have more details about but I didn’t find anything in the documentation. So the handbook states that
“In most cases, as soon as the equation or system becomes too complex, no explicit solution can be found:
sage: solve(x^(1/x)==(1/x)^x, x)
> [(1/x)^x == x^(1/x)]
However, this is not necessarily a limitation! Indeed, a specificity of computer algebra is the ability to manipulate objects defined by equations, and in particular to compute their properties, without solving them explicitly. Even better: in some cases, the equation defining a mathematical object is the best algorithmic representation for it.”
But it doesn’t say what they mean by an equation being “too complex”. And what does it mean for an equation to not have an explicit solution. Plus in some cases we want to have a numerical result (even if it’s an approximation). For exemple I tried finding from what n0 the Tyler series of the exponential function at x0=1 is in the interval [e-10^-3, e+10^-3] i.e.
∀ ε > 10⁻³ , n > n0 ⇒ | vn − e | < ε
vn being equal to the sum of the terms 1 / i! for i ∈ [ 0, n ]. That being the definition of the Taylor series of the exponential function at x0=1 without taking account of the rest.
to do so I wrote this :
sage: k, n, n0, epsilon = var('k, n, n0, epsilon')
sage: assume(n, 'integer')
sage: epsilon = 1e-1
sage: u(n) = 1/factorial(n)
sage: v(n) = sum(u(k), k, 0, n)
sage: n0 = solve(e - v(n) > epsilon, n)
sage: n0
And sage gives out :
> [[e - sum(1/factorial(k), k, 0, n) - 0.1 > 0]]
The documentation says that to get an explicit solution we jut got to set the parameter explicit_solutions to True but I tried it and it doesn't work. Also I'm using the 8.1 version (it's the latest I found on the ubunru packages repository and I tried to download the 9.2 version but the archive was too voluminous (it's 14 GB and I didn't have enough memoiry space to extract it)
Is it possible to get an approximation of the solution in this case I don’t care for the result to be an approximation because I just need the integer part of it anyway.
Please help me I don’t really know if the problem is that the equation is “too complex” or maybe I’m just not using the sum function right.
Thank you in advance.
Your proposed plan is not valid, since you would be using a (Sage-generated) numerical approximation of $e$ when evaluating your function. Thois kind of circular reasoning is generally frowned upon (unless you are building some induction or infinite descent...).
What you might do is to find some function of $x$ and $n$ whose value can be shown to be larger that $\displaystyle\left|\sum_{i=n}^{\infty}\frac{x^j}{j!}\right|$, then solve this function for $n$. This this done in any serious real analysis course , but not exactly trivial.It might help to remember that $\displaystyle\sum_{i=n}^{\infty}\left|\frac{x^j}{j!}\right|\ge\displaystyle\left|\sum_{i=n}^{\infty}\frac{x^j}{j!}\right|$
BTW, numerical solutions of (univariate) equations can be obtained via
find_root
. Read its online help.Thank you for your answer. I haven't thought about taking dirrectly the difference (that is sum_{i=n}^{\infty}\frac{1}{j!}) thank you for pointing that out. But I don't know how to implement that in sage : we can't implement sums that go up to infinity. But maybe with a function of two variables u(n, m) = sum_{i=n}^{\m}\frac{1}{j!} and take the limit of u when m approaches infinity for a certain n. Is there any other possible way?