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 <[email protected]> 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 <[email protected]>
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---