[Maxima] "depends" problem of variables with subscripts

Richard Fateman fateman at cs.berkeley.edu
Mon Jul 9 12:07:48 CDT 2007


There are implementation barriers to doing depends(x[n],t), which is why it
is not done. Also assume..
Dependencies are stored on the property lists of symbols. X[n] is not a
symbol.
This could be overcome, but at what looks like a substantial run-time cost.
(To see if it REALLY matters, I suppose one would have to implement and time
it, for doing lots of derivatives).


 Since what you are essentially doing here is an input and output hack,
there is not a good reason for making the change to the internals, though
you are welcome to do so in your own copy --- it is open source, after all.


You can define  x[n,m]:= concat(subsup," " ,x," ",n," ",m);  This means that
x[3,4] is changed to "subsup x 3 4".

Then some display hack would be needed so that subsup x 3 4  would display
just like  x[3]^4 

This could be done by adding a clause to nformat to check for atoms of the
form you have in mind..

Here is most of what is needed

(defun subsuper(h)
  ;; convert an atom "$subsup x n m" into a triple, (x n m)
  ;; other atoms result in nil
  (setf h (symbol-name h))  
  (if (and (>(length h) 10)(string= (subseq h 0 8) "$subsup "))
      (let ((pos 9))
	(multiple-value-setq (name pos)
	  (read-from-string h nil nil :start pos))
	(multiple-value-setq (sub pos)
	  (read-from-string h nil nil :start pos))
	(multiple-value-setq (super pos)
	  (read-from-string h nil nil :start pos))
	(list name sub super))
    nil))	(list name sub super))
    nil))

There was some effort for "extensions" to nformat; I don't know if it was
put in, finally.
This could be fit in there.
RJf




> -----Original Message-----
> From: Evan [mailto:evanxxx at gmail.com] 
> Sent: Monday, July 09, 2007 8:54 AM
> To: fateman at cs.berkeley.edu
> Cc: maxima at math.utexas.edu
> Subject: Re: [Maxima] "depends" problem of variables with subscripts
> 
> On 7/9/07, Richard Fateman <fateman at cs.berkeley.edu> wrote:
> > Sure, do the whole computation with x_n_m  and before displaying it,
> > substitute x[n]^m.
> > Except if m=1, this will work,  but maybe do x[n]^"1"  or 
> some such thing.
> >
> 
> I don't think it's a good idea
> 
> usually I'd like to see the intermediate results frequently and decide
> what to do next, or "intermediate" results are also what I want.
> substitute frequently just for displaying would be distracting.
> 
> I browsed this mailinglist and noted "using 'depends' and 'assume' on
> arrays" post a few days ago, a similar issue is also raised there.
> 
> It seems that there are reasons for maxima to support
> "depends(x[n],t)" and other such statements. wondering whether it will
> be implemented in the (near?) future.
> 


More information about the Maxima mailing list