2D Temperature Distribution

4 次查看(过去 30 天)
I need to plot the temperature distribution for the square cross-section of a bar, 3 sides are fixed at a temperature of 283 K, the fourth side at 508 K and the initial temperature of the interior is 307 K everwhere. The analytical solution is as follows:
L and W are both equal to 1, and the summation is done from n =1 to n =100. Here is what I have done so far, I've tried to make 100 10 x 10 grids and populate each element with values for theta and then sum all the grids to give a final 10 x 10 grid for the temperature distribution. I don't really understand how to execute this with for loops, thanks for any help.
X = 10;
Y = 10;
theta1 = zeros (X,Y);
for n =1:100
for X1 = 1:X
for Y1 = 1:Y
theta1(n,X1,Y1)=(2/pi)*(((-1)^(n+1)+1)/(n))*sin(n*pi*X1/L)*(sinh(n*pi*Y1/L))/(sinh(n*pi*W/L));
end
end
end
theta1sum = sum(theta1);

采纳的回答

darova
darova 2020-2-18
I made some changes in your code
X = 10;
Y = 10;
theta1 = zeros(X,Y);
for n =1:100
theta1 = theta1 + (2/pi)*(((-1)^(n+1)+1)/(n))*sin(n*pi*X1/L).*(sinh(n*pi*Y1/L))./(sinh(n*pi*W/L));
end
surf(X,Y,theta1)
Pay attention to bit-wise operators (i highlighted in red)
  2 个评论
Jonathan Bird
Jonathan Bird 2020-2-21
Thanks for your help, unfortunately I get the following error message.
Error using surf (line 71)
Data dimensions must agree.
Error in HEAT_TRANSFER_CW (line 40)
surf(X,Y,theta1)
darova
darova 2020-2-21
Try
X = 10;
Y = 10;
[X1,Y1] = meshgrid(1:X,1:Y);
theta1 = zeros(X,Y);
for n =1:100
theta1 = theta1 + (2/pi)*(((-1)^(n+1)+1)/(n))*sin(n*pi*X1/L).*(sinh(n*pi*Y1/L))./(sinh(n*pi*W/L));
end
surf(X,Y,theta1)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Physics 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by