Tải bản đầy đủ (.pdf) (23 trang)

sử dụng giải hệ 3 đường chéo 5 đường chéo giải phương trình vi phân cấp 2 điều kiện biên và matlab

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 (2.03 MB, 23 trang )

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

<b>ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC BÁCH KHOA </b>

<b>BÁO CÁO BÀI TẬP LỚN MƠN HỌCPHƯƠNG PHÁP TÍNH</b>

<i> Thành phố Hồ Chí Minh – 2023</i>

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

BẢNG PHÂN CÔNG NHIỆM VỤ VÀ THEO DÕI TIẾN ĐỘ LÀM VIỆC CỦANHÓM

1 2211282 Trần Khắc Anh Huy2 2213615 Trần Hoàng Triển3 2211293 Trương Gia Huy4 2212838 Phan Cường Quốc5 2212936 Đoàn Thanh Sơn6 2212206 Vũ Phương Nghi

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

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

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

<b>LỜI CẢM ƠN</b>

Trước khi đi vào nội dung bài báo cáo, nhóm chúng em xin gửi lời tri ânchân thành đến thầy Đậu Thế Phiệt là giảng viên dạy môn Phương Pháp Tính, nhờsự chỉ dạy tận tình qua bài giảng của thầy mà nhóm chúng em đã có một nền tảngvững chắc để bắt tay làm đề tài này. Đồng thời, do kiến thức còn hạn chế nênchúng em còn nhiều thiết sót trong q trình tìm hiểu đánh giá và trình bày để tài.Chúng em rất mong nhận được sự quan tâm, góp ý của thầy để để tài của chúng emđược đầy đủ và hoàn chỉnh hơn.

Lời cuối, xin một lần nữa gửi lời biết ơn sâu sắc đến thầy. Sự hướng dẫn củathầy là kim chỉ nam để nhóm chúng em có thể đạt được kết quả này.

1

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

<b>PHẦN 1. SỬ DỤNG GIẢI HỆ 3 ĐƯỜNG CHÉO1.1. Cơ sở lí thuyết</b>

Phương pháp sai phân hữu hạn là một trong những giải pháp để giải các phương trình vi phân, giúp đơn giản hóa phương pháp từ phương trình vi phân đến phương trình ma trận. Một nhược điểm có thể là khi kích thước vấn đề tăng lên đếnmột mức rất lớn, cách triển khai này có thể khơng phải là tốt nhất.

Bài tốn biên của phương trình vi phân:

<small>yⅆ x2−</small> <sup>y</sup>

<small>x</small><sup>+ y =0 0</sup><sup>≤x ≤</sup><sup>10</sup><small>y (0)=1 ,y (10)=5</small>

Phương trình dưới dạng ma trận:[<small>A</small>] [<small>y</small>]<small>=</small>[<small>b</small>]

<small>→</small>[<sub>y</sub>]<small>=</small>[<sub>A</sub>]<small>−1</small>[<sub>b</sub>]

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

Kết quả nhận được là một loạt số mà ta có thể dùng để vẽ đồ thị, và đócũng là câu trả lời cho vấn đề của chúng ta.

<b>1.2. Hàm rời rạc</b>

Với phương pháp sai phân hữu hạn, chúng ta làm việc với các hàm số và dữ liệu chỉ tại các điểm rời rạc. Cụ thể, thay vì có thơng tin về hàm số tại mọi điểm trên một khoảng liên tục, chúng ta chỉ biết giá trị của nó tại các điểm cụ thể, gọi là các điểm rời rạc. Đây là cách ta tiếp cận để giải các phương trình vi phân.

Để hàm số có thể được giải một cách chính xác hơn, chúng ta sẽ sử dụng nhiều điểm hơn nhưng việc đó sẽ địi hỏi có nhiều phương và nhiều tài ngun , tính tốn hơn. Đây là một sự đánh đổi.

Các điểm rời rạc được lưu trữ dưới dạng cột vector.3

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

Chúng ta có phương trình vi phân ban đầu:

