>> From: "Charles James Leonardo Quarra Cappiello" "charsquarra"
Thanks Preben,
I come out with a solution in the meantime (this mailing list is SLOOOW)
EfficientImplicitDiff:=proc( Limplicitderivatives::name , f::name ,
z::name , w::name , ord::integer )
local j,k,temp1,temp2;
Limplicitderivatives:=[
diff(z(w),w)=-1/f(z(w)) ]; for
k from 2 to ord do;
temp1:=diff( f(z(w))*diff(z(w),w) , w$(k-1) );
temp2:=isolate( temp1 , diff(z(w),w$k ) );
for j from 1 to k-1 do;
temp2:=op(1,temp2)=subs( Limplicitderivatives[k-j] , op(2,temp2) );
end do;
temp2:=op(1,temp2)=normal(op(2,temp2));
Limplicitderivatives:=[
op(op(Limplicitderivatives)) , temp2 ];
end do;
end proc;
The idea is that it uses L as a list where it puts the implicit derivatives
of z respect to w of increasing order, and f ,z ,w as names for f(z(w)). In
this examples, i assume that f(z(w))*diff(z(w),w) + 1 = 0; and i put that
assumption in the first entry of the list, but it could be generalized for
the case where the dependence on w is a function g(z(w))
Greetings,
Charles Quarra
_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE*
http://join.msn.com/?page=features/virus
|