我做了一个冷却金属球的项目。现在我想在Matlab中对球体表面的温度进行建模。我有四个urs(r,t),我想在r = 1时绘制。我如何策划这个?到目前为止我已经
了R=1
t=0;
N=1000;
T0=-10;
T1=10;
a=1.3*(10^-7);
u=T0;
[x,y,z]= meshgrid(0:.1:R, 0:.1:R, 0:.1:R);
S= sqrt(x.^2+ y.^2 + z.^2);
r=1
for k= 1:1:N;
La_k= (k.*(pi)/R).^2;
r_k=(r.^(-1)).*sin(sqrt(La_k).*r);
u= u+ ((T1-T0)^2) * ((-1)^(k+1)) * (R/(k*(pi))) * exp(-a.*La_k.*t)
end
surf(x,y,u)
colorbar
colormap(jet)
答案 0 :(得分:0)
您可以记录u
随时间的演变。
由于温度仅取决于半径,因此对于每个时间范围,您必须将单个温度值转换为surf
可接受的矩阵,即与{{CData
具有相同大小的x,y,z
1}}。
r=1;
t=0;
N=1000;
T0=-10;
T1=10;
a=1.3e-7;
% evaluate u(r,t) at each time step, and record
[x,y,z]= sphere(100);
u = zeros(N,1);
u(1) = T0;
for k = 2:N
La_k= (k*pi/r)^2;
r_k=(r^-1).*sin(sqrt(La_k)*r);
u(k) = u(k-1)+ (T1-T0)^2 * (-1)^(k+1) * r_k/(k*pi) * exp(-a*La_k*t);
end
% create dummy plot
hs = surf(x,y,z,nan(size(z)));
colorbar
colormap(jet)
title(' ')
% fix color scale so you can see color change along with time
hs.Parent.CLim = [min(u),max(u)];
% iterate over time and show temperature with color
for kk = 1:N
hs.CData = ones(size(z))*u(kk);
title(sprintf('t = %d', kk))
drawnow
pause(0.01)
end