You could look at Maxima's  ratsubst command for ideas about what could be
done.

ratsubst(y, exp(x), exp(5*x))  returns y^5.

RJF

On Friday, August 14, 2015 at 11:58:20 AM UTC-7, Aaron Meurer wrote:
>
> subs is limited on how smart it is. I think it only works for numerical 
> coefficients.
>
> Also note that exp(a*x) != exp(x)**a in general (take x = 2*pi*I and a = 
> 1/2). It should be true if a is an integer, though (but subs doesn't handle 
> it if you set a = Symbol('a', integer=True)).
>
> If you know what form of expression you want to replace, you can use the 
> replace() method with Wilds, like
>
> In [26]: b = Wild('b', exclude=[x])
>
> In [27]: print(exp(a*x).replace(exp(b*x), sin(x)**b))
> sin(x)**a
>
> Aaron Meurer
>
>
> On Fri, Aug 14, 2015 at 12:48 PM, Adrián Ashley <[email protected] 
> <javascript:>> wrote:
>
>> Hi, 
>>
>> Thanks for the workaround, but
>>
>> subs doesn't work here:
>>
>> >>> sin(exp(a*x)).subs({exp(x): x})
>> >>> sin(exp(a*x))
>>
>>
>>
>> Best,
>> Adrian
>>
>> On Saturday, August 15, 2015 at 12:11:31 AM UTC+5:30, Aaron Meurer wrote:
>>>
>>> xreplace only does exact structural replacement (the "x" stands for 
>>> "exact"). To get mathematical replacement, use subs:
>>>
>>> >>> print(exp(5*x).subs(exp(x), sin(x)))
>>> sin(x)**5
>>>
>>> Aaron Meurer
>>>
>>> On Fri, Aug 14, 2015 at 5:17 AM, AMiT Kumar <[email protected]> wrote:
>>>
>>>> I am also Interested in getting the solution for this.
>>>>
>>>> *AMiT Kumar*
>>>>
>>>>
>>>> On Friday, August 14, 2015 at 12:08:25 PM UTC+5:30, Gaurav Dhingra 
>>>> wrote:
>>>>>
>>>>> Do you want something like replacing some function f1 (say 
>>>>> `exponential function` you mentioned `{exp(x): x}` ) with some other f2 
>>>>> (say linear function, you mentioned `{exp(x): x}`  ) in your expression ?
>>>>>
>>>>> On Friday, August 14, 2015 at 12:03:08 PM UTC+5:30, Adrián Ashley 
>>>>> wrote:
>>>>>>
>>>>>> Correction previous example:
>>>>>>
>>>>>> In [9]: sin(exp(a*x)).some_replace_func({exp(x): x})
>>>>>> Out[9]: sin(x**a)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Friday, August 14, 2015 at 11:55:55 AM UTC+5:30, Adrián Ashley 
>>>>>> wrote:
>>>>>>>
>>>>>>> Hi Sartaj,
>>>>>>>
>>>>>>> I think you didn't understood my point. I am looking for 
>>>>>>> mathematical substitution, not exact
>>>>>>> substitution.
>>>>>>>
>>>>>>> exp(5*x).xreplace({exp(5*x): sin(5*x)}) is just a mere example of 
>>>>>>> usage of xreplace. I am not
>>>>>>> looking for exact replacement. the exponent can be anything
>>>>>>>
>>>>>>> For example:
>>>>>>>
>>>>>>> >>> sin(exp(x)).some_replace_func({exp: x})
>>>>>>>
>>>>>>> >>> sin(x)
>>>>>>>
>>>>>>> >>> exp(5*x).some_replace_func({exp(x): sin(x)})
>>>>>>> >>> exp(5*x)
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Best,
>>>>>>>
>>>>>>> Adrian
>>>>>>>
>>>>>>> On Friday, August 14, 2015 at 1:48:44 AM UTC+5:30, Sartaj Singh 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Try this,
>>>>>>>>
>>>>>>>> >>> exp(5*x).xreplace({exp(5*x): sin(5*x)})
>>>>>>>> sin(5*x)
>>>>>>>>
>>>>>>>> On 14 August 2015 at 00:24, Adrián Ashley <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> How can I substitute/replace something mathematically from an 
>>>>>>>>> expression:
>>>>>>>>>
>>>>>>>>> For example:
>>>>>>>>>
>>>>>>>>> >>> exp(5*x).xreplace({exp(x): sin(x)})
>>>>>>>>> >>> exp(5*x)   # I would expect sin(x)**5 here
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> In better way to do the above thing?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Best,
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Adrian
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>>> Groups "sympy" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>> send an email to [email protected].
>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>> Visit this group at http://groups.google.com/group/sympy.
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/sympy/4be0109e-a665-4c89-8774-0300163250f0%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/sympy/4be0109e-a665-4c89-8774-0300163250f0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> Regards
>>>>>>>> *Sartaj Singh*
>>>>>>>>
>>>>>>>> *Mathematics and Computing*,
>>>>>>>> Indian Institute of Technology,
>>>>>>>> Varanasi - 221 005 INDIA
>>>>>>>>
>>>>>>>> E-mail: [email protected], *[email protected]*
>>>>>>>>
>>>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "sympy" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/sympy.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/sympy/f4f3b7a4-00ec-4d0c-85bd-86e6b4731c64%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/sympy/f4f3b7a4-00ec-4d0c-85bd-86e6b4731c64%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sympy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] <javascript:>
>> .
>> Visit this group at http://groups.google.com/group/sympy.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sympy/1a705f97-779d-4b7b-b5e2-ea14ee4ca967%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/sympy/1a705f97-779d-4b7b-b5e2-ea14ee4ca967%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/6549fea2-0b0b-4376-b00b-ac2c1126320c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to