Mathematica solving differential equations
I would like to numerically find the solution to
u_t - u_xx - u_yy = f
on the square y ∈ [0,1], x ∈ [0,1]
where f=1 if in the unit circle and f=0 otherwise. The boundary conditions are u=0 on all f开发者_Python百科our edges.
I have been trying to use ND-solve for ages but I keep getting error messages. I'm new to Mathematica so I don't know how to define f before ND-Solve.
Thank you in advance.
The Mathematica help files are incredibly complete for stuff like this. I'm going to reference the online version, but note that, in the help browser in Mathematica, you can interactively modify and evaluate the help examples. This was the only way I learned much about Mathematica.
One point before you start trying more things: It's very easy to define a function, such as u or f when intending to make a comparison statement. A surefire, but somewhat lazy, way of fixing potential lingering problems from this is to quit the current kernel and then evaluate something again. Quitting the kernel loses all symbols you may have accidentally defined up to that point. (Starting up a new kernel is also why Mathematica churns a little bit the first time you do any operation, even if it's simple addition.)
Continuing on with the question at hand... In the reference I linked above, a sample is given which solves the one-dimensional heat equation which is very similar to your example. Let's start with that and modify it:
NDSolve[{D[u[t, x], t] == D[u[t, x], x, x], u[0, x] == Q0,
u[t, 0] == Sin[t], u[t, 5] == 0},
u, {t, 0, 10}, {x, 0, 5}]
Their equations are ∂ut = ∂uxx with boundary conditions of the initial energy being Q0 at time 0 ∀x, the energy at x = 0 being sin(t) and the energy at x = 5 being 0 ∀t. You can see above how those map hopefully. Now, let's try to the same for your terms:
NDSolve[{D[u[t, x, y], t] - D[u[t, x, y], x, x] - D[u[t, x, y], y, y] == f[x, y],
f[x,y] == If[x^2 + y^2 < 1, 1, 0],
u[t, 0, y] == 0, u[t, 1, y] == 0,
u[t, x, 0] == 0, u[t, y, 1] == 0 }
u, {x, 0, 1}, {y, 0, 1}]
I think that's about right. However, there's at least one problem here still, though. t is still a free variable. You didn't provide any equations to restrain it, so the system is underspecified.
精彩评论