matlab有限差分一维导热,一维导热方程-有限差分法-matlab实现11.docx
最新精品文檔,知識共享!
第五次作業(前三題寫在作業紙上)
一、用有限差分方法求解一維非定常熱傳導方程,初始條件和邊界條件見說明.pdf文件,熱擴散系數α=const,
用Tylaor展開法推導出FTCS格式的差分方程
討論該方程的相容性和穩定性,并說明穩定性要求對求解差分方程的影響。
說明該方程的類型和定解條件,如何在程序中實現這些定解條件。
編寫M文件求解上述方程,并用適當的文字對程序做出說明。(部分由網絡搜索得到,添加,修改后得到。)
function rechuandaopde
%以下所用數據,除了t的范圍我根據題目要求取到了20000,其余均從pdf中得來
a=0.00001;%a的取值
xspan=[0 1];%x的取值范圍
tspan=[0 20000];%t的取值范圍
ngrid=[100 10];%分割的份數,前面的是t軸的,后面的是x軸的
f=@(x)0;%初值
g1=@(t)100;%邊界條件一
g2=@(t)100;%邊界條件二
[T,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid);%計算所調用的函數
[x,t]=meshgrid(x,t);
mesh(x,t,T);%畫圖,并且把坐標軸名稱改為x,t,T
xlabel('x')
ylabel('t')
zlabel('T')
T%輸出溫度矩陣
dt=tspan(2)/ngrid(1);%t步長
h3000=3000/dt;
h9000=9000/dt;
h15000=15000/dt;%3000,9000,15000下,溫度分別在T矩陣的哪些行
T3000=T(h3000,:)
T9000=T(h9000,:)
T15000=T(h15000,:)%輸出三個時間下的溫度分布
%不再對三個時間下的溫度-長度曲線畫圖,其圖像就是三維圖的截面
%穩定性討論,傅里葉級數法
dx=xspan(2)/ngrid(2);%x步長
sta=4*a*dt/(dx^2)*(sin(pi/2))^2;
if sta>0,sta<2
fprintf('\n%s\n','有穩定性')
else
fprintf('\n%s\n','沒有穩定性')
error
end
%真實值計算
[xe,te,Te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid);
[xe,te]=meshgrid(xe,te);
mesh(xe,te,Te);%畫圖,并且把坐標軸名稱改為xe,te,Te
xlabel('xe')
ylabel('te')
zlabel('Te')
Te%輸出溫度矩陣
%誤差計算
jmax=1/dx+1;%網格點數
[rms]=wuchajisuan(T,Te,jmax)
rms%輸出誤差
function [rms]=wuchajisuan(T,Te,jmax)
for j=1:jmax
rms=((T(j)-Te(j))^2/jmax)^(1/2)
end
function[Ue,xe,te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid)
n=ngrid(1);%t份數
m=ngrid(2);%x份數
Ue=zeros(ngrid);
xe=linspace(xspan(1),xspan(2),m);%畫網格
te=linspace(tspan(1),tspan(2),n);%畫網格
for j=2:n
for i=2:m-1
for g=1:m-1
Ue(j,i)=100-(400/(2*g-1)/pi)*sin((2*g-1)*pi*xe(j))*exp(-a*(2*g-1)^2*pi^2*te(i))
end
end
end
function [U,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid)
n=ngrid(1);%t份數
m=ngrid(2);%x份數
h=range(xspan)/(m-1);%x網格長度
x=linspace(xspan(1),xspan(2),m);%畫網格
k=range(tspan)/(n-1); %t網格長度
t=linspace(tspan(1),tspan(2),n);%畫網格
U=zeros(ngrid);
U(:,1)=g1(t);%邊界條件
U(:,m)=g2(t);
U(1,:)=f(x);%初值條件
%差分計算
for j=2:n
for i=2:m-1
U(j,i)=(1-2*a*k/h^2)*U(j-1,i)+a*k/h^2*U(j-1,i
總結
以上是生活随笔為你收集整理的matlab有限差分一维导热,一维导热方程-有限差分法-matlab实现11.docx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中fliter函数,用C语言
- 下一篇: matlab2010alinux下载,L