Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Manipulate a Plot of Evaluate DSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127531] Re: Manipulate a Plot of Evaluate DSolve
  • From: Bob Hanlon <hanlonr357 at gmail.com>
  • Date: Wed, 1 Aug 2012 04:59:11 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <20120729070521.C7CB3684D@smc.vnet.net>

Not sure what happened. Try this

Clear[func]

func[coef_?NumericQ, c_?NumericQ] :=
 (y[t] /. NDSolve[
     {y'[t] == Cos[coef*t], y[0] == c},
     y, {t, -10, 10}][[1]])

Manipulate[
 Plot[
  Evaluate[
   Table[
    func[coef, c] /. t -> x,
    {c, 5}]],
  {x, -10, 10},
  PlotRange -> {-5, 10}],
 {{coef, 1}, 0.1, 5, 0.01,
  Appearance -> "Labeled"}]


Bob Hanlon


On Mon, Jul 30, 2012 at 9:17 PM, Juan Barandiaran
<barandiaran.juan at gmail.com> wrote:
> Thanks Bob,
>
> Yes, I could use NDSolve instead of DSolve, in my case I'm only getting
> numerical outputs, so it should do the job.
>
> But in the example that you send me, why is nothing plotted?
>
> Thanks again and best regards,
>
> Juan
>
>
> 2012/7/30 Bob Hanlon <hanlonr357 at gmail.com>
>>
>> If DSolve cannot solve the equations then use NDSolve.
>>
>> func[coef_?NumericQ, c_?NumericQ, x_?NumericQ] :=
>>  y[t] /. NDSolve[{y'[t] == Cos[coef*t], y[0] == c},
>>      y[t], {t, -10, 10}][[1]] /. t -> x
>>
>> Manipulate[Plot[
>>   Evaluate[func[coef, c, x] /. c -> Range[5]],
>>   {x, -10, 10},
>>   PlotRange -> {-5, 10}],
>>  {{coef, 1}, 0.1, 5, 0.01,
>>   Appearance -> "Labeled"}]
>>
>>
>> Bob Hanlon
>>
>>
>> On Sun, Jul 29, 2012 at 6:12 PM, Juan Barandiaran
>> <barandiaran.juan at gmail.com> wrote:
>> > Thanks for your answer Bob,
>> > Of course your solution works, but I still don't understand why mine
>> > doesn't
>> > and I cannot use your proposed approach because the way you write the
>> > problem it is easy for Mathematica to solve the DSolve.
>> > And this is just a simple example, in my real problem the DSolve cannot
>> > be
>> > solved analytically.
>> > This is why I tried to express the function as:
>> >
>> > {{y -> Function[{x}, DSolve[y'[x] == Cos[coef *x], y, x]]}}
>> >
>> > , which is something like the output I get from my DSolve.
>> >
>> > Thanks for your help.
>> >
>> > Juan
>> >
>> >
>> > 2012/7/29 Bob Hanlon <hanlonr357 at gmail.com>
>> >>
>> >> Clear[func];
>> >>
>> >> func[coef_, c_, x_] =
>> >>  y[x] /. DSolve[{y'[x] == Cos[coef*x], y[0] == c}, y[x], x][[1]] //
>> >>   Simplify
>> >>
>> >> c + Sin[coef*x]/coef
>> >>
>> >>
>> >> Manipulate[Plot[Evaluate[
>> >>    func[coef, c, x] /.
>> >>     c -> Range[5]],
>> >>   {x, -10, 10},
>> >>   PlotRange -> {-5, 10}],
>> >>  {{coef, 1}, 0.1, 5, 0.01,
>> >>   Appearance -> "Labeled"}]
>> >>
>> >>
>> >> Bob Hanlon
>> >>
>> >>
>> >> On Sun, Jul 29, 2012 at 3:05 AM,  <barandiaran.juan at gmail.com> wrote:
>> >> > Hi,
>> >> >
>> >> > I'm trying to Manipulate a Plot of a quite difficult function which
>> >> > involves solving a differential equation, but cannot be solved
>> >> > analytically.
>> >> >
>> >> > To try to simplify the example and simulate it, let's assume that we
>> >> > have the following function:
>> >> >
>> >> > func[coef_] = {{y -> Function[{x}, DSolve[y'[x] == Cos[coef *x], y,
>> >> > x]]}}
>> >> >
>> >> > Manipulate[Plot[{{Evaluate[y[x] /. func[coef] /. C[1] -> {Range[-5,
>> >> > 0]}]}}, {x, -10, 10}], {{coef , 1}, 0.1, 5}]
>> >> >
>> >> > I get an error: DSolve::dsvar: "-9.99959 cannot be used as a
>> >> > variable"
>> >> >
>> >> > I think that this is because Manipulate assigns a value to x (=
>> >> > -9.99959) BEFORE solving the DSolve, even though to avoid it I'm
>> >> > using the
>> >> > Evaluate function, which should process the function before assigning
>> >> > a
>> >> > value to x.
>> >> >
>> >> > But the thing is that the "coef" to be Manipulated is at the same
>> >> > "level" as the x in the Manipulate block, so probably if I need the
>> >> > coef to
>> >> > solve the DSolve, I also have the x that gives me an error.
>> >> >
>> >> > Is there any workaround? I guess I'm not understanding properly how
>> >> > Mathematica processes these simple expressions.
>> >> >
>> >> > Thanks, Juan
>> >> >
>> >
>> >
>
>



  • Prev by Date: Data Format
  • Next by Date: Re: How do I create a circular lamina?
  • Previous by thread: Re: Manipulate a Plot of Evaluate DSolve
  • Next by thread: Why no Import command?