Тепловая карта на сфере - PullRequest
       7

Тепловая карта на сфере

0 голосов
/ 26 апреля 2018

Я сделал проект, в котором я охлаждаю металлическую сферу.Теперь я хочу смоделировать температуру на поверхности сферы в Matlab.У меня есть серия фурье u (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)

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете записать эволюцию u с течением времени.Поскольку температура зависит только от радиуса, для каждого таймфрейма вам придется преобразовать одно значение температуры в матрицу, которая приемлема для surf, то есть для CData, который имеет тот же размер, что и x,y,z.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...