数列(Sequence)
1 数列
\[例題1 (1)第4項が14,第10項が62である等差数列の初項と公差を求め,一般項を求めよ。\\2 漸化式と数学的帰納法
\[例題1 次のように定められた数列の一般項を求めよ。\\数列(Sequence)
1 数列
\[例題1 (1)第4項が14,第10項が62である等差数列の初項と公差を求め,一般項を求めよ。\\(%i1) | load(functs)$ |
(%i2) |
ari(i,p,j,q):=block( l:solve([arithmetic(a,d,i)=p,arithmetic(a,d,j)=q],[a,d])[1], a1:ev(a,l[1]),d1:ev(d,l[2]), print("a=",a1,":d=",d1), expand(arithmetic(a1,d1,n)) )$ |
(%i3) | ari(4,14,10,62); |
(%i4) | solve(arithsum(3,2,n)=63,n); |
(%i5) |
geo(i,p,j,q):=block( l:solve([geometric(a,r,i)=p,geometric(a,r,j)=q],[a,r])[1], a1:ev(a,l[1]),r1:ev(r,l[2]), print("a=",a1,":r=",r1), geometric(a1,r1,n) )$ |
(%i6) | geo(2,14,5,112); |
(%i7) | solve([geosum(a,r,3)=9,geosum(a,r,6)=-63],[a,r]); |
\[例題3 \sum_{k=1}^{n}(k^2-3k+4)を求めよ。\]
さあ, Maxima のすごいところ。数列の和を計算するには調べたところ(必死で英語の Help を読むわけだ)3種類あります。
まず,sum(これで駄目なら)最後に,simpsum とつける。
次は simplify_sum をロードして。
どうも一番協力で簡単なのが,nusum(unsum:差分をとる)の逆らしい,つまり和分。
少し実験してます。等比の和とか部分分数もOK
これ以上のマクロもあるんです。超幾何級数の計算マクロ。
zeilberger という人が書いたパッケージがあるんですよ。そのうち紹介する機会があるかな。
(%i8) | sum(k^2-3*k+4,k,1,n); |
(%i9) | sum(k^2-3*k+4,k,1,n),simpsum; |
(%i10) | ratsimp(%); |
(%i11) | factor(%); |
(%i12) | load(simplify_sum)$ |
(%i13) | simplify_sum(sum(k^2-3*k+4,k,1,n)); |
(%i14) | nusum(k^2-3*k+4,k,1,n); |
(%i15) | nusum(3*n^2-3*n,n,1,n); |
(%i16) | sum(k*r^(k-1),k,1,n),simpsum; |
(%i17) | simplify_sum(%); |
(%i18) | ratsimp(%); |
(%i19) | nusum(k*r^(k-1),k,1,n); |
(%i20) | sum(1/k/(k+1),k,1,n); |
(%i21) | simplify_sum(%); |
(%i22) | nusum(1/k/(k+1),k,1,n); |
\[例題4 数列 2,6,12,20,30,42,\cdotsの一般項を求めよ。\]
具体的な数列から階差数列を取り,元の数列を求めるのはリストで工夫しました。
(%i23) | kaisa(l):=rest(l,1)-rest(l,-1)$ |
(%i24) | kaisa([2,6,12,20,30,42]); |
(%i25) | 2+sum(arithmetic(4,2,k),k,1,n-1),simpsum; |
(%i26) | ratsimp(%); |
\[例題5 初項から第n項までの和が S_n=n^3-nである数列の一般項を求めよ。\]
unsumだと初項だけ別の式にならないので,和から一般項を出すマクロを作りました。
(%i27) |
wakara(s):=block( s(n):=s, a(n):=expand(s(n)-subst(n-1,n,s(n))), if subst(1,n,a(n))=subst(1,n,s(n)) then return(factor(a(n))) else print("a(1)=",subst(1,n,s(n)),",n>1:a(n)=",a(n)) )$ |
(%i28) | wakara(n^3-n); |
(%i29) | unsum(n^3-n,n); |
(%i30) | unsum(n^2+1,n); |
(%i31) | wakara(n^2+1)$ |
2 漸化式と数学的帰納法
\[例題1 次のように定められた数列の一般項を求めよ。\\(%i32) | kill(all)$ |
(%i1) | load("solve_rec")$ |
(%i2) | solve_rec(a[n+1]=a[n]+n+1,a[n],a[1]=3); |
(%i3) | ratsimp(%); |
(%i4) | solve_rec(a[n+1]=2*a[n]-1,a[n],a[1]=2); |
(%i5) | solve_rec(a[n+1]=2-1/a[n],a[n],a[1]=2); |
(%i6) | solve_rec(a[n+2]=a[n+1]+a[n],a[n],a[1]=1,a[2]=1); |
(%i7) | l:rhs(%); |
(%i8) | l,n=10; |
(%i9) | ratsimp(%); |
(%i10) | fib(10); |
(%i11) | for k:1 thru 10 do print(fib(k))$ |
漸化式は解くだけでなく,よくある漸化式を目で見るパッケージ(力学)も用意されている。
階段関数とでもいうのですか.
(%i12) | load(dynamics)$ |
(%i13) | staircase(2*x-1,2,5,[gnuplot_preamble, "set zeroaxis"]); |
図 2:
\[例題3 nを自然数とするとき,数学的帰納法を用いて,次の等式を証明せよ。\\
1+3+5+\cdots+(2n-1)=n^2\]
帰納法はまあ,手でやる証明法だから(高校の大体のものは直接に証明できます)。
(%i14) | load(functs)$ |
(%i15) | nusum(2*k-1,k,1,n); |
数列(Sequence)
1 数列
数列:progression,sequence
pro(前)+gress(進む),sequ(後に来る)で面白いもんだ。
項:term 一般項:general term 項数:number of trems(?) 末項:last term
termは限界,ターミナルとか
有限数列,無限数列:finite(infinite) progression
等差数列,公差:arithmetical progression A.P.,common difference
等比数列,公比:geometric progression G.P.,common ratio
算術的と幾何的との違いは,農業生産の増加と人口の増加の違いだ,というのがマルサスの人口論。
複利法:compound interest 興味があるのは利子か
階差数列:progression of difference
和:sum 一番高いという意味らしい,サミット
2 漸化式と数学的帰納法
漸化式:recurrence formula re は再び occur する