Bài tập lớn môn Toán Chuyên ngành về Phương pháp phần tử hữu hạn FEM dành cho sinh viên các ngành Cơ khí, kỹ thuật. Sử dụng Matlab viết chương trình giải phương trình vi phân bằng việc sử dụng phương pháp phần tử hữu hạn. Chương trình được viết ngắn gọn, dễ hiểu. Có sử dụng vẽ đồ thị để biểu diễn nghiệm chính xác và nghiệm xấp xỉ của bài toán.
Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười I-Chọn toán: Cho toán: u '' 4u x u (0) 0, u (1) 1 (0,1) II- Công thức nghiệm yếu: Giả sử v ϵ H1(a,b), nhân v vào vế lấy tích phân: 1 0 u ''.v.dx 4.u.v.dx 2 x.v.dx (1) Dùng phương pháp phần tính tích phân u ''.v.dx ta có: U v dU v '.dx V u ''.dx u ' dV u ''.dx Đặt 1 0 (1) u '.v u '.v '.dx 4.u.v.dx 2 x.v.dx 1 1 u '.v '.dx 4.u.v.dx 2 x.v.dx u '.v 0 0 III- Ma trận vector phần tử: A i xi 1 xi 1 xi xi u '.v '.dx 4.u.v.dx xi 1 F x.v.dx xi SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười xi 1 x x xi , H2 hi hi H1 Ma trận phần tử: A xi 1 i xi xi 1 H1 ' H1 H ' H ' dx H ' H . H1 2 xi 1 xi1 hi hi xi h i h2 i h2 i h i h i h i h i H .dx xi 1 x xi1 hi xi 1 x 1 dx x x hi i hi xi h i 1 hi2 ( xi 1 x) hi2 hi 1 hi hi2 hi xi 1 xi x xi dx hi ( xi 1 x) ( xi 1 x).( x xi ) .dx ( x x ).( x x ) ( x x ) i i i 1 xi1 ( xi 1 x) dx xi xi1 ( x x)( x x )dx i x i 1 i xi 1 xi 1 x3 xi1 2 ( xi 1.x xi 1.x ) xi hi 2 hi x x x2 ( xi 1 xi 1.xi x xi ) hi ( xi 1 x)( x xi )dx xi 1 x ( x xi ) dx i xi1 xi x2 x3 x2 ( xi 1 xi 1.xi x xi ) 3 x ( xi x xi2 x) xxii1 SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 xi1 xi Bộ môn: Toán chuyên ngành h i h i 1 hi hi2 hi h hi i h hi i hi3 3 hi3 GVHD: Phạm Quý Mười hi3 6 hi3 hi hi hi hi Vector phần tử: xi 1 x xi1 h i i .dx F x x xi hi xi h i xi1 xi xi 1.x x dx x x x i xi1 x x xi1 xi 1.x x dx (x ) i 1 xi xi x h hi i1 x xi1 i x ( x ) x x x x dx i i x i i 1 xi xi3 x x i 1 i 1 3 hi xi 1 xi 12 xi3 xi IV- Nghiệm phương trình vi phân: u '' 4u x (0,1) u (0) 0, u (1) 1 SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười Phương trình có dạng: u '' 4u x f ( x) x 0x Với f ( x) e P1 ( x) e P1 ( x) Trong đó: , P1 ( x) x Phương trình đặc trưng: k 2 k k 2 Nghiệm tổng quát phương trình: u C1.e2 x C2 e2 x u * Vì α=0 không nghiệm phương trình đặc trưng nên nghiệm riêng phương trình vi phân có dạng: u* e0 x P1 ( x) P1 ( x) Gọi u* A.x B với (A, B số) u *' A , u *'' thay vào phương trình ta được: A 0 A.x B x B 2x 2 x Nghiệm tổng quát phương trình là: u C1.e C2 e x Với điều kiện biên: C1 e 2 e C1 C2 C1 C2 u (0) 2 2 u (1) 1 C1.e C2 e 1 C2 e C2 e C 2 e e 2 Vậy, nghiệm tổng quát phương trình vi phân là: 3.e x 3.e 2 x u x e 2 e e e 2 V- Chương trình giải toán FEM: SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười %M=file giảii toán FEM %-u''+4u=2x (0,1),u(0)=0,u(1)=-1 n=3;p=0:1/n:1; e=zeros(2,n); e(1,:)=1:n; e(2,:)=2:n+1; A=zeros(n+1,n+1); F=zeros(n+1,1); for i=1:n id1=e(1,i); id2=e(2,i); x1=p(id1); x2=p(id2); hi=x2-x1; Ae=[1/hi+4*hi/3 -1/hi+2*hi/3;-1/hi+2*hi/3 1/hi+4*hi/3]; Fe=[2*(x2.^3/6-x2*x1.^2/2+x1.^3/3)/hi;2*(x2.^3/3x1*x2.^2/2+x1.^3/6)/hi]; A([id1 id2],[id1 id2])=A([id1 id2],[id1 id2])+Ae; F([id1 id2])=F([id1 id2])+Fe; end A1=A; A1(1,:)=0; A1(1,1)=1; F1=F; F1(1)=0; A1(n+1,:)=0; A1(n+1,n+1)=1; F1(n+1)=-1; u=A1\F1; %Phương trình nghiệm xác e1=exp(1) t=0:1/1000:1; y=3*e1.^(2*t)/(2*(e1.^(-2)-e1.^2))+3*e1.^(-2*t)/(2*(e1.^2-e1.^(2)))+t/2; %Vẽ đồ thị nghiệm xác nghiệm gần mộtt hệ trụcc tọa độ plot(p,u,t,y,'-.'); legend('U(x)','y'); VI- Đồ thị: SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười Khi số đoạn chia n=3: SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười Khi tăng số đoạn chia lên n=5: SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17 Bộ môn: Toán chuyên ngành GVHD: Phạm Quý Mười Khi tăng số đoạn chia lên n=7: Nhận xét: Khi tăng số đoạn chia n lên 3, 5, 7,…thì đồ thị nghiệm xác đồ thị nghiệm gần gần n lớn đồ thị U(x) y tiến trùng SVTH: Nguyễn Văn Nguyên – Lớp 14C4A – Nhóm 14Nh17