So apparently f is not a Function (I had to guess, since I couldn't reconstruct 
your expression from the code you posted).  

Another way to accomplish this would be to substitute D(g(tau), tau)**2 with 1 
- D(f(tau), tau)**2 (a similar trick is useful for simplifying expressions with 
sin(x)**2 and cos(x)**2 in them).

Aaron Meurer
On Apr 25, 2010, at 8:49 PM, Alan Bromborsky wrote:

> Aaron S. Meurer wrote:
>> I think the problem is that you use f.diff(tau) instead of f(tau).diff(tau). 
>>  The first evaluates to 0, because it doesn't know that f depends on tau.
>> 
>> Aaron Meurer
>> On Apr 25, 2010, at 6:02 PM, Alan Bromborsky wrote:
>> 
>>  
>>> Here is code -
>>> 
>>>  dRdtau = R.diff(tau)
>>>  print 'e_tau =',dRdtau
>>>  dRdtau_sq = (dRdtau|dRdtau)()
>>>  print 'e_tau^2 =',dRdtau_sq
>>>  dRdtau_sq = trigsimp(simplify(dRdtau_sq))
>>>  print 'e_tau^2 =',dRdtau_sq
>>>  dRdtau_sq.subs((g.diff(tau))**2-(f.diff(tau))**2,1)
>>>  print 'e_tau^2 =',dRdtau_sq
>>> 
>>> Here is output -
>>> 
>>> e_tau = 
>>> D(g(tau),tau)*e0+(D(f(tau),tau)*cos(th(tau,xth))-D(th(tau,xth),tau)*f(tau)*sin(th(tau,xth)))*e1+(D(f(tau),tau)*sin(th(tau,xth))+D(th(tau,xth),tau)*cos(th(tau,xth))*f(tau))*e2
>>> e_tau^2 = D(g(tau), tau)**2 - (D(f(tau), tau)*cos(th(tau, xth)) - D(th(tau, 
>>> xth), tau)*f(tau)*sin(th(tau, xth)))**2 - (D(f(tau), tau)*sin(th(tau, xth)) 
>>> + D(th(tau, xth), tau)*cos(th(tau, xth))*f(tau))**2
>>> e_tau^2 = D(g(tau), tau)**2 - D(f(tau), tau)**2 - D(th(tau, xth), 
>>> tau)**2*f(tau)**2
>>> e_tau^2 = D(g(tau), tau)**2 - D(f(tau), tau)**2 - D(th(tau, xth), 
>>> tau)**2*f(tau)**2
>>> 
>>> A constraint is that -
>>> 
>>> D(g(tau), tau)**2 - D(f(tau), tau)**2 = 1
>>> 
>>> My use of subs does not do that.  How can I make such a substitution?
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "sympy" group.
>>> 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/sympy?hl=en.
>>> 
>>>    
>> 
>>  
> Revised code -
> 
> dRdtau_sq.subs((diff(g(tau),tau))**2-(diff(f(tau),tau))**2,1)
> 
> Result -
> 
>  dRdtau_sq.subs((diff(g(tau),tau))**2-(diff(f(tau),tau))**2,1)
> File 
> "/usr/local/lib/python2.6/dist-packages/sympy-0.6.7_git-py2.6.egg/sympy/core/basic.py",
>  line 1309, in __call__
>   raise TypeError("argument must be a dictionary")
> TypeError: argument must be a dictionary
> 
> Revised code again -
> 
> dRdtau_sq.subs({(diff(g(tau),tau))**2-(diff(f(tau),tau))**2:1})
> 
> Result -
> 
>  dRdtau_sq.subs({(diff(g(tau),tau))**2-(diff(f(tau),tau))**2:1})
> File 
> "/usr/local/lib/python2.6/dist-packages/sympy-0.6.7_git-py2.6.egg/sympy/core/basic.py",
>  line 1309, in __call__
>   raise TypeError("argument must be a dictionary")
> TypeError: argument must be a dictionary
> 
> 
> More suggestions please.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> 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/sympy?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
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/sympy?hl=en.

Reply via email to