채택된 답변

Torsten
Torsten 2025년 5월 12일
편집: Torsten 2025년 5월 12일
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

Torsten
Torsten 2025년 5월 12일
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.
Thanks I will try to use it.
Excuse me, Can I do this for 6 integrals?
Shreen El-Sapa
Shreen El-Sapa 2025년 5월 12일
이동: Torsten 2025년 5월 12일
please see this:
Torsten
Torsten 2025년 5월 12일
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 2025년 5월 13일
편집: Torsten 2025년 5월 13일
Thank you for the info.
So the changes to your last code (test_microstrength.m) were not necessary (except for the final plotting).

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

질문:

2025년 5월 12일

편집:

2025년 5월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by