忍者ブログ
20080511~ 13と7と11の倍数の論理積は13と7と11の積の倍数である。 和ァ・・・
[3845] [3844] [3843] [3842] [3841] [3840] [3839] [3838] [3837] [3836] [3835]
数列自体は自然数から複素数まで一気に広がる。


その様子を、scilabとExcelを使って見てみましょう。

まずscilabに、ヘキサボナッチ数列を象徴する行列あるいはその特性方程式を多項式として入力します。

========
方法その1~行列の固有値を求める方法~

scinotesに以下のように入力して実行します。

A=[ones(1,m);eye(m-1,m-1),zeros(m-1,1)]
x=poly(0,'x');
z=det(x*eye(A)-A)
w=roots(z)


========
方法その2~多項式を直接作って根を求める方法~

scinotesに以下のように入力して実行します。


x=poly(0,'x');
z=x^6-x^5-x^4-x^3-x^2-x-1
w=roots(z)

========

 
どちらの方法でもだいたいこんな感じになるので、赤矢印で示したwという6行2列の行列に格納された左と右が、それぞれ固有値の実部と虚部です。
 
全部選択してExcelにコピペしましょう。


これを、m=1から10まで、m=6以外にも適用してみましょう。
モノボナッチからデカボナッチまでの固有値を、異なるシートの同じセルに貼り付けます。

配列の大きさが異なりますが、先頭をE4セルに揃えておきます。



ご覧の状態で、10個のシートの中の10というシートを選択し、シフトを押しながら1というシートを選択すると、モノボナッチからデカボナッチまでの10個のシート全部が選択されるので
この状態で作業すると、選択したすべてのシートに対して同じ操作が行えます。

たとえば、D4セルにa1と入力し、セルの右下のポッチをダブルクリックすると、「オートフィル」(オートフィルタではない)が自動認識し、a10まで連れてってくれます。


ただし、10のシートでオートフィルをしたので、固有値が1個しかなくても、a10まで連れていかれてしまいます。


それから、G4からG13まで、complex(E列,F列)を行って、複素数をG列に入れる作業もオートフィルで行ってしまいましょう。

なぜ、scilabで一旦実部と虚部にわけたのかと言われますと
そのままコピペすると、scilabの予約語である虚数単位%iが、この仕様のまま吐き出されてしまうのを防ぐためでした。

G列をコピーし、値だけ貼り付け、E,F列を列ごと抹消します。

今度は、D列のa1と書かれている部分から、F列の10番目の固有値までをコピーし、
「行と列を入れ替えて」、F2を先頭にして貼り付けます。



何がしたいのかというと、このwikiの分母を作りたいのです。

F4セルにIMSUB($E4,F$3)
と入力すると、以下のような表が出来上がります。


この表を、横に掛け算して、先ほどのwikiの分母を算出したいのですが、ゼロが邪魔です。
なので、同じnのan同士が引き算する場合は、1を返すようにif文を構築します。

IF(F$3<>$E4,IMSUB($E4,F$3),1)
この式で大丈夫です。
Excelで複素数を扱う場合、文字型として格納されてしまうので、算術演算は本来できないのですが
数値型としてではなく文字型として「等しい」か「等しくないか」については判別可能なのです。

もちろん、ifの条件の中身をF$3-$E4<>0にしてはいけません。引き算という算術演算が入ってしまうからです。


10個全部掛け算してみましょう。
P4=improduct(F4:O4)
を、P4からP13まで繰り返します。

これで各分母は計算できました。今度は分子を計算しましょう。

Q1にn、R1に1などと入れておいて
Q4=impower(E4,$R$1)としてから、Q4からQ13まで繰り返すと、分子の出来上がりです。

それから、分子を分母で割ります。

R4=imdiv(Q4,P4)として、R4からR13まで繰り返します。
 
さらに、R3=imsum(R4:R13)とすると、nが0から8まで、実部も虚部も、ほぼゼロになって、9番目の数列がいきなり約1+i0になったりしないでしょうか。

n=9から20くらいまで入力しても、nが整数であれば、数列の値は実整数に近似した値が出るはずです。

デカボナッチ数列の漸化式と一般式を載せておきます。


さて、ほかのシートはどうなったでしょうか。
たとえば、「9」のシート、ノナボナッチ数列のところは
固有値が9つしかないのに枠を10個設けているので、おかしなことになっています。

9から1までのシートを選択して、一旦罫線を外しましょう。

 
13行目は残ってても割りとどうでもいいのですが、悪さをするのはO列です。
ここをゼロにしてしまうとゼロで割り算することになってしまうので、O列のO4からO13までにはすべて1を入れることにします。


同様に、シート1から8までのすべてに関してはN4からN13まで
シート1から7までのすべてに関してはM4からM13まで
シート1から6まではL4からL13までといった風に、1を代入することで、問題は解決します。

(追記:n≦0でQ13とかのQ列の「見かけゼロ」が悪さすることが判明したため、不必要な式impowerを取り除いて「0」と定義してください)


ここまでのExcelファイルをここに置いておきます。
ブログランキング・にほんブログ村へ
にほんブログ村

拍手[0回]

PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


忍者ブログ [PR]
カレンダー
08 2019/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
ブログランキング
ブログランキング参戦中
にほんブログ村 アニメブログ 深夜アニメへ
にほんブログ村 漫画ブログ SF・ファンタジー漫画へ
にほんブログ村 科学ブログ 自然科学へ
よかったらポチッとお願いします^^
最新CM
[03/03 くそ]
[02/28 GIC結晶ファン]
[12/01 量子きのこ]
[11/06 NONAME]
[10/12 量子きのこ]
プロフィール
HN:
量子きのこ
年齢:
38
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます
例:H→7番目、XP→15(P)×26+23(X)=413番目。
A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
バーコード
ブログ内検索
アクセス解析