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