Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Sin*Cos + Log

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113236] Re: Sin*Cos + Log
  • From: Sam Takoy <sam.takoy at yahoo.com>
  • Date: Wed, 20 Oct 2010 04:06:59 -0400 (EDT)

Thank you!

Very educational.

So to recap a small portion of it: as Times and Plus are defined now, f = 
Sin*Cos + Log is  a largely useless expression that's you can't do much with.

Thanks again,

Sam



________________________________
From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
To: Sam Takoy <sam.takoy at yahoo.com>
Cc: mathgroup at smc.vnet.net
Sent: Tue, October 19, 2010 12:47:51 PM
Subject: [mg113236] Re: [mg113215] Sin*Cos + Log

Well, I can see three ways to go about this. One, which is convenient but 
perhaps carries some risks, is to redefine Plus and times so that they work as 
ring operations on functions. You can do it as follows:

Unprotect[Plus, Times];

(f_ + g_)[x_] := f[x] + g[x]

(c_?NumericQ f)[x_] := c f[x]

(f_*g_)[x_] := f[x]*g[x]

Protect[Plus, Times];

Then 

(Sin-2Cos*Log + Identity)[x]

x + Sin[x] - 2*Log[x]*Cos[x]

(You can add rules for powers too).

Another possible approach is based on judicious use of Through. For example, in 
your example this works:

(Through[#1, Times] & ) /@ Through[(Sin*Cos + Log)[x], Plus]

Log[x] + Sin[x]*Cos[x]

However, it's harder to make this work with expressions such as  Sin*Cos - 2 
Log. The third approach involves more typing. Simply, instead of f=Sin*Cos+Log, 
built a "pure function":

f = (Sin[#]*Cos[#] - 2 Log[#]) &;
then simply 

f[x]

Sin[x]*Cos[x] - 2*Log[x]



Andrzej Kozlowski


On 19 Oct 2010, at 11:54, Sam Takoy wrote:

> Hi,
> 
> I'm working on a project that involves manipulating lots of functions. 
> It would be much easier if I could manipulate functions without 
> evaluating them and then evaluate them at the end. To this end, is there 
> a way to endow
> 
> f = Sin*Cos + Log
> 
> with meaning and then somehow evaluate
> 
> f[x]?
> 
> Many thanks in advance,
> 
> Sam
> 


  • Prev by Date: Re: Is this a bug in NSolve in mathematica?
  • Next by Date: Using ReplaceAll (/.) on numerical digits
  • Previous by thread: Re: Sin*Cos + Log
  • Next by thread: Re: Sin*Cos + Log