类属编程

更新时间:2023-12-24 16:11

类属编程(generic programming) generic是构成库的另一种方式, 这与传统的oop是不同的。这类程序库一般由类属组件和类属算法组成,组件和算法通过迭代器组装起来,组件则对迭代器提供一定的封装。这种程序库的优点在于能够提供比传统程序库更灵活的组装方式,而不损失效率。

简介公式

如果一个数列从第2项起,每一项与它的前一项的比等于同一个非零常数,这个数列就叫做等比数列(geometric progression)。这个常数叫做等比数列的公比(common ratio),公比通常用字母q表示(q≠0)。注:q=1时,an为常数列。  (1)等比数列的通项公式是:An=A1*q^(n-1)

若通项公式变形为an=a1/q*q^n(n∈N*),当q大于0时,则可把an看作自变量n的函数,点(n,an)是曲线y=a1/q*q^x上的一群孤立的点。  (2)求和公式:Sn=nA1(q=1) Sn=A1(1-q^n)/(1-q) =(a1-a1q^n)/(1-q)  =(a1-an*q)/(1-q)  =a1/(1-q)-a1/(1-q)*q^n( 即A-Aq^n) (前提:q≠ 1)  任意两项am,an的关系为an=am·q^(n-m);在运用等比数列的前n相和时,一定要注意讨论公比q是否为1. (3)从等比数列的定义、通项公式、前n项和公式可以推出:a1·an=a2·an-1=a3·an-2=…=ak·an-k+1,k∈{1,2,…,n} (4)等比中项:aq·ap=ar^2,ar则为ap,aq等比中项。  记πn=a1·a2…an,则有π2n-1=(an)2n-1,π2n+1=(an+1)2n+1 另外,一个各项均为正数的等比数列各项取同底数后构成一个等差数列;反之,以任一个正数C为底,用一个等差数列的各项做指数构造幂Can,则是等比数列。在这个意义下,我们说:一个正项等比数列与等差数列是“同构”的。  等比中项定义:从第二项起,每一项(有穷数列和末项除外)都是它的前一项与后一项的等比中 项。  等比中项公式:An/An-1=An+1/An或者(An-1)(An+1)=An^2  (5)无穷递缩等比数列各项和公式:  无穷递缩等比数列各项和公式:公比的绝对值小于1的无穷等比数列,当n无限增大时的极限叫做这个无穷等比数列各项的和。  (6)由等比数列组成的新的等比数列的公比:  {an}是公比为q的等比数列  1.若A=a1+a2+……+an B=an+1+……+a2n  C=a2n+1+……a3n 则,A、B、C构成新的等比数列,公比Q=q^n 2.若A=a1+a4+a7+……+a3n-2 B=a2+a5+a8+……+a3n-1  C=a3+a6+a9+……+a3n 则,A、B、C构成新的等比数列,公比Q=q

性质

(1)若 m、n、p、q∈N*,且m+n=p+q,则am*an=ap*aq;

(2)在等比数列中,依次每 k项之和仍成等比数列。

(3)“G是a、b的等比中项”“G^2=ab(G≠0)”.

(4)若{an}是等比数列,公比为q1,{bn}也是等比数列,公比是q2,则  {a2n},{a3n}…是等比数列,公比为q1^2,q1^3…  {can},c是常数,{an*bn},{an/bn}是等比数列,公比为q1,q1q2,q1/q2。

(5)等比数列中,连续的,等长的,间隔相等的片段和为等比。

(6)若(an)为等比数列且各项为正,公比为q,则(log以a为底an的对数)成等差,公差为log以a为底q的对数。

(7) 等比数列前n项之和Sn=A1(1-q^n)/(1-q)=A1(q^n-1)/(q-1)=(A1q^n)/(q-1)-A1/(q-1)

(8) 数列{An}是等比数列,An=pn+q,则An+K=pn+K也是等比数列,  在等比数列中,首项A1与公比q都不为零。  注意:上述公式中A^n表示A的n次方。

(9)由于首项为a1,公比为q的等比数列的通向公式可以写成an*q/a1=q^n,它的指数函数y=a^x有着密切的联系,从而可以利用指数函数的性质来研究等比数列。

应用

等比数列在生活中也是常常运用的。

如:银行有一种支付利息的方式——复利

即把前一期的利息和本金加在一起算作本金,再计算下一期的利息,也就是人们通常说的利滚利。按照复利计算本利和的公式:本利和=本金*(1+利率)^存期

小故事:

根据历史传说记载,国际象棋起源于古印度,至今见诸于文献最早的记录是在萨珊王朝时期用波斯文写的.据说,有位印度教宰相见国王自负虚浮,决定给他一个教训.他向国王推荐了一种在当时尚无人知晓的游戏.国王当时整天被一群溜须拍马的大臣们包围,百无聊赖,很需要通过游戏方式来排遣郁闷的心情。

国王对这种新奇的游戏很快就产生了浓厚的兴趣,高兴之余,他便问那位宰相,作为对他忠心的奖赏,他需要得到什么赏赐.宰相开口说道:请您在棋盘上的第一个格子上放1粒麦子,第二个格子上放2粒,第三个格子上放4粒,第四个格子上放8粒……即每一个次序在后的格子中放的麦粒都必须是前一个格子麦粒数目的倍数,直到最后一个格子第64格放满为止,这样我就十分满足了. “好吧!”国王哈哈大笑,慷慨地答应了宰相的这个谦卑的请求.

这位聪明的宰相到底要求的是多少麦粒呢?稍微算一下就可以得出:1+2+2^2+2^3+2^4+……+2^63=2^64-1,直接写出数字来就是18,446,744,073,709,551,615粒,这位宰相所要求的,竟是全世界在两千年内所产的小麦的总和!

如果造一个宽四米,高四米的粮仓来储存这些粮食,那么这个粮仓就要长三亿千米,可以绕地球赤道7500圈,或在日地之间打个来回。

国王哪有这么多的麦子呢?他的一句慷慨之言,成了他欠宰相西萨·班·达依尔的一笔永远也无法还清的债。  正当国王一筹莫展之际,王太子的数学教师知道了这件事,他笑着对国王说:“陛下,这个问题很简单啊,就像1+1=2一样容易,您怎么会被它难倒?”国王大怒:“难道你要我把全世界两千年产的小麦都给他?”年轻的教师说:“没有必要啊,陛下。其实,您只要让宰相大人到粮仓去,自己数出那些麦子就可以了。假如宰相大人一秒钟数一粒,数完18,446,744,073,709,551,615粒麦子所需要的时间,大约是5800亿年(大家可以自己用计算器算一下!)。就算宰相大人日夜不停地数,数到他自己魂归极乐,也只是数出了那些麦粒中极小的一部分。这样的话,就不是陛下无法支付赏赐,而是宰相大人自己没有能力取走赏赐。”国王恍然大悟,当下就召来宰相,将教师的方法告诉了他。

西萨·班·达依尔沉思片刻后笑道:“陛下啊,您的智慧超过了我,那些赏赐……我也只好不要了!”当然,最后宰相还是获得了很多赏赐。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}