FEM HW2

Embed Size (px)

DESCRIPTION

hw2

Citation preview

Program to solve given equation using Galerkin Method ( Matlab )function [approx,exac,err]=odegalerkin(poly,bc,n) syms x;a2=poly(1);a1=poly(2);a0=poly(3);g=poly(4); x1=bc(1); phi1=bc(2); x2=bc(3); phi2=bc(4); phi=(phi2-phi1)/(x2-x1)*(x-x1)+phi1; phider1=diff(phi);phider2=diff(diff(phi));if lt(x1,x2) x_inf=x1; x_sup=x2; y_inf=phi1; y_sup=phi2;else x_inf=x2; x_sup=x1; y_inf=phi2; y_sup=phi1;endfor i=1:n, psi(1,i)=sin(i*pi*x); endif length(bc)==4 psi=(x-x1)*(x-x2)*psi;endpsider1=diff(psi);psider2=diff(diff(psi));psitrans=transpose(psi);E1=a2*psider2+a1*psider1+a0*psi;E2=a2*phider2+a1*phider1+a0*phi-g;c=-(int(psitrans*E1,x,x1,x2))\int(psitrans*E2,x,x1,x2);e=E1*c+E2; approx=phi+psi*c;x=(x_inf):.01:(x_sup);y_approx=subs(approx);clear x;syms x;if length(bc)==4 exac=dsolve('a2*D2y+a1*Dy+a0*y=g','y(x1)=phi1','y(x2)=phi2','x');endexac=subs(exac);x=(x_inf):.01:(x_sup);y_exac=subs(exac); for i=1:n err_l2=y_exac-y_approx; err_square=(err_l2).^2; L2=sqrt(int(err_square,0,1)); end plot(x,y_approx),gridhold ontitle('\fontsize{20} Galerkin Method')xlabel('x')ylabel('\Phi')plot(x,y_exac,'-o','Color','k'),gridlegend('Approximative solution','Exact solution')hold offloglog(n,L2) grid on The plot below is for N=5