<small>ⅆ2yⅆ x2−</small> <sup>y</sup>

<small>x</small><sup>+ y =0</sup>

<small>→</small>

(

<small>ⅆ2</small>

<small>ⅆ x2−</small><sup>ⅆ</sup><small>x</small><sup>+1</sup>

)

<small>y =0</small>

[<small>A</small>] Khi chúng ta chuyển nó sang dạng ma trận:[<small>A</small>] [<small>y</small>]<small>=</small>[<small>0</small>]

[<small>y</small>]<small>=</small>

[

<small>∙∙∙∙∙∙∙∙∙∙∙∙∙</small>

]

Ma trận này sẽ có số hàng bằng với số điểm của chúng ta. Ma trận y gồmcác số, sao cho khi chúng ta vẽ biểu đồ, chúng ta sẽ thấy câu trả lời của mình. Khichúng ta bắt đầu xây dựng phương trình ma trận này, câu trả lời này chưa được biếtđến, chúng ta phải xây dựng nó và sau đó tìm y.

<b>1.3. Thiết lập bài tốn</b>

<i>Bước 1: Xác định phương trình vi phân và giá trị biên</i>

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

Phương trình vi phân:

<small>ⅆ2yⅆ x2−</small> <sup>y</sup>

<small>x</small><sup>+ y =0</sup><small>→</small><sup>y( x+ Δx)−2 y ( x)+ y( x− Δx )</sup>

<small>Δx2−</small><sup>y ( x+ Δx)− y ( x− Δx )</sup><sub>2 Δx</sub> <small>+ y(x )=0→</small><sup>y</sup><small>i +1−2 yi+ yi−1</small>

<small>Δx2yi−1−</small> <sup>1</sup>

<small>2 Δx</small><sup>y</sup><small>i +1+</small><sub>2 Δx</sub><sup>1</sup> <small>yi−1+ yi=0</small>

<small>→</small>

(

<small>1Δx2+</small> <sup>1</sup>

<small>2 Δx</small>

)

<small>yi−1+</small>

(

<small>1−</small> <sup>2</sup><small>Δx2</small>

)

<small>yi+</small>

(

<small>1</small>

<small>Δx2−</small> <sup>1</sup>

<small>2 Δx</small>

)

<small>yi +1=0(¿)</small>

<i>Bước 4: Thiết lập lưới</i>

Giải phương trình này trên một lưới với 21 điểm, có nghĩa là chúng ta sẽ có 20 khoảng cách

<i>Bước 5:</i>

5

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

Thay <small>Δx(Δx=0,5)</small> vào phương trình (*)

<small>→</small>

(

<small>10,52+</small> <sup>1</sup>

<small>2 ⋅0,5</small>

)

<small>yi−1+</small>

(

<small>1−</small> <sup>2</sup><small>0,52</small>

)

<small>yi+</small>

(

<small>1</small>

<small>0,52−</small> <sup>1</sup><small>2 ⋅0,5</small>

)

<small>yi+1=0→ 5 yi−1−7 yi+3yi+ 1=0</small>

<i>Bước 6: Viết phương trình sai phân hữu hạn tại mỗi điểm trên lưới</i>

<small>5y19− y720+ y321=0y</small><sub>21</sub><small>=5</small>

<i>Bước 7: Viết phương trình dưới dạng ma trận</i>

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

<small>→</small>

( [

<small>D</small><sub>x</sub>

]

<small>−</small>[<small>Dx</small>]<small>+</small>[<small>I</small>]

)

[<small>y</small>]<small>=</small>[<sub>0</sub>]

<b>1.4 Bài toán cụ thể thường gặp</b>

Xét bài toán biên của phương trình vi phân thường tuyến tính cấp 2 với điều kiện biên được cho ở hai điểm có dạng:

