Azzera filtri
Azzera filtri

Partial integration

8 visualizzazioni (ultimi 30 giorni)
Tomislav Broni?
Tomislav Broni? il 10 Lug 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 Commento
Bjorn Gustavsson
Bjorn Gustavsson il 13 Lug 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

Accedi per commentare.

Risposta accettata

Tomislav Broni?
Tomislav Broni? il 12 Lug 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 Commento
Bjorn Gustavsson
Bjorn Gustavsson il 13 Lug 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.

Accedi per commentare.

Più risposte (3)

Tomislav Broni?
Tomislav Broni? il 11 Lug 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 il 11 Lug 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? il 11 Lug 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 Commento
Bjorn Gustavsson
Bjorn Gustavsson il 12 Lug 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.

Accedi per commentare.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by