Issue with int() function

I gave my script below. In that I am supposed to get Lrr in terms of theta but I am getting it in terms of values.
How is this possible??
syms theta phi
Nr = 20;
p = 2;
D = 1/(0.6*10^-3);
Q = 1/(40.27*10^-3);
theta_d = 1.1652;
theta_q = 0.4056;
Aog = (2/pi)*(D*theta_d+Q*theta_q);
k = 2;
Ginvi = 0;
for i=2:2:k
Akg = (4*(Q-D)/(pi*i))*(-1)^((i+4)/2)*sin(i*theta_q);
Ginvi = Ginvi+Akg*cos(p*i*(phi-theta));
end
Ginv = vpa((Ginvi+Aog), 4) % Ginv interms of phi and theta
w = 1;
a = (theta_d)/(Nr/p);
bd = a/2;
bq = ((theta_q)+a)/2;
nr = sym(zeros(1, Nr));
for j = 1:(2*p)
for n = (((j-1)*Nr/(2*p))+2):(j*(Nr/(2*p)))
for i = 1:w
Aord = (a+2*bd)/(2*pi);
Awr = (2/(a*pi*(i^2)))*(cos(i*bd)-cos(i*(a+bd)));
nr(1, n) = nr(1, n)+Awr*cos(i*(phi-theta-((n-j-1)*2*a)-((j-1)*(a+2*bq))));
end
nr(1, n) = Aord+nr(1, n);
end
end
for n = 1:(Nr/(2*p)):Nr
for i = 1:w
Aorq = (a+2*bq)/(2*pi);
Awr = (2/(a*pi*(i^2)))*(cos(i*bq)-cos(i*(a+bq)));
nr(1, n) = nr(1, n)+Awr*cos(i*(phi-theta-(((n-1)/(Nr/(2*p)))*theta_d)));
end
nr(1, n) = Aorq+nr(1, n);
end
NR = vpa(nr, 4) % row matrix interms of phi and theta
wr = sym(zeros(1, Nr));
for n = 1:Nr
wr(1, n) = (NR(1, n))-((1/(2*pi*Aog))*int((NR(1, n)*Ginv), phi, 0, 2*pi));
end
WR = vpa(wr, 4) % row matrix interms of theta
u = 1.2566*10^-(6);
r = 73.4*10^(-3);
l = 76*10^(-3);
lrr = sym(ones(Nr, Nr));
for i = 1:Nr
for j = 1:Nr
lrr(i, j) = (u*r*l)*int((NR(i)*WR(j)*Ginv), phi, 0, 2*pi);
end
end
Lrr = vpa(lrr, 4) % 20*20 matrix interms of theta
I am getting a result like this:
>> temp
Ginv =
757.9*cos(4.0*phi - 4.0*theta) + 1243.0
NR =
[0.1997*cos(phi - 1.0*theta) + 0.1016, 0.07397*cos(phi - 1.0*theta) + 0.03709, 0.07397*cos(theta - 1.0*phi + 0.233) + 0.03709, 0.07397*cos(theta - 1.0*phi + 0.4661) + 0.03709, 0.07397*cos(theta - 1.0*phi + 0.6991) + 0.03709, 0.1997*cos(theta - 1.0*phi + 1.165) + 0.1016, 0.07397*cos(theta - 1.0*phi + 1.571) + 0.03709, 0.07397*cos(theta - 1.0*phi + 1.804) + 0.03709, 0.07397*cos(theta - 1.0*phi + 2.037) + 0.03709, 0.07397*cos(theta - 1.0*phi + 2.27) + 0.03709, 0.1997*cos(theta - 1.0*phi + 2.33) + 0.1016, 0.07397*cos(theta - 1.0*phi + 3.142) + 0.03709, 0.07397*cos(theta - 1.0*phi + 3.375) + 0.03709, 0.07397*cos(theta - 1.0*phi + 3.608) + 0.03709, 0.07397*cos(theta - 1.0*phi + 3.841) + 0.03709, 0.1997*cos(theta - 1.0*phi + 3.496) + 0.1016, 0.07397*cos(theta - 1.0*phi + 4.712) + 0.03709, 0.07397*cos(theta - 1.0*phi + 4.945) + 0.03709, 0.07397*cos(theta - 1.0*phi + 5.178) + 0.03709, 0.07397*cos(theta - 1.0*phi + 5.412) + 0.03709]
WR =
[0.1997*cos(phi - 1.0*theta) - 9.247e-14, 0.07397*cos(phi - 1.0*theta) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 0.233) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 0.4661) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 0.6991) - 3.374e-14, 0.1997*cos(theta - 1.0*phi + 1.165) - 9.247e-14, 0.07397*cos(theta - 1.0*phi + 1.571) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 1.804) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 2.037) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 2.27) - 3.374e-14, 0.1997*cos(theta - 1.0*phi + 2.33) - 9.247e-14, 0.07397*cos(theta - 1.0*phi + 3.142) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 3.375) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 3.608) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 3.841) - 3.374e-14, 0.1997*cos(theta - 1.0*phi + 3.496) - 9.247e-14, 0.07397*cos(theta - 1.0*phi + 4.712) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 4.945) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 5.178) - 3.374e-14, 0.07397*cos(theta - 1.0*phi + 5.412) - 3.374e-14]
Lrr =
[ 1.092e-6, 4.043e-7, 3.934e-7, 3.612e-7, 3.095e-7, 4.308e-7, -1.485e-12, -9.338e-8, -1.817e-7, -2.602e-7, -7.518e-7, -4.043e-7, -3.934e-7, -3.612e-7, -3.095e-7, -1.024e-6, 4.456e-12, 9.338e-8, 1.817e-7, 2.602e-7]
[ 4.043e-7, 1.497e-7, 1.457e-7, 1.338e-7, 1.146e-7, 1.595e-7, -5.5e-13, -3.458e-8, -6.729e-8, -9.636e-8, -2.784e-7, -1.497e-7, -1.457e-7, -1.338e-7, -1.146e-7, -3.793e-7, 1.65e-12, 3.458e-8, 6.729e-8, 9.637e-8]
[ 3.934e-7, 1.457e-7, 1.497e-7, 1.457e-7, 1.338e-7, 2.41e-7, 3.458e-8, -5.5e-13, -3.458e-8, -6.729e-8, -2.032e-7, -1.457e-7, -1.497e-7, -1.457e-7, -1.338e-7, -4.014e-7, -3.458e-8, 1.65e-12, 3.458e-8, 6.729e-8]
[ 3.612e-7, 1.338e-7, 1.457e-7, 1.497e-7, 1.457e-7, 3.095e-7, 6.729e-8, 3.458e-8, -5.5e-13, -3.458e-8, -1.17e-7, -1.338e-7, -1.457e-7, -1.497e-7, -1.457e-7, -4.018e-7, -6.729e-8, -3.458e-8, 1.65e-12, 3.458e-8]
[ 3.095e-7, 1.146e-7, 1.338e-7, 1.457e-7, 1.497e-7, 3.612e-7, 9.636e-8, 6.729e-8, 3.458e-8, -5.5e-13, -2.444e-8, -1.146e-7, -1.338e-7, -1.457e-7, -1.497e-7, -3.805e-7, -9.636e-8, -6.729e-8, -3.458e-8, 1.65e-12]
[ 4.308e-7, 1.595e-7, 2.41e-7, 3.095e-7, 3.612e-7, 1.092e-6, 3.715e-7, 3.246e-7, 2.602e-7, 1.817e-7, 4.308e-7, -1.595e-7, -2.41e-7, -3.095e-7, -3.612e-7, -7.518e-7, -3.715e-7, -3.246e-7, -2.602e-7, -1.817e-7]
[-1.485e-12, -5.5e-13, 3.458e-8, 6.729e-8, 9.636e-8, 3.715e-7, 1.497e-7, 1.457e-7, 1.338e-7, 1.146e-7, 2.932e-7, -5.5e-13, -3.458e-8, -6.729e-8, -9.636e-8, -1.402e-7, -1.497e-7, -1.457e-7, -1.338e-7, -1.146e-7]
[ -9.338e-8, -3.458e-8, -5.5e-13, 3.458e-8, 6.729e-8, 3.246e-7, 1.457e-7, 1.497e-7, 1.457e-7, 1.338e-7, 3.496e-7, 3.458e-8, -5.5e-13, -3.458e-8, -6.729e-8, -4.879e-8, -1.457e-7, -1.497e-7, -1.457e-7, -1.338e-7]
[ -1.817e-7, -6.729e-8, -3.458e-8, -5.5e-13, 3.458e-8, 2.602e-7, 1.338e-7, 1.457e-7, 1.497e-7, 1.457e-7, 3.87e-7, 6.729e-8, 3.458e-8, -5.5e-13, -3.458e-8, 4.522e-8, -1.338e-7, -1.457e-7, -1.497e-7, -1.457e-7]
[ -2.602e-7, -9.636e-8, -6.729e-8, -3.458e-8, -5.5e-13, 1.817e-7, 1.146e-7, 1.338e-7, 1.457e-7, 1.497e-7, 4.036e-7, 9.636e-8, 6.729e-8, 3.458e-8, -5.5e-13, 1.368e-7, -1.146e-7, -1.338e-7, -1.457e-7, -1.497e-7]
[ -7.518e-7, -2.784e-7, -2.032e-7, -1.17e-7, -2.444e-8, 4.308e-7, 2.932e-7, 3.496e-7, 3.87e-7, 4.036e-7, 1.092e-6, 2.784e-7, 2.032e-7, 1.17e-7, 2.444e-8, 4.308e-7, -2.932e-7, -3.496e-7, -3.87e-7, -4.036e-7]
[ -4.043e-7, -1.497e-7, -1.457e-7, -1.338e-7, -1.146e-7, -1.595e-7, -5.5e-13, 3.458e-8, 6.729e-8, 9.636e-8, 2.784e-7, 1.497e-7, 1.457e-7, 1.338e-7, 1.146e-7, 3.793e-7, -5.5e-13, -3.458e-8, -6.729e-8, -9.636e-8]
[ -3.934e-7, -1.457e-7, -1.497e-7, -1.457e-7, -1.338e-7, -2.41e-7, -3.458e-8, -5.5e-13, 3.458e-8, 6.729e-8, 2.032e-7, 1.457e-7, 1.497e-7, 1.457e-7, 1.338e-7, 4.014e-7, 3.458e-8, -5.5e-13, -3.458e-8, -6.729e-8]
[ -3.612e-7, -1.338e-7, -1.457e-7, -1.497e-7, -1.457e-7, -3.095e-7, -6.729e-8, -3.458e-8, -5.5e-13, 3.458e-8, 1.17e-7, 1.338e-7, 1.457e-7, 1.497e-7, 1.457e-7, 4.018e-7, 6.729e-8, 3.458e-8, -5.5e-13, -3.458e-8]
[ -3.095e-7, -1.146e-7, -1.338e-7, -1.457e-7, -1.497e-7, -3.612e-7, -9.636e-8, -6.729e-8, -3.458e-8, -5.5e-13, 2.444e-8, 1.146e-7, 1.338e-7, 1.457e-7, 1.497e-7, 3.805e-7, 9.636e-8, 6.729e-8, 3.458e-8, -5.5e-13]
[ -1.024e-6, -3.793e-7, -4.014e-7, -4.018e-7, -3.805e-7, -7.518e-7, -1.402e-7, -4.879e-8, 4.522e-8, 1.368e-7, 4.308e-7, 3.793e-7, 4.014e-7, 4.018e-7, 3.805e-7, 1.092e-6, 1.402e-7, 4.879e-8, -4.522e-8, -1.368e-7]
[ 4.456e-12, 1.65e-12, -3.458e-8, -6.729e-8, -9.636e-8, -3.715e-7, -1.497e-7, -1.457e-7, -1.338e-7, -1.146e-7, -2.932e-7, -5.5e-13, 3.458e-8, 6.729e-8, 9.636e-8, 1.402e-7, 1.497e-7, 1.457e-7, 1.338e-7, 1.146e-7]
[ 9.338e-8, 3.458e-8, 1.65e-12, -3.458e-8, -6.729e-8, -3.246e-7, -1.457e-7, -1.497e-7, -1.457e-7, -1.338e-7, -3.496e-7, -3.458e-8, -5.5e-13, 3.458e-8, 6.729e-8, 4.879e-8, 1.457e-7, 1.497e-7, 1.457e-7, 1.338e-7]
[ 1.817e-7, 6.729e-8, 3.458e-8, 1.65e-12, -3.458e-8, -2.602e-7, -1.338e-7, -1.457e-7, -1.497e-7, -1.457e-7, -3.87e-7, -6.729e-8, -3.458e-8, -5.5e-13, 3.458e-8, -4.522e-8, 1.338e-7, 1.457e-7, 1.497e-7, 1.457e-7]
[ 2.602e-7, 9.637e-8, 6.729e-8, 3.458e-8, 1.65e-12, -1.817e-7, -1.146e-7, -1.338e-7, -1.457e-7, -1.497e-7, -4.036e-7, -9.636e-8, -6.729e-8, -3.458e-8, -5.5e-13, -1.368e-7, 1.146e-7, 1.338e-7, 1.457e-7, 1.497e-7]
>>
Actually I have to get Lrr in terms of theta. Instead I am getting in some values.
Can anyone tell me what is the issue??

 Accepted Answer

