Skip to main content
Commonmark migration
Source Link

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num, f[num]}], {num, 3}] 

Running the above code yields an output {3, x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate expression (where end conditions are manipulated by the controls). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful.

###Update

Update

It appears that the problem is, in fact, with variable typing as shown below:

temp = {x^2, Sin[x]}; (*Just a random list with functions inside*) f = Function[x, Evaluate[temp[[1]]]]; f[3] Manipulate[ Module[{temp, f}, temp = {x^2, Sin[x]}; f = Function[x, Evaluate[temp[[1]]]]; {Head[temp], Head[f], Head[f[num]], Head[f[3]]}], {num, 5}] {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate expression evaluate to Power whereas the Head[f[3]] outside evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer. Any thoughts?

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num, f[num]}], {num, 3}] 

Running the above code yields an output {3, x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate expression (where end conditions are manipulated by the controls). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful.

###Update

It appears that the problem is, in fact, with variable typing as shown below:

temp = {x^2, Sin[x]}; (*Just a random list with functions inside*) f = Function[x, Evaluate[temp[[1]]]]; f[3] Manipulate[ Module[{temp, f}, temp = {x^2, Sin[x]}; f = Function[x, Evaluate[temp[[1]]]]; {Head[temp], Head[f], Head[f[num]], Head[f[3]]}], {num, 5}] {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate expression evaluate to Power whereas the Head[f[3]] outside evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer. Any thoughts?

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num, f[num]}], {num, 3}] 

Running the above code yields an output {3, x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate expression (where end conditions are manipulated by the controls). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful.

Update

It appears that the problem is, in fact, with variable typing as shown below:

temp = {x^2, Sin[x]}; (*Just a random list with functions inside*) f = Function[x, Evaluate[temp[[1]]]]; f[3] Manipulate[ Module[{temp, f}, temp = {x^2, Sin[x]}; f = Function[x, Evaluate[temp[[1]]]]; {Head[temp], Head[f], Head[f[num]], Head[f[3]]}], {num, 5}] {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate expression evaluate to Power whereas the Head[f[3]] outside evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer. Any thoughts?

Tweeted twitter.com/StackMma/status/976238601481740288
Improved formatting
Source Link
m_goldberg
  • 108.6k
  • 16
  • 107
  • 263

Variable Type Confusion (perhaps)scoping confusion

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

 temp = {x^2,Sin[x]}; (* Just a random list with functions inside *)  f = Function[x,Evaluate[temp[[1]]]];  f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

 Manipulate[   Module[{temp,f},   temp = {x^2,Sin[x]};   f = Function[x,Evaluate[temp[[1]]]];   {num, f[num]}],   ],{num, 3} ] 

Running the above code yields an output {3,x^2}{3, x^2} and it doesn't change for any numnum. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate function Manipulate expression (endwhere end conditions are the variables ofmanipulated by the Manipulate functioncontrols). Using DSolveUsing DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful; thanks!helpful.

UPDATE: It###Update

It appears that the problem is, in fact, with variable typing as shown below:

 temp = {x^2, Sin[x]}; (*Just a random list with functions inside*)  f = Function[x, Evaluate[temp[[1]]]];  f[3]  Manipulate[  Manipulate[Module[Module[{temp, f},  temp = {x^2, Sin[x]};   f = Function[x, Evaluate[temp[[1]]]];   {Head[temp], Head[f], Head[f[num]], Head[f[3]]}],  {num, 5}]  {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]]Head[f[num]] and Head[f[3]]Head[f[3]] within the ManipulateManipulate expression evaluate to PowerPower whereas the Head[f[3]]Head[f[3]] outside the Manipulate evaluates to Integer Integer (as expected). Using IntegerPart[]Using IntegerPart[] however still doesn't yield an appropriate answer, any. Any thoughts?

Variable Type Confusion (perhaps)

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

 temp = {x^2,Sin[x]}; (* Just a random list with functions inside *)  f = Function[x,Evaluate[temp[[1]]]];  f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

 Manipulate[   Module[{temp,f},   temp = {x^2,Sin[x]};   f = Function[x,Evaluate[temp[[1]]]];   {num,f[num]}   ],{num,3} ] 

Running the above code yields an output {3,x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate function (end conditions are the variables of the Manipulate function). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful; thanks!

UPDATE: It appears that the problem is, in fact, with variable typing as shown below:

 temp = {x^2, Sin[x]}; (*Just a random list with functions inside*)  f = Function[x, Evaluate[temp[[1]]]];  f[3]   Manipulate[Module[{temp, f}, temp = {x^2, Sin[x]};   f = Function[x, Evaluate[temp[[1]]]];   {Head[temp], Head[f], Head[f[num]], Head[f[3]]}], {num, 5}]  {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate evaluate to Power whereas the Head[f[3]] outside the Manipulate evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer, any thoughts?

Variable scoping confusion

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num, f[num]}], {num, 3}] 

Running the above code yields an output {3, x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate expression (where end conditions are manipulated by the controls). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful.

###Update

It appears that the problem is, in fact, with variable typing as shown below:

temp = {x^2, Sin[x]}; (*Just a random list with functions inside*) f = Function[x, Evaluate[temp[[1]]]]; f[3] Manipulate[  Module[{temp, f},  temp = {x^2, Sin[x]}; f = Function[x, Evaluate[temp[[1]]]]; {Head[temp], Head[f], Head[f[num]], Head[f[3]]}],  {num, 5}] {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate expression evaluate to Power whereas the Head[f[3]] outside evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer. Any thoughts?

Everything after the Update
Source Link

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

 temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

 Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num,f[num]} ],{num,3} ] 

