フィルターのクリア

Info

この質問は閉じられています。 編集または回答するには再度開いてください。

searching for a better approach for solving a 3-D matrix

1 回表示 (過去 30 日間)
Udit Srivastava
Udit Srivastava 2016 年 10 月 12 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
Hey guys,
I need to solve the following equation.
u(i,j,k+1)=(2*dt/3).*(u(i,j,k).*(u(i+1,j,k)-u(i-1,j,k))./(2*dr)+u(i,j,k-1).*(u(i,j+1,k-1)-u(i,j-1,k-1))./(2*dz));
where dt and dr are some known constants.
The approach I can think of is given below:
for i=2:n, for j=2:n, for k=2:n
u(i,j,k+1)=(2*dt/3).*(u(i,j,k).*(u(i+1,j,k)-u(i-1,j,k))./(2*dr)+u(i,j,k-1).*(u(i,j+1,k-1)-u(i,j-1,k-1))./(2*dz));
end, end, end
Is there any better approach to solve the same equation?
Please help me with this problem and suggest me a better approach, for my approach is not good enough for very long equations including 3 subscripted independent variables i, j, k where each denote r, z and time(t) components respectively, working in cylindrical coordinate system.
Thank you.
Udit Srivastava.

回答 (1 件)

KSSV
KSSV 2016 年 10 月 13 日
How about?
i = 2:n ;
j = 2:n ;
for k=1:n
u(i,j,k+1)=(2*dt/3).*(u(i,j,k).*(u(i+1,j,k)-u(i-1,j,k))./(2*dr)+u(i,j,k-1).*(u(i,j+1,k-1)-u(i,j-1,k-1))./(2*dz));
end
  2 件のコメント
Udit Srivastava
Udit Srivastava 2016 年 10 月 13 日
編集済み: Udit Srivastava 2016 年 10 月 13 日
Sir, I actually want to remove the 'k' term from my equation and adjust it somewhere else so that the equation works like a 2-D matrix, making it look less cumbersome, like putting an outer loop on 'k' or something like that. Is it anyway possible?
KSSV
KSSV 2016 年 10 月 13 日
It is possible...you have to save only two steps of k i.e u(i,j,1) and u(i,j,2). Every time you have to save the result into a file.

この質問は閉じられています。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by