Borrar filtros
Borrar filtros

Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

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

1 visualización (últimos 30 días)
Udit Srivastava
Udit Srivastava el 12 de Oct. de 2016
Cerrada: MATLAB Answer Bot el 20 de Ag. de 2021
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.

Respuestas (1)

KSSV
KSSV el 13 de Oct. de 2016
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 comentarios
Udit Srivastava
Udit Srivastava el 13 de Oct. de 2016
Editada: Udit Srivastava el 13 de Oct. de 2016
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 el 13 de Oct. de 2016
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.

La pregunta está cerrada.

Community Treasure Hunt

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

Start Hunting!

Translated by