次のような三重対角行列を作成する for ループがあります。
m = 5;
Fo = 0.35;
A(1,1) = 1+2*Fo;
A(1,2) = 1+Fo;
for i = 2:m-1
A(i,i-1) = 1;
A(i,i) = 2;
A(i,i+1) = 3;
end
A(m,m-1) = 4;
A(m,m) = 5;
出力は次のとおりです。
A =
1.7000 1.3500 0 0 0
1.0000 2.0000 3.0000 0 0
0 1.0000 2.0000 3.0000 0
0 0 1.0000 2.0000 3.0000
0 0 0 4.0000 5.0000
以下を使用して for ループを置き換えて、三重対角行列の作成をベクトル化しようとしています。
i = 2:m-1;
A(i,i-1) = 1;
A(i,i) = 2;
A(i,i+1) = 3;
残念ながら、出力は正しくありません:
A =
1.7000 1.3500 0 0 0
1.0000 2.0000 3.0000 3.0000 3.0000
1.0000 2.0000 3.0000 3.0000 3.0000
1.0000 2.0000 3.0000 3.0000 3.0000
0 0 0 4.0000 5.0000
for ループの代わりにベクトル化を使用してそのような行列を作成することは可能ですか? 最終的には、はるかに大きく複雑な三重対角行列を作成する必要があるため、ベクトル化を使用してプロセスを高速化したいと考えています。