{

<small>p( x) y''( x )+q (x ) y'( x)+r (x) y (x )=f (x ),a<x <b.y (a )=α, y ( b)=β.</small> (1) Với phương pháp sai phân hữu hạn 3 điểm:

Chọn số tự nhiên bất kỳ n > 0. Chia đều đoạn [a, b] thành n đoạn bởi các điểm chia x = a, x = x + kh, k = 1, 2, . . . , n − 1, x = b với h =<small>0k0n</small>

<small>b a−n</small> .

Tại các nút x , k = 1, 2, . . . , n − 1 bên trong đoạn [a, b] sử dụng cơng thức <small>k</small>

sai phân hướng tâm, ta có:

(<small>xk)≈</small><sup>y</sup>(<small>xk +1)− y (xk−1)</small>

<small>y</small><sub>k +1</sub><small>− y</small><sub>k−1</sub><small>2 h</small>

7

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

<small>−</small><sup>5</sup><small>3</small><sup>x e</sup>

<small>2−00.5</small> <sup>=4</sup>

<small>⇒ x0=0 ,x1=0.5 ,x2=1 ,x3=1.5 ,x4=2p(x)=1 ,q (x) =−2 ,r (x )=1</small>

<small>∀ k=1,2,3</small>

<small>⟺</small>

{

<small>y0=0 ,y4=−4A1y0+B1y1+C1y2=f1</small>

Thay <small>p(x)=1 ,q (x) =−2 ,r (x)=1</small>

9

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

<small>⟺</small>

{

<small>y</small><sub>0</sub><small>=0 ,y</small><sub>4</sub><small>=−4</small>

<small>2 h</small>

)

<small>y1+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y2+</small>

(

<small>1</small>

<small>h2+</small><sup>−2</sup><small>2h</small>

)

<small>y3=1 e1</small>

<small>2 h</small>

)

<small>y4=1.5 e1.5−1.5</small>

<small>2h</small>

)

<small>y</small><sub>2</sub><small>+0 y</small><sub>3</sub><small>=0.5 e0.5−0.5−</small>

(

<small>1h2−</small><sup>−2</sup>

<small>2 h</small>

)

<small>y0</small>

<small>2 h</small>

)

<small>y</small><sub>1</sub><small>+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y</small><sub>2</sub><small>+</small>

(

<small>1</small>

<small>h2+</small><sup>−2</sup><small>2 h</small>

)

<small>y3=1 e1</small>

<small>−10 y</small><sub>1</sub><small>+</small>

(

<small>1</small>

Sử dụng lại bài toán trên với bước nhảy <small>h=</small><sup>1</sup><small>3</small>

Sử dụng phương pháp sai phân hữu hạn giải bài toán :

<small>y''=2 y'− y+xex−x 0 ≤x ≤2 ,y(0)=0,y (2 )=−4</small>

Với <small>h=</small><sup>1</sup>

<small>3</small> so sánh sai số với nghiệm là:

<small>y (x)= 16</small>

<small>+2 ex</small>

<small>−x−2</small>

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

Với <small>h=0.5</small>:

{

<small>y−2 y y+ =xe x−y( 0)=0 ,y ( 2)=−4n=</small><sup>b a</sup><sup>−</sup>

<small>⇒ x0=0 ,x1=</small><sup>1</sup><small>3</small><sup>,x</sup><small>2=</small><sup>2</sup>

<small>3</small><sup>,x</sup><small>3=1 ,x</small><sub>4</sub><small>=</small><sup>4</sup><small>3</small><sup>,x</sup><small>5=</small><sup>5</sup>

<small>3</small><sup>,x</sup><small>6=2p(x)=1 ,q (x) =−2 ,r (x)=1</small>

<small>∀ k=1,2,3,4,5</small>

<small>⟺</small>

{

<small>y0=0 ,y6=−4A</small><sub>1</sub><small>y</small><sub>0</sub><small>+B</small><sub>1</sub><small>y</small><sub>1</sub><small>+C</small><sub>1</sub><small>y</small><sub>2</sub><small>=f</small><sub>1</sub><small>A</small><sub>2</sub><small>y</small><sub>1</sub><small>+B</small><sub>2</sub><small>y</small><sub>2</sub><small>+C</small><sub>2</sub><small>y</small><sub>3</sub><small>=f</small><sub>2</sub><small>A3y2+B3y3+C3y4=f3</small>

<small>A5y4+B5y5+C3y6=f6</small>Thay <small>p(x)=1 ,q (x) =−2 ,r (x)=1</small>

11

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

<small>⟺</small>

{

<small>y0=0 ,y6=−4</small>

<small>2 h</small>

)

<small>y</small><sub>0</sub><small>+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y</small><sub>1</sub><small>+</small>

(

<small>1</small>

<small>h2+</small><sup>−2</sup><small>2 h</small>

)

<small>y2=</small><sup>1</sup><sub>3</sub>

<small>2 h</small>

)

<small>y</small><sub>1</sub><small>+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y</small><sub>2</sub><small>+</small>

(

<small>1</small>

<small>h2+</small><sup>−2</sup><small>2 h</small>

)

<small>y3=</small><sup>2</sup>

<small>2 h</small>

)

<small>y</small><sub>2</sub><small>+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y</small><sub>3</sub><small>+</small>

(

<small>1</small>

<small>h2+</small><sup>−2</sup><small>2 h</small>

)

<small>y4=1 e1</small>

<small>h2+</small><sup>−2</sup><small>2 h</small>

)

