2018数模国赛a题





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function heat_conduction()
options={'L','N' ,'M','alfa','lambda(0.5)',};
topic='seting';
lines=1;
def={'5','100','1000','5.57467976468964e-10','0.5'};
h=inputdlg(options,topic,lines,def);
L=eval(h{1});
N=eval(h{2});
M=eval(h{3});
alfa=eval(h{4});
lambda=eval(h{5});.5
%***************************************************
h=L/N;%????
z=0:h:L;
z=z';
tao=lambda*h^2/alfa;%????
tm=M*tao;%tm
t=0:tao:tm;
t=t';
T=zeros(N+1,M+1);
Ti=init_fun(z);
To=border_funo(t);
Te=border_fune(t);
T
T(1,:)=To;
T(N+1,:)=Te;
for k=1:M
m=2;
while m<=N
T(m,k+1)=lambda*(T(m+1,k)+T(m-1,k))+(-2*lambda+1)*T(m,k);
m=m+1;
end;
end;
for i=1:M+1
X(:,i)=z;
end;
for j=1:N+1
Y(j,:)=t;
end
mesh(X,Y,T);
view([1 -1 1]);
xlabel('Z');
ylabel('t');
zlabel('T');

function y=init_fun(z)%
y=48.08;
return

function y=border_funo(t)%z=0
y=48.08;
return

function y=border_fune(t)%z=L
y=48.083;
return