Walter Roberson
Walter Roberson on 15 Sep 2021
The int() work out independent of theta.
cos() integrated over 0 to 2*pi is sin(2*pi)-sin(0) which is 0.

6 Comments

then how to do my actual operation
Walter Roberson
Walter Roberson on 15 Sep 2021
Edited: Walter Roberson on 15 Sep 2021
I do not know what your "actual operation" is. All I have is your code.
Your code multiplies three terms of the form A*cos(B*(phi-theta))+C. You can expand out the multiplications to get a series of terms involving multiplying constants and variable numbers of cos(constant*(phi-theta)) terms and a final constant that is the +C terms all multiplied together. And then you can integrate the pieces.
But... those cos() terms integrated over 0 to 2*pi all come out 0. So the only thing left to integrate is the product of the constant terms. That integral is the product times 2*pi. Which you then multiply by constants, giving the values you see, with no theta involved.
I could show you how to expand those cos of differences and how to split the resulting sum, and integrate each piece separately. Some of the terms involve theta. But... as soon as you add the terms together you get 0. Every term is balanced by its negative and all of the theta terms disappear.
show me how to expand and integrate.
take my script and show me how to do that.
thanks in advance
syms theta phi
Nr = 20;
p = 2;
D = 1/(0.6*10^-3);
Q = 1/(40.27*10^-3);
theta_d = 1.1652;
theta_q = 0.4056;
Aog = (2/pi)*(D*theta_d+Q*theta_q);
k = 2;
Ginvi = 0;
for i=2:2:k
Akg = (4*(Q-D)/(pi*i))*(-1)^((i+4)/2)*sin(i*theta_q);
Ginvi = Ginvi+Akg*cos(p*i*(phi-theta));
end
Ginv = vpa((Ginvi+Aog), 4) % Ginv interms of phi and theta
Ginv = 
w = 1;
a = (theta_d)/(Nr/p);
bd = a/2;
bq = ((theta_q)+a)/2;
nr = sym(zeros(1, Nr));
for j = 1:(2*p)
for n = (((j-1)*Nr/(2*p))+2):(j*(Nr/(2*p)))
for i = 1:w
Aord = (a+2*bd)/(2*pi);
Awr = (2/(a*pi*(i^2)))*(cos(i*bd)-cos(i*(a+bd)));
nr(1, n) = nr(1, n)+Awr*cos(i*(phi-theta-((n-j-1)*2*a)-((j-1)*(a+2*bq))));
end
nr(1, n) = Aord+nr(1, n);
end
end
for n = 1:(Nr/(2*p)):Nr
for i = 1:w
Aorq = (a+2*bq)/(2*pi);
Awr = (2/(a*pi*(i^2)))*(cos(i*bq)-cos(i*(a+bq)));
nr(1, n) = nr(1, n)+Awr*cos(i*(phi-theta-(((n-1)/(Nr/(2*p)))*theta_d)));
end
nr(1, n) = Aorq+nr(1, n);
end
NR = vpa(nr, 4) % row matrix interms of phi and theta
NR = 
wr = sym(zeros(1, Nr));
for n = 1:Nr
wr(1, n) = (NR(1, n))-((1/(2*pi*Aog))*int((NR(1, n)*Ginv), phi, 0, 2*pi));
end
WR = vpa(wr, 4) % row matrix interms of theta
WR = 
u = 1.2566*10^-(6);
r = 73.4*10^(-3);
l = 76*10^(-3);
lrr = zeros(Nr, Nr,'sym');
for i = 1:2 %Nr
for j = 1:2 %Nr
expr = NR(i)*WR(j)*Ginv
integrand = expand(expr)
intch = children(integrand);
integratedch = int(intch, phi, 0, 2*pi)
integrated = simplify(sum(integratedch))
lrr(i, j) = (u*r*l)*integrated;
end
end
expr = 
integrand = 
integratedch = 
integrated = 
155.75263992387364410136575171153
expr = 
integrand = 
integratedch = 
integrated = 
57.680941121544403208119689075512
expr = 
integrand = 
integratedch = 
integrated = 
57.680941121544403208119689075512
expr = 
integrand = 
integratedch = 
integrated = 
21.361377696668484197960188572056
Lrr = vpa(lrr, 4) % 20*20 matrix interms of theta
Lrr = 
Your code multiplies three terms of the form A*cos(B*(phi-theta))+C
You can see that in the output variable named expr
You can expand out the multiplications to get a series of terms involving multiplying constants and variable numbers of cos(constant*(phi-theta)) terms and a final constant that is the +C terms all multiplied together
You can see that in the output variable named integrand . Some sin() show up as well.
how to split the resulting sum
You can see that in the variable named intch , which I did not display.
and integrate each piece separately
You can see that in the output variable integratedch . Notice that most of them are 0, and you have a trailing constant, and you have a sin^2 and a cos^2
But... as soon as you add the terms together you get 0
Well, except for the trailing constant. The sin^2 and cos^2 add to 1 times the constant multiplier they both have, with no theta. Add the trailing constant, and the result is a constant independent of theta.
So end up with a numeric value independent of theta, all times u*r*l and since those are independent of theta, you get a numeric value.
The reason you see only a 2 x 2 non-zero value is that it was sufficient to show a couple of examples to prove the point. You can change
for i = 1:2 %Nr
for j = 1:2 %Nr
to
for i = 1:Nr
for j = 1:Nr
to fill in the entire array -- but you will probably want to supress most output when you do that. And since you won't get anything different than the result of using int() on the original expression, it is inefficient to separate the parts like this.
yeah got it.
Thanks for your clear explanation, i will accept your answer.
I increased "w" (no. of harmonics) from 1 to 3, now iam getting interms of theta. I realized of doing this after your explanation thank you.

Sign in to comment.

More Answers (0)

Products

Release

R2021a

Community Treasure Hunt

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

Start Hunting!