Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I want to evaluate an integral of form given below

$$\int\limits_\alpha^\beta (f(x) + g(x) + h(x) + ...) dx$$

When I give it to Mathematica it takes forever to evaluate. But if I give it in this form

$$\int\limits_\alpha^\beta f(x)dx + \int\limits_\alpha^\beta g(x)dx + \int\limits_\alpha^\beta h(x)dx + ...$$

It takes comparatively lesser time.

According to this page it can be defined as

integrate[y_ + z_, x_] :=
integrate[y, x] + integrate[z, x]

for two variables. But I want to be able to do this for arbitrary number of variables. How to is the question.

share|improve this question
    
Perhaps you could list your functions as $f_1, f_2, \ldots$ instead of $f(x), g(x), \ldots$ and set mathematica up to read it as $\displaystyle\sum_{i=1}^n \displaystyle\int_{\alpha}^{\beta} f_i(x) dx$? I don't have the mathematica skill to tell you the exact code, though. –  tomcuchta Jul 19 '11 at 0:05
    
I got it integrate[y_ + z_, x_] := integrate[y, x] + integrate[z, x] is recursively defined. It takes care of arbitrary summation number of functions. Now my problem is that integrate does not Integrate. –  Pratik Deoghare Jul 19 '11 at 1:42
1  
I tried integrate := Integrate and wow!! it worked! –  Pratik Deoghare Jul 19 '11 at 1:43
add comment

2 Answers 2

I just noticed this question, so please forgive the (very) late reply.

If you want a function that will automatically split across addition, like you've tried to define, I'd do this

Clear[integrate]
integrate[a_Plus, x_, opts:OptionsPattern[]] := 
  integrate[#, x, opts]& /@ a

which with input

integrate[a + b + c, {x, 0, 5}]

gives

integrate[a, {x, 0, 5}] + integrate[b, {x, 0, 5}] 
  + integrate[c, {x, 0, 5}]

Then, you can define

integrate[a_, x_, opts:OptionsPattern[]]:= Integrate[a, x, opts]

to map it back to the original function.

share|improve this answer
add comment

For $$\int\limits_\alpha^\beta (f(x) + g(x) + h(x) + ...) dx$$

  In[1]:=  f[x_]:= your definition 
  In[2]:=  g[x_]:= your definition
  In[3]:=  h[x_]:= your definition
  In[4]:=  F={f[x],g[x],h[x]}
  In[5]:=  Sum[Integrate[F[[i]],{x,a,b}], {i, 1, 3}]

This does what you want, i.e integrates the $f,g,h\cdots$ and then adds them, rather than adding and then integrating. Tested on Mathematica 7

share|improve this answer
    
Problem is I get output in the form of $f(x)+g(x)+h(x)+...$ after doing a lot many operations, say after expanding something. I am not defining the functions. –  Pratik Deoghare Jul 19 '11 at 0:39
    
@MachineCharmer is that perhaps because you have used the lower case i for Integrate in your question. Mathematica is case sensitive. –  kuch nahi Jul 19 '11 at 0:41
    
i.e integrate[x,y] just echos the same expression while Integrate[x,y] returns xy Maybe that is why you are getting the sums –  kuch nahi Jul 19 '11 at 0:42
    
@kuch nahi: I think he means that he has arbitrary number of terms in his sum. You could generalize this answer by automatically splitting the integrand with F = Apply[List, q[x]] where g[x] = f[x] + g[x] + ... (untested). Edit: I missed that a recursive solution was found in the other comments. –  Mikael Öhman Jul 19 '11 at 2:16
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.