0

次の質問があります。行列のサイズが NxN であることを知っている特定の値を持つ行列を作成する方法です。

これが私の質問です

私は次のコードを試しています:

  a = (1+2*Du*dt/dx^2);  
  b = -Du*dt/dx^2;        
  main = a*sparse(ones(Nx,1));
  off  = b*sparse(ones(Nx-1,1));
  Bu = diag(main) + diag(off,1) + diag(off,-1);

しかし、ご覧のとおり、(1,1) と (N,N) には必要な値がありません。この特定の行列を作成するにはどうすればよいでしょうか? MATLAB でこれを行うコードはどのようになりますか?

4

1 に答える 1

0

spdiags行く方法です、

A = sparse(Nx);
A = spdiags(b*ones(Nx-1,1), -1, A);
A = spdiags(a*ones(Nx,1), 0, A);
A = spdiags(b*ones(Nx-1,1), 1, A);
A(1, 1:2) = [1,1];
A(N, N-1:N) = [1,1];
于 2016-04-26T02:26:51.087 に答える