Limits related to polynomial and rational functions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
(hP : P โ 0) :
theorem
polynomial.is_equivalent_at_top_lead
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐] :
asymptotics.is_equivalent filter.at_top (ฮป (x : ๐), polynomial.eval x P) (ฮป (x : ๐), P.leading_coeff * x ^ P.nat_degree)
theorem
polynomial.tendsto_at_top_of_leading_coeff_nonneg
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐]
(hdeg : 0 < P.degree)
(hnng : 0 โค P.leading_coeff) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P) filter.at_top filter.at_top
theorem
polynomial.tendsto_at_top_iff_leading_coeff_nonneg
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐] :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P) filter.at_top filter.at_top โ 0 < P.degree โง 0 โค P.leading_coeff
theorem
polynomial.tendsto_at_bot_iff_leading_coeff_nonpos
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐] :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P) filter.at_top filter.at_bot โ 0 < P.degree โง P.leading_coeff โค 0
theorem
polynomial.tendsto_at_bot_of_leading_coeff_nonpos
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐]
(hdeg : 0 < P.degree)
(hnps : P.leading_coeff โค 0) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P) filter.at_top filter.at_bot
theorem
polynomial.abs_tendsto_at_top
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐]
(hdeg : 0 < P.degree) :
filter.tendsto (ฮป (x : ๐), |polynomial.eval x P|) filter.at_top filter.at_top
theorem
polynomial.abs_is_bounded_under_iff
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐] :
filter.is_bounded_under has_le.le filter.at_top (ฮป (x : ๐), |polynomial.eval x P|) โ P.degree โค 0
theorem
polynomial.abs_tendsto_at_top_iff
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐] :
filter.tendsto (ฮป (x : ๐), |polynomial.eval x P|) filter.at_top filter.at_top โ 0 < P.degree
theorem
polynomial.tendsto_nhds_iff
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P : polynomial ๐)
[order_topology ๐]
{c : ๐} :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P) filter.at_top (nhds c) โ P.leading_coeff = c โง P.degree โค 0
theorem
polynomial.is_equivalent_at_top_div
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐] :
asymptotics.is_equivalent filter.at_top (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) (ฮป (x : ๐), P.leading_coeff / Q.leading_coeff * x ^ (โ(P.nat_degree) - โ(Q.nat_degree)))
theorem
polynomial.div_tendsto_zero_of_degree_lt
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : P.degree < Q.degree) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top (nhds 0)
theorem
polynomial.div_tendsto_zero_iff_degree_lt
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hQ : Q โ 0) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top (nhds 0) โ P.degree < Q.degree
theorem
polynomial.div_tendsto_leading_coeff_div_of_degree_eq
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : P.degree = Q.degree) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top (nhds (P.leading_coeff / Q.leading_coeff))
theorem
polynomial.div_tendsto_at_top_of_degree_gt'
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : Q.degree < P.degree)
(hpos : 0 < P.leading_coeff / Q.leading_coeff) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top filter.at_top
theorem
polynomial.div_tendsto_at_top_of_degree_gt
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : Q.degree < P.degree)
(hQ : Q โ 0)
(hnng : 0 โค P.leading_coeff / Q.leading_coeff) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top filter.at_top
theorem
polynomial.div_tendsto_at_bot_of_degree_gt'
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : Q.degree < P.degree)
(hneg : P.leading_coeff / Q.leading_coeff < 0) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top filter.at_bot
theorem
polynomial.div_tendsto_at_bot_of_degree_gt
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : Q.degree < P.degree)
(hQ : Q โ 0)
(hnps : P.leading_coeff / Q.leading_coeff โค 0) :
filter.tendsto (ฮป (x : ๐), polynomial.eval x P / polynomial.eval x Q) filter.at_top filter.at_bot
theorem
polynomial.abs_div_tendsto_at_top_of_degree_gt
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(hdeg : Q.degree < P.degree)
(hQ : Q โ 0) :
filter.tendsto (ฮป (x : ๐), |polynomial.eval x P / polynomial.eval x Q|) filter.at_top filter.at_top
theorem
polynomial.is_O_of_degree_le
{๐ : Type u_1}
[normed_linear_ordered_field ๐]
(P Q : polynomial ๐)
[order_topology ๐]
(h : P.degree โค Q.degree) :
(ฮป (x : ๐), polynomial.eval x P) =O[filter.at_top] ฮป (x : ๐), polynomial.eval x Q