MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: 4th order DE, NDSolve no solution, why?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg15694] Re: [mg15686] 4th order DE, NDSolve no solution, why?
  • From: Jurgen Tischer <jtischer at col2.telecom.com.co>
  • Date: Mon, 1 Feb 1999 14:54:14 -0500 (EST)
  • Organization: Universidad del Valle
  • References: <199901310806.DAA14387@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Doug,
first of all I recommend you read the examples of NDSolve in Help. There
you will find comments about this chasing method. Next you should
realize that your problem is that you are dealing with a boundary value
problem, and this in principle has nothing to do with Method->
RungeKutta and so on. Last I recommend you just write your own code for
solving your problem, along the following lines: You rewrite your
problem as a initial value problem with a parameter (the initial value
you don't know). Then your boundary value at the endpoint becomes a
function of the parameter, and you solve for the parameter using
FindRoot. In a concrete case this shouldn't be very difficult, and as
an illustration I add the example I have for my students.

Shooting

We want to solve the following (generalized) boundary value problem:

{y'''[t] - t y'[t] + 2 y[t] == -10 + t, y[-1] == 3, y'[2] == 4, y[4] ==
3}

where -1 <= x <= 4

Proceed as follows: (I skipped the text in spain, but it should be
obvious what I'm doing here.)

In[1]:= f1[a_, b_] := NDSolve[{y'''[t] - t*y'[t] + 2*y[t] == -10 + t,
y[-1] == 3, y'[-1] == a, y''[-1] == b}, y, {t, -1, 4}]

In[2]:= f2[a_, b_] := With[{f = First[y /. f1[a, b]]}, {f'[2], f[4]}]

In[3]:= sol=FindRoot[f2[a,b]=={4,3},{a,{0,1}},{b,{0,1}}]

Check the solution graphically

In[4]:= Plot[Evaluate[y[t]/.f1[a/.sol,b/.sol]],{t,-1,4}]


Jurgen

Doug Webb wrote:
> 
> Hello,
>   I'm trying to solve a 4th order diferential equation with NDSolve, and
> I get the following error, anyone know why? The equation is that for
> buckling of a column:
> 
> GoverningEqn = modulus*inertia*w''''[x] + P[x]*w''[x] == 0
> 
> with lower order equations to support it like so:
> 
> Theta[x_] := -w'[x]
> M[x_] := -modulus*inertia*w''[x]
> V[x_] := -P[x]*w'[x] - modulus*inertia*w'''[x]
> 
> where w[x] is the deflection, Theta[x] is the rotation, M[x] is the
> moment, and V[x] is the shear. I define the applied load P[x] as a
> simple constant in this case:
> 
> P[x_] := 1
> 
> modulus and inertia are also defined as constants for this first simple
> case:
> 
> inertia = 5
> modulus = 100
> 
> and make for simplicity this time, a column that is Pi units long: L =
> Pi
> 
> Now, using the boundary conditions for a pinned-pinned column of w[0] =
> w[L] = M[0] = M[L] = 0, I try to solve using the following command:
> 
> soln = NDSolve[ {GoverningEqn, w[0] == 0, w[L] == 0, M[0] == 0, M[L] ==
> 0},
>     w, {x, 0, L} ]
> 
> I get the following errors:
> 
> NDSolve::"unsol":
>     "Not possible to initiate boundary value problem with the chasing
> method"
> NDSolve::"unsol":
>     "Not possible to initiate boundary value problem with the chasing
> method"
> 
> Why? What other method can I use? Everything I try with
> Method->"something" gives the same result, Runge-Kutta, Gear, etc.
> Anyone have any idea why I can't get a solution? DSolve runs, but
> returns an empty rule for the solution: {}
> 
> Please, anyone that knows what I'm doing wrong, let me know. Thanks!
> 
>         Doug
>         D_Webb at prodigy.net



  • Prev by Date: Re: conditional pattern question
  • Next by Date: Finding real part (newbie question)
  • Previous by thread: Re: 4th order DE, NDSolve no solution, why?
  • Next by thread: Re: 4th order DE, NDSolve no solution, why?