各位蟲友們,你們好!由于我對編程軟件運用的不是很熟悉,希望得到各位的幫助,我編出來的程序怎么都運行不出來 不知道是為什么,希望各位高手能指點一下,我要求解的方程是(見圖片),如果哪位能幫上我,讓我的程序能運行出結(jié)果來的話,我將用所有的金幣來酬謝,若能給出有用意見的也行,我將酌情給金幣,謝謝!
程序如下
function heat_conduction() %一維齊次熱傳導(dǎo)方程
options={'空間半徑ro','空間點數(shù)N' ,'時間點數(shù)M','密度p','比熱c','導(dǎo)熱系數(shù)s',‘'對流傳熱系數(shù)h',};
topic='seting';
lines=1;
def={'0.032','100','1000','1714.8','1.48','0.535','61.27'};
b=inputdlg(options,topic,lines,def);%創(chuàng)建輸入對話
ro=eval(b{1});%eval執(zhí)行字符串
N=eval(b{2});
M=eval(b{3});
p=eval(b{4});
c=eval(b{5});
s=eval(b{6});
h=eval(b{7});
%***************************************************
Fo=s/(p*c);
or=ro/N;%空間步長
r=0 r:ro;
r=r';
ot=Fo*or^2/a;%時間步長
tm=M*ot;%熱傳導(dǎo)的總時間tm
t=0 t:tm;
t=t';
%計算初值和邊值
T=zeros(N+1,M+1);
Ti=init_fun(r);%fun為目標(biāo)函數(shù)的表達(dá)式字符串或MATLAB自定義函數(shù)的函數(shù)柄
To=border_funo(t);
Te=border_fune(t);
T(:,1)=Ti;%t=0時的初始溫度
T(1, =To;%r=0時的溫度值
T(N+1, =Te;%r=r0時的溫度
%用差分法求出溫度T與半徑r、時間t的關(guān)系
for k=1:M
m=2;
while m<=N&&Fo<=(ro/(2*r+or))
T(m,k+1)=(Fo+(or*Fo)/ro)*(T(m+1,k)+(1-(or*Fo)/r+2*Fo)*T(m,k))+Fo*T(m-1,k);
m=m+1;
end;
end;
%設(shè)置立體網(wǎng)格
for i=1:M+1
X(:,i)=r;
end;
for j=1:N+1
Y(j, =t;
end
mesh(X,Y,T);
view([1 -1 1]);
xlabel('r');
ylabel('t');
zlabel('T');
function y=init_fun(r)%初值條件t=0
y=14+t.*0
return
function y=border_funo(t)%r=0的邊界條件
for k=1:M
m=1;
while Fo<=0.5
T(m+1,k+1)=(1-2Fo)*T(m+1,k)+2Fo*T(m,k);
end;
end;
return
function y=border_fune(t)%r=ro的邊界條件
Tf=40+t.*0;
A=(h*ot)/(p*c*or);
for k=1:M
m=N;
while (1-A-Fo)>=0
T(m+1,k+1)=A*Tf+(1-A-Fo)*T(m+1,k))+Fo*T(m,k);
end;
end;
return
![一維熱傳導(dǎo)偏微分方程的數(shù)值解法求助]()
需求解的方程 |