982 |
982 |
983 lemma Ln_unique: "exp(z) = w \<Longrightarrow> -pi < Im(z) \<Longrightarrow> Im(z) \<le> pi \<Longrightarrow> Ln w = z" |
983 lemma Ln_unique: "exp(z) = w \<Longrightarrow> -pi < Im(z) \<Longrightarrow> Im(z) \<le> pi \<Longrightarrow> Ln w = z" |
984 using Ln_exp by blast |
984 using Ln_exp by blast |
985 |
985 |
986 lemma Re_Ln [simp]: "z \<noteq> 0 \<Longrightarrow> Re(Ln z) = ln(norm z)" |
986 lemma Re_Ln [simp]: "z \<noteq> 0 \<Longrightarrow> Re(Ln z) = ln(norm z)" |
987 by (metis exp_Ln assms ln_exp norm_exp_eq_Re) |
987 by (metis exp_Ln ln_exp norm_exp_eq_Re) |
988 |
988 |
989 corollary ln_cmod_le: |
989 corollary ln_cmod_le: |
990 assumes z: "z \<noteq> 0" |
990 assumes z: "z \<noteq> 0" |
991 shows "ln (cmod z) \<le> cmod (Ln z)" |
991 shows "ln (cmod z) \<le> cmod (Ln z)" |
992 using norm_exp [of "Ln z", simplified exp_Ln [OF z]] |
992 using norm_exp [of "Ln z", simplified exp_Ln [OF z]] |
1606 proof (cases "x = 0") |
1606 proof (cases "x = 0") |
1607 assume x: "x \<noteq> 0" |
1607 assume x: "x \<noteq> 0" |
1608 hence "(-x) powr a = exp (a * ln (-of_real x))" by (simp add: powr_def) |
1608 hence "(-x) powr a = exp (a * ln (-of_real x))" by (simp add: powr_def) |
1609 also from x have "ln (-of_real x) = Ln (of_real x) + of_real (sgn x) * pi * \<i>" |
1609 also from x have "ln (-of_real x) = Ln (of_real x) + of_real (sgn x) * pi * \<i>" |
1610 by (simp add: Ln_minus Ln_of_real) |
1610 by (simp add: Ln_minus Ln_of_real) |
1611 also from x assms have "exp (a * ...) = cis pi powr (of_real (sgn x) * a) * of_real x powr a" |
1611 also from x have "exp (a * ...) = cis pi powr (of_real (sgn x) * a) * of_real x powr a" |
1612 by (simp add: powr_def exp_add algebra_simps Ln_of_real cis_conv_exp) |
1612 by (simp add: powr_def exp_add algebra_simps Ln_of_real cis_conv_exp) |
1613 also note cis_pi |
1613 also note cis_pi |
1614 finally show ?thesis by simp |
1614 finally show ?thesis by simp |
1615 qed simp_all |
1615 qed simp_all |
1616 |
1616 |
1619 shows "z \<notin> \<real>\<^sub>\<le>\<^sub>0 \<Longrightarrow> ((\<lambda>z. z powr s) has_field_derivative (s * z powr (s - 1))) (at z)" |
1619 shows "z \<notin> \<real>\<^sub>\<le>\<^sub>0 \<Longrightarrow> ((\<lambda>z. z powr s) has_field_derivative (s * z powr (s - 1))) (at z)" |
1620 apply (cases "z=0", auto) |
1620 apply (cases "z=0", auto) |
1621 apply (simp add: powr_def) |
1621 apply (simp add: powr_def) |
1622 apply (rule DERIV_transform_at [where d = "norm z" and f = "\<lambda>z. exp (s * Ln z)"]) |
1622 apply (rule DERIV_transform_at [where d = "norm z" and f = "\<lambda>z. exp (s * Ln z)"]) |
1623 apply (auto simp: dist_complex_def) |
1623 apply (auto simp: dist_complex_def) |
1624 apply (intro derivative_eq_intros | simp add: assms)+ |
1624 apply (intro derivative_eq_intros | simp)+ |
1625 apply (simp add: field_simps exp_diff) |
1625 apply (simp add: field_simps exp_diff) |
1626 done |
1626 done |
1627 |
1627 |
1628 declare has_field_derivative_powr[THEN DERIV_chain2, derivative_intros] |
1628 declare has_field_derivative_powr[THEN DERIV_chain2, derivative_intros] |
1629 |
1629 |
1630 |
1630 |
1631 lemma has_field_derivative_powr_right: |
1631 lemma has_field_derivative_powr_right: |
1632 "w \<noteq> 0 \<Longrightarrow> ((\<lambda>z. w powr z) has_field_derivative Ln w * w powr z) (at z)" |
1632 "w \<noteq> 0 \<Longrightarrow> ((\<lambda>z. w powr z) has_field_derivative Ln w * w powr z) (at z)" |
1633 apply (simp add: powr_def) |
1633 apply (simp add: powr_def) |
1634 apply (intro derivative_eq_intros | simp add: assms)+ |
1634 apply (intro derivative_eq_intros | simp)+ |
1635 done |
1635 done |
1636 |
1636 |
1637 lemma field_differentiable_powr_right: |
1637 lemma field_differentiable_powr_right: |
1638 fixes w::complex |
1638 fixes w::complex |
1639 shows |
1639 shows |
1770 apply (erule less_le_trans, auto) |
1770 apply (erule less_le_trans, auto) |
1771 done |
1771 done |
1772 qed |
1772 qed |
1773 |
1773 |
1774 lemma lim_1_over_ln: "((\<lambda>n. 1 / ln(real_of_nat n)) \<longlongrightarrow> 0) sequentially" |
1774 lemma lim_1_over_ln: "((\<lambda>n. 1 / ln(real_of_nat n)) \<longlongrightarrow> 0) sequentially" |
1775 using lim_1_over_Ln [THEN filterlim_sequentially_Suc [THEN iffD2]] assms |
1775 using lim_1_over_Ln [THEN filterlim_sequentially_Suc [THEN iffD2]] |
1776 apply (subst filterlim_sequentially_Suc [symmetric]) |
1776 apply (subst filterlim_sequentially_Suc [symmetric]) |
1777 apply (simp add: lim_sequentially dist_norm) |
1777 apply (simp add: lim_sequentially dist_norm) |
1778 apply (simp add: Ln_Reals_eq norm_powr_real_powr norm_divide) |
1778 apply (simp add: Ln_Reals_eq norm_powr_real_powr norm_divide) |
1779 done |
1779 done |
1780 |
1780 |