各位蟲(chóng)友們,你們好!由于我對(duì)編程軟件運(yùn)用的不是很熟悉,希望得到各位的幫助,我編出來(lái)的程序怎么都運(yùn)行不出來(lái) 不知道是為什么,希望各位高手能指點(diǎn)一下,我要求解的方程是(見(jiàn)圖片),如果哪位能幫上我,讓我的程序能運(yùn)行出結(jié)果來(lái)的話,我將用所有的金幣來(lái)酬謝,若能給出有用意見(jiàn)的也行,我將酌情給金幣,謝謝!
程序如下
function heat_conduction() %一維齊次熱傳導(dǎo)方程
options={'空間半徑ro','空間點(diǎn)數(shù)N' ,'時(shí)間點(diǎn)數(shù)M','密度p','比熱c','導(dǎo)熱系數(shù)s',‘'對(duì)流傳熱系數(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)建輸入對(duì)話
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;%空間步長(zhǎng)
r=0 r:ro;
r=r';
ot=Fo*or^2/a;%時(shí)間步長(zhǎng)
tm=M*ot;%熱傳導(dǎo)的總時(shí)間tm
t=0 t:tm;
t=t';
%計(jì)算初值和邊值
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時(shí)的初始溫度
T(1, =To;%r=0時(shí)的溫度值
T(N+1, =Te;%r=r0時(shí)的溫度
%用差分法求出溫度T與半徑r、時(shí)間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ù)值解法求助]()
需求解的方程 |