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: [mg127513] Re: Manipulate a Plot of Evaluate DSolve
  • From: John Fultz <jfultz at wolfram.com>
  • Date: Mon, 30 Jul 2012 22:15:57 -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>

Your input wasn't working even without the Manipulate.  Always best to test (and, if necessary) debug things outside of a Manipulate, if for no other reason than to simplify the problem you're trying to debug.

In this case, your input is a mess of redundancies.  I'm not really sure how you arrived at the extra list braces and the redundant rule for y.  But here's what you wanted:

func[coef_] = 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}]

In summary, the Evaluate in your example didn't trigger because it wasn't the head of Plot's first argument.  But beyond that, nothing would have plotted anyway because of the many nested lists and the confusion over the extra unnecessary rule replacement in your function definition.

Sincerely,

John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.

On Jul 29, 2012, at 2: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: Re: Mathematica as a New Approach to Teaching Maths
  • Next by Date: Re: why is imagelines performance so bad?
  • Previous by thread: Re: Manipulate a Plot of Evaluate DSolve
  • Next by thread: Re: Manipulate a Plot of Evaluate DSolve