数学奥林匹克问题解答:一道不等式题目的三种解法

设 $a_1, a_2, \cdots, a_n\in\mathbf{N^*}$, 且各不相同. 求证: $${a_1\over1^2} + {a_2\over2^2} + \cdot + {a_n\over n^2} \ge {1\over1} + {1\over2} + \cdots + {1\over n}.$$

解法一:

考虑使用基本不等式 $a + b\ge 2\sqrt{ab}$ 消去左边各项之分子. $$\because {a_k\over 1^2} + {1\over a_k} \ge 2\cdot{1\over k},\ k=1, 2, \cdots n.$$ $$\therefore \sum_{k=1}^{n}{a_k\over k^2} + \sum_{k=1}^{n}{1\over a_k} \ge 2\cdot\sum_{k=1}^{n}{1\over k}.$$ 而 $a_k\in\mathbf{N^*}$ 且互不相等, 因此 $$\sum_{k=1}^{n}{1\over a_k} \le \sum_{k=1}^{n}{1\over k}.$$ 注意不一定有$a_k \ge k$.

由此可以得到 $$\sum_{k=1}^{n}{a_k\over k^2} \ge \sum_{k=1}^{n}{1\over k}.$$

解法二:

我们还可以尝试使用Cauchy不等式 $$\left(\sum_{i = 1}^{n}a_ib_i\right)^2 \le \left(\sum_{i = 1}^{n}a_i^2\right)\left(\sum_{i = 1}^{n}b_i^2\right)$$ 证明之: $$\left(1 + {1\over2} + \cdots + {1\over n}\right)^2 = \left(\sum_{k = 1}^{n}{1\over k}\right)^2 = \left(\sum_{k = 1}^{n}{\sqrt{a_k} \over k}\cdot {1\over \sqrt{a_k}}\right)^2 \le \sum_{k = 1}^{n}{a_k \over k^2} \cdot \sum_{k = 1}^{n}{1\over a_k}$$ 而 $a_k\in\mathbf{N^*}$ 且互不相等, 因此 $$\sum_{k=1}^{n}{1\over a_k} \le \sum_{k=1}^{n}{1\over k}.$$ 由此可以得到 $$\sum_{k=1}^{n}{a_k\over k^2} \ge \sum_{k=1}^{n}{1\over k}.$$

解法三:

本题还可采用排序不等式证明之.

设 $b_1, b_2, \cdots, b_n$ 是 $a_1, a_2, \cdots, a_n$ 的重新排列, 且满足: $$b_1 < b_2 < \cdots b_n.$$ 又$$1 > {1\over2^2} > {1\over3^2} > \cdots > {1\over n^2}.$$ 因此(乱序和 $\ge$ 反序和): $$a_1 + {a_2 \over 2^2} + \cdots + {a_n \over n^2} \ge b_1 + {b_2 \over 2^2} + \cdots + {b_n \over n^2}.$$ 因为 $b_1, b_2, \cdots, b_n$ 是互不相等的正整数, 故 $$b_1 \ge 1,\ b_2\ge2,\ \cdots,\ b_n \ge n.$$ 从而 $$1 + {1\over 2} + \cdots + {1\over n} \le b_1 + {b_2 \over 2^2} + \cdots + {b_n \over n^2} \le a_1 + {a_2 \over 2^2} + \cdots + {a_n \over n^2}.$$

评注:

本题解法一, 解法二大同小异, 都利用了恒等式 $${1\over k} = {\sqrt{a_k} \over k} \cdot {1 \over \sqrt{a_k}}.$$ 解法三则利用排序不等式迅速得出结果, 是三种作法中最简洁的.

扫描关注“奥数学苑”微信公众号(ID: aoshu_xueyuan)

时间: 2024-11-09 06:35:12

数学奥林匹克问题解答:一道不等式题目的三种解法的相关文章

数学奥林匹克问题解答: 2015年新西兰数学奥林匹克第二题解答

