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