I reckon this is a bug in solve. Even after i substitute a variable for the derivative of h, Sage can't solve the equation (below).
Alex ---------------------------------------------------------------------- | Sage Version 4.1.2, Release Date: 2009-10-13 | | Type notebook() for the GUI, and license() for information. | ---------------------------------------------------------------------- sage: var('x,y,t') (x, y, t) sage: H= function('H',x,y) sage: h= function('h',x) sage: e= diff(H.subs({y:h}),x); e D[0](h)(x)*D[1](H)(x, h(x)) + D[0](H)(x, h(x)) sage: ee= e.subs({diff(h,x):t}); ee t*D[1](H)(x, h(x)) + D[0](H)(x, h(x)) sage: solve(ee==0,t) --------------------------------------------------------------------------- IndexError Traceback (most recent call last) /Users/arai021/<ipython console> in <module>() /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ relation.pyc in solve(f, *args, **kwds) 489 """ 490 try: --> 491 return f.solve(*args,**kwds) 492 except AttributeError: 493 from sage.symbolic.ring import is_SymbolicVariable /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression.so in sage.symbolic.expression.Expression.solve (sage/ symbolic/expression.cpp:22187)() /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression.so in sage.symbolic.expression.Expression._maxima_ (sage/ symbolic/expression.cpp:3480)() /Applications/sage/local/lib/python2.6/site-packages/sage/structure/ sage_object.so in sage.structure.sage_object.SageObject._interface_ (sage/structure/sage_object.c:3409)() /Applications/sage/local/lib/python2.6/site-packages/sage/structure/ sage_object.so in sage.structure.sage_object.SageObject._maxima_init_ (sage/structure/sage_object.c:5090)() /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression.so in sage.symbolic.expression.Expression._interface_init_ (sage/symbolic/expression.cpp:3609)() /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in __call__(self, ex) 214 return self.arithmetic(ex, operator) 215 elif operator in relation_operators: --> 216 return self.relation(ex, operator) 217 elif isinstance(operator, FDerivativeOperator): 218 return self.derivative(ex, operator) /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in relation(self, ex, operator) 449 'x < 3' 450 """ --> 451 return "%s %s %s"%(self(ex.lhs()), self.relation_symbols[operator], 452 self(ex.rhs())) 453 /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in __call__(self, ex) 212 div = self.get_fake_div(ex) 213 return self.arithmetic(div, div.operator()) --> 214 return self.arithmetic(ex, operator) 215 elif operator in relation_operators: 216 return self.relation(ex, operator) /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in arithmetic(self, ex, operator) 495 '(x)+(2)' 496 """ --> 497 args = ["(%s)"%self(op) for op in ex.operands()] 498 return arithmetic_operators[operator].join(args) 499 /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in __call__(self, ex) 212 div = self.get_fake_div(ex) 213 return self.arithmetic(div, div.operator()) --> 214 return self.arithmetic(ex, operator) 215 elif operator in relation_operators: 216 return self.relation(ex, operator) /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in arithmetic(self, ex, operator) 495 '(x)+(2)' 496 """ --> 497 args = ["(%s)"%self(op) for op in ex.operands()] 498 return arithmetic_operators[operator].join(args) 499 /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in __call__(self, ex) 216 return self.relation(ex, operator) 217 elif isinstance(operator, FDerivativeOperator): --> 218 return self.derivative(ex, operator) 219 else: 220 return self.composition(ex, operator) /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ expression_conversions.pyc in derivative(self, ex, operator) 479 f = operator.function() 480 params = operator.parameter_set() --> 481 params = ["%s, %s"%(args[i], params.count(i)) for i in set(params)] 482 483 return "diff('%s(%s), %s)"%(f.name(), IndexError: tuple index out of range On Oct 21, 12:37 am, David Joyner <wdjoy...@gmail.com> wrote: > You might want to search the sage devel archives for an email from John Perry > called "implicit_diff". > > On Mon, Oct 19, 2009 at 10:35 PM, Alex Raichev <tortoise.s...@gmail.com> > wrote: > > > Hi all: > > > I'm trying to differentiate implicitly and solve for the derivative > > but get an error. Does anyone know what's wrong? > > > Alex > > > ---------------------------------------------------------------------- > > | Sage Version 4.1.2, Release Date: 2009-10-13 | > > | Type notebook() for the GUI, and license() for information. | > > ---------------------------------------------------------------------- > > > sage: var('x,y') > > (x, y) > > sage: H= function('H',x,y) > > sage: h= function('h',x) > > sage: e= diff(H.subs(y=h),x); e > > D[0](h)(x)*D[1](H)(x, h(x)) + D[0](H)(x, h(x)) > > sage: solve(e==0,diff(h,x)) > > --------------------------------------------------------------------------- > > IndexError Traceback (most recent call > > last) > > > /Users/arai021/<ipython console> in <module>() > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > relation.pyc in solve(f, *args, **kwds) > > 489 """ > > 490 try: > > --> 491 return f.solve(*args,**kwds) > > 492 except AttributeError: > > 493 from sage.symbolic.ring import is_SymbolicVariable > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression.so in sage.symbolic.expression.Expression.solve (sage/ > > symbolic/expression.cpp:22187)() > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression.so in sage.symbolic.expression.Expression._maxima_ (sage/ > > symbolic/expression.cpp:3480)() > > > /Applications/sage/local/lib/python2.6/site-packages/sage/structure/ > > sage_object.so in sage.structure.sage_object.SageObject._interface_ > > (sage/structure/sage_object.c:3409)() > > > /Applications/sage/local/lib/python2.6/site-packages/sage/structure/ > > sage_object.so in sage.structure.sage_object.SageObject._maxima_init_ > > (sage/structure/sage_object.c:5090)() > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression.so in sage.symbolic.expression.Expression._interface_init_ > > (sage/symbolic/expression.cpp:3609)() > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in __call__(self, ex) > > 214 return self.arithmetic(ex, operator) > > 215 elif operator in relation_operators: > > --> 216 return self.relation(ex, operator) > > 217 elif isinstance(operator, FDerivativeOperator): > > 218 return self.derivative(ex, operator) > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in relation(self, ex, operator) > > 449 'x < 3' > > 450 """ > > --> 451 return "%s %s %s"%(self(ex.lhs()), > > self.relation_symbols[operator], > > 452 self(ex.rhs())) > > 453 > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in __call__(self, ex) > > 212 div = self.get_fake_div(ex) > > 213 return self.arithmetic(div, div.operator()) > > --> 214 return self.arithmetic(ex, operator) > > 215 elif operator in relation_operators: > > 216 return self.relation(ex, operator) > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in arithmetic(self, ex, operator) > > 495 '(x)+(2)' > > 496 """ > > --> 497 args = ["(%s)"%self(op) for op in ex.operands()] > > 498 return arithmetic_operators[operator].join(args) > > 499 > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in __call__(self, ex) > > 212 div = self.get_fake_div(ex) > > 213 return self.arithmetic(div, div.operator()) > > --> 214 return self.arithmetic(ex, operator) > > 215 elif operator in relation_operators: > > 216 return self.relation(ex, operator) > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in arithmetic(self, ex, operator) > > 495 '(x)+(2)' > > 496 """ > > --> 497 args = ["(%s)"%self(op) for op in ex.operands()] > > 498 return arithmetic_operators[operator].join(args) > > 499 > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in __call__(self, ex) > > 216 return self.relation(ex, operator) > > 217 elif isinstance(operator, FDerivativeOperator): > > --> 218 return self.derivative(ex, operator) > > 219 else: > > 220 return self.composition(ex, operator) > > > /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/ > > expression_conversions.pyc in derivative(self, ex, operator) > > 479 f = operator.function() > > 480 params = operator.parameter_set() > > --> 481 params = ["%s, %s"%(args[i], params.count(i)) for i in > > set(params)] > > 482 > > 483 return "diff('%s(%s), %s)"%(f.name(), > > > IndexError: tuple index out of range > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---