DSolve, Generalised Functions and Boundary Conditions
- To: mathgroup at smc.vnet.net
- Subject: [mg28067] DSolve, Generalised Functions and Boundary Conditions
- From: Hugh Goyder <goyder at rmcs.cranfield.ac.uk>
- Date: Fri, 30 Mar 2001 04:12:20 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Dear Mathgroup, If you have a differential equation that is a more complicated version of y'[x] == F1 DiracDelta[x-a1] +F2 DiracDelta[x-a2]+F3 DiracDelta'[x-a3] (two point sources and a dipole) where a1 < a2 < a3, how do you put in an (internal) boundary condition? I would like to put in a boundary condition like y[a2-e] ==0 where e is a small distance (e (epsilon) is negligible compared to a2-a1 but large compared to the width of the delta function). I think there are two strategies. 1. Do not put in a boundary condition and then fix-up the constant provided by DSolve to give the required solution. 2. Put in a boundary condition such as y[a2-e] ==0 so that you have a good leaver to quickly give the solution. Strategy 1 leads to the same problem of identifying the point just before the Generalised Function and then there is some hard work to solve for the constant. Strategy 2 works well if the solution just has step functions and the use of FunctionExpand with assumptions gives the correct solution in one step. Thus, In[16]:= {sol} =DSolve[{y'[x] == F1 DiracDelta[x-a1]+F2 DiracDelta[x-a2] + F3 DiracDelta[x-a3], y[a2-e]\[Equal]0},y[x],x] Out[16]= {{y[x]\[Rule]-F1 UnitStep[-a1+a2-e]-F3 UnitStep[a2-a3-e]-F2 UnitStep[-e]+ F1 UnitStep[-a1+x]+F2 UnitStep[-a2+x]+F3 UnitStep[-a3+x]}} In[17]:= FunctionExpand[sol,{a1<a2<a3,e>0}]/.e\[Rule]0 Out[17]= {y[x]\[Rule]-F1 UnitStep[-a1+a2]+F1 UnitStep[-a1+x]+F2 UnitStep[-a2+x]+ F3 UnitStep[-a3+x]} However, if there are delta functions in the solution we are in trouble because Function Expand does not sort these out. For example In[25]:= FunctionExpand[{UnitStep[a1-e -a2],DiracDelta[a1-e-a2]},{a1<a2<a3,e>0}] Out[25]= {0,DiracDelta[a1-a2-e]} Even being more specific does not help In[28]:= FunctionExpand[{UnitStep[a1-e -a2],DiracDelta[a1-e-a2]},{a1<a2<a3,e>0, a1-e-a2 \[NotEqual] 0}] Out[28]= {0,DiracDelta[a1-a2-e]} {Correct, Should be zero as argument is clearly not zero} Is there a way forward in Unprotecting DiracDelta and defining rules it must obey if it sees the special parameter e? I have tried this but have not managed to make enough rules so that it will work in general cases. Furthermore, will the rules I make get exercised with FunctionExpand? Thanks in advance for any comments for implementing boundary conditions in these circumstances. Dr Hugh Goyder Cranfield University at the Royal Military College of Science Shrivenham Fax: ++44 (0) 1793 783192 Tel: ++44 (0) 1793 785122 hugh.goyder at rmcs.cranfield.ac.uk