Solve Double Sum in MATLAB: Q=ƩƩxixjaij

  • Context: MATLAB 
  • Thread starter Thread starter adeeyo
  • Start date Start date
  • Tags Tags
    Matlab Sum
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
5 replies · 18K views
adeeyo
Messages
20
Reaction score
0
Hi,
I have this double summation expression to solve as part of MATLAB code I am writing. I have searched MATLAB no syntax that can do it. Please assist.

Q=ƩƩxixjaij i.e double sum of xi xj aij, i=1:n, j=1:n

Please assist me

Thanks
adeeyo
 
Physics news on Phys.org
Thanks Mathman,

What I mean is this. I wrote a MATLAB code for that expression and manual as seen below but got different answer. I don't know what is wrong either with MATLAB code or manual expression or both.

Q=∑∑xixjaij the first sigma has i=1:n, the second sigma j=1:n

for i=1:n
for j=1:n
Q=sum(sum(x(i).*x(j).*(a(i, j))));
end
end



Mannual

Q=x(1)*x(1)*(a(1)*a(1))+x(1)*x(2)*(a(1)*a(2))+x(1)*x(3)*a(1)*a(3)+x(2)*x(1)*a(2)*a(1))+x(2)*x(2)*a(2)*a(2))+x(2)*x(3)*a(2)*a(3)*+x(3)*x(1)*a(3)*a(1))+x(3)*
x(2)*a(3)*a(2))+x(3)*x(3)*a(3)*a(3));

Thanks
 
From what I recall about coding: You need to set Q = 0.0 before starting. Then the operating instruction should be Q=Q+x(i)*x(j)*a(i, j). To save a little time you could multiply by x(i) outside the j loop.
 
if a is nxn and x is nx1 try Q = sum(sum(a.*repmat(x,[1 n]).*repmat(x',[n 1])))
 
Q=sum(sum(x(i).*x(j).*(a(i, j))));

This line is what is wrong with your code. Let's consider what happens on each loop:
i=1, j=1:
sum(sum(x(1)*x(1)*a(1,1))) = x(1)*x(1)*a(1,1) so Q=x(1)*x(1)*a(1,1)

i=1,j=2:
sum(sum(x(1)*x(2)*a(1,2))) = x(1)*x(2)*a(1,2) so Q=x(1)*x(2)*a(1,2) NOT x(1)*x(1)*a(1,1)+x(1)*x(2)*a(1,2)

If you replace the line with
Q=Q+x(i)*x(j)*a(i,j)
you should get the right answer