我有一个 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 循环来创建这样的矩阵?我最终将需要创建一个更大、更复杂的三对角矩阵,因此希望使用矢量化来加速这个过程。