Limits related to polynomial and rational functions #
This file proves basic facts about limits of polynomial and rationals functions.
The main result is eval_is_equivalent_at_top_eval_lead
, which states that for
any polynomial P
of degree n
with leading coefficient a
, the corresponding
polynomial function is equivalent to a * x^n
as x
goes to +โ.
We can then use this result to prove various limits for polynomial and rational functions, depending on the degrees and leading coefficients of the considered polynomials.
theorem
Polynomial.eventually_no_roots
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(hP : P โ 0)
:
โแถ (x : ๐) in Filter.atTop, ยฌP.IsRoot x
theorem
Polynomial.isEquivalent_atTop_lead
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
:
Asymptotics.IsEquivalent Filter.atTop (fun (x : ๐) => Polynomial.eval x P) fun (x : ๐) =>
P.leadingCoeff * x ^ P.natDegree
theorem
Polynomial.tendsto_atTop_of_leadingCoeff_nonneg
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
(hdeg : 0 < P.degree)
(hnng : 0 โค P.leadingCoeff)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P) Filter.atTop Filter.atTop
theorem
Polynomial.tendsto_atTop_iff_leadingCoeff_nonneg
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P) Filter.atTop Filter.atTop โ 0 < P.degree โง 0 โค P.leadingCoeff
theorem
Polynomial.tendsto_atBot_iff_leadingCoeff_nonpos
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P) Filter.atTop Filter.atBot โ 0 < P.degree โง P.leadingCoeff โค 0
theorem
Polynomial.tendsto_atBot_of_leadingCoeff_nonpos
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
(hdeg : 0 < P.degree)
(hnps : P.leadingCoeff โค 0)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P) Filter.atTop Filter.atBot
theorem
Polynomial.abs_tendsto_atTop
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
(hdeg : 0 < P.degree)
:
Filter.Tendsto (fun (x : ๐) => |Polynomial.eval x P|) Filter.atTop Filter.atTop
theorem
Polynomial.abs_isBoundedUnder_iff
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
:
(Filter.IsBoundedUnder (fun (x x_1 : ๐) => x โค x_1) Filter.atTop fun (x : ๐) => |Polynomial.eval x P|) โ P.degree โค 0
theorem
Polynomial.abs_tendsto_atTop_iff
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
:
Filter.Tendsto (fun (x : ๐) => |Polynomial.eval x P|) Filter.atTop Filter.atTop โ 0 < P.degree
theorem
Polynomial.tendsto_nhds_iff
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
{c : ๐}
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P) Filter.atTop (nhds c) โ P.leadingCoeff = c โง P.degree โค 0
theorem
Polynomial.isEquivalent_atTop_div
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
:
Asymptotics.IsEquivalent Filter.atTop (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) fun (x : ๐) =>
P.leadingCoeff / Q.leadingCoeff * x ^ (โP.natDegree - โQ.natDegree)
theorem
Polynomial.div_tendsto_zero_of_degree_lt
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : P.degree < Q.degree)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop (nhds 0)
theorem
Polynomial.div_tendsto_zero_iff_degree_lt
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hQ : Q โ 0)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop (nhds 0) โ P.degree < Q.degree
theorem
Polynomial.div_tendsto_leadingCoeff_div_of_degree_eq
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : P.degree = Q.degree)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop
(nhds (P.leadingCoeff / Q.leadingCoeff))
theorem
Polynomial.div_tendsto_atTop_of_degree_gt'
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Q.degree < P.degree)
(hpos : 0 < P.leadingCoeff / Q.leadingCoeff)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop Filter.atTop
theorem
Polynomial.div_tendsto_atTop_of_degree_gt
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Q.degree < P.degree)
(hQ : Q โ 0)
(hnng : 0 โค P.leadingCoeff / Q.leadingCoeff)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop Filter.atTop
theorem
Polynomial.div_tendsto_atBot_of_degree_gt'
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Q.degree < P.degree)
(hneg : P.leadingCoeff / Q.leadingCoeff < 0)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop Filter.atBot
theorem
Polynomial.div_tendsto_atBot_of_degree_gt
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Q.degree < P.degree)
(hQ : Q โ 0)
(hnps : P.leadingCoeff / Q.leadingCoeff โค 0)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop Filter.atBot
theorem
Polynomial.abs_div_tendsto_atTop_of_degree_gt
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Q.degree < P.degree)
(hQ : Q โ 0)
:
Filter.Tendsto (fun (x : ๐) => |Polynomial.eval x P / Polynomial.eval x Q|) Filter.atTop Filter.atTop
theorem
Polynomial.isBigO_of_degree_le
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(h : P.degree โค Q.degree)
:
(fun (x : ๐) => Polynomial.eval x P) =O[Filter.atTop] fun (x : ๐) => Polynomial.eval x Q