1
私は、トリディア線の一次方程式系を解くプログラムをOctaveで書くつもりです。特定の部分は、私のデータが通常のnxn行列に保存されていないが、各列がそれぞれ下側、上側、上側の対角線を表すnx3の行列であることです。オクターブの三重対角行列上でのメモリ最適化ガウス - ザイデル反復
私はすでに通常の行列のための関数的反復プロセスを開発しましたが、この場合、何らかの形でインデックス作成権を得ることができません(コードは多かれ少なかれ同じだと思います)。 A(1,1)とA(n、3)は常に空です。
A = [ 0, 1, 1;
1, 1, 1;
1, 1, 0 ]
# represents M = [ 1, 1, 0;
# 1, 1, 1;
# 0, 1, 1 ]
b = [ 3, 2, 1 ]
n = 3
x_new = [2 2 2]
x_old = [2 2 2]
for iter = 1:16
disp(iter)
for i = 1:n
if i == 1
# disp(A(i,:))
# disp("first")
x_new(i) = (1/A(i, 2)) * (b(i) - A(i, 3)*x_old(i+1));
elseif i == n
# disp(A(i,:))
# disp("last")
x_new(i) = (1/A(i, 2)) * (b(i) - A(i, 1)*x_new(i-1));
else
x_new(i) = (1/A(i, 2)) * (b(i) - A(i, 1)*x_new(i-1) - A(i, 3)*x_old(i+1));
end
x_old = x_new;
end
end
disp(x_old)
ヒント?私はオクターブと代数には新しいです。
あなたが正しいです。どちらも問題でした。コードは今動作します! –