一维抛物线偏微分方程数值解法(1)理论
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
籍可以参看孙志忠:偏微分方程数值解法)解一维抛物线型方程(Ut-Uxx=0,0
0)U(x,0)=e^x,0<=x<=1,U(0,t)=e^t,U(1,t)=e^(1+t),00)%不用解线性方程组,由下一层(时间层)的值就直接得到上一层的值%m,n为x,t方向的网格数,例如(2-0)/0.01=200;为精确解为误差,p%eu=zeros(n+1,m+1);x=0+(0:m)*h1;t=0+(0:n)*h2;for(i=1:n+1)u(i,1)=exp(t(i));u(i,m+1)=exp(1+t(i));endfor(i=1:m+1)u(1,i)=exp(x(i));end(i=1:n+1)for(j=1:m+1)forf(i,j)=0;endendr=h2/(h1*h1);%此处r=a*h2/(h1*h1);a=1要求r<=1/2差分格式才稳定for(i=1:n)for(j=2:m)u(i+1,j)=(1-2*r)*u(i,j)+r*(u(i,j-1)+u(i,j+1))+h2*f(i,j);endendfor(i=1:n+1)for(j=1:m+1)p(i,j)=exp(x(j)+t(i));e(i,j)=abs(u(i,j)-p(i,j));endend或者:function[uepxtk]=paowuxianyiweixq(h1,h2,m,n,kmax,ep)%解抛物线型一维方程向前欧拉格式(Ut-aUxx=f(x,t),a>0)%kmax为最大迭代次数%m,n为x,t方向的网格数,例如(2-0)/0.01=200;%e为误差,p为精确解symstemp;u=zeros(n+1,m+1);x=0+(0:m)*h1;t=0+(0:n)*h2;for(i=1:n+1)u(i,1)=exp(t(i));u(i,m+1)=exp(1+t(i));endfor(i=1:m+1)u(1,i)=exp(x(i));end(i=1:n+1)forfor(j=1:m+1)f(i,j)=0;endenda=zeros(n,m-1);r=h2/(h1*h1);%此处r=a*h2/(h1*h1);a=1要求r<=1/2差分格式才稳定for(k=1:kmax)for(i=1:n)for(j=2:m)temp=(1-2*r)*u(i,j)+r*(u(i,j-1)+u(i,j+1))+h2*f(i,j);a(i+1,j)=(temp-u(i+1,j))*(temp-u(i+1,j));u(i+1,j)=temp;endenda(i,j)=sqrt(a(i,j));(k>kmax)ifbreak;endif(max(max(a))>surf(x,t,u)>>shadinginterp;>>xlabel('x');ylabel('t');zlabel('u');');数值解一维抛物线方程>>title('向前欧拉法surf(x,t,p)shadinginterp;>>xlabel('x');ylabel('t');zlabel('p');>>title('一维抛物线方程向前欧拉法精确解')同理:plot(x,u)>>xlabel('x');ylabel('u');>>title('固定时间改变xu与x的关系数值解')[puext]=pwxywxq(0.1,0.01,10,100);surf(x,t,u)Warning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.NotrenderingWarning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.NotrenderingWarning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.NotrenderingWarning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.Notrendering>>surf(x,t,e)Warning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.NotrenderingWarning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.NotrenderingWarning:Axislimitsoutsidefloatprecision,useZBufferorPaintersinstead.Notrendering>>所以空间步长与时间步长需要满足上面所说的关系继续减小时间步长[puext]=pwxywxq(0.1,0.001,10,1000)此为欧拉向前差分法,向后差分法请参看下一篇文章程序及图片))2(附matlab:一维抛物线偏微分方程数值解法(我近期在做这个,有兴趣可以一起学习百度账号:草随风逝