NDSolve problem - solution does not satisfy boundary conditions
- To: mathgroup at smc.vnet.net
- Subject: [mg41054] NDSolve problem - solution does not satisfy boundary conditions
- From: "Martin Manscher" <please.respond at in.newsgroup>
- Date: Wed, 30 Apr 2003 04:23:48 -0400 (EDT)
- Organization: UNI-C
- Sender: owner-wri-mathgroup at wolfram.com
I am trying to solve a nonlinear initial value problem numerically using NDSolve from Mathematica 3.0. The differential equation contains fourth-order space derivatives and first-order time derivatives. The function evolving is a function of one space coordinate and time; b(z,t). The I specify an initial value b(z,0) and boundary conditions b(0,t) and b(L/2,t), which are consistent. I know that there is a solution, since this is merely a first step to test the method used in a paper I have read. In the paper, the solution evolved essentially to the effect of increasing the initial disturbance 0.5*Cos[2*Pi*z/L] smoothly in about 6 time units. The boundary values are supposed to kee the solution periodic. However, the solution produced by NDSolve does not satisfy the boundary condition Derivative[1, 0][b][0, t] == 0, but develops a finite slope almost immediately. I have tried all sorts of remedies, such as forcing Gear's method, increasing WorkingPrecision, DifferenceOrder, MaxSteps, StartingStepSize etc. etc. Does anyone have any ideas? Am I doing something wrong? The basic form of the notebook is this: In[1]:= L = 2^(3/2)*Pi; In[2]:= R[z_] := 1 In[3]:= h0[z_] := 0.14*(1 + 0.5*Cos[2*Pi*z/L]) In[4]:= solution = b /. First[NDSolve[{Derivative[0, 1][b][z, t] == 1/b[z, t]*D[D[1/b[z, t] - Derivative[2, 0][b][z, t], z]*R[z]*(R[z] - b[z, t])^3, z], Derivative[1, 0][b][0, t] == 0, Derivative[3, 0][b][0, t] == 0, Derivative[1, 0][b][L/2, t] == 0, b[L/2, t] == 0.93, b[z, 0] == R[z] - h0[z]}, b, {z, 0, L/2}, {t, 0, 10}]] NDSolve::mxst: Maximum number of 1000 steps reached at the point t == 7.32221572788003616`. NDSolve::eerr: Warning: Estimated spatial error at t = 7.32221572788003616` is much greater than prescribed error tolerance. Grid spacing 0.341760226012182055` which was based on the initial conditions may be too large. A singularity may have formed or you may want to specify a smaller grid spacing using the StartingStepSize option. Out[4]= InterpolatingFunction[{{0,4.44288},{0.,7.32222}},<>] (I apologize for not specifying my e-mail address, but I have had spam problems in the past)