新西兰数学奥林匹克总计3道题目, 考试时间为90分钟. 设 $$a,\ b,\ c,\ {a\over b} + {b \over c} + {c \over a},\ {a \over c} + {c \over b} + {b \over a}$$ 均为正整数. 证明: $a = b = c$. 解答: 易知若 $(a. b, c)\ne1$, 则可对 ${a\over b} + {b \over c} + {c \over a}$ 及 ${a \over c} + {c \over b}

UVALive 6257 Chemist&#39;s vows --一道题的三种解法(模拟,DFS,DP)

题意:给一个元素周期表的元素符号(114种),再给一个串,问这个串能否有这些元素符号组成(全为小写). 解法1:动态规划 定义:dp[i]表示到 i 这个字符为止,能否有元素周期表里的符号构成. 则有转移方程:dp[i] = (dp[i-1]&&f(i-1,1)) || (dp[i-2]&&f(i-2,2))     f(i,k):表示从i开始填入k个字符,这k个字符在不在元素周期表中.  dp[0] = 1 代码: //109ms 0KB #include <ios

最长单调递增子序列的三种解法

问题描述: 找出由n个数组成的序列的最长单调递增子序列 解法一:转化成LCS问题求解,时间复杂度为O(n*n). 思路:原序列为A,把A按升序排序得到序列B,求出A,B序列的最长公共子序列,即为A的最长单调递增子序列. #include<iostream> #include<algorithm> #include<string> #include<cstdio> using namespace std; //转化成LCS问题,时间复杂度O(n*n) int

C语言--求字符串长度的三种解法

问题: 求一个字符串的三种解法 一.计数的方法 #include<stdio.h> #include<assert.h> int my_strlen( char* str) { int count=0; while (*str) { count++; str++; } return count; } int main(void) { char *arr = "abcef"; int ret = my_strlen(arr); printf("%d\n&

LeetCode算法题-First Bad Version(Java实现-三种解法)

这是悦乐书的第200次更新,第210篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第66题(顺位题号是278).您是产品经理,目前领导团队开发新产品.不幸的是,您产品的最新版本未通过质量检查.由于每个版本都是基于以前的版本开发的,因此坏版本之后的所有版本也是坏的. 假设您有n个版本[1,2,...,n]并且您想找出第一个坏的版本,这会导致以下所有版本都不好.您将获得一个API bool isBadVersion(版本),它将返回版本是否错误. 实现一个函数来查找第一

LeetCode算法题-Move Zeroes(Java实现-三种解法)

这是悦乐书的第201次更新,第211篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第67题(顺位题号是283).给定一个数组nums,写一个函数将所有0移动到它的末尾,同时保持非零元素的相对顺序.例如: 输入:[0,1,0,3,12] 输出:[1,3,12,0,0] 注意: 您必须在不制作数组副本的情况下就地执行此操作. 最小化操作总数. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 02

一个小题目的三种不同的解法

有一道很经典的Java题目,虽然很简单,但是可以开发出很多种不同的解法,这是我在今天重新复习了正则的时候,忽然回想起来的.题目的名字是:"查找一个小串在大串中出现的次数."有三种思路,第一种,利用substring,通过寻找小串出现的位置,改变大串从小串出现的位置处重新寻找小串的位置,以此类推.第二种解法,直接用小串分割大串,分割出的字符串数组长度-1即是小串出现的次数,但是这时要考虑一种特殊情况,即小串出现在末尾处.这时候字符串数组的长度就是小串出现的次数.第三种利用正则表达式中Pa

2015多校联合训练第一场Assignment(hdu5289)三种解法

题目大意:给出一个数列,问其中存在多少连续子序列,子序列的最大值-最小值 #include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cmath> using namespace std; int maxsum[100000][30]; int minsum[100000][30]; int a[100000]; int n,k; v

[LeetCode] Remove Element (三种解法)

Given an array and a value, remove all instances of that value in place and return the new length. The order of elements can be changed. It doesn't matter what you leave beyond the new length. 这题做下来感觉技巧性比较强,解出第一种解法以后我又尝试了另外两种解法,一个比一个简单...我一开始却折腾出了最晦涩