偏微分方程数值解法,要考试了,急需高手解答!要尽快!请用fortran程序
发布网友
发布时间:2022-05-05 10:30
我来回答
共2个回答
热心网友
时间:2023-10-05 10:59
我给你一点提示吧;这是一维DIFFUSION方程;可用SEPARATION OF VARIABLE;答案是U(X,T)=SUM Cm cos(mX+Dm) EXP(-m*m t);而SUM 是无限级数;m=0,1,2,3,...无穷大.
++++++++++++++++
也可以用常微分方程做;H=0.5;这里只用三点;U0;U1;U2;J为2;由边界条件;U1-U0=0.5U0;U0=0.6666666U1;U2-U1=-0.5U2;U2=0.6666666U1;故
dU1/dt=(U0-2U1+U2)/.25=-2.666664U1;得UI(N+1)-U1(N)=-2.666664U1(N)*dt;设dt=0.1;则UI(N+1)-U1(N)=-0.2666664U1(N);可以用EXCEL 做了
U1(N+1)=U1(N)-0.2666664U1(N)=0.7333336U1(N);
这是一个等比级数;U1(0)=1;U1(1)=0.7333336;...,U1(N+1)=.7333336^N
*****************************************************************
program heat
dimension u(81)
integer*4 m
c J0(x)=0 for x=2.405;5.520;8.654;11.792;14.931
c J1(x)=0 for x=0;3.832;7.016;10.173;13.324...
n=3
h=1./(n-1)
dt=0.5*h*h/2.
j=n
m=10
do 1 i=1,n
1 u(i)=1.
do 2 k=1,m
u(1)=(4.*u(2)-u(3))/(2.*h+3.)
u(n)=(-u(n-2)+4.*u(n-1))/(2.*h+3.)
do 3 i=2,n-1
u(i)=u(i)+(u(i+1)+u(i-1)-2.*u(i))*dt/h/h
3 continue
write(6,'(1x,6e13.6)')(u(i),i=1,n)
if(u(n/2+1).le.1.e-6)write(6,'(1x,i5)')k
if(u(n/2+1).le.1.e-6)stop
2 continue
stop
end
_____________________________
附注:这里r=dt/h/h<0.5;你可以把N=11,那DT步长是0.5/200=0.0025;把M=32767;
你要指定差分用向前;不能用隐性;又要指定边界处理差分方式;还要研究报告;用富里
艾隐定分析差分格式;因边界条件关系;r=1/2刚好在不隐定的一边 ;这是一维热传导方程;上百度找找看;你也可修改这程序;符合你需要的
热心网友
时间:2023-10-05 10:59
楼上写的蛮好的