Running the above code yields an output {3,x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate function (end conditions are the variables of the Manipulate function). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful; thanks!

UPDATE: It appears that the problem is, in fact, with variable typing as shown below:

 temp = {x^2, Sin[x]}; (*Just a random list with functions inside*) f = Function[x, Evaluate[temp[[1]]]]; f[3] Manipulate[Module[{temp, f}, temp = {x^2, Sin[x]}; f = Function[x, Evaluate[temp[[1]]]]; {Head[temp], Head[f], Head[f[num]], Head[f[3]]}], {num, 5}] {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate evaluate to Power whereas the Head[f[3]] outside the Manipulate evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer, any thoughts?

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

 temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

 Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num,f[num]} ],{num,3} ] 

Running the above code yields an output {3,x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate function (end conditions are the variables of the Manipulate function). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful; thanks!

Forgive me if this question has been asked prior (I wouldn't even know where to start looking for an answer to this problem to be honest). I know the following code in Mathematica works:

 temp = {x^2,Sin[x]}; (* Just a random list with functions inside *) f = Function[x,Evaluate[temp[[1]]]]; f[3] 

The code would output the appropriate 9 as required. However, the problem occurs when I try to use a similar logic within a Manipulate function as shown below:

 Manipulate[ Module[{temp,f}, temp = {x^2,Sin[x]}; f = Function[x,Evaluate[temp[[1]]]]; {num,f[num]} ],{num,3} ] 

Running the above code yields an output {3,x^2} and it doesn't change for any num. Any suggestions would be exceedingly helpful. For context as to why I'm doing this, I'm solving a differential equation within the Manipulate function (end conditions are the variables of the Manipulate function). Using DSolve outputs the required functions in a list and I would simply like to graph them and their derivatives. If you know a better method of doing that, that would also be helpful; thanks!

UPDATE: It appears that the problem is, in fact, with variable typing as shown below:

 temp = {x^2, Sin[x]}; (*Just a random list with functions inside*) f = Function[x, Evaluate[temp[[1]]]]; f[3] Manipulate[Module[{temp, f}, temp = {x^2, Sin[x]}; f = Function[x, Evaluate[temp[[1]]]]; {Head[temp], Head[f], Head[f[num]], Head[f[3]]}], {num, 5}] {Head[temp], Head[f], Head[f[3]]} 

Note that the Head[f[num]] and Head[f[3]] within the Manipulate evaluate to Power whereas the Head[f[3]] outside the Manipulate evaluates to Integer (as expected). Using IntegerPart[] however still doesn't yield an appropriate answer, any thoughts?

Source Link
Loading