how to do double integration including symbolic ??

18 views (last 30 days)
clc;
clear;
close all;
syms theta omega1 P_t Q_t P_n Q_n Pc2 Pc3 Pc4 Ps2 Ps3 Ps4 Qc2 Qc3 Qc4 Qs2 Qs3 Qs4
a1=1;
h1=5;
temp=@(theta,omega1) -omega1.^2.*exp(-abs(omega1).*(cos(theta) + 5)).*((Qs2.*((28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (141110627044806525.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./18014398509481984 - (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./4503599627370496 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./18014398509481984) + Pc2.*((9407375136320435.*omega1.^(5./2).*((5.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./(2.*omega1.^(1./2)) + (2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./2))./18014398509481984 - (28222125408961305.*omega1.^(3./2).*((2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1))./2 + (3.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./(2.*omega1.^(1./2))))./18014398509481984 - (28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (28222125408961305.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./36028797018963968 + (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./18014398509481984 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./36028797018963968) + Q_n.*pi.*exp(-omega1).*((5.*omega1)./2 + 5./2) - (5.*pi.*P_t.*omega1.*exp(-omega1))./2)./omega1.^2 - (cos(theta) + 5).*((Qs2.*((28222125408961305.*omega1.^(3./2).*((5.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./(2.*omega1.^(1./2)) - (2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./2))./4503599627370496 + (28222125408961305.*omega1.^(1./2).*((2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./2 - (3.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./(2.*omega1.^(1./2))))./2251799813685248 + (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./18014398509481984 - (28222125408961305.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./18014398509481984) - (5.*pi.*P_t.*omega1.*exp(-omega1))./2 + (5.*pi.*Q_n.*omega1.*exp(-omega1))./2)./omega1 - (abs(omega1).*(Qs2.*((28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (141110627044806525.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./18014398509481984 - (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./4503599627370496 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./18014398509481984) + Pc2.*((9407375136320435.*omega1.^(5./2).*((5.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./(2.*omega1.^(1./2)) + (2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./2))./18014398509481984 - (28222125408961305.*omega1.^(3./2).*((2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1))./2 + (3.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./(2.*omega1.^(1./2))))./18014398509481984 - (28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (28222125408961305.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./36028797018963968 + (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./18014398509481984 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./36028797018963968) + Q_n.*pi.*exp(-omega1).*((5.*omega1)./2 + 5./2) - (5.*pi.*P_t.*omega1.*exp(-omega1))./2))./omega1.^2))
Fun = integral2(@(theta,omega1) (temp(theta,omega1).*cos(omega1.*a1.*sin(theta))),0,2*pi,0,inf)
%%%%%%%%%%% Please help...I'm a beginner in matlab. i tried to use "double" but getting error. Please help
%%%%%%%%% Thank you in advance

Accepted Answer

Walter Roberson
Walter Roberson on 16 Aug 2021
There is no possible way to use integral() or integral2() when the expression to be integrated includes unresolved symbolic variables. integral() and integral2() are strictly numeric integration.
The below may take a fair while. You can get through result_inner in a quite reasonable time, but the last step is not fast.
syms theta omega1 P_t Q_t P_n Q_n Pc2 Pc3 Pc4 Ps2 Ps3 Ps4 Qc2 Qc3 Qc4 Qs2 Qs3 Qs4
assume(theta >= 0 & omega1 >= 0)
a1=1;
h1=5;
temp_sym = simplify(str2sym('-omega1.^2.*exp(-abs(omega1).*(cos(theta) + 5)).*((Qs2.*((28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (141110627044806525.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./18014398509481984 - (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./4503599627370496 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./18014398509481984) + Pc2.*((9407375136320435.*omega1.^(5./2).*((5.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./(2.*omega1.^(1./2)) + (2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./2))./18014398509481984 - (28222125408961305.*omega1.^(3./2).*((2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1))./2 + (3.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./(2.*omega1.^(1./2))))./18014398509481984 - (28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (28222125408961305.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./36028797018963968 + (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./18014398509481984 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./36028797018963968) + Q_n.*pi.*exp(-omega1).*((5.*omega1)./2 + 5./2) - (5.*pi.*P_t.*omega1.*exp(-omega1))./2)./omega1.^2 - (cos(theta) + 5).*((Qs2.*((28222125408961305.*omega1.^(3./2).*((5.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./(2.*omega1.^(1./2)) - (2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./2))./4503599627370496 + (28222125408961305.*omega1.^(1./2).*((2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./2 - (3.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./(2.*omega1.^(1./2))))./2251799813685248 + (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./18014398509481984 - (28222125408961305.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./18014398509481984) - (5.*pi.*P_t.*omega1.*exp(-omega1))./2 + (5.*pi.*Q_n.*omega1.*exp(-omega1))./2)./omega1 - (abs(omega1).*(Qs2.*((28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (141110627044806525.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./18014398509481984 - (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./4503599627370496 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./18014398509481984) + Pc2.*((9407375136320435.*omega1.^(5./2).*((5.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./(2.*omega1.^(1./2)) + (2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./2))./18014398509481984 - (28222125408961305.*omega1.^(3./2).*((2.^(1./2).*omega1.^(1./2).*pi.^(1./2).*exp(-omega1))./2 + (3.*2.^(1./2).*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./(2.*omega1.^(1./2))))./18014398509481984 - (28222125408961305.*2.^(1./2).*pi.^(1./2).*exp(-omega1))./4503599627370496 + (28222125408961305.*2.^(1./2).*omega1.^2.*pi.^(1./2).*exp(-omega1).*(3./omega1 + 3./omega1.^2 + 1))./36028797018963968 + (84666376226883915.*2.^(1./2).*omega1.*pi.^(1./2).*exp(-omega1).*(1./omega1 + 1))./18014398509481984 - (9407375136320435.*2.^(1./2).*omega1.^3.*pi.^(1./2).*exp(-omega1).*(6./omega1 + 15./omega1.^2 + 15./omega1.^3 + 1))./36028797018963968) + Q_n.*pi.*exp(-omega1).*((5.*omega1)./2 + 5./2) - (5.*pi.*P_t.*omega1.*exp(-omega1))./2))./omega1.^2))'))
inner = (temp_sym.*cos(omega1.*a1.*sin(theta)))
inner_sym = simplify(inner)
result_inner = int(inner_sym, theta, 0, 2*pi)
result = int(result_inner, omega1, 0,inf)
  2 Comments
gourav pandey
gourav pandey on 16 Aug 2021
i will note it down the point mention by you. Thank you Walter but not getting the answer from the code provided by you.
result =
int(int(-(5*cos(omega1*sin(theta))*exp(-omega1*(cos(theta) + 6))*(pi*(9007199254740992*Q_n - 9007199254740992*P_t*omega1 + 54043195528445952*Q_n*omega1 + 9007199254740992*Q_n*omega1*cos(theta)) - 2^(1/2)*pi^(1/2)*(5644425081792261*Pc2 - 11288850163584522*Qs2 + 11288850163584522*Pc2*omega1 - 45155400654338088*Qs2*omega1 - 84666376226883915*Pc2*omega1^2 + 95955226390468437*Qs2*omega1^2 - 139229152017542438*Qs2*omega1^3 + 18814750272640870*Qs2*omega1^4 - 16933275245376783*Pc2*omega1^2*cos(theta) + 22577700327169044*Qs2*omega1^2*cos(theta) - 28222125408961305*Qs2*omega1^3*cos(theta) + 3762950054528174*Qs2*omega1^4*cos(theta) + 5644425081792261*Pc2*omega1*cos(theta) - 11288850163584522*Qs2*omega1*cos(theta))))/18014398509481984, theta, 0, 2*pi), omega1, 0, Inf)

Sign in to comment.

More Answers (1)

Matt J
Matt J on 16 Aug 2021
Edited: Matt J on 16 Aug 2021
If you are integrating a symbolic expression, you should use int()
You should remove "@(theta,omega1)" from the definition of temp. It makes no sense to have it there if theta and omega1 are symbolic.
  1 Comment
gourav pandey
gourav pandey on 16 Aug 2021
theta and omega1 are function handle. Thank you Matt, i will do the changes. Thank you

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!