TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC ỨNG DỤNG – BỘ MÔN TOÁN ỨNG DỤNG?···☼···? BÁO CÁO BÀI TẬP LỚN MÔN GIẢI TÍCH 1 ĐỀ TÀI PHƯƠNG PHÁP SỐ EULER GIẢI PHƯƠNG TRÌNH VI PHÂN CẤP 1 Danh sách
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC ỨNG DỤNG – BỘ MÔN TOÁN ỨNG DỤNG
🙞···☼···🙞
BÁO CÁO BÀI TẬP LỚN MÔN GIẢI TÍCH 1
ĐỀ TÀI PHƯƠNG PHÁP SỐ EULER GIẢI PHƯƠNG TRÌNH VI PHÂN CẤP 1
Danh sách thành viên:
Giảng viên hướng dẫn: TS Đặng Văn Vinh Lớp: L13
Nhóm: 8
Thành phố Hồ Chí Minh, tháng 12 năm 2023
Trang 2MỤC LỤC
DANH MỤC BẢNG BIỂU VÀ HÌNH ẢNH i
I MỞ ĐẦU 1
II CƠ SỞ LÝ THUYẾT 2
1 PHƯƠNG TRÌNH VI PHÂN THƯỜNG 2
1.1 Định nghĩa 2
1.2 Phương trình vi phân cấp 1 2
2 PHƯƠNG PHÁP EULER CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG 4
2.1 Phương pháp Euler 4
2.2 Sai số trong phương pháp Euler 6
2.3 Phương pháp Euler trong phương trình vi phân thường 6
2.4 Một số bài toán tìm nghiệm gần đúng với phương pháp xấp xỉ Euler trong phương trình vi phân cấp 1 7
III MATLAB 10
1 Tổng quan về Matlab 10
2 Code Matlab giải bài toán thực tế 10
3 Các hàm dùng trong Matlab 12
4 Kết quả và đồ thị 12
TÀI LIỆU THAM KHẢO 14
Trang 3x+ 2 y , y (0 )=2 v ớ ih=0,2 ;h=0,1 và giá trịnghiệm chính xác 9Hình 4.1: Đồ thị minh họa phương pháp Euler ứng với khoảng chia h=1 12Hình 4.2: Đồ thị minh họa phương pháp Euler ứng với khoảng chia h=5 12
Trang 4I MỞ ĐẦU
Trang 5II CƠ SỞ LÝ THUYẾT
1 PHƯƠNG TRÌNH VI PHÂN THƯỜNG
Trang 6x ⇒ y=ux⇒ dy=udx +xdu thành
udx + xdu=f (u) dx
⇔ xdu=¿f (u )−u∨dx
⇔ x|f (u )−u|=0 h ay du
f (u)−u=
dx x
Trang 7Phương pháp số Euler là một phương pháp toán học cơ bản và mạnh
mẽ được sử dụng để giải các phương trình vi phân Phương trình vi phân là một công cụ quan trọng trong nhiều lĩnh vực khoa học và kỹ thuật, từ vật lý đến kinh tế, sinh học, và nhiều lĩnh vực khác Giải phương trình vi phân giúp chúng ta hiểu sự biến đổi và tương tác của các hệ thống theo thời gian
Tuy nhiên, việc giải phương trình vi phân một cách chính xác có thể làmột thách thức, đặc biệt là đối với các phương trình phức tạp và không thể giải phân tích Phương pháp số Euler là một cách tiếp cận đơn giản và hiệu
Trang 8quả để tiếp cận vấn đề này bằng cách sử dụng xấp xỉ để đơn giản hóa quá trình giải.
Phương pháp số Euler là một phương pháp giải phương trình vi phân bằng cách tận dụng xấp xỉ tuyến tính Phương pháp này đơn giản và dễ hiểu,
và nó thường được sử dụng để giải các vấn đề giải tích số cơ bản
2.1.2 Công thức của phương pháp Euler:
{dy dx=f ( x , y )
y(x0)=y0
Vấn đề được đặt ra của bài toán là tìm gần đúng hàm nghiệm y(x) tại một số điểm x1, x2, x3, , tức là tính các giá trị xấp xỉ y1, y2, y3, (giá trị chính xác là y(x1), y(x2), y (x3), tại các điểm x1, x2, x3,, )
Nếu các điểm chiax n ,n=0,1,2, càng nhiều thì ta càng có kết quả gần đúng của hàm nghiệm y(x)
Xét trường hợp các bước cách đều, tức là x n+1−x n=h ,
n=0,1, 2, Từ khai triển Taylor, giữ lại hai số hạng đầu ta có:
Trang 10x 0 0,5 1 1,5 2 2,5Giá trị xấp xỉ y 1,000
0
0,5000
0,5000
0,7500
1,1250
1,5625
Bảng 2.1.2: Các giá trị xấp xỉ y tương ứng với h=0,5
2.2 Sai số trong phương pháp Euler
Sai số cắt cụt cục bộ của phương pháp Euler là sai số trong một bước
duy nhất Đó là sự khác biệt giữa lời giải số sau một bước,y 1 , và lời giải
chính xác tại thời điểm t 1 = t 0 + h Lời giải số được cho bởi
y 1 = y 0 + hf (t 0 ,y 0 ).
Đối với lời giải chính xác, chúng ta sử dụng mở rộng Taylor được đề cập trong phần Nguồn gốc phía trên:
y(t 0 + h) = y(t 0 ) + hy’(t 0 ) + 12 h 2 y”(t 0 ) + O(h 3 ).
Sai số cắt cụt cục bộ (LTE) của phương pháp Euler được cho bởi sự khác biệt giữa các phương trình này:
LTE = y(t 0 + h) - y 1 = 12 h 2 y”(t 0 ) + O(h 3 ).
Kết quả này là hợp lý nếu y có một đạo hàm bậc ba bị chặn (bounded) Điều này cho thấy rằng đối với h nhỏ, các sai số cắt cụt cục bộ xấp xỉ tỷ
lệ thuận với h 2 do đó làm cho phương pháp Euler kém chính xác (đối
với h nhỏ) hơn so với các phương pháp bậc cao khác như các phương
pháp Runge-Kutta và các phương pháp đa bước tuyến tính, mà sai số cắt cụt cục bộ tỷ lệ thuận với một số mũ cao hơn của kích thước bước.
Một cách xây dựng công thức hơi khác cho sai số cắt cụt cục bộ là sử dụng dạng thức Lagrange cho số hạng còn lại trong định lý Taylor
Nếu y có đạo hàm bậc hai liên tục, thì tồn tại một
ξ Є [tt 0 , t 0 + h] mà
LTE = y(t 0 + h) - y 1 = 12 h 2 y”(ξ)
Trang 11Trong các biểu thức sai số trên, đạo hàm bậc hai của lời giải chính xác
chưa biết y có thể được thay thế bằng một biểu thức ở phía bên phải của
phương trình vi phân Thật vậy, từ phương trình
y’ = f(t,y) ta có
y”(t 0 ) = ∂ f ∂ t (t 0 , y(t 0 )) + ∂ y ∂ f (t 0 , y(t 0 )) f(t 0 , y(t 0 ))
Sai số cắt cụt tổng thể là sai số tại một thời điểm cố định t, sau nhiều
bước nhiều phương pháp cần phải thực hiện để đạt được thời điểm đó từ thời điểm ban đầu Sai số cắt cụt tổng thể là tích lũy của các sai số cắt cụt cục bộ đã phạm phải trong mỗi bước trước đó Số lượng các bước
được dễ dàng xác định là (t-t 0 )/h, tỷ lệ thuận với 1/h, và sai số đã phạm
phải trong mỗi bước tỷ lệ thuận với h 2 (xem phần trước) Vì vậy, mong
đợi rằng sai số cắt cụt tổng thể sẽ tỷ lệ thuận với h
Lý luận trực quan này có thể được chứng minh là chính xác Nếu lời
giải y có đạo hàm bậc hai bị chặn (bounded) và f là Lipschitz liên tục
trong đối số thứ hai của nó, thì sai số cắt cụt tổng thể (GTE) được bao (bounded) bởi:
phương pháp Euler được cho gọi là bậc nhất.
Các sai số làm tròn: Thảo luận từ trên đến giờ đã bỏ qua những hậu
quả của sai số làm tròn Trong bước n của phương pháp Euler, sai số làm tròn là xấp xỉ độ lớn εy n trong đó ε là Machine epsilon (giới hạn trên của sai số tương đối do làm tròn trong số học điểm nổi) Giả sử rằng các sai
số làm tròn tất cả có kích thước xấp xỉ như nhau, sai số làm tròn tổng
hợp trong N bước là xấp xỉ Nεy0 nếu tất cả các sai số chỉ về cùng hướng
Bởi vì số lượng bước tỉ lệ nghịch với kích thước bước h, tổng sai số làm tròn tỷ lệ thuận với ε / h Trong thực tế, tuy nhiên, vô cùng khó xảy ra
Trang 12trường hợp tất cả các sai số làm tròn chỉ về cùng một hướng Nếu thay vào đó giả định rằng các sai số làm tròn là các biến làm tròn độc lập, thì
tổng sai số làm tròn tỷ lệ thuận với ε/ √ h.
Vì vậy, đối với những giá trị kích thước bước cực nhỏ, sai số cắt cụt sẽ nhỏ nhưng tác động của sai số làm tròn có thể lớn Hầu hết các tác động của sai số làm tròn có thể dễ dàng tránh được nếu phép tổng đền bù ( compensated summation ) được sử dụng trong việc xây dựng công thức cho phương pháp Euler.
2.3 Phương pháp Euler trong phương trình vi phân thường
Mở đầu nhiều bài toán khoa học kỹ thuật chủ đạo là (hệ) phương trình
vi phân và điều kiện ban đầu Nghiệm đúng của chúng thường chỉ áp dụng cho một số lớp bài toán rất hạn chế, đa số các bài toán là phải tìm nghiệm gần đúng Trong phương pháp số có phương pháp Euler - là phương pháp một bước tính nghiệm gần đúng y n+ 1 thông qua y n với f(x n , y n) thường được dùng
để giải các bài toán về phương trình vi phân cấp 1 và hệ phương trình vi phân thường Bây giờ chúng ta sẽ tìm hiếu cách giải các bài toán đó
Xét bài toán:
{dy dx=f ( x , y )
y(x0)=y0
Trang 13Áp dụng phương pháp Euler với bước lặp h, ta có công thức:
y n+ 1=y n+h f (t n , y n)
để tính các nghiệm xấp xỉ trong khoảng [a , b]
2.4 Một số bài toán tìm nghiệm gần đúng với phương pháp xấp xỉ Euler trong phương trình vi phân cấp 1
Ví dụ 2.4.1: Tìm nghiệm xấp xỉ của phương trình vi phân sau bằng
phương pháp Euler y '=y − 2 x
y , 0 ≤ x ≤1với điều kiện ban đầu y (0)=1 và
chia đoạn [0;1] thành 10 đoạn bằng nhau Hãy so sánh kết quả nghiệm gần đúng (lấy 4 chữ số thập phân)
Ta tìm được nghiệm chính xác của bài toán trên là : y (x )=√2 x +1
Trang 14y , y (0 )=1 với h=0,1 và giá trị nghiệm chính xác
Ví dụ 2.4.2: Dùng pp Euler để tìm nghiệm gần đúng của phương trình
Trang 17III MATLAB
1 Tổng quan về Matlab
Matlab (viết tắt của matrix laborary) là một ngôn ngữ lập trình bậc cao bốn thế hệ, môi trường để tính toán số học, trực quan và lập trình Được phát triển bởi MathWorks
Matlab cho phép thao tác với ma trận, vẽ biểu đồ với hàm và số liệu, hiện thực thuật toán, tạo ra giao diện người dùng, bao gồm C,C++, Java và Fortran; phân tích dữ liệu, phát triển thuật toán, tạo các kiểu mẫu và ứng dụng
Matlab có rất nhiều lệnh và hàm toán học nhằm hỗ trợ đắc lực cho bạn trong việc tính toán, vẽ các hình vẽ, biểu đồ thông dụng và thực thi các
phương pháp tính toán
2 Code Matlab giải bài toán thực tế
Đề: Kích thước một quần thể P (t)=P0 e kt theo thời gian t được mô hình bởi phương trình vi phân dP dt =kP (t ) với điều kiện P (0)=1000 ;
k =0,02 ;t=[0 ;100](đơn vị thời gian) Hãy biễu diễn và so sánh đồ thị P(t) bằng phương pháp số Euler và hàm số thông thường
Đoạn code hoàn chỉnh:
% Thông số mô hình
k = 0.02; % Hệ số tăng trưởng
P0 = 1000; % Số lượng dân số ban đầu
% Khoảng thời gian tspan = [0, 100]; % Khoảng thời gian từ 0 đến 100 đơn vịthời gian (năm, tháng, )
Trang 18% Bước thời gian
h = input("Nhập bước thời gian: ");
% Phương trình vi phân tăng trưởng dân số f = @(t, P) k * P;
% Giải phương trình vi phân bằng phương pháp số Euler
[t, P_euler] = euler_method(f, P0, tspan, h);
% Tạo dữ liệu cho đường cong hàm số thông thường (exponential growth) t_normal = linspace(tspan(1), tspan(2), 1000);
P_normal = P0 * exp(k * (t_normal - tspan(1)));
function [t, y] = euler_method(f, y0, tspan, h)
% f: hàm đạo hàm của phương trình vi phân
% y0: điểm ban đầu % tspan: khoảng thời gian [t0, tf]
% h: bước thời gian
Trang 193 Các hàm dùng trong Matlab
4 Kết quả và đồ thị
Hình 4.1: Đồ thị minh họa phương pháp Euler ứng với khoảng chia h=1
Trang 20Hình 4.2: Đồ thị minh họa phương pháp Euler ứng với khoảng chia h=5
Trang 21TÀI LIỆU THAM KHẢO
Nguyễn Thị Như Anh, L H (2015) Phương pháp xấp xỉ Euler trong phương trình vi phân thường
Burden R.L Numerical Analysis, 7th edition