Help on double integral
Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
Ältere Kommentare anzeigen
I wrote a simple code for evaluating a double integral of a function of the following but it does n't work;
R = 0.0067; D = 1.1111;
f = inline('exp(-R*(y-x))*((((y+D)/(x+D)))^(R*(K+D)+1))*(1/((y+D)*y)))','x','y');
dblquad(f,0,100,100,inf)
Any with a solution? Thanks for your time
1 Kommentar
Walter Roberson
am 5 Mär. 2012
You have an extra ) at the end of the integral expression.
Antworten (1)
Walter Roberson
am 5 Mär. 2012
0 Stimmen
The above cannot be integrated, as it involves the undefined variable K .
4 Kommentare
Natnael Hamda
am 5 Mär. 2012
Walter Roberson
am 5 Mär. 2012
R = 0.0067; D = 1.1111; K = 100;
f = inline(sprintf('exp(-%.16g*(y-x))*((((y+%.16g)/(x+%.16g)))^(%.16g*(%.16g+%.16g)+1))*(1/((y+%.16g)*y))', R, D, D, R, K, D, D),'x','y');
Yes, the implication *is* that inline() never reads values of variables from the workspace: any variable whose value you do not pass as a parameter will cause an error.
I would suggest to you that using anonymous functions would be considerably cleaner than using inline(), if your MATLAB version supports anonymous functions.
R = 0.0067; D = 1.1111; K = 100;
dblquad( @(x,y) exp(-R*(y-x))*((((y+D)/(x+D)))^(R*(K+D)+1))*(1/((y+D)*y)), 0, 100, 100, inf)
Natnael Hamda
am 6 Mär. 2012
Mike Hosea
am 8 Mär. 2012
Your integral function must be able to accept arrays and return arrays. Don't use *, as this is matrix multiply. Instead use .*, elementwise multiplication. Similarly, don't use ^, rather .^. Don't use /, rather ./ . Basically, your integrand isn't working because it is being passed arrays, and it's trying to do matrix multiplications, matrix powers, and linear system solves when what you really just want is simple arithmetic, elementy-by-element.
Diese Frage ist geschlossen.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!