importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.linalgimportsolve# Finite element solution setupN=5h=1/(N+1)A=np.zeros((N,N))u=np.zeros(N)x1=np.linspace(0,1,N+2)b=np.zeros(N)A[0,0]=2/3*h-2/hA[1,0]=h/6+1/hA[N-1,N-1]=2/3*h-2/hA[N-2,N-1]=h/6+1/hforiinrange(1,N-1):A[i,i]=2/3*h-2/hA[i-1,i]=h/6+1/hA[i+1,i]=h/6+1/hb=-(np.arange(N)+1)*h**2u=solve(A,b)us1=np.zeros(N+2)us1[1:-1]=u# Exact solutionNex=100hex=1/(Nex+1)xex=np.linspace(0,1,Nex+2)uex=-xex+np.sin(xex)/np.sin(1)# Finite element solution with larger NN=11h=1/(N+1)A=np.zeros((N,N))u=np.zeros(N)x2=np.linspace(0,1,N+2)b=np.zeros(N)A[0,0]=2/3*h-2/hA[1,0]=h/6+1/hA[N-1,N-1]=2/3*h-2/hA[N-2,N-1]=h/6+1/hforiinrange(1,N-1):A[i,i]=2/3*h-2/hA[i-1,i]=h/6+1/hA[i+1,i]=h/6+1/hb=-(np.arange(N)+1)*h**2u=solve(A,b)us2=np.zeros(N+2)us2[1:-1]=u# Plottingplt.plot(xex,uex,'-',x1,us1,'-.',x2,us2,'--')plt.legend(['Exact','N=6','N=12'])plt.show(block=False)# Save datat1=np.column_stack((xex,uex))t2=np.column_stack((x1,us1))t3=np.column_stack((x2,us2))withopen("FEGalerkin1.dat","w")asf:np.savetxt(f,t1,fmt='%f',header="Exact Solution")f.write("\n\n")np.savetxt(f,t2,fmt='%f',header="Finite Element N=6")f.write("\n\n")np.savetxt(f,t3,fmt='%f',header="Finite Element N=12")