Clear Filters
Clear Filters

Partial integration

9 views (last 30 days)
Tomislav Broni?
Tomislav Broni? on 10 Jul 2011
I have integrate twice, but IT IS NOT a double integral (which would be easy with quad2d or dblquad), but its smth like this: int(a->b)(f(x) * int(c->d)(g(x,x') dx')dx)
so basicly, i need to partialy integrate g(x,x') by x':c->d, then multiply with f(x), and integrate with x:a->b)
and after a few hours spent on this website and searching the matlab documentation and finding nothing of use, i decided to ask here. thanks for any help!
  1 Comment
Bjorn Gustavsson
Bjorn Gustavsson on 13 Jul 2011
Come to think of it it actually is a double integral:
\int_a^b f(x)*\int_c^d g(x,x')dx' dx = \int_a^b \int_c^d f(x)*g(x,x')dx' dx

Sign in to comment.

Accepted Answer

Tomislav Broni?
Tomislav Broni? on 12 Jul 2011
I solved the error by dividing the calculations up into 4 integrals, for each cell of the matrix. this is needed becouse quadgk calculates with an array of values (about 150), which was incompatible with the 2×1 and 1×2 and 2×2 matrices. so I calculated each of the 4 cells, and put them back together. your example works, but only becouse the functions you inserted in quadgk were 1×1, try putting a 2×2 matrix in there!
  1 Comment
Bjorn Gustavsson
Bjorn Gustavsson on 13 Jul 2011
Nowhere in your example did I see any matrices of functions, so obviously I could not guess stat you had such a problem, only that you wanted to integrate someting like this:
\int_a^b f(x)*\int_c^d g(x,x')dx' dx
So this is what I gave you.

Sign in to comment.

More Answers (3)

Tomislav Broni?
Tomislav Broni? on 11 Jul 2011
still could use some help here! and just to say up front, the function g(x,x') doesnt have a explicit integral, so just using int wont work

Bjorn Gustavsson
Bjorn Gustavsson on 11 Jul 2011
Maybe something based on this pattern would work:
g = @(x,xp) (x-xp).^2;
f = @(x) x;
IntOfG = @(x,c,d) quadgk(@(xp) g(x,xp),c,d);
res = quadgk(@(x) f(x).*IntOfG(x,c,d),a,b);

Tomislav Broni?
Tomislav Broni? on 11 Jul 2011
quadgk is giving an error each time i try this, error trace:
??? Error using ==> quadgk>finalInputChecks at 476 Supported classes are 'double' and 'single'.
Error in ==> quadgk>evalFun at 358
finalInputChecks(x,fx);
Error in ==> quadgk>f1 at 375
[y,too_close] = evalFun(tt);
Error in ==> quadgk>vadapt at 269
[fx,too_close] = f(x);
Error in ==> quadgk at 208
[q,errbnd] = vadapt(@f1,interval);
if i understand this error, he calls it becouse the return value of quadgk isnt the same type as the calling variables (expects double, but gets function handle ?)
please correct me if im wrong
  1 Comment
Bjorn Gustavsson
Bjorn Gustavsson on 12 Jul 2011
Hi,
If you read the help for quadgk you see that the first argument should be a function.
Since you don't show me how f1 is defined I can't know why you get that error. If you try to test/evaluate the functions you define step by step (in my example g, f and IntOfG) you can at least make sure that they work. The only thing I can say is that my example works in matlab R2009a.

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!