1
2次微分を計算するためにmatlabで疎行列を作成したいと思います。現在、私は次のようにして、それを作成します。要素の可変距離を持つmatlabでスパースバンド行列を作成
r_num = 1000;
r_square_num = r_num*r_num;
A = sparse(-30*diag(ones(r_square_num,1),0)+16*diag(ones(r_square_num-r_num,1),r_num)+16*diag(ones(r_square_num-r_num,1),-r_num)-diag(ones(r_square_num-2*r_num,1),-2*r_num)-diag(ones(r_square_num-2*r_num,1),2*r_num));
しかし、その方法は、私の記憶がオーバーフローする密行列の作成によるdiag
とones
には不可能です。二次と三対角線の位置は、既に事前に知られている場合、私は、次の方法でそれを書き換えることができます。
A = spdiags([-1*ones_vec 16*ones_vec -30*ones_vec 16*ones_vec -1*ones_vec], -2:2, r_square_num, r_square_num);
しかし、どのように私は対角線の間の距離がr_num
に依存されている場合があることを行うことができますか?