Re: How to prevent Solve from DSolve?

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg976] Re: [mg888] How to prevent Solve from DSolve?
• From: Allan Hayes <hay at haystack.demon.co.uk>
• Date: Thu, 4 May 1995 06:04:34 -0400

```>From: "Richard Q. Chen" <chen at fractal.eng.yale.edu>
>Subject: [mg888] How to prevent Solve from DSolve?

>I find it very frustrating that Mma always tries
>to give explicit solutions to an ODE, even if the solutions are
>so complicated as to be useless.
>
>In[2]:= Needs["Calculus`DSolve`"]
>
>In[3]:= DSolve[2 y[x] + (x + y[x]) y'[x] == 0, y[x], x]
>
>In this particular case I had to use pencil and paper and I obtained
>the much simpler implicit solution
>
>	f(x,y) = y*(y+2x)^2 = C[1]
>
> This is the kind of solution I wanted.
>How can I prevent DSolve from using Solve to give complicated
>solution?

We can use Block as follows. Note that the effect is only inside
Block[...] and has no effect on Solve outside this.

In[1]:=
Needs["Calculus`DSolve`"]

In[2]:=
Block[{Solve = ss},
DSolve[2 y[x] + (x + y[x]) y'[x] == 0, y[x], x]
]
Out[2]=
2
ss[y[x] (3 x + y[x])  == C[1], y[x]]
In[3]:=
impsol = %[[1]]
Out[3]=
2
y[x] (3 x + y[x])  == C[1]

Caution: If Solve is used in DSolve then this technique might cause
problems (not what you got by hand).

Check the solution

In[4]:=
D[impsol,x]
Out[4]=
2
(3 x + y[x])  y'[x] + 2 y[x] (3 x + y[x]) (3 + y'[x]) == 0
In[5]:=
Simplify[%]
Out[5]=
3 (3 x + y[x]) (2 y[x] + x y'[x] + y[x] y'[x]) == 0

Investigate graphically

In[6]:=
<<Graphics`ImplicitPlot`

eqn = impsol/.y[x] ->y

Out[6]=
2
y (3 x + y)  == C[1]

Make some rules to give C[1] a selection of values.

In[7]:=

Out[7]=
{{C[1] -> -4}, {C[1] -> -3}, {C[1] -> -2}, {C[1] -> -1},
{C[1] -> 0}, {C[1] -> 1}, {C[1] -> 2}, {C[1] -> 3},
{C[1] -> 4}}

In[8]
ImplicitPlot[eqn/.cs, {x, -5, 5},{y, -5, 5},
PlotPoints -> 50, AxesStyle -> GrayLevel[.7]
];

This does not show the  line  y + 3x == 0.
That's because  (y+3x)^2  does not change sign when it crosses this line.

Allan Hayes
hay at haystack.demon.co.uk

```

• Prev by Date: Re: how can I do this functionally?
• Next by Date: Books
• Previous by thread: How to slow down plotting of curves?