Tải bản đầy đủ (.docx) (21 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (467.01 KB, 21 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA</b>

<b>KHOA KHOA HỌC ỨNG DỤNG – BỘ MƠN TỐN ỨNG DỤNG</b>

<b>Giảng viên hướng dẫn: TS. Đặng Văn VinhLớp: L13</b>

<b>Nhóm: 8</b>

<i>Thành phố Hồ Chí Minh, tháng 12 năm 2023</i>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC LỤC</b>

<b>DANH MỤC BẢNG BIỂU VÀ HÌNH ẢNH...i</b>

<b>I. MỞ ĐẦU...1</b>

<b>II. CƠ SỞ LÝ THUYẾT...2</b>

<b>1. PHƯƠNG TRÌNH VI PHÂN THƯỜNG...2</b>

<b>2.2 Sai số trong phương pháp Euler...6</b>

<b>2.3 Phương pháp Euler trong phương trình vi phân thường...6</b>

<b>2.4 Một số bài tố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</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<i><small>x+ 2 y</small><sup>, y (0 )=2 v ớ ih=0,2 ;h=0,1</sup></i> 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 <i><small>h=1</small></i>...12Hình 4.2: Đồ thị minh họa phương pháp Euler ứng với khoảng chia <i><small>h=5</small></i>...12

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>I. MỞ ĐẦU</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>II. CƠ SỞ LÝ THUYẾT</b>

<b>1. PHƯƠNG TRÌNH VI PHÂN THƯỜNG</b>

<b>1.1 Định nghĩa </b>

Một phương trình vi phân thường có dạng tổng qt:

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<i><small>φ ( y ) dy=f ( x )dx h ay f</small></i><sub>1</sub><i><small>( x) g</small></i><sub>1</sub><i><small>( y )dx =f</small></i><sub>2</sub><i><small>( x ) g</small></i><sub>2</sub><i><small>( y ) dy</small></i>

<i><small>⇔ f</small></i><sub>2</sub><small>(</small><i><small>x) g</small></i><sub>1</sub><small>(</small><i><small>y )=0 h ay</small><sup>f</sup></i><sup>1</sup><i><sup>( x )</sup><small>f</small></i><small>2(</small><i><small>x )</small><sup>dx=</sup></i>

<i><small>g</small></i><sub>1</sub><i><small>( y )</small></i>

<i><small>g</small></i><small>2(</small><i><small>y )</small><sup>dy</sup><small>⇔ f</small></i><sub>2</sub><small>(</small><i><small>x) g</small></i><sub>1</sub><small>(</small><i><small>y )=0 h ay</small></i>

<i><sup>f</sup></i><small>1</small><i><small>( x )</small></i>

<i><small>x⇒ y=ux⇒ dy=udx +xdu</small></i> thành

<i><small>udx + xdu=f (u) dx</small></i>

<i><small>⇔ xdu=</small></i><small>¿</small><i><small>f (u )−u∨dx </small></i>

<i><small>⇔ x</small></i>|<i><small>f (u )−u</small></i>|<small>=0 h ay</small> <i><sup>du</sup></i>

<i><small>f (u)−u</small></i><sup>=</sup><i><small>dx</small></i>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Phươ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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

quả để tiếp cận vấn đề này bằng cách sử dụng xấp xỉ để đơn giản hóa q 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.

<b>2.1.2 Cơng thức của phương pháp Euler:</b>

{

<i><sup>dy</sup><small>dx</small></i><sup>=</sup><i><sup>f ( x , y )</sup><small>y</small></i><sub>(</sub><i><small>x</small></i><sub>0</sub><sub>)</sub><small>=</small><i><small>y</small></i><sub>0</sub>

Vấn đề được đặt ra của bài tốn là tìm gần đúng hàm nghiệm y(x) tại một số điểm <i><small>x</small></i><sub>1</sub><i><small>, x</small></i><sub>2</sub><i><small>, x</small></i><sub>3</sub>,..., tức là tính các giá trị xấp xỉ <i><small>y</small></i><sub>1</sub><i><small>, y</small></i><sub>2</sub><i><small>, y</small></i><sub>3</sub>,... (giá trị chính xác là <i><small>y</small></i><sub>(</sub><i><small>x</small></i><sub>1</sub><sub>)</sub><i><small>, y</small></i><sub>(</sub><i><small>x</small></i><sub>2</sub><sub>)</sub><i><small>, y (x</small></i><sub>3</sub><small>)</small>,.. tại các điểm <i><small>x</small></i><sub>1</sub><i><small>, x</small></i><sub>2</sub><i><small>, x</small></i><sub>3</sub>,,...).

Nếu các điểm chia<i><small>x</small><sub>n</sub><small>,n=0,1,2</small></i>,.. 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à <i><small>x</small><sub>n+1</sub></i><small>−</small><i><small>x</small><sub>n</sub></i><small>=</small><i><small>h ,n=0,1, 2</small></i>,....Từ khai triển Taylor, giữ lại hai số hạng đầu ta có:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

x 0 0,5 1 1,5 2 2,5Giá trị xấp xỉ y 1,000

<i><small>Bảng 2.1.2: Các giá trị xấp xỉ y tương ứng với h=0,5</small></i>

<b>2.2 Sai số trong phương pháp Euler</b>

<b><small>Sai số cắt cụt cục bộ của phương pháp Euler là sai số trong một bước </small></b>

<i><small>duy nhất. Đó là sự khác biệt giữa lời giải số sau một bước,y1</small></i><small> , và lời giải </small>

<i><small>chính xác tại thời điểm t1 = t0 + h. Lời giải số được cho bởi</small></i>

<i><small>y1 = y0 + hf (t0,y0).</small></i>

<small>Đố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:</small>

<i><small>y(t0 + h) = y(t0) + hy’(t0) + </small></i><sup>1</sup><sub>2</sub><i><small> h2y”(t0) + O(h3).</small></i>

<small>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:</small>

<small>LTE = </small><i><small>y(t0 + h) - y1 = </small></i><sup>1</sup><sub>2</sub><i><small> h2y”(t0) + O(h3).</small></i>

<i><small>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 h2</small></i><small> do đó làm cho phương pháp Euler kém chính xác (đối </small>

<i><small>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 </small></i>

<small>pháp Runge-Kutta và các phương pháp đa bước tuyến tính, mà sai số cắtcụ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.</small>

<small>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. </small>

<i><small>Nếu y có đạo hàm bậc hai liên tục, thì tồn tại một</small></i>

<i><small>ξ Є [tt0, t0 + h] mà</small></i>

<small>LTE = </small><i><small>y(t0 + h) - y1 = </small></i><sup>1</sup><sub>2</sub><i><small> h2y”(ξ)</small></i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<small>Trong 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 </small>

<i><small>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</small></i>

<small>phương trình vi phân. Thật vậy, từ phương trình </small>

<i><small>y’ = f(t,y) ta có</small></i>

<i><small>y”(t0) = </small><sup>∂ f</sup><sub>∂ t</sub><small> (t0, y(t0)) + </small><sub>∂ y</sub><sup>∂ f</sup><small> (t0, y(t0)) f(t0, y(t0))</small></i>

<i><b><small>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 </small></b></i>

<small>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 </small>

<i><small>được dễ dàng xác định là (t-t0)/h, tỷ lệ thuận với 1/h, và sai số đã phạm </small></i>

<i><small>phải trong mỗi bước tỷ lệ thuận với h2 </small></i><small>(xem phần trước). Vì vậy, mong </small>

<i><small>đợi rằng sai số cắt cụt tổng thể sẽ tỷ lệ thuận với h. </small></i>

<small>Lý luận trực quan này có thể được chứng minh là chính xác. Nếu lời </small>

<i><small>giải y có đạo hàm bậc hai bị chặn (bounded) và f là Lipschitz liên tục </small></i>

<small>trong đối số thứ hai của nó, thì sai số cắt cụt tổng thể (GTE) được bao (bounded) bởi:</small>

<small>|GTE| ≤ </small><i><sup>hM</sup><sub>2 L</sub><small> (eL(t-t0</small><sup>)</sup><small>- 1)</small></i>

<i><small>trong đó M là một giới hạn trên cho đạo hàm bậc hai của y trên khoảngthời gian nhất định nào đó và L là hằng số Lipschitz của f.</small></i>

<small>Dạng thức chính xác của giới hạn này ít quan trọng trong thực tế, trong hầu hết các trường hợp, giới hạn này quá lớn so với sai số thực sự phạm phải bởi phương pháp Euler. Điều quan trọng là nó cho thấy rằng sai số cắt cụt tổng thể (một cách gần đúng) tỷ lệ thuận với. Vì lý do này, phương pháp Euler được cho gọi là bậc nhất.</small>

<b><small>Các sai số làm tròn: Thảo luận từ trên đến giờ đã bỏ qua những hậu </small></b>

<i><small>quả của sai số làm tròn. Trong bước n của phương pháp Euler, sai số làmtrịn là xấp xỉ độ lớn εyn</small></i><small> 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 </small>

<i><small>hợp trong N bước là xấp xỉ Nεy</small></i><small>0 nếu tất cả các sai số chỉ về cùng hướng. </small>

<i><small>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 </small></i>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<small>trườ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ì </small>

<i><small>tổng sai số làm trịn tỷ lệ thuận với ε/ √ h.</small></i>

<small>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 độngcủ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.</small>

<b>2.3 Phương pháp Euler trong phương trình vi phân thường</b>

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 <i><small>y</small><sub>n+ 1</sub></i> thơng qua <i><small>y</small><sub>n</sub> với <small>f</small></i><sub>(</sub><i><small>x</small><sub>n</sub><small>, y</small><sub>n</sub></i>) 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 tốn đó.

Xét bài tốn:

{

<i><sup>dy</sup><small>dx</small></i><sup>=</sup><i><sup>f ( x , y )</sup><small>y</small></i><sub>(</sub><i><small>x</small></i><sub>0</sub><sub>)</sub><small>=</small><i><small>y</small></i><sub>0</sub>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Áp dụng phương pháp Euler với bước lặp h, ta có cơng thức:

<i><small>y</small><sub>n+ 1</sub></i><small>=</small><i><small>y</small><sub>n</sub></i><small>+</small><i><small>h f</small></i> <sub>(</sub><i><small>t</small><sub>n</sub><small>, y</small><sub>n</sub></i><sub>)</sub>

để tính các nghiệm xấp xỉ trong khoảng [<i><small>a , b</small></i>] .

<b>2.4 Một số bài tố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</b>

<b>Ví dụ 2.4.1: Tìm nghiệm xấp xỉ của phương trình vi phân sau bằng </b>

phương pháp Euler <i><small>y</small><sup>'</sup></i><small>=</small><i><small>y −</small><sup>2 x</sup></i>

<i><small>y</small><sup>, 0 ≤ x ≤1</sup></i>với điều kiện ban đầu <i><small>y (0)=1 và </small></i>

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 tốn trên là : <i><small>y (x )=</small></i><sub>√</sub><i><small>2 x +1</small></i>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i><small>y</small><sup>, y (0 )=1 với h=0,1</sup><sup> và giá trị nghiệm chính xác </sup></i>

<b>Ví dụ 2.4.2: Dùng pp Euler để tìm nghiệm gần đúng của phương trình </b>

vi phân <i><small>y'</small></i>

<small>=</small><i><small>2 x + y−4</small></i>

<i><small>x+ 2 y</small><sup>, y (0 )=2.</sup><small>Với h=0,2 và h=0,1 trên đoạn</small></i>[<i><small>0 ;1,2</small></i>]

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

So sánh kết quả nghiệm gần đúng

Giải phương trình vi phân ta được nghiệm:

<i><small>y +</small></i><sup>4</sup>

<small>31−</small>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>III. MATLAB</b>

<b>1. Tổng quan về Matlab</b>

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 tố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 tố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 tố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 tốn.

<b>2. Code Matlab giải bài tốn thực tế</b>

<i><b>Đề: Kích thước một quần thể P (t)=P</b></i><small>0</small><i><small>. e</small><sup>kt</sup></i> theo thời gian t được mơ hình bởi phương trình vi phân <i><sup>dP</sup><sub>dt</sub></i> <small>=</small><i><small>kP (t )</small></i> với điều kiện <i><small>P (0)=1000 ;</small></i>

<i><small>k =0,02 ;t=[0 ;100]</small></i>(đơ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.

<i><b>Đoạn code hồn chỉnh:</b></i>

% 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, ...)

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="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))); % Vẽ đồ thị

for i = 1:(length(t) - 1)

y(i + 1) = y(i) + h * f(t(i), y(i)); end

end

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>3. Các hàm dùng trong Matlab4. Kết quả và đồ thị</b>

<i><small>Hình 4.1: Đồ thị minh họa phương pháp Euler ứng với khoảng chia h=1</small></i>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<i><small>Hình 4.2: Đồ thị minh họa phương pháp Euler ứng với khoảng chia h=5</small></i>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>TÀI LIỆU THAM KHẢO</b>

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, 7<small>th</small> edition.

</div>

×