![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/272463/image.png)
2D Temperature Distribution
2 views (last 30 days)
Show older comments
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/272458/image.png)
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);
Accepted Answer
darova
on 18 Feb 2020
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)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/272464/image.png)
2 Comments
darova
on 21 Feb 2020
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)
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!