How do I integrate this multivariable function over just one variable?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
L'O.G.
il 8 Mar 2022
Commentato: Walter Roberson
il 8 Mar 2022
How do you do you do the following like
. (My actual function is more complicated, but this should suffice, I think.) Here, t, r, and x are all variables, with x just being used for purposes of the integration.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/919224/image.png)
I tried something like
a = 0;
b = 2;
for t = 1:10
sum = 0;
for r = 1:10
f = @(x) sin(r*t*x.).^2;
sum = sum + f;
end
0.5*integral(sum,a,b)
end
But I can't add the function handle and am not sure if the procedure is even correct. How do I do this? For every t there should be many r.
0 Commenti
Risposta accettata
Walter Roberson
il 8 Mar 2022
Well, you can
a = 0;
b = 2;
for t = 1:10
sum = @(x) zeros(size(x));
for r = 1:10
f = @(x) sin(r*t*x).^2;
sum = @(x) sum(x) + f(x);
end
0.5*integral(sum,a,b)
end
This is not a great integral; t and r should be finer steps, and you should be taking into account dt and dr and you should probably be using trapz() or cumtrapz()
If you can use symbolic work it goes much easier:
syms r t x
a = 0;
b = 2;
F(t) = int(sin(r*t*x).^2, x, a, b)
To be equivalent to your proposed code this should probably be integrated over r = 1 to 10
syms r t x
a = 0;
b = 2;
F(t) = int(int(sin(r*t*x).^2, x, a, b),r,1,10)
fplot(F, [1 10])
2 Commenti
Walter Roberson
il 8 Mar 2022
Evaluate the function over a (possibly multidimensional) grid, trapz() or cumtrapz() over appropriate dimensions.
This would mostly be of use if you wanted to be able to output that data separately; otherwise you would just use integral() or integral2() or integral3() or https://www.mathworks.com/matlabcentral/fileexchange/47919-integraln-m
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!