Integral "int" function not evaluating
조회 수: 6 (최근 30일)
이전 댓글 표시
Why is the "int" function not evaluating my integral? The "r" variable still has the "int" in it.
clear
clc
theta_s = 0:0.5:pi/2;
syms theta_v phi
for i = 1:length(theta_s)
integ2(i) = ((((1/(2*pi))*((pi-phi)*cos(phi) + sin(phi))*tan(theta_s(i))*tan(theta_v)-(1/pi)*(tan(theta_s(i))+tan(theta_v)+sqrt(tan(theta_v)^2 + tan(theta_s(i))^2 - 2*tan(theta_s(i))*tan(theta_v)*cos(phi)))))*cos(theta_v)*sin(theta_v));
r(i)= int((integ2(i)), theta_v, [0 pi/2]);
end
댓글 수: 1
Walter Roberson
2022년 3월 3일
What reason do you have to lead you to expect that there is a closed form integral?
채택된 답변
David Hill
2022년 3월 3일
theta_s = 0:0.5:pi/2;
syms theta_v
phi=pi/6;%choose a phi or loop for various values of phi
for i = 1:length(theta_s)
integ2(i) = ((((1/(2*pi))*((pi-phi)*cos(phi) + sin(phi))*tan(theta_s(i))*tan(theta_v)-(1/pi)*(tan(theta_s(i))+tan(theta_v)+sqrt(tan(theta_v)^2 + tan(theta_s(i))^2 - 2*tan(theta_s(i))*tan(theta_v)*cos(phi)))))*cos(theta_v)*sin(theta_v));
r(i)= vpaintegral((integ2(i)), theta_v, [0 pi/2]);
end
댓글 수: 6
David Hill
2022년 3월 4일
Works fine.
theta_s = 0:0.5:pi/2;
syms theta_v phi
for i = 1:length(theta_s)
integ2(i) = ((((1/(2*pi))*((pi-phi)*cos(phi) + sin(phi))*tan(theta_s(i))*tan(theta_v)-(1/pi)*(tan(theta_s(i))+tan(theta_v)+sqrt(tan(theta_v)^2 + tan(theta_s(i))^2 - 2*tan(theta_s(i))*tan(theta_v)*cos(phi)))))*cos(theta_v)*sin(theta_v));
r(i)= vpaintegral(vpaintegral((integ2(i)), theta_v, [0 pi/2]),phi,[0 pi]);
end
Walter Roberson
2022년 3월 6일
By the way, integrating first with respect to phi is faster.
At one point I saw a closed form solution for integration with respect to phi, but I was not able to reproduce that later.
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!