How can I solve the problem in integral code?

 Respuesta aceptada

Torsten
Torsten el 12 de Mayo de 2025
Editada: Torsten el 12 de Mayo de 2025
Loop over the values of the sigma-vector - thus call "vpaintegral" for each sigma value separately.
Or alternatively make your code a function and call it from a script with a single sigma-value as input.
Further, I'd recommend first to use "integral" instead of "vpaintegral" to save computation time.
And where do you compute w1 - w6 - the variables you try to plot at the end of your code ?
Works because "vpaintegral" is called for each sigma-value separately:
syms r
f = r^2;
sigma = 0:0.1:1;
arrayfun(@(sigma)vpaintegral(f,r,0,sigma),sigma)
ans = 
Does not work because "vpaintegral" is called once with the complete sigma-vector:
syms r
f = r^2;
sigma = 0:0.1:1;
vpaintegral(f,r,0,sigma)
Operands to the logical AND (&&) and OR (||) operators must be convertible to logical scalar values. Use the ANY or ALL functions to reduce operands to logical scalar values.

Error in sym/vpaintegral (line 182)
(isinf(b) && isempty(symvar(b)) && ~isreal(b))

8 comentarios

Torsten
Torsten el 12 de Mayo de 2025
It's the same problem as above. "vpaintegral" can integrate one function over one interval of integration at a time. Thus alpha must be a single value when you call "vpaintegral", not a vector of values.
Shreen El-Sapa
Shreen El-Sapa el 12 de Mayo de 2025
Thanks I will try to use it.
Shreen El-Sapa
Shreen El-Sapa el 12 de Mayo de 2025
Excuse me, Can I do this for 6 integrals?
Shreen El-Sapa
Shreen El-Sapa el 12 de Mayo de 2025
Movida: Torsten el 12 de Mayo de 2025
please see this:
Torsten
Torsten el 12 de Mayo de 2025
Try the attached revised code.
Note that vpaintegral() can handle the case where the part to be integrated is non-scalar, but cannot handle the case where the limits to integration are non-scalar.
syms x
vpaintegral([sin(x), cos(x)], x, [0 1])
ans = 
Torsten
Torsten el 13 de Mayo de 2025
Editada: Torsten el 13 de Mayo de 2025
Thank you for the info.
So the changes to your last code (test_microstrength.m) were not necessary (except for the final plotting).

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

el 12 de Mayo de 2025

Editada:

el 13 de Mayo de 2025

Community Treasure Hunt

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

Start Hunting!

Translated by