Hello All,
The purpose of mlocal and munlocal was to get this code to work with the
commercial macsyma,
for which it was originally written. local is used to keep array
definitions from becoming global,
which is necessary for the commercial macsyma as unnamed arrays were
never implemented.
Commercial macsyma support seems to be less and less useful, as
development has stopped on
it.
Dan Stanger
S. Newhouse wrote:
>Robert Dodier wrote:
>
>
>>On 1/4/08, S. Newhouse <sen1 at math.msu.edu> wrote:
>>
>>
>>
>>
>>>/* the following example will fill the array f with derivatives
>>>array(f,2,3,function)
>>>f[0,0]:x^2+y^3-z^4=0
>>>implicit_derivative(f,[x,y],[2,3],z) */
>>>
>>>(%i2) load(impdiff);
>>>(%o2) /usr/local/share/maxima/5.14.0/share/contrib/impdiff.mac
>>>(%i3) array(f,2,3,function);
>>>(%o3) f
>>>(%i4) f[0,0]:x^2+y^3-z^4=0;
>>> 4 3 2
>>>(%o4) - z + y + x = 0
>>>(%i5) implicit_derivative(f,[x,y],[2,3],z);
>>>
>>>Second argument to `fillarray' must be an array or list:
>>>makeOrders([x, y], [2, 3])
>>>#0:
>>>implicit_derivative(f=f,indvarlist=[x,y],orderlist=[2,3],depvar=z)(impdiff.mac
>>>line 36)
>>> -- an error. To debug this try debugmode(true);
>>>
>>>
>>>
>>I think there are 2 problems here.
>>(1) You need load("makeOrders") first.
>>(2) The array(f,2,3,function) isn't needed by Maxima, and its presence
>>triggers an error about something not being an array. Seems to work
>>OK if it is omitted.
>>
>>(%i1) display2d : false;
>>(%o1) false
>>(%i2) load (impdiff);
>>(%o2) "/usr/local/share/maxima/5.14.0cvs/share/contrib/impdiff.mac"
>>(%i3) load ("makeOrders");
>>(%o3) "/usr/local/share/maxima/5.14.0cvs/share/contrib/makeOrders.mac"
>>(%i4) f[0,0] : x^2 + y^3 - z^4 = 0;
>>(%o4) -z^4+y^3+x^2 = 0
>>(%i5) implicit_derivative (f, [x, y], [2, 3], z);
>>(%o5) munlocal()
>>(%i6) arrayinfo (f);
>>(%o6) [hashed,2,[0,0],[0,1],[0,2],[0,3],[1,0],[1,1],[1,2],[1,3],
>> [2,0],[2,1],[2,2],[2,3]]
>>(%i7) listarray (f);
>>(%o7) [-z^4+y^3+x^2 = 0,3*y^2/(4*z^3),
>> (24*y*z^4-27*y^4)/(16*z^7),
>> (96*z^8-648*y^3*z^4+567*y^6)/(64*z^11),x/(2*z^3),
>> -9*x*y^2/(8*z^7),-(72*x*y*z^4-189*x*y^4)/(32*z^11),
>> -(288*x*z^8-4536*x*y^3*z^4+6237*x*y^6)/(128*z^15),
>> (2*z^4-3*x^2)/(4*z^7),-(18*y^2*z^4-63*x^2*y^2)/(16*z^11),
>> -(144*y*z^8+(-378*y^4-504*x^2*y)*z^4+2079*x^2*y^4)
>> /(64*z^15),
>> -(576*z^12+(-9072*y^3-2016*x^2)*z^8
>> +(12474*y^6+49896*x^2*y^3)*z^4-93555*x^2*y^6)
>> /(256*z^19)]
>>
>>
>>It seems strange for implicit_derivative to return munlocal(). Hmm.
>>
>>Hope this helps,
>>
>>Robert Dodier
>>.
>>
>>
>>
>>
>Hi Robert,
> Your solution works--thanks. Actually, I looked at the source for
>impdiff.mac and it contains two functions 'mlocal' and 'munlocal' which
>don't seem to be needed. Apparently they are lisp funcions defined in
>mlisp.lisp. I removed them from impdiff.mac, saved the modified
>version as 'my_impdiff.mac'. This versions seems to work fine with your
>method, so I don't see the need for mlocal and munlocal anyway.
>
>-sen
>_______________________________________________
>Maxima mailing list
>Maxima at math.utexas.edu
>http://www.math.utexas.edu/mailman/listinfo/maxima
>
>
>