<small>y</small><sub>5</sub><small>=</small><sup>4</sup>

<small>h2+</small><sup>−2</sup><small>2 h</small>

)

<small>y6=</small><sup>5</sup><sub>3</sub>

<small>2h</small>

)

<small>y2+0 y3+0y4+0 y5=</small><sup>1</sup><small>3</small>

<small>h2−</small><sup>−2</sup><small>2 h</small>

)

<small>y0(¿)</small>

<small>2 h</small>

)

<small>y1+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y2+</small>

(

<small>1</small>

<small>2h</small>

)

<small>y3+0 y4+0 y5=</small><sup>2</sup><small>3</small>

<small>−</small><sup>2</sup><small>30 y1+</small>

(

<small>1</small>

<small>2 h</small>

)

<small>y2+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y3+</small>

(

<small>1</small>

<small>2 h</small>

)

<small>y</small><sub>4</sub><small>+0 y</small><sub>5</sub><small>=1e1−10 y1+0 y2+</small>

(

<small>1</small>

<small>h2−</small><sup>−2</sup><small>2 h</small>

)

<small>y3+</small>

(

<small>1−</small><sup>2</sup>

<small>2 h</small>

)

<small>y</small><sub>5</sub><small>=</small><sup>4</sup><small>3</small>

<small>−</small><sup>4</sup><small>30y1+0 y2+ y03</small>

(

<small>1</small>

<small>2 h</small>

)

<small>y4+</small>

(

<small>1−</small><sup>2</sup><small>h2</small>

)

<small>y5=</small><sup>5</sup><sub>3</sub>

<small>2 h</small>

)

<small>y</small><sub>6</sub>

