2011-11-29 4 views
0

Я работаю над этим кодированием для своего класса теплопередачи. число, предполагают, чтобы быть и другие уравнения, но я заменил их с числами, чтобы просто этоMatlab кодирование справки мануфактура

l=.2; 

w=.2; 

dx=.05; 

dy=.05; 

k=400; 

q=500; 

Nx = (l/dx+1); %nodes in the x direction 

Ny = (w/dy+1); %nodes in the y direction 

T=zeros(Nx,Ny); 

for m = (1:Nx) %node counter in x nodes 

    for n = (1:Ny) %node counter in y nodes 

     if n==1; %left side 
      T(m,n)=50; 

     elseif m==1 && n<Ny;%Heat Flux 

      T(m,n)=60; 

     elseif m>=2 && n==Ny && m<Nx; %insulated, right side 
      T(m,n)=70; 

     elseif n>=2 && n<=Ny-1 && m==Nx ; %insulated, bottom side 

      T(m,n)=80; 

     elseif m>=((.325*l)/dx)+1 && m<=((.675*l)/dx)+1 && n>=((.325*w)/dy)+1 && n<= 
((.675*w)/dy)+1; 

      T(m,n) = 400;%center or steam 
     elseif m>1 && m<Nx && n>1 && n<Ny 

      T(m,n) = 90; 

     elseif m==1 && n==Ny; 

      **T(m,n)=T(m+2,n)/2;%**<-------------------this wont work properly**** 

     elseif n==Nx && m==Ny; 

      T(m,n)= 110; 



     end 

    end 

end 

Я не знаю, почему он не будет выбирать правильное значение и разделить его на 2, а это говорит ответ 0 когда предполагается, что T (2,5) равняется 70/2 = 35?

T = 

    50 60 60 60  0 
    50 90 90 90 70 
    50 90 400 90 70 
    50 90 90 90 70 
    50 80 80 80 110 

любая помощь будет оценить его

Благодаря

ответ

1

Как я вижу,

Вы пытаетесь получить доступ к элементу матрицы, которая до сих пор инициализирован к нулю. T Матрица равна нулю (5,5).

И условие: if m==1 && n==Ny выполняется в начале итерации, когда m = 1 и n = 5 и T (2,5) = 0.

Так у вас есть T (1,5) = 0

Итак, я хотел бы предложить вам отлаживать код и проверять содержание Matrix M в конце каждой итерации.

1

Причина, по которой T (1,5) равна нулю, заключается в том, что указанная строка кода выполняется в точке, когда T (3,5) все еще задано равным нулю - она ​​еще не заполнена значением 70, и, следовательно, Т (1,5) устанавливается на 0/2 = 0.

Если цикл через значения m в обратном порядке, путем изменения кода, чтобы быть

for m = (Nx:-1:1) 

можно найти что T (3,5) теперь задано равным 70 до того, как T (1,5) установлено, а T (1,5) теперь правильно установлено на 35.

Смежные вопросы