# [Maxima] how do I get rk to do anything?

Dan Solomon Daniel.L.Solomon at nasa.gov
Thu Jan 25 15:50:59 CST 2007

```It is often convenient to express a linear vector ODE in matrix form,
dxdt = A.x, which works if A is a square matrix and x & dxdt are
column vectors.  But you know that.  Are you pointing out that the
tools in Maxima can deal with things either way?  That rk(dxdt, x,
init, [t,0,1,.1]) will work as long as dxdt, x, and init are all
column vectors or all row vectors?

On Jan 25, 2007, at 4:29 PM, sen1 at math.msu.edu wrote:

> What's the difference between using rows or columns?
>
> (%i5) x: [u,v,w];
> (%o5)                              [u, v, w]
> (%i6) transpose(x);
>                                      [ u ]
>                                      [   ]
> (%o6)                                [ v ]
>                                      [   ]
>                                      [ w ]
>
> -sen
>
>
> ----------------------------------------------------------------------
> -----
>  | Sheldon E. Newhouse            |    e-mail:
> sen1 at math.msu.edu           |
>  | Mathematics Department         |       				   |
>  | Michigan State University      | telephone:
> 517-355-9684                |
>  | E. Lansing, MI 48824-1027 USA  |       FAX:
> 517-432-1562                |
>
> ----------------------------------------------------------------------
> -----
>
> On Thu, 25 Jan 2007, Dan Solomon wrote:
>
>> that would make row vectors, instead of column vectors, right?  Which
>> should be OK for using rk, but perhaps not for other purposes, is why
>> I was doing matrix([x1], [x2], [x3]) - i understood the documentation
>> to mean matrix () needs its rows inside separate [ ].  I was trying
>> to make a 3 row by 1 column matrix, i.e., a column 3 vector.
>>
>> But anyway, don't you have to say x:matrix([x1,x2,x3]); rather than
>> just x:[x1,x2,x3]; ?
>>
>>
>> On Jan 25, 2007, at 3:35 PM, sen1 at math.msu.edu wrote:
>>
>>>
>>> On Thu, 25 Jan 2007, Dan Solomon wrote:
>>>
>>>> I really appreciate everyone's help, but I have two questions.
>>>> 1.  How can I learn the differences/relationships between lists,
>>>> arrays, and matrices?  I've read the documentation (a few
>>>> times), and
>>>> I never picked up the idea that if I define init[1], init[2], and
>>>> init
>>>> [3], maxima wouldn't realize that "init" meant the 3 vector.
>>>>
>>>> 2.  is there a way to define my vectors, dxdt, x, and init, so that
>>>> it will work to issue the command
>>>> rk(dxdt, x, init, [t,0,1,.1])
>>>
>>>
>>>
>>> x: [x1,x2,x3];
>>>
>>> dxdt: [x1*exp(-x2) - x2^(-3), x1 + x2, x1 + x3];
>>>
>>> init: [2.0, -1.1, 3.2];
>>>
>>> sol: rk(dxdt, x, init, [t,0,1,.1]);
>>>
>>>
>>>> Thanks again!
>>>> Dan
>>>> On Jan 25, 2007, at 10:46 AM, sen1 at math.msu.edu wrote:
>>>>
>>>>> My guess is that Dan wanted to write his system of DE's using
>>>>> matrix
>>>>> methods to simply express them.  So, his original right hand side
>>>>> is a
>>>>> vector function whose components are 1x1
>>>>> matrices of functions instead of functions.  So, all that was
>>>>> necessary to get it to work is to replace
>>>>>
>>>>> [dxdtau[1],dxdtau[2],dxdtau[3]]
>>>>>
>>>>> by
>>>>>
>>>>> [dxdtau[1][1],dxdtau[2][1],dxdtau[3][1]]
>>>>>
>>>>> Thus, instead of his right side of the DE looking like (using
>>>>> x,y,z
>>>>> instead of x[1],x[2],x[3] for easier writing)
>>>>>
>>>>> [[x^2 + y^2], [x - y], [z*y*z]], it should have looked like
>>>>>
>>>>> [x^2 + y^2, x - y, z*y*z]
>>>>>
>>>>> Hence, the simple fix above.  I think Jaime's manual and the
>>>>> examples
>>>>> are fine as written.  If one wants to use matrices of functions to
>>>>> define systems of equations, one just has to convert back to the
>>>>> standard thing maxima expects.  I don't know if it is worth
>>>>> rewriting
>>>>> the code to take care of this.  But, it might be worthwhile to
>>>>> put an
>>>>> example or two in the manual to show how to deal with this.
>>>>>
>>>>> -sen
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------
>>>>> --
>>>>> --
>>>>> -----
>>>>>   | Sheldon E. Newhouse            |    e-mail:
>>>>> sen1 at math.msu.edu           |
>>>>>   | Mathematics Department         |       				   |
>>>>>   | Michigan State University      | telephone:
>>>>> 517-355-9684                |
>>>>>   | E. Lansing, MI 48824-1027 USA  |       FAX:
>>>>> 517-432-1562                |
>>>>>
>>>>> ------------------------------------------------------------------
>>>>> --
>>>>> --
>>>>> -----
>>>>>
>>>>> On Thu, 25 Jan 2007, Robert Dodier wrote:
>>>>>
>>>>>> Dan, it looks like the basic problem is that Maxima treats lists
>>>>>> and
>>>>>> matrices in ways that are somewhat less than obvious.
>>>>>> I'll try to clarify some points.
>>>>>>
>>>>>> On 1/25/07, Jaime E. Villate <villate at fe.up.pt> wrote:
>>>>>>> On Thu, 2007-01-25 at 06:12 -0500, Dan Solomon wrote:
>>>>>>>> I don't understand your comment.  Don't I have x as a 3-vector?
>>>>>>>
>>>>>>> No, you don't. x[1], x[2], x[3] have no relation to the
>>>>>>> variable x.
>>>>>>> x and x[1] are considered different variables in Maxima.
>>>>>>
>>>>>> Well, if the user writes x:[a, b, c] (i.e. assign a list to x)
>>>>>> then
>>>>>> x[1], x[2], and x[3] are indeed related to x; those are the three
>>>>>> elements of x.
>>>>>>
>>>>>> Dan, I think you want x:[a, b, c], not x[1]:a, etc -- in the
>>>>>> latter
>>>>>> form, x doesn't refer collectively to a, b, and c.
>>>>>> Whether that's a design flaw is a topic for a rainy day ....
>>>>>>
>>>>>>> The first argument given to rk must be a list of expressions.
>>>>>>> You
>>>>>>> first
>>>>>>> tried with a 3x1 matrix dxdtau. It won't work. You then tried
>>>>>>>   [dxdtau[1],dxdtau[2],dxdtau[3]]
>>>>>>>
>>>>>>> this is not a list of expressions either. Please notice that
>>>>>>> since
>>>>>>> dxdtau is a matrix, dxdtau[1] is the first row of that matrix;
>>>>>>> namely,
>>>>>>> it is a list itself.
>>>>>>
>>>>>> Lists are not row or column matrices, and the elements of a
>>>>>> row or column matrix must be indexed by 2 indices (one of which
>>>>>> is always 1). Dan, probably what you want is to make dxdtau a
>>>>>> list.
>>>>>>
>>>>>> Hope this helps -- I'm sorry if the treatment of lists and
>>>>>> matrices
>>>>>> is confusing. I would be interested to hear your comments on this
>>>>>> point.
>>>>>>
>>>>>> Robert Dodier
>>>>>> _______________________________________________
>>>>>> Maxima mailing list
>>>>>> Maxima at math.utexas.edu
>>>>>> http://www.math.utexas.edu/mailman/listinfo/maxima
>>>>>>
>>>>> _______________________________________________
>>>>> Maxima mailing list
>>>>> Maxima at math.utexas.edu
>>>>> http://www.math.utexas.edu/mailman/listinfo/maxima
>>>> _______________________________________________
>>>> Maxima mailing list
>>>> Maxima at math.utexas.edu
>>>> http://www.math.utexas.edu/mailman/listinfo/maxima
>>>>
>>> _______________________________________________
>>> Maxima mailing list
>>> Maxima at math.utexas.edu
>>> http://www.math.utexas.edu/mailman/listinfo/maxima
>> _______________________________________________
>> Maxima mailing list
>> Maxima at math.utexas.edu
>> http://www.math.utexas.edu/mailman/listinfo/maxima
>>
```