f(s) =
integrate with the upper limit is a function
Mostrar comentarios más antiguos
Hello!
How to integrate a function on Matlab with the upper limit is a function, for exemple the following integral:

i tried this code:
U= vpa(int(f,s,0,t^2))
but it returns int(f,s,0,t^2)!!
is there any method to do it?
9 comentarios
Star Strider
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
The Symbolic Math Toolbox appropriately considers
an otherwise undefined function.
Define it and you get an actual result —
syms s t
f(s) = 1 / (s^2 + 2*s + 1)
U = vpa(int(f,s,0,t^2))
.
L.GREEN
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
Torsten
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
Why i dont have the result of the integral?
MATLAB cannot compute an analytical antiderivative of f. And such an antiderivative would be necessary because the result is not a numerical value, but a function of the symbolic variable t.
L.GREEN
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
Torsten
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
Is there any other alternative to do it on Matlab?
If you want to keep t symbolic: no.
If you give t numerical values, you can use "integral" for evaluation.
f = @(s) sin(0.008414709848078965066525023216303*exp(-2*s.^(1/2)) + 0.00008414709848078965066525023216303*cos(s).^2 + 0.008414709848078965066525023216303) + 1;
F = @(t)integral(f,0,t^2);
tnum = 0:0.1:5;
Fnum = arrayfun(@(t)F(t),tnum);
plot(tnum,Fnum)
grid on
Star Strider
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
The int function is not doing the integration (or the subsequent substitution). Not all functions have analytic integrals, and yours is apparently one of them.
syms s t
f(s) = sin(0.008414709848078965066525023216303*exp(-2*s^(1/2)) + 0.00008414709848078965066525023216303*cos(s)^2 + 0.008414709848078965066525023216303) + 1
U1 = int(f,s)
% U = vpa(int(f,s,0,t^2))
% U = simplify(U, 100)
Consider instead integrating this numerically if you want a numeric result, using the integral function.
.
L.GREEN
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
Walter Roberson
el 31 de Jul. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
If you have working with a mix of scalar constants and scalar symbolic variables, then you can use ^ and / instead of .^ and ./ . You only need .^ and ./ if you are working with non-scalar values.
syms s t
f1 = sin(0.008414709848078965066525023216303*exp(-2*s^(1/2)) + 0.00008414709848078965066525023216303*cos(s)^2 + 0.008414709848078965066525023216303) + 1
f2 = sin(0.008414709848078965066525023216303*exp(-2*s.^(1/2)) + 0.00008414709848078965066525023216303*cos(s).^2 + 0.008414709848078965066525023216303) + 1
isAlways(f1 == f2)
Torsten
el 1 de Ag. de 2024
Movida: Star Strider
el 4 de Ag. de 2024
The inconvient of the intergal function is that we need to use '.^ 'and/or './'
If you have a symbolic function and want to convert it to a function that can be used together with "integral", use "matlabFunction". Here, you will also get .^, ./ and .* operators.
Another way is to use the 'ArrayValues',true option for "integral" that passes one value for s to the function at a time. The disadvantage is that this option might slow down the integration:
f = @(s) sin(0.008414709848078965066525023216303*exp(-2*s^(1/2)) + 0.00008414709848078965066525023216303*cos(s)^2 + 0.008414709848078965066525023216303) + 1;
F = @(t) integral(f,0,t^2,'ArrayValued',1);
tnum = 0:0.1:5;
Fnum = arrayfun(@(t)F(t),tnum);
plot(tnum,Fnum)
grid on
Respuestas (0)
Categorías
Más información sobre Calculus en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



