src/HOL/Analysis/Convex.thy
changeset 82485 12fe1e2b87e4
parent 80654 10c712405854
child 82488 b52e57ed7e29
equal deleted inserted replaced
82484:0dbef647c377 82485:12fe1e2b87e4
    28   shows "u *\<^sub>R x + v *\<^sub>R y \<in> s"
    28   shows "u *\<^sub>R x + v *\<^sub>R y \<in> s"
    29   using assms unfolding convex_def by fast
    29   using assms unfolding convex_def by fast
    30 
    30 
    31 lemma convex_alt: "convex s \<longleftrightarrow> (\<forall>x\<in>s. \<forall>y\<in>s. \<forall>u. 0 \<le> u \<and> u \<le> 1 \<longrightarrow> ((1 - u) *\<^sub>R x + u *\<^sub>R y) \<in> s)"
    31 lemma convex_alt: "convex s \<longleftrightarrow> (\<forall>x\<in>s. \<forall>y\<in>s. \<forall>u. 0 \<le> u \<and> u \<le> 1 \<longrightarrow> ((1 - u) *\<^sub>R x + u *\<^sub>R y) \<in> s)"
    32   (is "_ \<longleftrightarrow> ?alt")
    32   (is "_ \<longleftrightarrow> ?alt")
    33   by (smt (verit) convexD convexI)
    33   by (metis convex_def diff_eq_eq diff_ge_0_iff_ge)
    34 
    34 
    35 lemma convexD_alt:
    35 lemma convexD_alt:
    36   assumes "convex s" "a \<in> s" "b \<in> s" "0 \<le> u" "u \<le> 1"
    36   assumes "convex s" "a \<in> s" "b \<in> s" "0 \<le> u" "u \<le> 1"
    37   shows "((1 - u) *\<^sub>R a + u *\<^sub>R b) \<in> s"
    37   shows "((1 - u) *\<^sub>R a + u *\<^sub>R b) \<in> s"
    38   using assms unfolding convex_alt by auto
    38   using assms unfolding convex_alt by auto
  1243     by (simp add: le_diff_eq)
  1243     by (simp add: le_diff_eq)
  1244   thus "((\<Sum>i\<in>I. a i * b i))\<^sup>2 \<le> (\<Sum>i\<in>I. (a i)\<^sup>2) * (\<Sum>i\<in>I. (b i)\<^sup>2)"
  1244   thus "((\<Sum>i\<in>I. a i * b i))\<^sup>2 \<le> (\<Sum>i\<in>I. (a i)\<^sup>2) * (\<Sum>i\<in>I. (b i)\<^sup>2)"
  1245     by (simp add: pos_divide_le_eq True)
  1245     by (simp add: pos_divide_le_eq True)
  1246 qed
  1246 qed
  1247 
  1247 
       
  1248 text \<open>The inequality between the arithmetic mean and the root mean square\<close>
  1248 lemma sum_squared_le_sum_of_squares:
  1249 lemma sum_squared_le_sum_of_squares:
  1249   fixes f :: "'a \<Rightarrow> real"
  1250   fixes f :: "'a \<Rightarrow> real"
  1250   assumes "\<And>i. i\<in>I \<Longrightarrow> f i \<ge> 0" "finite I" "I \<noteq> {}"
  1251   assumes "finite I"
  1251   shows "(\<Sum>i\<in>I. f i)\<^sup>2 \<le> (\<Sum>y\<in>I. (f y)\<^sup>2) * card I"
  1252   shows "(\<Sum>i\<in>I. f i)\<^sup>2 \<le> (\<Sum>y\<in>I. (f y)\<^sup>2) * card I"
  1252 proof (cases "finite I \<and> I \<noteq> {}")
  1253 proof (cases "finite I \<and> I \<noteq> {}")
  1253   case True
  1254   case True
  1254   have "(\<Sum>i\<in>I. f i / real (card I))\<^sup>2 \<le> (\<Sum>i\<in>I. (f i)\<^sup>2 / real (card I))"
  1255   then have "(\<Sum>i\<in>I. f i / of_nat (card I))\<^sup>2 \<le> (\<Sum>i\<in>I. (f i)\<^sup>2 / of_nat (card I))"
  1255     using assms convex_on_sum [OF _ _ convex_power2, where a = "\<lambda>x. 1 / real(card I)" and S=I]
  1256     using assms convex_on_sum [OF _ _ convex_power2, where a = "\<lambda>x. 1 / of_nat(card I)" and S=I]
  1256     by simp
  1257     by simp
  1257   then show ?thesis
  1258   then show ?thesis
  1258     using assms  
  1259     using assms  
  1259     by (simp add: divide_simps power2_eq_square split: if_split_asm flip: sum_divide_distrib)
  1260     by (simp add: divide_simps power2_eq_square split: if_split_asm flip: sum_divide_distrib)
  1260 qed auto
  1261 qed auto
       
  1262 
       
  1263 lemma sum_squared_le_sum_of_squares_2:
       
  1264   "(x+y)/2 \<le> sqrt ((x\<^sup>2 + y\<^sup>2) / 2)"
       
  1265 proof -
       
  1266   have "(x + y)\<^sup>2 / 2^2 \<le> (x\<^sup>2 + y\<^sup>2) / 2"
       
  1267     using sum_squared_le_sum_of_squares [of UNIV "\<lambda>b. if b then x else y"]
       
  1268     by (simp add: UNIV_bool add.commute)
       
  1269   then show ?thesis
       
  1270     by (metis power_divide real_le_rsqrt)
       
  1271 qed
  1261 
  1272 
  1262 subsection \<open>Misc related lemmas\<close>
  1273 subsection \<open>Misc related lemmas\<close>
  1263 
  1274 
  1264 lemma convex_translation_eq [simp]:
  1275 lemma convex_translation_eq [simp]:
  1265   "convex ((+) a ` s) \<longleftrightarrow> convex s"
  1276   "convex ((+) a ` s) \<longleftrightarrow> convex s"