Re: Using manipulate with user entered variables and functions
- To: undisclosed-recipients:;
- Subject: [mg131336] Re: Using manipulate with user entered variables and functions
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Sat, 29 Jun 2013 04:56:31 -0400 (EDT)
- Approved: Steven M. Christensen <steve@smc.vnet.net>, Moderator
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- Newsgroups: comp.soft-sys.math.mathematica
- References: <20130523080537.2A5356A0D@smc.vnet.net>
Manipulate[
Module[
{var = Union[Cases[f,
_Symbol?(! NumericQ[#] &), Infinity]]},
Grid[
{HoldForm[D[Style["f", Italic], #] //
TraditionalForm] & /@ var,
(D[f, #] // Simplify //
TraditionalForm) & /@ var},
BaseStyle ->
{FontFamily -> "Times", Large},
Background -> Yellow, Frame -> All,
FrameStyle -> {Blue, Thickness[2]}]],
{{f, 4 x y^3 + x y,
Style["f", Italic, FontFamily -> "Times", Medium]},
(# -> Style[TraditionalForm[#], Large,
FontFamily -> "Times"]) & /@
{4 x y^3 + x y, -3 x + x^2 - 6},
ControlType -> PopupMenu}]
Bob Hanlon
On Fri, Jun 28, 2013 at 8:21 AM, sigismond kmiecik <
sigismond.kmiecik at wanadoo.fr> wrote:
> Bob,
>
> I tried to modify the answer you gave in order to have all the expressions
> displayed in traditional form (in the popup menu and the evaluated output)
> without success apart for the symbol for differentiation.
>
> My updated notebook:
>
>
> Manipulate[
> Module[{var = Union[Cases[f, _Symbol?(! NumericQ[#] &), Infinity]]},
> Grid[{HoldForm[D["f", #] // TraditionalForm] & /@ var,
> Simplify[Map [D[f, #] &, var]]},
> BaseStyle -> {Bold, FontFamily -> "Times", Large},
> Background -> Yellow, Frame -> All,
> FrameStyle -> {Blue, Thickness[4]}]], {f, {4 x y^3 + x y,
> TraditionalForm[-3 x + x^2 - 6]} , ControlType -> PopupMenu,
> Background -> LightRed }]
>
> The second expression of "f" is displayed as I want in the popup menu but
> it generates an odd output.
> What is wrong and how can I apply to the popup menu the Basestyle option
> I added to the Grid definition?
>
> Thanks
>
> Sigismond Kmiecik
>
>
> Le 12/06/2013 11:27, Bob Hanlon a =E9crit :
>
>> Manipulate[
>> Module[{
>> var = Union[
>> Cases[f, _Symbol?(! NumericQ[#] &),
>> Infinity]]},
>> Grid[{HoldForm[D["f", #]] & /@ var,
>> Simplify[D[f, #] & /@ var]},
>> Frame -> All,
>> FrameStyle -> {LightGray, Thin}]],
>> {f, {
>> x (x^2 + y^3),
>> x*Sqrt[x^2 + y^2 + z^2],
>> Sin[(x^2 - t)]/(x (y^2 + z^2))},
>> ControlType -> PopupMenu}]
>>
>>
>>
>> Bob Hanlon
>>
>>
>>
>>
>> On Thu, May 23, 2013 at 4:05 AM, <nmueggen at gmail.com> wrote:
>>
>> I am trying to create a program through which a user can enter a number
>>> of
>>> variable names and a function of those variables. The program then
>>> performs calculations based on derivatives of the function with respect
>>> to
>>> the entered variables. Eventually this will become a tool for error
>>> propagation in an undergraduate physics lab.
>>>
>>> The following simple program allows a user to enter two variables and a
>>> function of those variables. It then calculates the partial derivatives
>>> of
>>> the function with respect to each of the variables.
>>>
>>> Manipulate[{D[f, var[1]], D[f, var[2]]}, {var[1], x}, {var[2], y}, {f,
>>> x^2 + y^3}]
>>>
>>>
>>> I would like to extend this program to allow for an adjustable number of
>>> variables. I'm imagining using nested manipulate commands to allow the
>>> number of variables to be user controlled. To do this I also need the
>>> program to be able to adjust how many derivatives are being calculated.
>>> I
>>> tried to
>>> replace the list of derivative commands with a table:
>>>
>>> Manipulate[
>>> Table[D[f, var[i]], {i, 1, 2}], {var[1], x}, {var[2], y}, {f,
>>> x^2 + y^3}]
>>>
>>> This does not work. I suspect that the Table command somehow causes it
>>> to
>>> calculate the derivatives before the function and/or variables are
>>> defined
>>> based on the manipulate controls. How do I control this order of
>>> evaluation?
>>>
>>> Thank you,
>>>
>>> Nathan
>>>
>>>
>>>
>
> --
> Sigismond Kmiecik
>
>