• ベストアンサー

数列の問題

x_0=1 x_1=0 x_2=0 x_(n+3)=a*x_(n)+ b*x_(n+1)+ c*x_(n+2) (a b c は定数) のとき、x_10~50位までを知りたいのですが、どのようにしたらいいでしょか。 手計算では10位でギブアップです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.5

>どうやって計算されたのでしょうか・・・。 x_nをa,b,cの多項式とみなして、a^i*b^j*c^kの係数をA(n,i,j,k)とすると、 x_n=Σ[0≦i,j,k≦n]A(n,i,j,k)a^i*b^j*c^k と表すことができます。 n=0,1,2の初期値は、 A(0,0,0,0)=1 それ以外は、A(n,i,j,k)=0 A(n,i,j,k)=A(n-3,i-1,j,k)+A(n-2,i,j-1,k)+A(n-1,i,j,k-1) の関係が成り立っていますから、これをプログラミングすればいいだけです。 計算量が多いだけで、計算式は単純ですからコンピュータ向きの問題です。

noname#184996
質問者

お礼

素晴らしい! コンピューターが使えるとすごいですね! 書き込みありがとうございました。

その他の回答 (4)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.4

x_3=a x_4=ac x_5=ab+ac^2 x_6=a^2+2abc+ac^3 x_7=2a^2c+ab^2+3abc^2+ac^4 というように、a,b,cを文字のままで計算したいんでしょうね。 エクセルが使えるパソコンなら、VBAでもプログラミング可能です。 ちなみに、x_50は、最小次数17次、最大次数48次、項数208項の整式になります。

noname#184996
質問者

お礼

>ちなみに、x_50は、最小次数17次、最大次数48次、項数208項の整式になりま >す。 すごい次数になるんですね。 どうやって計算されたのでしょうか・・・。

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.3

maxima って、漸化式は解いてくれたっけ? 確か、行列の計算ができたはずだから、 3×3の行列を T = a b c 1 0 0 0 1 0 と置いて、T の巾乗を求めればいいんじゃない? 列ベクトル (0,0,1) に T の n 乗を掛ければ (x[n+2],x[n+1],x[n]) になるから、 T の n 乗の第3行3列成分を見ればいい。 定数 a,b,c の値が判っていればの話だけど。

  • ksd_hiro
  • ベストアンサー率76% (29/38)
回答No.2

エクセルで計算すればいいのでは? A1にaの値、A2にbの値、A3にcの値を記入し、 B1にx_0の値1、B2にx_1の値0、B3にx_2の値0を記入しておく。 B4に、=$A$1*B1+$A$2*B2+$A$3*B3 と入力してオートフィルでB51まで引っ張ります。

回答No.1

コンピュータで計算をしたらいいんじゃないですか。何でコンピュータを使わないのだろう? Basicだと input a input b input c x0 = 0 x1 = 0 x2 = 0 for i = 1 to 47 x = a*x2 + b*x1 + c*x0 print i+3, x x0 = x1 x1 = x2 x2 = x next i end かな。

noname#184996
質問者

お礼

早々の書き込みありがとうございます。 自分のパソコンでどうやったらbasicが使えるのか分からず…。数式処理ソフトはMaximaを勉強中です・・。

関連するQ&A