特定の順序を持つ一連の行列を保持するスキームにストリームが必要です。
このストリームのストリームカーは行列 [1 6 0 3] になります。つまり、行 1 列 1 は 1、行 1 列 2 は 6、行 2 列 1 は 0、行 2 列 2 は 3 です。各行列は技術的にはリストですが、表現 (コンストラクターとセレクター) があります。 2x2 マトリックス。したがって、これは 2x2 行列のストリームになります。
これで、ストリームの次のアイテムは [2 10 0 5] になります。ここでのパターンは、次のストリームの行列が次のように増加することです: [k (4k+2) 0 (2k+1)] ここで、k は k 番目の行列です。
これらをどのように保管したいかという考えがあります。例として、次のようにして連続した 1 のストリームを取得できることを知っています。
(define ones (cons-stream 1 ones))
および整数の連続ストリーム:
(define integers (cons-stream 1 (add-streams ones integers)))
したがって、上記の形式の行列の連続ストリームが必要です。つまり、最初のもの (カーストリーム) は、[1 6 0 3] で表される行列、[2 10 0 5] で表される行列、[3 14 0 7] で表される行列になります。
だから、私はそれが次のようになることを知っています:
(define start-matrix '(1 6 0 3))
(define init-stream (cons-stream start-matrix
(add-streams ___________
init-stream)))
下線は「私が思う」が欠落している部分です。投稿を整理するために、この投稿から「ストリームの追加」手順を削除しました。
***編集: 「開始行列」は 1 4 0 2 ではなく 1 6 0 3 でなければならないことに気付きました。
しかし、k 番目の行列に 1 4 0 2 を追加する方法が必要です。