{

<small>−17 y1+6 y2=</small><sup>1</sup><small>3</small>

<small>−</small><sup>1</sup><small>3</small><sup>(</sup><sup>¿</sup><sup>)</sup><small>12 y1−17 y2+6 y3=</small><sup>2</sup>

<small>−</small><sup>2</sup><small>312 y2−17y3+6 y4=1 e11</small>

<small>−12 y3−17 y4+6 y5=</small><sup>4</sup>

<small>−</small><sup>4</sup><small>312 y</small><sub>4</sub><small>−17 y</small><sub>5</sub><small>=</small><sup>5</sup>

<small>−</small><sup>5</sup><sub>3</sub><small>+24</small>

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

Vì đây là hệ phương trình 5 ẩn, khơng bấm được máy tính nên ta tìm cách thu gọn. Xét phương trình (*) ta có :

<small>−17 y</small><sub>1</sub><small>+6 y</small><sub>2</sub><small>=</small><sup>1</sup><small>3</small>

<small>⟺ y1=13</small>

<small>+</small><sup>1</sup><small>3</small><sup>−6 y</sup><small>2</small>

Thay <sub>y</sub><small>1=</small>

<small>+</small><sup>1</sup><small>3</small><sup>−6 y</sup><small>2</small>

vào hệ

{

<small>¿12 y1−17 y2+6 y3=</small><sup>2</sup><small>3</small>

<small>−</small><sup>2</sup><small>312y2−17y3+6 y4=1 e11</small>

<small>−12 y</small><sub>3</sub><small>−17 y</small><sub>4</sub><small>+6 y</small><sub>5</sub><small>=</small><sup>4</sup>

<small>+</small><sub>3</sub><sup>1</sup><small>−6 y</small><sub>2</sub>

<small>17</small>

)

<small>−17 y2+6 y</small><sub>3</sub><small>=</small><sup>2</sup><small>3</small>

<small>−</small><sup>2</sup><small>312 y</small><sub>2</sub><small>−17y</small><sub>3</sub><small>+6 y</small><sub>4</sub><small>=1e1−112 y3−17 y4+6 y5=</small><sup>4</sup>

<small>−</small><sup>4</sup><small>312 y</small><sub>4</sub><small>−17 y</small><sub>5</sub><small>=</small><sup>5</sup>

13

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

<small>+</small><sub>3</sub><sup>1</sup><small>−6 y</small><sub>2</sub>

<small>17</small>

)

<small>−17 y2+6 y3=</small><sup>2</sup><small>3</small>

<small>−</small><sup>2</sup><small>312 y2−17y3+6 y4=1e11</small>

<small>−12 y3−17 y4+6 y5=</small><sup>4</sup>

<small>−</small><sup>4</sup><small>312 y</small><sub>4</sub><small>−17 y</small><sub>5</sub><small>=</small><sup>5</sup>

<small>12 y2−17y3+6 y4=1 e11−12 y3−17 y4+6 y5=</small><sup>4</sup>

<small>−</small><sup>4</sup><small>312 y4−17 y</small><sub>5</sub><small>=</small><sup>5</sup>

<small>⟺</small>

{

<small>y</small><sub>1</sub><small>=0.1567y</small><sub>2</sub><small>=−0.3109y3=−1.0888y4=−2.1769y</small><sub>5</sub><small>=−3.3694</small>

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

4 <sup>4</sup><sub>3</sub> -2.1769 -2.6776 0.50075 <sup>5</sup>

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

[

<small>100000000</small>

<small>−112 h2</small>

<small>43 h2</small>

<small>−52 h2−1</small> <sup>4</sup>

<small>−52 h2−1</small> <sup>4</sup>

<small>3 h2</small>

<small>−112 h20</small>

<small>43 h2</small>

<small>−52 h2−1</small> <sup>4</sup>

<small>3 h2</small>

<small>−112 h2</small>

<small>f (0.25)f (0.5)f (0.75)f (1)f (1.25)</small>

<small>f (1.5)f (1.75)</small>

<small>f (2)</small>

]

<small>= 0</small>

Giải hệ ta có được các nghiệm

<small>f (0 )=0f (0.25 )=−0.253</small>

<small>f (0.5 )=−0.53</small>

<small>f (0.75 )=−0.753</small>

<small>f (1 )=−0.1</small><sup>3</sup><small>f (1.25 )=−1.253</small>

<small>f (1.5 )=−1.5</small><sup>3</sup><small>f (1.75 )=−1.753</small>

<small>f (2 )=20</small>

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

<b>PHẦN 3. SỬ DỤNG NGƠN NGỮ LẬP TRÌNH MATLAB GIẢI PHƯƠNG TRÌNH VI PHÂN CẤP 2 BẰNG PHƯƠNG PHÁP SAI PHÂN 3 ĐIỂM</b>

<b>3.1 Xây dựng dữ liệu lập trình trên matlab</b>

17

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

Xét bài toán sau:

Sử dụng phương pháp sai phân hữu hạn giải bài toán :

<small>−</small><sup>5</sup><small>3</small><sup>x e</sup>

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

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

</div>

×