How Can I Speed up a loop that solves a pde?
1 view (last 30 days)
Show older comments
Hello,
I am solving the 4th order pde for plate vibration and after discretizing the pde and solving for W(x,y,t) or W(k,m,n+1) as a function of W(k,m,n) and W(k,m,n-1) I get a double for loop like
for k=3:K-3
for m=3:M-3
Wnp1(k,m)=coe(1,3)*Wn(k-2,m)...
+ coe(2,2)*Wn(k-1,m-1) + coe(2,3)*Wn(k-1,m) + coe(2,4)*Wn(k-1,m+1)...
+coe(3,1)*Wn(k,m-2) + coe(3,2)*Wn(k,m-1)+coe(3,3)*Wn(k,m)...
+coe(3,4)*Wn(k,m+1)+coe(3,5)*Wn(k,m+2)...
+coe(4,2)*Wn(k+1,m-1)+coe(4,3)*Wn(k+1,m)+coe(4,4)*Wn(k+1,m+1)...
+coe(5,3)*Wn(k+2,m)...
+cNm1*Wnm1(k,m)+SWW(k,m);
end
end
where coe is a 5x5 matrix with several zeros that contains the coefficients in the finite difference approximation to the pde and Wn(k,m) represents the displacement at position k,m at time n.
I was hoping to find a way to use matrix multiplication that might speed things up but I am stumped. Does anyone have any suggestions?
Thanks,
Dave
Answers (1)
Zoltán Csáti
on 24 Nov 2014
When you did your calculations on paper, you probably wrote the problem as a linear system. Try to create the coefficient matrix in a vectorized manner. Or if you cannot do it, attach an image of the coeff. matrix so that we can see it.
0 Comments
See Also
Categories
Find more on Boundary Conditions in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!