- #1
brando623
- 3
- 0
I have this mathematica code to solve a variation of the 2 Dimensional Poisson's equation using the finite difference method.
xo = .5; yo = .5; \[Sigma] = .05; q = 1;
Gen[x_, y_] := -q*E^-((((x - xo)^2) + ((y - yo)^2))/(2*\[Sigma]^2));
GridNum = 300; Hstep = N[1/(GridNum + 1)];
GridPts = Table[u[i, j], {i, GridNum}, {j, GridNum}];
FDeqn = {{0, 1, 0}, {1, -4, 1}, {0, 1, 0}}/Hstep^2;
MatFD = ListCorrelate[FDeqn, GridPts, {2, 2}, 0];
Short[HE2 =
Thread[Map[Flatten,
MatFD ==
Table[Gen[Hstep i, Hstep j], {i, GridNum}, {j, GridNum}]]], 10];
{row, col} = CoefficientArrays[HE2, Flatten[GridPts]];
sol2D = LinearSolve[col, row];
sol2D = Partition[sol2D, GridNum];
sol3D = LinearSolve[col, -row];
sol3D = Partition[sol3D, GridNum];
I would like some assistance in using this same exact method to solve the problem for the 1 dimensional and 3 dimensional case.
I tried to just delete each part dealing with one dimension (to do the one dimensional case) such that everything that had to deal with x and y just dealt with x. The Table was a 300x1 table etc. I tried to add in a dimension in the same fashion, but kept getting errors when I tried to do the ListCorrelate step saying that the kernel and the table didn't have the same tensor rank. Thank you in advance.
xo = .5; yo = .5; \[Sigma] = .05; q = 1;
Gen[x_, y_] := -q*E^-((((x - xo)^2) + ((y - yo)^2))/(2*\[Sigma]^2));
GridNum = 300; Hstep = N[1/(GridNum + 1)];
GridPts = Table[u[i, j], {i, GridNum}, {j, GridNum}];
FDeqn = {{0, 1, 0}, {1, -4, 1}, {0, 1, 0}}/Hstep^2;
MatFD = ListCorrelate[FDeqn, GridPts, {2, 2}, 0];
Short[HE2 =
Thread[Map[Flatten,
MatFD ==
Table[Gen[Hstep i, Hstep j], {i, GridNum}, {j, GridNum}]]], 10];
{row, col} = CoefficientArrays[HE2, Flatten[GridPts]];
sol2D = LinearSolve[col, row];
sol2D = Partition[sol2D, GridNum];
sol3D = LinearSolve[col, -row];
sol3D = Partition[sol3D, GridNum];
I would like some assistance in using this same exact method to solve the problem for the 1 dimensional and 3 dimensional case.
I tried to just delete each part dealing with one dimension (to do the one dimensional case) such that everything that had to deal with x and y just dealt with x. The Table was a 300x1 table etc. I tried to add in a dimension in the same fashion, but kept getting errors when I tried to do the ListCorrelate step saying that the kernel and the table didn't have the same tensor rank. Thank you in advance.