b[1][1] = 1.0; b[n+1][n+1] = 1.0;
for(i=2; i<=n; i++) {
b[i][i-1] = 1.0;
b[i][i] = -p;
b[i][i+1] = 1.0;

これの意味って、行列bの、b(1,1)と、b(n+1,n+1)には1を代入して、
b(i,i-1) に 1.0、 b(i,i)に -p、 b(i,i+1) に 1.0 を代入するってことですよね?
指定されてないところ(例えば、b(1,2)とか)には 0 が代入されるのでしょうか?
後、これはn+1 * n+1 のマトリクスですよね?

初心者質問ですみません。。。