The argument of a complex number. #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We define arg : ℂ → ℝ
, returing a real number in the range (-π, π],
such that for x ≠ 0
, sin (arg x) = x.im / x.abs
and cos (arg x) = x.re / x.abs
,
while arg 0
defaults to 0
arg
returns values in the range (-π, π], such that for x ≠ 0
,
sin (arg x) = x.im / x.abs
and cos (arg x) = x.re / x.abs
,
arg 0
defaults to 0
Equations
- x.arg = ite (0 ≤ x.re) (real.arcsin (x.im / ⇑complex.abs x)) (ite (0 ≤ x.im) (real.arcsin ((-x).im / ⇑complex.abs x) + real.pi) (real.arcsin ((-x).im / ⇑complex.abs x) - real.pi))
@[simp]
theorem
complex.abs_mul_exp_arg_mul_I
(x : ℂ) :
↑(⇑complex.abs x) * complex.exp (↑(x.arg) * complex.I) = x
@[simp]
theorem
complex.abs_mul_cos_add_sin_mul_I
(x : ℂ) :
↑(⇑complex.abs x) * (complex.cos ↑(x.arg) + complex.sin ↑(x.arg) * complex.I) = x
@[simp]
theorem
complex.range_exp_mul_I
:
set.range (λ (x : ℝ), complex.exp (↑x * complex.I)) = metric.sphere 0 1
theorem
complex.ext_abs_arg
{x y : ℂ}
(h₁ : ⇑complex.abs x = ⇑complex.abs y)
(h₂ : x.arg = y.arg) :
x = y
theorem
complex.arg_of_re_nonneg
{x : ℂ}
(hx : 0 ≤ x.re) :
x.arg = real.arcsin (x.im / ⇑complex.abs x)
theorem
complex.arg_of_im_nonneg_of_ne_zero
{z : ℂ}
(h₁ : 0 ≤ z.im)
(h₂ : z ≠ 0) :
z.arg = real.arccos (z.re / ⇑complex.abs z)
theorem
complex.arg_of_im_neg
{z : ℂ}
(hz : z.im < 0) :
z.arg = -real.arccos (z.re / ⇑complex.abs z)
theorem
complex.arg_mul_cos_add_sin_mul_I_eq_to_Ioc_mod
{r : ℝ}
(hr : 0 < r)
(θ : ℝ) :
(↑r * (complex.cos ↑θ + complex.sin ↑θ * complex.I)).arg = to_Ioc_mod real.two_pi_pos (-real.pi) θ
theorem
complex.arg_cos_add_sin_mul_I_eq_to_Ioc_mod
(θ : ℝ) :
(complex.cos ↑θ + complex.sin ↑θ * complex.I).arg = to_Ioc_mod real.two_pi_pos (-real.pi) θ
theorem
complex.arg_eq_nhds_of_re_pos
{x : ℂ}
(hx : 0 < x.re) :
complex.arg =ᶠ[nhds x] λ (x : ℂ), real.arcsin (x.im / ⇑complex.abs x)
theorem
complex.arg_eq_nhds_of_re_neg_of_im_pos
{x : ℂ}
(hx_re : x.re < 0)
(hx_im : 0 < x.im) :
complex.arg =ᶠ[nhds x] λ (x : ℂ), real.arcsin ((-x).im / ⇑complex.abs x) + real.pi
theorem
complex.arg_eq_nhds_of_re_neg_of_im_neg
{x : ℂ}
(hx_re : x.re < 0)
(hx_im : x.im < 0) :
complex.arg =ᶠ[nhds x] λ (x : ℂ), real.arcsin ((-x).im / ⇑complex.abs x) - real.pi
theorem
complex.arg_eq_nhds_of_im_pos
{z : ℂ}
(hz : 0 < z.im) :
complex.arg =ᶠ[nhds z] λ (x : ℂ), real.arccos (x.re / ⇑complex.abs x)
theorem
complex.arg_eq_nhds_of_im_neg
{z : ℂ}
(hz : z.im < 0) :
complex.arg =ᶠ[nhds z] λ (x : ℂ), -real.arccos (x.re / ⇑complex.abs x)
theorem
complex.tendsto_arg_nhds_within_im_neg_of_re_neg_of_im_zero
{z : ℂ}
(hre : z.re < 0)
(him : z.im = 0) :
filter.tendsto complex.arg (nhds_within z {z : ℂ | z.im < 0}) (nhds (-real.pi))
theorem
complex.continuous_within_at_arg_of_re_neg_of_im_zero
{z : ℂ}
(hre : z.re < 0)
(him : z.im = 0) :
continuous_within_at complex.arg {z : ℂ | 0 ≤ z.im} z
theorem
complex.tendsto_arg_nhds_within_im_nonneg_of_re_neg_of_im_zero
{z : ℂ}
(hre : z.re < 0)
(him : z.im = 0) :
filter.tendsto complex.arg (nhds_within z {z : ℂ | 0 ≤ z.im}) (nhds real.pi)
theorem
complex.continuous_at_arg_coe_angle
{x : ℂ}
(h : x ≠ 0) :
continuous_at (coe ∘ complex.arg) x