Xem mẫu

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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