Limits related to polynomial and rational functions #
This file proves basic facts about limits of polynomial and rational functions.
The main result is Polynomial.isEquivalent_atTop_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_atTop_not_isRoot {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) (hP : P โ 0) :
theorem Polynomial.eventually_atBot_not_isRoot {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) (hP : P โ 0) :
theorem Polynomial.isEquivalent_atTop_lead {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
Asymptotics.IsEquivalent Filter.atTop (fun (x : ๐) => eval x P) fun (x : ๐) => P.leadingCoeff * x ^ P.natDegree
theorem Polynomial.tendsto_atTop_of_leadingCoeff_nonneg {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] (hdeg : 0 < P.degree) (hnng : 0 โค P.leadingCoeff) :
Filter.Tendsto (fun (x : ๐) => eval x P) Filter.atTop Filter.atTop
theorem Polynomial.tendsto_atTop_iff_leadingCoeff_nonneg {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
Filter.Tendsto (fun (x : ๐) => eval x P) Filter.atTop Filter.atTop โ 0 < P.degree โง 0 โค P.leadingCoeff
theorem Polynomial.tendsto_atBot_iff_leadingCoeff_nonpos {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
Filter.Tendsto (fun (x : ๐) => eval x P) Filter.atTop Filter.atBot โ 0 < P.degree โง P.leadingCoeff โค 0
theorem Polynomial.tendsto_atBot_of_leadingCoeff_nonpos {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] (hdeg : 0 < P.degree) (hnps : P.leadingCoeff โค 0) :
Filter.Tendsto (fun (x : ๐) => eval x P) Filter.atTop Filter.atBot
theorem Polynomial.abs_tendsto_atTop {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] (hdeg : 0 < P.degree) :
Filter.Tendsto (fun (x : ๐) => |eval x P|) Filter.atTop Filter.atTop
theorem Polynomial.isBoundedUnder_abs_atTop_iff {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
(Filter.IsBoundedUnder (fun (x1 x2 : ๐) => x1 โค x2) Filter.atTop fun (x : ๐) => |eval x P|) โ P.degree โค 0
theorem Polynomial.abs_tendsto_atTop_iff {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
theorem Polynomial.tendsto_nhds_iff {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] {c : ๐} :
Filter.Tendsto (fun (x : ๐) => eval x P) Filter.atTop (nhds c) โ P.leadingCoeff = c โง P.degree โค 0
theorem Polynomial.isEquivalent_atBot_lead {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
Asymptotics.IsEquivalent Filter.atBot (fun (x : ๐) => eval x P) fun (x : ๐) => P.leadingCoeff * x ^ P.natDegree
theorem Polynomial.abs_tendsto_atBot {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] (hdeg : 0 < P.degree) :
Filter.Tendsto (fun (x : ๐) => |eval x P|) Filter.atBot Filter.atTop
theorem Polynomial.isBoundedUnder_abs_atBot_iff {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
(Filter.IsBoundedUnder (fun (x1 x2 : ๐) => x1 โค x2) Filter.atBot fun (x : ๐) => |eval x P|) โ P.degree โค 0
theorem Polynomial.abs_tendsto_atBot_iff {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P : Polynomial ๐) [OrderTopology ๐] :
theorem Polynomial.isEquivalent_atTop_div {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] :
Asymptotics.IsEquivalent Filter.atTop (fun (x : ๐) => eval x P / eval x Q) fun (x : ๐) =>
P.leadingCoeff / Q.leadingCoeff * x ^ (โP.natDegree - โQ.natDegree)
theorem Polynomial.div_tendsto_atTop_zero_of_degree_lt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : P.degree < Q.degree) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop (nhds 0)
theorem Polynomial.div_tendsto_atTop_zero_iff_degree_lt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hQ : Q โ 0) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop (nhds 0) โ P.degree < Q.degree
theorem Polynomial.div_tendsto_atTop_leadingCoeff_div_of_degree_eq {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : P.degree = Q.degree) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop (nhds (P.leadingCoeff / Q.leadingCoeff))
theorem Polynomial.div_tendsto_atTop_of_degree_gt' {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : Q.degree < P.degree) (hpos : 0 < P.leadingCoeff / Q.leadingCoeff) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop Filter.atTop
theorem Polynomial.div_tendsto_atTop_of_degree_gt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : Q.degree < P.degree) (hQ : Q โ 0) (hnng : 0 โค P.leadingCoeff / Q.leadingCoeff) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop Filter.atTop
theorem Polynomial.div_tendsto_atBot_of_degree_gt' {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : Q.degree < P.degree) (hneg : P.leadingCoeff / Q.leadingCoeff < 0) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop Filter.atBot
theorem Polynomial.div_tendsto_atBot_of_degree_gt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : Q.degree < P.degree) (hQ : Q โ 0) (hnps : P.leadingCoeff / Q.leadingCoeff โค 0) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atTop Filter.atBot
theorem Polynomial.abs_div_tendsto_atTop_atTop_of_degree_gt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : Q.degree < P.degree) (hQ : Q โ 0) :
Filter.Tendsto (fun (x : ๐) => |eval x P / eval x Q|) Filter.atTop Filter.atTop
theorem Polynomial.isEquivalent_atBot_div {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] :
Asymptotics.IsEquivalent Filter.atBot (fun (x : ๐) => eval x P / eval x Q) fun (x : ๐) =>
P.leadingCoeff / Q.leadingCoeff * x ^ (โP.natDegree - โQ.natDegree)
theorem Polynomial.div_tendsto_atBot_zero_of_degree_lt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : P.degree < Q.degree) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atBot (nhds 0)
theorem Polynomial.div_tendsto_atBot_zero_iff_degree_lt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hQ : Q โ 0) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atBot (nhds 0) โ P.degree < Q.degree
theorem Polynomial.div_tendsto_atBot_leadingCoeff_div_of_degree_eq {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : P.degree = Q.degree) :
Filter.Tendsto (fun (x : ๐) => eval x P / eval x Q) Filter.atBot (nhds (P.leadingCoeff / Q.leadingCoeff))
theorem Polynomial.abs_div_tendsto_atBot_atTop_of_degree_gt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (hdeg : Q.degree < P.degree) (hQ : Q โ 0) :
Filter.Tendsto (fun (x : ๐) => |eval x P / eval x Q|) Filter.atBot Filter.atTop
theorem Polynomial.isLittleO_atTop_of_degree_lt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (h : P.degree < Q.degree) :
theorem Polynomial.isLittleO_atBot_of_degree_lt {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (h : P.degree < Q.degree) :
theorem Polynomial.isBigO_atTop_of_degree_le {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (h : P.degree โค Q.degree) :
theorem Polynomial.isBigO_atBot_of_degree_le {๐ : Type u_1} [NormedField ๐] [LinearOrder ๐] [IsStrictOrderedRing ๐] (P Q : Polynomial ๐) [OrderTopology ๐] (h : P.degree โค Q.degree) :
theorem Polynomial.isEquivalent_cobounded_leading_monomial {R : Type u_2} [NormedRing R] [NormMulClass R] {P : Polynomial R} :
Asymptotics.IsEquivalent (Bornology.cobounded R) (fun (x : R) => eval x P) fun (x : R) =>
P.leadingCoeff * x ^ P.natDegree
theorem Polynomial.isBigO_cobounded_pow_natDegree {R : Type u_2} [NormedRing R] [NormMulClass R] (p : Polynomial R) :
theorem Polynomial.isLittleO_cobounded_of_degree_lt {R : Type u_2} [NormedRing R] [NormMulClass R] {P Q : Polynomial R} (h : P.degree < Q.degree) :
theorem Polynomial.isBigO_cobounded_of_degree_le {R : Type u_2} [NormedRing R] [NormMulClass R] {P Q : Polynomial R} (h : P.degree โค Q.degree) :