How Can I Speed up a loop that solves a pde?
조회 수: 1 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Zoltán Csáti
2014년 11월 24일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Boundary Conditions에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!