#matlab #ode #temperature #pde
#matlab #ода #температура #pde
Вопрос:
Я пытаюсь решить 2D-уравнение теплопроводности, и я решаю с помощью ode15, мне было указано, что уравнение dT / dt необходимо будет скорректировать. Можно ли было бы получить какие-то рекомендации о том, как мне следует это сделать?
Я последовал этому примеру из Matlab: https://uk.mathworks.com/matlabcentral/fileexchange/59916-simple-heat-equation-solver?s_tid=srchtitle
Как может
du = alpha/dx^2*(u(1:end-2,2:end-1)-2*u(2:end-1,2:end-1) u(2:end-1,3:end)...
u(2:end-1,1:end-2)-2*u(2:end-1,2:end-1) u(3:end,2:end-1));
du = du(:);
часть функции getRHS из примера может быть изменена, чтобы ограничить температуру, до которой она поднимается?
Ответ №1:
просто добавьте его перед ode в качестве порога thr
u0
, например:
thr=0.5; % just some # I picked,
u0(u0>thr)=thr;
Комментарии:
1. Привет, я пробовал код, и, похоже, он выводит только ограничивающую температуру для меня? Извините…
2. играйте с пороговым значением. используйте, например
inf
. это ничего не должно делать. если это не так, то вы не реализовали это так, как я предложил…3. Привет, я понял, что забыл «;» в коде, который я ввел. Однако он все еще не работал. Я также попытался просто скопировать и вставить предложенный вами код, и вот попытка: imgur.com/a/ok66z99
4. вы понимаете, что в этом примере поток тепла будет только уменьшаться в зависимости от времени? поэтому, когда вы ограничиваете температуру при t = 0 (что в примере по ссылке на самом деле
u0(u0>thr)=thr;
находится за пределами функции getRHS), она будет ограничена, но затем только уменьшится. Я отредактировал свой ответ.