MATLAB Solve Double Sum in MATLAB: Q=ƩƩxixjaij

  • Thread starter Thread starter adeeyo
  • Start date Start date
  • Tags Tags
    Matlab Sum
AI Thread Summary
The discussion revolves around solving a double summation expression in MATLAB, specifically Q=ƩƩxixjaij for i=1:n and j=1:n. The original poster, adeeyo, seeks assistance after encountering discrepancies between their MATLAB code and a manual calculation. The provided MATLAB code incorrectly calculates Q due to not initializing Q to zero and using the wrong summation approach. A suggestion is made to set Q=0.0 before the loops and to update Q using the correct formula: Q=Q+x(i)*x(j)*a(i,j). Additionally, an optimization is proposed to multiply x(i) outside the inner loop for efficiency. This correction is expected to yield the accurate result for the double summation.
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
What do mean by solve? What you have written is simply an expression. To solve something you need to describe what is known and what you are trying to find.
 
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
 

Similar threads

Replies
10
Views
3K
Replies
2
Views
3K
Replies
1
Views
2K
Replies
6
Views
2K
Back
Top