Re: Could some one please help
- To: mathgroup at smc.vnet.net
- Subject: [mg99945] Re: [mg99924] Could some one please help
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Wed, 20 May 2009 04:56:40 -0400 (EDT)
- References: <200905191046.GAA06635@smc.vnet.net>
gtw wrote: > I am new in numerical. The following is > to try to solve D[u[x,y],x,x]+D[u[x,y],y,y]=1-u[x,y] > The line eqns=... is wrong (I think) > Could someone tell me how to fix? > Besides, how to put Neumann boundary condition > Thanks > > num = 80; hStep = N[1/(num + 1)]; > vars = Table[u[i, j], {i, num}, {j, num}]; > Short[vars, 3] > kern = {{0, 1, 0}, {1, -4, 1}, {0, 1, 0}}/hStep^2; > lap = ListCorrelate[kern, vars, {2, 2}, 0]; > (* equation for solution on grid*)Short[ > eqns = Thread[Map[Flatten, lap == 1 - u[i, j]]], 20] > {vec, mat} = CoefficientArrays[eqns, Flatten[vars]] > sol = LinearSolve[mat, -vec]; > sol = Partition[sol, num]; > ListContourPlot[sol] > ListPlot3D[sol] The variant below should set up the equations correctly. (*equation for solution on grid*) eqns = Flatten[ MapThread[Equal, {lap, Table[1 - u[i, j], {i, num}, {j, num}]}, 2]]; Also, I suspect you want: kern = {{0, 1, 0}, {1, -4, 1}, {0, 1, 0}}*hStep^2; (Note use of multiplication instead of division.) To attain Neumann or other boundary conditions you would need to remove the boundary equations from the set above. Then replace them with suitable approximations to the boundary conditions you wish to impose. But you need not actually remove anything because you can simply set up so that your lap only considers the inside rectangle. Example: lap = ListCorrelate[kern, vars]; bdy = Join[Table[u[1, j] == j, {j, num}], Table[u[num, j] == j^2, {j, num}], Table[u[j, 1] == Sin[j], {j, 2, num - 1}], Table[u[j, num] == j^3, {j, 2, num - 1}]]; eqns = Join[ Flatten[MapThread[ Equal, {lap, Table[1 - u[i, j], {i, 2, num - 1}, {j, 2, num - 1}]}, 2]], bdy]; Of course one could instead use derivative approximations via finite differences for the boundary, or mix linear combinations of boundary values plus boundary derivative values. Daniel Lichtblau Wolfram Research
- References:
- Could some one please help
- From: gtw <graceneetw@google.com>
- Could some one please help