- Trang Chủ
- Toán học
- Bài giảng Phương pháp số trong công nghệ hoá học: Tuần 9 - TS. Nguyễn Đặng Bình Thành
Xem mẫu
- Tuần 9-10
PHƢƠNG PHÁP SỐ
TRONG CÔNG NGHỆ HÓA HỌC
Mã học phần: CH3454
TS. Nguyễn Đặng Bình Thành
BM:Máy & TBCN Hóa chất
Numerical Methods in Chemical Engineering
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
Mở đầu. Các bài toán thường gặp có thể 2 loại:
* Bài toán Côsi : là bài toán dạng phương trình vi phân với
điều kiện bổ sung (điều kiện ban đầu) đã cho tại không quá
một điểm.
Ví dụ: Cho phương trình vi phân cấp 1: y’ = 2x + 1; (a)
- Nghiệm tổng quát : y = x2 + x + C; (b)
C - hằng số tích phân, phụ thuộc điều kiện ban đầu
- Mỗi giá trị của C 1 nghiệm xác định.
- Xác định C cần biết thêm 1 điều kiện ban đầu, ví dụ
y(x=1) = 2; (c) (b) C = 0;
Nghiệm của (a) là y = x2 + x thoả mãn (a) và (c).
Bài toán tìm hàm số y(x) thoả mãn p/t vi phân (a) và điều kiện
ban đầu (c) bài toán Côsi.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
Bài toán Côsi đối với phương trình vi phân cấp 1:
- Cho khoảng [x0, X]
- Tìm hàm số y = y(x) xác định trên [x0, X] thoả mãn:
y’ = f(x,y); x0 x X (1)
y(x0) = η ; (2)
Trong đó f(x, y) – hàm đã biết; η - số thực cho trước
( 2 ) - điều kiện Côsi hay điều kiện ban đầu.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
* Bài toán biên.
Bài toán giải phương trình vi phân với điều kiện bổ sung được
cho tại nhiều hơn 1 điểm.
- Cho khoảng [a, b];
- Tìm hàm y = y(x) trên [a, b] thoả mãn:
y’ + p(x)y’ +q(x,y) = f(x); a x b (3)
với điều kiện y(a) = α; y(b) = β (4)
Trong nhiều trường hợp giải gần đúng .
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
Giải bài toán Côsi.
Phương pháp chuỗi Taylo. y’ = f(x, y); x0 x X
y(x0) = η ;
Khai triển nghiệm y(x) tại x = x0:
(k )
y ' ( x0 ) y" ( x0 ) 2 y ( x0 ) k
y ( x) y ( x0 ) (x x0 ) (x x0 ) (x x0 ) (5)
1! 2! k!
y' ( x0 ) f ( x0 , y ( x0 )) f ( x0 , ); (6)
f f
y" ( y ' )' f x, y ( x ) ' x, y ( x ) x, y ( x) y ' ( x);
x y
f f
y" ( x0 ) x0 , x0 , f ( x0 , ); (7)
x y
Tương tự y’” y(3)(x0) chuỗi ( 5 ).
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
Đã CM được rằng:
Với x x0 đủ bé, chuỗi ( 5 ) nghiệm của ( 1 ), ( 2 )
tổng Sn(x) của n số hạng đầu của ( 5 ) nghiệm xấp xỉ của
( 1 ) , ( 2 ); n càng lớn độ chính xác càng cao.
(k )
y ' ( x0 ) y" ( x0 ) 2 y ( x0 ) k
y ( x) y ( x0 ) (x x0 ) (x x0 ) (x x0 ) (5)
1! 2! k!
y’ = f(x,y); x0 x X (1)
y(x0) = η ; (2)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
- Là phương pháp số;
- Xác định từng giá trị của y(x) theo giá trị cụ thể của x
bảng các giá trị x và y(x) tương ứng.
Nội dung: - Chia [x0, X] n đoạn bằng các nút xi cách đều.
(X x0 )
xi = x0 + ih; i = 0, 1, 2, . . ., n; h ;
n
xi Lưới sai phân trên [x0, X]
xi – nút của lưới; h - bước của lưới: h = const;
- y(x) nghiệm đúng của (1), (2)
y’ = f(x,y); x0 x X (1)
y(x0) = η ; (2)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
Thành lập công thức tính:
- y(xi) – giá trị đúng của y(x) tại xi;
- yi – giá trị gần đúng tính được của y(xi);
- Giả sử đã biết ui, cần tính ui+1 tại xi+1.
- Khai triển Taylor tại xi; h đủ nhỏ bỏ qua các số hạng cuối.
y ( x) y( xi ) y ( xi )( x xi ); (8)
y( xi 1) y( xi ) y ( xi )( xi 1 xi );
( xi 1 xi ) h; y ( xi ) f xi , y ( xi ) ;
y( xi 1) y( xi ) h. f xi , y ( xi ) ; (8 a)
- biết yi yi 1
yi h. f xi , yi ; (9)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
y’ = f(x,y); x0 x X (1)
y(x0) = η ; (2)
- Điều kiện ban đầu y0 = η
y1 y0 h. f x0 , y0 ;
y2 y1 h. f x1 , y1 ;
.................
yi 1
yi h. f xi , yi ;
xi 1
xi ih
Nhận xét: - Đơn giản, không phải giải p/trình nào, thuận tiện
lập trình giải trên máy tính
- Độ chính xác không cao.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
- Đánh giá sai số: Sau khi tính được u tại xi với bước h: u(xi,h)
tính u(xi, h/2) nghiệm sai số :
h h
y xi , y ( xi ) y ( xi , h) y xi , ; (10)
2 2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
Các bước tính: Cho y’ = f(x, y); x0 x X; y(x0) = η ;
- Ấn định số khoảng chia n; - Tính h = (x – x0)/n ;
- Tính xi = x0 + ih; - Đặt y0 = η
- Tính yi+1 = yi + h.f(xi,yi) với i = 0, 1, 2, . . ., n ;
- Đặt y(xi, h) = yi; thay h = h/2 tính lại;
- Đặt y(xi,h/2) = yi; y(xi, h/2) ~ y(xi)
h h
- Sai số: y xi , y ( xi ) y ( xi , h) y xi , ;
2 2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
Chƣơng trình 2x
y' y
Program Euler1; y
Uses crt;
Var y (0 ) 1
x0,x,y0,y,h:real;
n,i,j,k:interger;
Function F(x,y:real):real;
Begin
F:=y-(2*x/y);
End;
{Chương trình chính}
BEGIN
clrscr;
{Nhập x0,xc,y0,n}
…
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
Chƣơng trình 2x
y' y
Program Euler1; y
…
h:=(xc-x0)/n; y (0 ) 1
x:=x0;
y:=y0;
For i:=1 to n do
Begin
x:=x+i*h;
y:=y+h*(F(x,y);
yf[i]:=y;
End;
{In kết quả}
…
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.1 Giải phƣơng trình vi phân bằng phƣơng pháp Euler
Chƣơng trình 2x
y' y
Program Euler1; y
…
For i:=1 to n do y (0 ) 1
writeln (‘y[‘,i,’] = ‘,yf[i]:8:4);
readln;
END.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.2 Giải phƣơng trình vi phân bằng phƣơng pháp hình
thang
Phương pháp Ơle có độ chính xác không cao.
Thay (9) yi 1
yi h. f xi , yi ; (9)
h *
yi 1
yi f ( xi , yi ) f ( xi 1 , yi 1 ) ; (11)
2
u*i+1 trong (11) được tính theo công thức Ơle:
*
yi 1
yi h. f xi , yi ;
Đã chứng minh được phương pháp này có độ chính xác cấp 2:
2
yi y( xi ) ; 0(h ).
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.2 Giải phƣơng trình vi phân bằng phƣơng pháp hình
thang
h *
yi 1
yi f ( xi , yi ) f ( xi 1 , yi 1 ) ; (11)
2
Để tính nghiệm (11) chính xác hơn khi đã biết ui, có thể dùng
phép lặp đơn:
( 0)
yi 1
yi hf ( xi , yi );
h (12)
(k ) ( k 1)
yi 1
yi f ( xi , yi ) f ( xi 1 , yi 1
);
2
Quá trình lặp dừng lại ở bước k khi
yi
(k )
1
yi
( k 1)
1
; ε – sai số cho phép. (13)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.2 Giải phƣơng trình vi phân bằng phƣơng pháp
Runge-Kutta
Bậc 2:
1
yi yi (k1 k 2 ); (14)
1
2
trong đó
k1 h. f ( xi , yi );
(15)
k2 h. f ( xi h, yi k1 );
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.2 Giải phƣơng trình vi phân bằng phƣơng pháp
Runge-Kutta
Bậc 3:
1 (16)
yi 1
yi (k1 4k 2 k3 );
6
trong đó
k1 h. f ( xi , yi );
h k1 (17)
k2 h. f ( xi , yi );
2 2
k3 h. f ( xi h, yi k1 2k 2 );
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.2 Giải phƣơng trình vi phân bằng phƣơng pháp
Runge-Kutta
Bậc 4:
1 (16)
yi 1
yi (k1 2k 2 2k 3 k 4 );
6
trong đó
k1 h. f ( xi , yi );
h k1
k2 h. f ( xi , yi );
2 2
(17)
h k2
k3 h. f ( xi , yi );
2 2
k4 h. f ( xi h, yi k 3 );
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chƣơng 3
Phƣơng trình và hệ phƣơng trình vi phân
3.2 Giải phƣơng trình vi phân bằng phƣơng pháp
Runge-Kutta
Chƣơng trình 2x
y' y
Program RunKut4; y
Uses crt;
Var y (0 ) 1
x0,x,y0,y,h,k1,k2,k3,k4:real;
n,i,j,k:interger;
Function F(x,y:real):real;
Begin
F:=y-(2*x/y);
End;
{Chương trình chính}
BEGIN
clrscr;
{Nhập x0,xc,y0,n}
…
CuuDuongThanCong.com https://fb.com/tailieudientucntt
nguon tai.lieu . vn