0

私がやろうとしているのは、非再結合三項ツリーの構造をエミュレートする一連のベクトルを生成することです。これが私のコードです:

function Trinomial_tree
S{1}(1) = 100;
w{1} = 1.4;
w{2} = 1.1;
w{3} = 0.7;
T = 2;
%Compiling the w's into a vector
w = [w{1}, w{2}, w{3}];
%Actual vector-content generation goes here, right now the k-allocation
%doesn't work as intended. In the second run with i=3, k seems to be
%fixed on 3 
%{
for i = 2:(T+1)
    S{i} = zeros(1, 3^(1i-1));
end
%}
for i = 2:(T+1)
    S{i} = Node(w, T, i, S{i-1});
end
display(S{1})
display(S{2})
display(S{3})
end

ノード関数は次のとおりです。

function [S] = Node(w, T, i, S_1)
%Compute the continuing node of a point
%Pre-allocation
S = zeros(1, 3^(i-1));
%Nested loop which generates the different nodes
for k = 1:(3^(i-2))
for j = 1:((3^T)-2):3
S(j) = S_1(k) * w(1);
S(j+1) = S_1(k) * w(2);
S(j+2) = S_1(k) * w(3);
end
end

さまざまなテストトライアルを実行しましたが、常に同じ問題で終了します。node.m 関数は、時間 t=2 で行ベクトルの最初の 3 つのエントリのみを編集し、他の 6 つのエントリは除外します。時間 t=1 でベクトルの次の値を取らないように、ループ内で間違いを犯したようです。

また、私が見落としていたはるかに簡単で明白な解決策がある一方で、問題を信じられないほど複雑にしている可能性もあります。

どんな助けでも大歓迎です。

4

1 に答える 1

0

あなたのjループのために.Nodej = 1:((3^T)-2):3

の場合T = 2、これは と同等j = 1:7:3です。したがってj、 の値しかありません1。(次に取る値は 8 で、これは 3 より大きいため、ループは停止します。)

于 2015-07-21T13:09:23.043 に答える