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, ยฌPolynomial.IsRoot P 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 : ๐) =>
Polynomial.leadingCoeff P * x ^ Polynomial.natDegree P
theorem
Polynomial.tendsto_atTop_of_leadingCoeff_nonneg
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
(hdeg : 0 < Polynomial.degree P)
(hnng : 0 โค Polynomial.leadingCoeff P)
:
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 < Polynomial.degree P โง 0 โค Polynomial.leadingCoeff P
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 < Polynomial.degree P โง Polynomial.leadingCoeff P โค 0
theorem
Polynomial.tendsto_atBot_of_leadingCoeff_nonpos
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
[OrderTopology ๐]
(hdeg : 0 < Polynomial.degree P)
(hnps : Polynomial.leadingCoeff P โค 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 < Polynomial.degree P)
:
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|) โ Polynomial.degree P โค 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 < Polynomial.degree P
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) โ Polynomial.leadingCoeff P = c โง Polynomial.degree P โค 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 : ๐) =>
Polynomial.leadingCoeff P / Polynomial.leadingCoeff Q * x ^ (โ(Polynomial.natDegree P) - โ(Polynomial.natDegree Q))
theorem
Polynomial.div_tendsto_zero_of_degree_lt
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Polynomial.degree P < Polynomial.degree Q)
:
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) โ Polynomial.degree P < Polynomial.degree Q
theorem
Polynomial.div_tendsto_leadingCoeff_div_of_degree_eq
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Polynomial.degree P = Polynomial.degree Q)
:
Filter.Tendsto (fun (x : ๐) => Polynomial.eval x P / Polynomial.eval x Q) Filter.atTop
(nhds (Polynomial.leadingCoeff P / Polynomial.leadingCoeff Q))
theorem
Polynomial.div_tendsto_atTop_of_degree_gt'
{๐ : Type u_1}
[NormedLinearOrderedField ๐]
(P : Polynomial ๐)
(Q : Polynomial ๐)
[OrderTopology ๐]
(hdeg : Polynomial.degree Q < Polynomial.degree P)
(hpos : 0 < Polynomial.leadingCoeff P / Polynomial.leadingCoeff Q)
:
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 : Polynomial.degree Q < Polynomial.degree P)
(hQ : Q โ 0)
(hnng : 0 โค Polynomial.leadingCoeff P / Polynomial.leadingCoeff Q)
:
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 : Polynomial.degree Q < Polynomial.degree P)
(hneg : Polynomial.leadingCoeff P / Polynomial.leadingCoeff Q < 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 : Polynomial.degree Q < Polynomial.degree P)
(hQ : Q โ 0)
(hnps : Polynomial.leadingCoeff P / Polynomial.leadingCoeff Q โค 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 : Polynomial.degree Q < Polynomial.degree P)
(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 : Polynomial.degree P โค Polynomial.degree Q)
:
(fun (x : ๐) => Polynomial.eval x P) =O[Filter.atTop] fun (x : ๐) => Polynomial.eval x Q