let A and B be two symmetric matrices of the same order. Develop an algorithm to compute C=A+B,taking advantage of symmetry for each matrix.Your algorithm should overwrite B with C. What is the flop count?
So we know that this means A[i,j]=A[j,i] , B[i,j]=B[j,i], and C[i,j]=C[j,i]=A[i,j]+B[i,j] A and B are symmetrical. This means A+B is symmetrical.
okay, but how to write the pseudo code for the algorithm?
You need to make a loop I think the loops usually use something like for...do
okay..it is correct if i do like this : Input: Dim n for \[a _{ij}\], j>=i and \[b _{ij}\],j>=i where i,j=1,...,n Output : B=C Step 1 : for j=1,...,n for i=1,...,j \[b _{ij}^{new}=a _{ij}+b _{ij}\]
but, i don't have any idea to make this as programming.
I'm thinking... Does your algorithm use the fact that A and B are symmetrical? We should be able to do something like Step 1 : for j=1,...,n for i=1,...,j if i does not equal j, then output cij=cji=aij+bij if i equals j, then cij=aij+bij What do you think of this part? Do you think you can use it? Just trying to help.
yes. it's also correct. but do you know how to make it into pseudo code form?such as using mathematica or MATLAB?
err...nope. It has been way to long. I think I could do it with maple after trail and error. But I don't have maple on this computer.
Owh, it's okay. One more question, do you know how to do calculate flop-count? My friend get \[\frac{ n(n+1) }{ 2 }\] is it correct?
actually that is what I got. You want to know how I figured it out... Ok we want to basically know how many operations we did. And I had to look up the definition of flops. So we want to count the number of operations we did. I counted my diagonal elements which were n. Then for the first row we had (n-1) entries left to calculate second row we had (n-2) entries left to calculate third row we had (n-3) entries left to calculate ....... nth row we had (n-n) entries left to calculate So we had n diagonal entries + (n-1)+(n-2)+...+(n-n) other entries to calculate. So we have n+sum(n-i, i=1..n) Do you understand how I got this so far? We can simplify this to what your friend got.
\[n+\sum_{i=1}^{n}(n-i)\] \[n+\sum_{i=1}^{n}n - \sum_{i=1}^{n}i\] \[n+n(n)-\frac{n(n+1)}{2}\] \[n(n+1)-\frac{n(n+1)}{2}=\frac{2n(n+1)-n(n+1)}{2}=\frac{(n+1)(2n-n)}{2}=\frac{1n(n+1)}{2}\]
I counted each entry we had to calculate. I know the diagonal entries will be repeated once but all other entries will be counted twice. So you know if we had a 3 by 3 symmetric matrix. You find the sum of the operations we did by counting the diagonal entries and the entries above the diagonal. So for a 3 b3 symmetric matrix, we have 3 diagonal entries then the number of entries above that diagonal is (3-1)+(3-2)+(3-3) (3-1)=2 that is how many are above the diagonal in the first row (3-2)=1 that is how many are above the diagonal in the second row (3-3)=0 that is how many are above the diagonal in the 3rd row Now I ignored everything below the diagonal because we already performed those operations above the diagonal. We were suppose to use the fact that the matrix was symmetric after all.
So using this we have 3+(3-1)+(3-2)+(3-3) or you can use the simplified formula 3(3+1)/2
Makes sense how I found the flops?
yes. i'm still trying to understand what you explain. =)
[ a11 a12 a13] [ a22 a23] [ a33] Or you could have looked at is in much simpler way lol 3+2+1 =3(3+1)/2
for a 4by 4, we could have said (4+3+2+1)
I made it more complicated than it should have been Do you see what I mean so for an n by n, we do 1+2+...+n
But either way the formula can be simplified to that n(n+1)/2 one
ohhh..now i understand already how to get n(n+1)/2. it's simple but quite tricky. =)
|dw:1381169885319:dw| 1+2+...(n-1)+n \[\sum_{i=1}^{n}i=\frac{n(n+1)}{2}\]
Join our real-time social learning platform and learn together with your friends!