1.划分网格
把[0,2]×[0,1]的区域划分成M×N个点,即离散的xi=2i/M,yj=j/N,i=0,...,M-1,j=0,...,N-1
在网格上的u的值就是uij,就是问题的解
2.离散方程
uxx=2uij-ui-1,j-ui+1,j,uyy=2uij-ui,j-1-ui,j+1(这就是五个点)
在第i,j个点的方程为(i,j≠0,M,N,即不在边界上,有(M-2)×(N-2))
-(2uij-ui-1,j-ui+1,j)-(2uij-ui,j-1-ui,j+1)=(pi^2-1)*e^(2i/M)*sin(pi*(j/N))
边界处用边界条件(有M×2+2(N-2)个,保证一起有MN个方程求解MN个未知量)
uij=(pi^2-1)*e^(2i/M)*sin(pi*(j/N))
那么整理就是一个矩阵方程Ax=b的形式,这里还有一个矩阵拉直的问题,因为上面写出来的是一个矩阵方程,而不是线性方程组。一般是按列拉直。
3.求解这个方程就OK了,这部才是matlab干的活
不负责任的告诉你可以这么求,x=inv(A)*b就OK啦。
因为离散点多了,matlab是解不了大规模的。加速算法就要看结构了
主要问题是列方程,系数矩阵A和右端b都有特殊结果吧,自己写吧