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.
Trang 1I-Chọn bài toán:
Cho bài toán:
'' 4 2 (0) 0, (1) 1
trong (0,1)
II- Công thức nghiệm yếu:
Giả sử v ϵ H1(a,b), nhân v vào cả 2 vế rồi lấy tích phân:
'' 4 2
u v dx u v dx x v dx
Dùng phương pháp từng phần tính tích phân của
1
0
'' .
Đặt
'.
'' ' ''.
(1)
1 0
' ' ' 4 2
1 0
' ' 4 2 '.
u v dx u v dx x v dx u v
III- Ma trận và vector phần tử:
' ' 4 .
i
1
1
2
i
i
x
x
F x v dx
Trang 21 Ma trận phần tử:
'
'
i
1
1
1
1
i
i
x x
1
1
4
i
i
x
i
2
2
2 1
4
i
h
2 2
Trang 33 3
2 Vector phần tử:
1
2 1
2
2
.
i
i
i
h
1
1
1
1
2 1
1
2
.
i
i i i
i
i i i
x
x i
x
x
i x
x x
x
x x x dx
3
1
.
.
i
x
IV- Nghiệm đúng của phương trình vi phân:
'' 4 2
(0) 0, (1) 1
Trang 4Phương trình có dạng: u '' 4 u 2 x f x ( )
Với f x ( ) ex ( ) P x1 e0x ( ) P x1 Trong đó: 0 , P x1( ) 2 x
Phương trình đặc trưng:
2 4 0 2
2
k k
k
Nghiệm tổng quát của phương trình: 2 2
1. x 2. x *
Vì α=0 không là nghiệm của phương trình đặc trưng nên nghiệm riêng của
phương trình vi phân có dạng:
0
* x ( ) ( )
Gọi * u A x B với (A, B là hằng số)
*'
u A , u *'' 0 thay vào phương trình ta được:
0
A
B
Nghiệm tổng quát của phương trình là: 1 2 2 2
1
2
Với điều kiện biên:
3
(0) 0
2
C
u
C
Vậy, nghiệm tổng quát của phương trình vi phân là:
2
V- Chương trình giải bài toán trên bằng FEM:
Trang 5%M=file giảii bài toán bằng FEM
%-u''+4u=2x trong (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/3-x1*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 chính 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 chính xác và nghiệm gần đúng trên cùng mộtt hệ trụcc tọa độ
plot(p,u,t,y, '-.' );
legend( 'U(x)' , 'y' );
VI- Đồ thị:
Trang 6Khi số đoạn chia n=3:
Trang 7Khi tăng số đoạn chia lên n=5:
Trang 8Khi tăng số đoạn chia lên n=7:
Nhận xét: Khi càng tăng số đoạn chia n lên 3, 5, 7,…thì đồ thị nghiệm chính xác và
đồ thị nghiệm gần đúng càng gần nhau và n càng lớn thì đồ thị U(x) và y sẽ tiến về trùng nhau