Mathematica [Mathematica] Trouble understanding subscripted variables

Click For Summary
The discussion revolves around the challenges of managing subscripted variables in Mathematica, particularly how to remove assigned values without affecting other variables. Users encounter errors when trying to clear or remove subscripted variables directly, as commands like Clear[a_1] do not recognize subscripted names. The suggested solution involves using the UNSET function, represented by the shortcut " =.", which effectively removes the value assigned to a subscripted variable. Additionally, incorporating Quiet can prevent unwanted output when unsetting variables. Overall, the conversation highlights the complexities of using subscripted variables in Mathematica and offers practical solutions for managing them.
jackmell
Messages
1,806
Reaction score
54
Hi,

I don't understand how to remove the values for these subscripted variables once I have assigned a number to them. If I try to remove the value from a_1 below, I get an error message:

Code:
Remove[a]
Subscript[a, 1] = 1; 
myf = z^3 + z*w^2
myf /. z -> Subscript[a, 1]
myf /. z -> Subscript[a, 2]
Clear[Subscript[a, 1]]

So substituting a_1 and a_2 into myf does what it's suppose to do. In the first case, the value of a_1 is substituted into myf and in the second, the variable name a_2 is substituted. Now, suppose I want to remove the value from a_1 so that when I next try to substitute into myf, the variable name a_1 is used and not the value of a_1. If I try to use Clear[a_1] or Remove[a_1] it tells me that's not a variable name and if I use Remove[a], then all the values of a are removed including the ones I want to keep.

Thanks guys,
Jack
 
Physics news on Phys.org
In[1]:= Subscript[a,1]=1; p*q+p/.p->Subscript[a,1]
Out[2]= 1+q

In[3]:= Subscript[a,1]=.; p*q+p/.p->Subscript[a,1]
Out[4]= \!\(a\_1 + q\ a\_1\)

Personal opinion: Trying to use subscripts is probably going to cause you more grief than it is worth. Your post is just the first example you will run into. The darker and darker the corners of Mathematica you start poking into the more you will find. I hope it works out for you.
 
Wow, I love learning something new. The function you're looking for, and is used above, is UNSET.

The shortcut for it is, as above, " =. "
 
Ok. I think I should use

Quiet[a_n=.];

That way, with the Quiet and the semicolon, no output is generated if the variable name already has been unset.

Wow! I am already saving so much time now with just this little change to my code. You guys are tops. You too Bill. :)
 
Last edited:

Similar threads

  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
10
Views
3K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K
Replies
21
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K