|
之前在 kuing.cjhb.site/forum.php?mod=redirect&go … d=4823&pid=22620(13楼)扯过等比放缩的基本套路,正如帖中网友游客所讲的:
如果要第5项开始才能放缩,这样谁还想着去算?早放弃了。
如果是考试,应该杜绝这种方法的题目,思维量不怎样,但能整死人。 还好考试什么的不关我事,既然有套路,计算自然交给软件,这两天玩开编程,顺便把这个也编个测试程序玩玩。
就用之前的实例来说吧。
例1:$1/(2-1)+1/(2^2-1)+\cdots+1/(2^n-1)<5/3$(kuing.cjhb.site/forum.php?mod=viewthread&tid=4841)- Clear["Global`*"];
- testN = 10;(*参与测试的数列项数*)
- testm = 5;(*测试的最大m*)
- f[n_] = 1/(2^n - 1);
- c = 5/3;
- q[m_] := 1 - f[m]/(c - Sum[f[i], {i, 1, m - 1}]);
- g[k_, m_] := f[m]*q[m]^(k - m);
- Do[{
- k = m;
- While[k <= testN,
- If[f[k] > g[k, m], Break[]];
- k++];
- If[k > testN, mm = m; Break[]]
- }, {m, 1, testm}]
- Print["m=", mm]
- Print["q=", q[mm]]
- Print["try: f[n]<=", f[mm], "*", q[mm]^(n - mm), ",n>=", mm]
Copy the Code 输出:
m=2
q=1/2
try: f[n]<=1/3*2^(2-n),n>=2
也就是链接中的放缩。
例2:开头链接中的题(无法求通项的情形)。- Clear["Global`*"];
- testN = 10;(*参与测试的数列项数*)
- testm = 5;(*测试的最大m*)
- a[1] = 4;
- Do[a[n + 1] = a[n]^2 - 2 n a[n] + 1, {n, 1, testN - 1}]
- Do[f[n] = 1/(a[n] - 2), {n, 1, testN}]
- c = 2/3;
- q[m_] := 1 - f[m]/(c - Sum[f[i], {i, 1, m - 1}]);
- g[k_, m_] := f[m]*q[m]^(k - m);
- Do[{
- k = m;
- While[k <= testN,
- If[f[k] > g[k, m], Break[]];
- k++];
- If[k > testN, mm = m; Break[]]
- }, {m, 1, testm}]
- Print["m=", mm]
- Print["q=", q[mm]]
- Print["try: f[n]<=", f[mm], "*", q[mm]^(n - mm), ",n>=", mm]
Copy the Code 输出:
m=3
q=1/22
try: f[n]<=1/44*22^(3-n),n>=3
也就是链接中的放缩。
例3,随便在网上搜到的:$a_1=a_2=5$, $a_{n+1}=a_n+6a_{n-1}$,证 $1/a_1+1/a_2+\cdots+1/a_n<1/2$。
求通项易知 $a_n=3^n-(-2)^n$,参考答案是通过证明当 $k$ 为奇数时 $1/a_k+1/a_{k+1}<4/3^{k+1}$ 来得出结果的,这里我们用那个套路,照样可行。- Clear["Global`*"];
- testN = 10;(*参与测试的数列项数*)
- testm = 5;(*测试的最大m*)
- f[n_] = 1/(3^n - (-2)^n);
- c = 1/2;
- q[m_] := 1 - f[m]/(c - Sum[f[i], {i, 1, m - 1}]);
- g[k_, m_] := f[m]*q[m]^(k - m);
- Do[{
- k = m;
- While[k <= testN,
- If[f[k] > g[k, m], Break[]];
- k++];
- If[k > testN, mm = m; Break[]]
- }, {m, 1, testm}]
- Print["m=", mm]
- Print["q=", q[mm]]
- Print["try: f[n]<=", f[mm], "*", q[mm]^(n - mm), ",n>=", mm]
Copy the Code 输出:
m=2
q=1/3
try: f[n]<=1/5*3^(2-n),n>=2
即只需证明 $n\ge2$ 时 $1/(3^n - (-2)^n)\le 3^{2-n}/5$ 即可(化简后为 $3^{n-2}\ge (-2)^{n-2}$)。
要改动的就是 f[n_] 和 c 那部分,其他都是固定的。
注意,测试结果未必一定成立,毕竟这里只取了数列的 10 项来测试,如果你想保险些也可以加大它。
如果测试失败,会输出 m=mm 等一堆没用的东西,如果确认输入没问题,就应考虑放弃,没必要加大 testm,因为保留5项都不行,很可能方向不对。 |
|