Температура не змінюється в моєму коді для одноденного рівняння тепла: явна схема


0

Я намагаюся вирішити наступне 1-D рівняння тепла з наданими граничними умовами, використовуючи явну схему на Matlab. Я намагався побудувати результати, але зрозумів, що моя температура не змінюється. Як я можу вирішити проблему і включити граничну умову?

clc; clear all; close all; 

a=0.45*10^-5;
U_Initial= 30+273.15; %converting to kelvin
U_Wall = 20+273.15; %converting to kelvin
U_BC = 100+273.15; %converting to kelvin
dt= 0.01;
dr= 1;
Lambda= (a*dt)/(dr)^2;
t=1:dt:3600;
r= 3:dr:100;
U = zeros(length(r),length(t));
U(:,1)= U_Initial;
U(1,:)=U_BC;
U(end,:)=U_Wall;
for j= 1:1:length(t)-1
   for i=2:1:length(r)-1
     U(i,j+1)= U(i,j)+Lambda*((dr/r(i))*(U(i+1,j)-U(i-1,j))+ (U(i+1,j)-2*U(i,j)+U(i-1,j)));
   end
end

Відповіді:


1

Ця зміна стаккерів насправді не прагне вирішити ці проблеми, як у домашніх умовах, безпосередньо. Однак я можу запропонувати деякі підказки щодо того, як діяти далі.

Ви впевнені в масштабі aта lambdaправильності? Коли я призначаю a=0.1, розвивається розумний профіль. Розгляньте проблему, що не має розміру, щоб змінні масштабували від 0 до 1. Ці помилки, як правило, зникають, коли ви формалізуєте математику таким чином. Отримавши нерозмірне рішення, можна легко змінити масштаб.

Майте на увазі, що MATLAB також має вбудовані PDE-рішення. Ви можете почати тут, щоб прочитати загальний підхід і отримати проблему в потрібній формі, а потім скористатися pdepe.

У бічній примітці знайдіть угору, linspace()а не використовувати оператор двокрапки :для діапазонів з не цілими кроками. Оператор товстої кишки залишить останній крок у таких випадках, як 1:0.6:2виробництво [ 1 1.6 ]. Зауважте, що 2цього немає, що, мабуть, не те, що ви задумали.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.