1. Trang chủ
  2. » Luận Văn - Báo Cáo

Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy

92 18 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 92
Dung lượng 662,2 KB

Nội dung

TRƯỜNG ĐẠI HỌC SƯ PHẠM ĐÀ NẴNG KHOA TOÁN −−− −−− TRẦN THỊ THU TRANG SỬ DỤNG CẶP PHƯƠNG PHÁP ¨ NYSTROM VÀ ADAMS- MOULTON TRONG DỰ BÁO VÀ HIỆU CHỈNH NGHIỆM SỐ CỦA BÀI TOÁN CAUCHY Chuyên ngành: Cử Nhân Tốn KHĨA LUẬN TỐT NGHIỆP Người hướng dẫn Th.S NGUYỄN HỒNG THÀNH Đà Nẵng, 5/2014 Mục lục Lời nói đầu Các kiến thức phương pháp số giải phương trình vi phân 1.1 1.2 1.3 Phương trình vi phân 1.1.1 1.1.2 Bài toán Cauchy Sự tồn nghiệm 7 Tiếp cận lời giải số toán Cauchy Đại cương phương pháp số giải phương trình vi phân 1.3.1 1.3.2 Cấp xác phương pháp số Tính phù hợp phương pháp số 10 12 1.3.3 1.3.4 Tính zero- ổn định phương pháp số Sự hội tụ phương pháp số 14 15 Đa thức nội suy Newton 1.4.1 Sai phân 16 16 1.4.2 Đa thức nội suy Newton lùi với mốc cách 17 1.5 1.6 Phương pháp Runge-Kutta Phương trình Riccati 19 21 1.7 Phương pháp lặp đơn 23 1.4 Phng phỏp Nystroăm v phng pháp Adams - Moulton 24 2.1 Phương pháp tuyến tính đa bước 2.1.1 Cấp xác 24 25 2.1.2 26 Tính phù hợp −2− 2.1.3 2.2 2.3 Sự hội tụ 28 Phương pháp Nystroăm 2.2.1 Xây dựng công thức 29 29 2.2.2 2.2.3 Một vài phương pháp Nystroăm Sự hội tụ 32 34 2.2.4 Cấp xác 36 Phương pháp Adams- Moulton 2.3.1 Xây dựng công thức 38 38 2.3.2 2.3.3 Một vài phương pháp Adams- Moulton Sự hội tụ 41 45 2.3.4 Cấp xác 47 Dự báo hiệu chnh vi cp phng phỏp Nystroăm v Adams- Moulton giải số phương trình vi phân 3.1 Kết hợp phương phỏp Nystroăm bc vi phng phỏp 3.2 3.3 50 Adams - Moulton bước 3.1.1 Thuật toán 50 50 3.1.2 Áp dụng thuật tốn giải số ví dụ Kết hợp phương phỏp Nystroăm bc vi phng phỏp 52 Adams - Moulton bước 3.2.1 Thuật toán 58 58 3.2.2 Áp dụng thuật tốn giải số ví dụ Kt hp phng phỏp Nystroăm bước với phương pháp 59 Adams - Moulton bước 66 3.3.1 3.3.2 66 68 Thuật toán Áp dụng thuật tốn giải số ví dụ Chương trình giải Maple 79 Kết luận 90 Tài liệu tham khảo 91 −3− Lời nói đầu Phương trình vi phân mơ hình mơ tả tốt quy luật tự nhiên kỹ thuật Để nghiên cứu phương trình vi phân, người ta thường tiếp cận theo hai hướng nghiên cứu định tính định lượng Khóa luận nghiên cứu định lượng phương trình vi phân phương pháp số Giải tích số lĩnh vực tốn học chuyên nghiên cứu phương pháp giải toán (chủ yếu gần đúng) cách dựa số liệu cụ thể cho kết dạng số Giải tích số giải gần tốn mà phương pháp thơng dụng khác khơng thể giải Mặc dù có lịch sử phát triển hàng trăm năm, cịn có nhiều toán thuộc lĩnh vực khoa học kỹ thuật quy việc tìm nghiệm phương trình vi phân, giải số phương trình vi phân thường thu hút quan tâm mạnh mẽ nhà toán học nhà nghiên cứu toán học ứng dụng Trong lĩnh vực có nhiều tên tuổi mang dấu n nh Milne- Simpson, Euler, J.D Lambert, Nystroăm, Arieh Iserles, Buttcher, Trong giải số phương trình vi phân, người ta thường cố gắng tìm phương pháp hữu hiệu bảo đảm hội tụ, tính ổn định tính xác cao Đề tài nghiên cứu phương pháp dự báo- hiệu chỉnh với cặp phương pháp hiển Nystroăm v phng phỏp n Adams- Moulton nhm tng xác nghiệm xấp xỉ tốn Cauchy phương trình vi phân −4− Khóa luận bao gồm chương phụ lục • Chương Trình bày số khái niệm phương pháp số giải phương trình vi phân kiến thức liên quan • Chương Tập trung trình bày cặp phương pháp tuyến tính đa bước sử dụng làm cặp phng phỏp d bỏo- hiu chnh l phng phỏp Nystroăm phương pháp Adams- Moulton • Chương Trình bày thuật toán sử dụng cặp phương pháp dự báohiệu chỉnh để giải số phương trình vi phân việc lập trình Maple để giải số ví dụ cụ thể minh họa hình vẽ • Phụ lục Trình bày số đoạn code lập trình Maple để giải phương trình vi phân Em xin chân thành cảm ơn Thầy Nguyễn Hoàng Thành, người giới thiệu đề tài, cung cấp tài liệu tận tình hướng dẫn em suốt trình thực khóa luận Em xin chân thành cảm ơn Thầy Tơn Thất Tú, giúp đỡ cách lập trình làm quen với Maple ứng dụng giải số phương trình vi phân Đồng thời em xin gửi lời cảm ơn tới tồn thể thầy giáo khoa Toán, trường Đại Học Sư Phạm, Đại Học Đà Nẵng cho em kiến thức tốn học bổ ích suốt trình học tập trường Do thời gian thực khóa luận khơng nhiều, kiến thức cịn hạn chế nên thực khóa luận khơng tránh khỏi sai sót Em mong nhận góp ý ý kiến phản biện quý thầy cô bạn Xin chân thành cảm ơn! Đà Nẵng, ngày 20 tháng 05 năm 2014 Sinh viên Trần Thị Thu Trang −5− Chương Các kiến thức phương pháp số giải phương trình vi phân 1.1 Phương trình vi phân Định nghĩa 1.1 Phương trình vi phân phương trình ẩn hàm số phương trình vi phân chứa thực đạo hàm (hoặc đạo hàm cấp cao) ẩn hàm Một phương trình vi phân bậc n thường có dạng tổng quát F (x, y, y , , y (n) ) = (1.1) Hay y (n) = f (x, y, y , , y (n−1) ) Cấp phương trình vi phân cấp cao đạo hàm thực có mặt phương trình Định nghĩa 1.2 Hàm y = ϕ(x) gọi nghiệm phương trình vi phân (1.1) phương trình (1.1) thay y = ϕ(x), y = ϕ (x), , y (n) = ϕ(n) (x) ta nhận F (x, ϕ(x), ϕ (x), , ϕ(n) (x)) = −6− 1.1.1 Bài toán Cauchy Bài toán tìm giá trị ban đầu hay cịn gọi tốn Cauchy tốn tìm nghiệm y(x) = (y1 (x), y2 (x), , yn (x)) thỏa mãn điều kiện  y = f (x, y) y(a) = η (1.2) f : [a, b]×Rn → Rn , y : [a, b] → Rn , η = (y1 (a), y2 (a), , yn (a)) 1.1.2 Sự tồn nghiệm Định nghĩa 1.3 (Xem [7]) Cho f : [a, b] × Rn → Rn ánh xạ liên tục D = [a, b] × Rn thỏa mãn điều kiện Lipschitz theo biến y, nghĩa tồn L ≥ (L gọi số Lipschitz) cho f (x, y) − f (x, y1 ) ≤ L y − y1 ∀(x, y), (x, y1 ) ∈ D Định lý 1.1 (Xem [7]) (Định lý tồn nghiệm) Giả sử hàm số f(x,y) toán Cauchy liên tục thỏa mãn điều kiện Lipschitz theo biến y hình chữ nhật D= (x, y) ∈ R2 |x − x0 | ≤ a; |y − y0 | ≤ b Khi nghiệm toán Cauchy (1.2) tồn đoạn b M := max |f (x, y)| I := [x0 − h; x0 + h] với h := a, (x,y)∈D M 1.2 Tiếp cận lời giải số toán Cauchy Xét toán (1.2) thỏa giả thiết định lý tồn nghiệm.Chia [a, b] thành N phần điểm chia a = x0 , x1 , x2 , · · · , xN = b −7− Giả sử y(x) nghiệm tốn (1.2) Khi nghiệm số (1.2) {y1 , y2 , · · · , yN } yn xấp xỉ y(xn ) xn ( yn ≈ y (xn )) Phương pháp số giải toán (1.2) hệ sai phân k + giá trị xấp xỉ {yn+1−i }ki=1 {y(xn+1−i )}ki=1 để từ ta tính giá trị xấp xỉ y1 , y2 , , yN biết k giá trị ban đầu Tham số b−a h= gọi bước nhảy N Ví dụ 1.1 Hệ sai phân yn+1 = yn + h f (xn+1 , yn+1 ) + f (xn , yn ) phương pháp số để giải tốn (1.2) Ví dụ 1.2 Hệ sai phân yn+1 = yn−1 + 2hf (xn , yn ) phương pháp số để giải toán (1.2)  y = f (x, y) = y Ví dụ 1.3 Cho với x ∈ [0, 1], h = 0, y(0) =  y n+1 = yn + hf (xn , yn ) • Giải số phương pháp Euler hiển y(x ) = y Ta có y0 = y(0) = y1 = y0 + 0, 1(y0 ) = 1, 1(y0 ) = 1, y2 y3 y4 y5 = y1 + 0, 1(y1 ) = 1, 1(y1 ) = 1, 21 = y2 + 0, 1(y2 ) = 1, 1(y2 ) = 1, 331 = y3 + 0, 1(y3 ) = 1, 1(y3 ) = 1, 4641 = y4 + 0, 1(y4 ) = 1, 1(y4 ) = 1, 61051 −8− • Giải số phương pháp Euler ẩn yn+1 = yn + hf (xn+1 , yn+1 ) Ta có y0 = y1 = y0 + 0, 1(y1 ) = + 0, 1(y1 ) ⇔ y1 = 1, 11111 y2 = y1 + 0, 1(y2 ) = 1, 11111 + 0, 1(y2 ) ⇔ y2 = 1, 234561 y3 = y2 + 0, 1(y3 ) = 1, 234561 + 0, 1(y3 ) ⇔ y3 = 1, 3717171 y4 = y3 + 0, 1(y4 ) = 1, 3717171 + 0, 1(y4 ) ⇔ y4 = 1, 52408881 y5 = y4 + 0, 1(y5 ) = 1, 52408881 + 0, 1(y5 )2 ⇔ y5 = 1, 693347691 1.3 Đại cương phương pháp số giải phương trình vi phân Định nghĩa 1.4 (Xem [7]) Phương pháp số tổng quát thường có dạng k yn+1 = αi yn+1−i + hφf (yn+1 ,yn , , yn+1−k , xn+1−k , h) (1.3) i=1 k gọi số bước phương pháp (1.3), h gọi bước nhảy phương pháp (1.3) Nếu φf khơng phụ thuộc vào yn+1 ta gọi phương pháp số (1.3) phương pháp hiển Nếu φf phụ thuộc vào yn+1 ta gọi phương pháp số (1.3) phương pháp ẩn Nếu k = phương pháp gọi phương pháp số bước Nếu k > phương pháp gọi phương pháp số đa bước hay phương pháp số k -bước Ví dụ 1.4 Phương pháp số yn+1 = yn + hf (xn , yn ) phương pháp hiển bước (Cịn gọi phương pháp Euler hiển) −9− Ví dụ 1.5 Phương pháp số yn+1 = yn + hf (xn+1 , yn+1 ) phương pháp ẩn bước (Còn gọi phương pháp Euler ẩn) Ví dụ 1.6 Phương pháp số yn+1 = yn−1 + 2hf (xn , yn ) phương pháp hiển bước (Còn gọi phương pháp trung điểm) Ví dụ 1.7 Phương pháp số yn+1 = yn−1 + h [f (xn+1 , yn+1 ) + 4f (xn , yn ) + f (xn−1 , yn−1 )] phương pháp ẩn bước (Còn gọi phương pháp Milne- Simpson) 1.3.1 Cấp xác phương pháp số Định nghĩa 1.5 (Xem [7]) Phương pháp số (1.3) gọi phương pháp số có cấp xác p k y(xn+1 ) − αi y(xn+1−i ) − hφf y(xn+1 ), y(xn ), , y(xn+1−k ), xn+1−k , h i=1 = 0(hp+1 ) 0(hp+1 ) vô bé cấp với hp+1 h tiến đến Ví dụ 1.8 Phương pháp Euler hiển yn+1 = yn + hf (xn , yn ) Giả thiết yn+1 = y(xn+1 ), yn = y(xn ) Khai triển Taylor y(x) x = xn ta có y(xn+1 ) = y(xn + h) = y(xn ) + hy (xn ) + 0(h2 ) − 10 − Hình 3.13: Đồ thị biểu diễn Hình 3.14: Đồ thị biểu diễn nghiệm hiệu chỉnh nghiệm xác − 78 − Chương trình giải Maple Sử dụng cp phng phỏp Nystroăm v Adams- Moulton gii s phng trỡnh vi phõn Code: Kt hp phng phỏp Nystroăm bước Adams- Moulton bước Đây code ví dụ 3.1 > restart; with(Maplets[Elements]): > GD:=Maplet([ ["Nhap ham f(x,y)= ",TextField[f]("x^2+ y^2")], [ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("1")], [ "Nhap n= ", TextField[n]("1000"), " y0= ", TextField[y0]("0")], [Button("Thoat", Shutdown([f,a,b,n,y0]))] ]): gtn:=Maplets[Display](GD); > ham:=parse(gtn[1]); n:=parse(gtn[4]); a:=parse(gtn[2]); b:=parse(gtn[3]); y0:=parse(gtn[5]); h:=evalf((b-a)/n); f:=unapply(ham,x,y): epsilon:=10^(-20): nmax:=100: > for i from to n − 79 − x[i]:=a+i*h: end do: > x[1]:=evalf(x[0]+h,20): x[2]:=evalf(x[1]+h,20): x[3]:=evalf(x[2]+h,20): x[4]:=evalf(x[3]+h,20): Y[0]:=evalf(y0,20): yd[0]:=evalf(Y[0],20): yh[0]:=evalf(Y[0],20): Y01:=evalf(yh[0],15); Y02:=evalf(yh[0]+(1/2)*h*f(x[0],Y01),15); Y03:=evalf(yh[0]+h*((1/2)*f(x[0],Y01) -(3/2)*f(x[0]+(1/2)*h,Y02)),15); Y04:=evalf(yh[0]+h*((4/3)*f(x[0]+(1/2)*h,Y02) -(1/3)*f(x[0]-h,Y03)),15); Y[1]:=evalf(yh[0]+h*((1/6)*f(x[0],Y01)+ (2/3)*f(x[0]+(1/2)*h,Y02)+(1/6)*f(x[0]+h,Y04)),15); yd[1]:=evalf(Y[1],15); yh[1]:=evalf(Y[1],15); > yd[2]:=evalf(yh[0]+2*h*f(x[1],yh[1]),15); H[2][0]:=yd[2]: H[2][1]:=evalf(yh[1]+ h*((5/12)*f(x[2],H[2][0])+(8/12)*f(x[1], yh[1])-(1/12)*f(x[0],yh[0])),15); i:=1: while abs(H[2][i]-H[2][i-1])>epsilon i:=i+1; H[2][i]:=evalf(yd[1]+h*((5/12)*f(x[2],H[2][i-1])+(8/12)*f(x[1], yh[1])-(1/12)*f(x[0],yh[0])),15); if i>nmax then break; end if; end do; yh[2]:=H[2][i]; >for i from to n yd[i]:=evalf(yh[i-2]+2*h*f(x[i-1],yh[i-1]),15); H[i][0]:=yd[i]; − 80 − H[i][1]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][0])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): j:=1: while abs(H[i][j]-H[i][j-1])>epsilon j:=j+1; H[i][j]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][j-1])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): if j>nmax then break; end if; end do: yh[i]:=H[i][j]; end do: > y:=’y’: rs:={dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t))}: if rs={} then print(‘Khơng tìm nghiệm xác Maple cho nghiệm số phương pháp Runge-Kutta bậc 4-5 để làm sở so sánh.‘); tmp:=dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0}, y(t),type=numeric,output=listprocedure,range=a b): ngh:=evalf(subs(tmp,y(t)),20): else ngh:=unapply(rhs(rs[1]),t): print(‘Nghiệm xác giải Maple‘); print(y(x)=ngh(x)); end if; >printf("%12s %16s %22s %16s %20s %20s\n","Gia tri x", "y du bao","y hieu chinh","y Maple","yM-yd","yM-yh"); for i from to 10 printf("%10.3f %20.15f %20.15f %20.15f %20.15f %20.15f\n" ,x[i*n/10],yd[i*n/10],yh[i*n/10],evalf(ngh(x[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yd[i*n/10]),15), − 81 − evalf(abs(ngh(x[i*n/10])-yh[i*n/10]),15)); end do; > p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm xác"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2,p1); > p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm Maple"): plots[display](p1); > p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2); > p1:=plot([seq([x[i],yd[i]],i=0 n)],color=blue, legend="Nghiệm dự báo"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=red, legend="Nghiệm hiệu chỉnh"): plots[display](p1,p2); Đối với ví dụ khác ta code trên, thay hàm f (x, y) hàm ví dụ chọn giá trị y0 , giá trị n phù hp Code: Kt hp phng phỏp Nystroăm bc v Adams- Moulton bước Đây code ví dụ 3.3 > restart; with(Maplets[Elements]): Digits:=20: > GD:=Maplet([ ["Nhap ham f(x,y)= ",TextField[f]("x*exp(y)- y*cos(x)")], [ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("0.1")], [ "Nhap n= ", TextField[n]("1000"), " y0= ", TextField[y0]("0")], [Button("Thoat", Shutdown([f,a,b,n,y0]))] − 82 − ]): > gtn:=Maplets[Display](GD); ham:=parse(gtn[1]); n:=parse(gtn[4]); a:=parse(gtn[2]); b:=parse(gtn[3]); y0:=parse(gtn[5]); h:=evalf((b-a)/n): f:=unapply(ham,x,y): epsilon:=10^(-20): nmax:=100: > for i from to n x[i]:=a+i*h: end do: > yh[0]:=evalf(y0,20): yd[0]:=evalf(y0,20): for z from to Y[z-1][1]:=evalf(yh[z-1],15): Y[z-1][2]:=evalf(yh[z-1]+(1/2)*h*f(x[z-1],Y[z-1][1]),15): Y[z-1][3]:=evalf(yh[z-1]+h*((1/2)*f(x[z-1],Y[z-1][1]) -(3/2)*f(x[z-1]+(1/2)*h,Y[z-1][2])),15): Y[z-1][4]:=evalf(yh[z-1]+h*((4/3)*f(x[z-1]+(1/2)*h,Y[z-1][2]) -(1/3)*f(x[z-1]-h,Y[z-1][3])),15): yd[z]:=evalf(yh[z-1]+h*((1/6)*f(x[z-1],Y[z-1][1])+ (2/3)*f(x[z-1]+(1/2)*h,Y[z-1][2]) +(1/6)*f(x[z-1]+h,Y[z-1][4])),15): yh[z]:=yd[z]: end do; > yd[3]:=evalf(yh[1]+(h/3)*(7*f(x[2],yh[2]) -2*f(x[1],yh[1])+f(x[0],yh[0])),15); H[3][0]:=yd[3]: H[3][1]:=evalf(yh[2]+ h*((5/12)*f(x[3],H[3][0])+(8/12)*f(x[2], yh[2])-(1/12)*f(x[1],yh[1])),10); − 83 − i:=1: while abs(H[3][i]-H[3][i-1])>epsilon i:=i+1; H[3][i]:=evalf(yd[2]+h*((5/12)*f(x[3],H[3][i-1])+(8/12)*f(x[2], yh[2])-(1/12)*f(x[1],yh[1])),10); if i>nmax then break; end if; end do; yh[3]:=H[3][i]; > for i from to n yd[i]:=evalf(yh[i-2]+(h/3)*(7*f(x[i-1],yh[i-1]) -2*f(x[i-2],yh[i-2])+f(x[i-3],yh[i-3])),15); H[i][0]:=yd[i]; H[i][1]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][0])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): j:=1: while abs(H[i][j]-H[i][j-1])>epsilon j:=j+1; H[i][j]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][j-1])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): if j>nmax then break; end if; end do: yh[i]:=H[i][j]; end do: > y:=’y’: rs:={dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t))}: if rs={} then print(‘Khơng tìm nghiệm xác Maple cho nghiệm số phương pháp Runge-Kutta bậc 4-5 để làm sở so sánh.‘); tmp:=dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t),type=numeric, output=listprocedure,range=a b): ngh:=evalf(subs(tmp,y(t)),20): − 84 − else ngh:=unapply(rhs(rs[1]),t): print(‘Nghiệm xác giải Maple‘); print(y(x)=ngh(x)); end if: printf("%12s %16s %22s %16s %20s %20s\n","Gia tri x","y du bao", "y hieu chinh","y Maple","yM-yd","yM-yh"); > for i from to 10 printf("%10.3f %20.15f %20.15f %20.15f %20.15f %20.15f\n" ,x[i*n/10],yd[i*n/10],yh[i*n/10],evalf(ngh(x[i*n/10])), evalf(abs(ngh(x[i*n/10])-yd[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yh[i*n/10]),15)); end do; > p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm xác"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2,p1); > p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm Maple"): plots[display](p1); > p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2); >p1:=plot([seq([x[i],yd[i]],i=0 n)],color=blue, legend="Nghiệm dự báo"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=red, legend="Nghiệm hiệu chỉnh"): plots[display](p1,p2); Đối với ví dụ khác ta code trên, thay hàm f (x, y) hàm ví dụ chọn giá trị y0 , giá trị n phù hợp Code: Kết hợp phương phỏp Nystroăm bc v Adams- Moulton bc õy code ví dụ 3.5 − 85 − > restart; with(Maplets[Elements]): Digits:=20: > GD:=Maplet([ ["Nhap ham f(x,y)= ",TextField[f]("x^3*exp(x^2)+ 2*x*y")], [ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("1")], [ "Nhap n= ", TextField[n]("1000"), " y0= ", TextField[y0]("0")], [Button("Thoat", Shutdown([f,a,b,n,y0]))] ]): > gtn:=Maplets[Display](GD); ham:=parse(gtn[1]); n:=parse(gtn[4]); a:=parse(gtn[2]); b:=parse(gtn[3]); y0:=parse(gtn[5]); h:=evalf((b-a)/n): f:=unapply(ham,x,y): epsilon:=10^(-20): nmax:=100: > for i from to n x[i]:=a+i*h: end do: > yh[0]:=evalf(y0,20): yd[0]:=evalf(y0,20): for z from to Y[z-1][1]:=evalf(yh[z-1],15): Y[z-1][2]:=evalf(yh[z-1]+(1/2)*h*f(x[z-1],Y[z-1][1]),15): Y[z-1][3]:=evalf(yh[z-1]+h*((1/2)*f(x[z-1],Y[z-1][1]) -(3/2)*f(x[z-1]+(1/2)*h,Y[z-1][2])),15): Y[z-1][4]:=evalf(yh[z-1]+h*((4/3)*f(x[z-1]+(1/2)*h,Y[z-1][2]) -(1/3)*f(x[z-1]-h,Y[z-1][3])),15): − 86 − yd[z]:=evalf(yh[z-1]+h*((1/6)*f(x[z-1],Y[z-1][1])+ (2/3)*f(x[z-1]+(1/2)*h,Y[z-1][2]) +(1/6)*f(x[z-1]+h,Y[z-1][4])),15): yh[z]:=yd[z]: end do; > yd[3]:=evalf(yh[1]+(h/3)*(7*f(x[2],yh[2]) -2*f(x[1],yh[1])+f(x[0],yh[0])),15); H[3][0]:=yd[3]: H[3][1]:=evalf(yh[2]+ h*((9/24)*f(x[3],H[3][0])+(19/24)*f(x[2], yh[2])-(5/24)*f(x[1],yh[1])+(1/24)*f(x[0],yh[0])),15); i:=1: while abs(H[3][i]-H[3][i-1])>epsilon i:=i+1; H[3][i]:=evalf(yd[2]+h*((9/24)*f(x[3],H[3][i-1])+(19/24)*f(x[2], yh[2])-(5/24)*f(x[1],yh[1])+(1/24)*f(x[0],yh[0])),15); if i>nmax then break; end if; end do; yh[3]:=H[3][i]; > for i from to n yd[i]:=evalf(yh[i-2]+(h/3)*(7*f(x[i-1],yh[i-1]) -2*f(x[i-2],yh[i-2])+f(x[i-3],yh[i-3])),15); H[i][0]:=yd[i]; H[i][1]:=evalf(yh[i-1]+h*((9/24)*f(x[i],H[i][0])+(19/24)* f(x[i-1],yh[i-1])-(5/24)*f(x[i-2],yh[i-2]) +(1/24)*f(x[i-3],yh[i-3])),15): j:=1: while abs(H[i][j]-H[i][j-1])>epsilon j:=j+1; H[i][j]:=evalf(yh[i-1]+h*((9/24)*f(x[i],H[i][j-1])+(19/24)* f(x[i-1],yh[i-1])-(5/24)*f(x[i-2],yh[i-2]) +(1/24)*f(x[i-3],yh[i-3])),15): − 87 − if j>nmax then break; end if; end do: yh[i]:=H[i][j]; end do: > y:=’y’: rs:={dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t))}: if rs={} then print(‘Khơng tìm nghiệm xác Maple cho nghiệm số phương pháp Runge-Kutta bậc 4-5 để làm sở so sánh.‘); tmp:=dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t),type=numeric, output=listprocedure,range=a b): ngh:=evalf(subs(tmp,y(t)),20): else ngh:=unapply(rhs(rs[1]),t): print(‘Nghiệm xác giải Maple‘); print(y(x)=ngh(x)); end if: printf("%12s %16s %22s %16s %20s %20s\n","Gia tri x", "y du bao", "y hieu chinh","y Maple","yM-yd","yM-yh"); > for i from to 10 printf("%10.3f %20.15f %20.15f %20.15f %20.15f %20.15f\n" ,x[i*n/10],yd[i*n/10],yh[i*n/10],evalf(ngh(x[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yd[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yh[i*n/10]),15)); end do; > p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm xác"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2,p1); > p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm Maple"): plots[display](p1); − 88 − > p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2); >p1:=plot([seq([x[i],yd[i]],i=0 n)],color=blue, legend="Nghiệm dự báo"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=red, legend="Nghiệm hiệu chỉnh"): plots[display](p1,p2); Đối với ví dụ khác ta code trên, thay hàm f (x, y) hàm ví dụ chọn giá trị y0 , giá trị n phù hợp − 89 − Kết luận Trong khóa luận em hệ thống lại số khái niệm phương pháp số giải phương trình vi phân Khóa luận sử dụng mt cp phng phỏp Nystroăm v Adams- Moulton lm cp phương pháp dự báo hiệu chỉnh để giải số phương trình vi phân, đưa nghiệm gần có sai số nhỏ so với nghiệm xác Lập trình Maple, minh họa đồ thị cách trực quan sinh động Ở chương hai em trình bày rõ cách thành lập phương pháp số Nystroăm v Adams- Moulton, nờu mt vi phng phỏp Nystrom Adams- Moulton để giải phương trình vi phân Tuy nhiên, chương em sử dụng kết hp cp phng phỏp Nystroăm bc v AdamsMoulton bc, Nystroăm bc v Adams- Moulton 2, Nystroăm bước Adams- Moulton bước để giải số phương trỡnh vi phõn Phng phỏp Nystroăm kt hp vi phng pháp Adams- Moulton cặp dự báo- hiệu chỉnh tốt − 90 − Tài liệu tham khảo [1] Arieh Iserles, A first course in the numerical analysis of differential equation (Second Edition), Cambridge University Press, New York, 2009 [2] Butcher J.C (John Charles), Numerical methods for ordinary differential (Second edition), John Wiley & Sons 2008 [3] B V Ramana, Higher engineering mathematics, The McGraw-Hill Companies, 2006 [4] Dahlquits, Convergence and stability in the numerical integration of ordinary differential equation,Math Scand 4, 1956, pp 33 - 53 [5] Henrici , Discrete variable methods in ordinary differential equation, Wiley, New York, 1962 [6] Isaascon and H.B Keller, Analysis of Numerical Methods, Wiley, New York, 1966 [7] J.D Lambert, Numerical Methods for ordinary differential systems, John Wiley and Sons Ltd, Reprinted May 1993 [8] Hoàng Trọng Thái, Trần Thị Ngọc Diệp, Lê Quang Phan, Nguyễn Văn Tuấn, Sử dụng phần mềm toán học, Nhà xuất đại học sư phạm Hà Nội, 2007 [9] Lê Trọng Vinh, Giải tích số, NXB Khoa Học Kỹ Thuật Hà Nội, 2000 − 91 − [10] Nguyễn Hữu Điển, Hướng dẫn sử dụng Maple V, NXB Thống Kê, 1999 [11] Nguyễn Hữu Điển, Nguyễn Minh Tuấn, Latex tra cứu soạn thảo, NXB.ĐHQG.HN, 2001 [12] Nguyễn Thế Hồn, Cơ sở phương trình vi phân lý thuyết ổn định, NXB Giáo Dục, 2000 [13] Phạm Kỳ Anh, Giải tích số, Nhà xuất đại học quốc gia Hà Nội, 2000 [14] Trịnh Đức Tài, Bài giảng phương trình vi phân (lưu hành nội bộ), ĐH Đà Lạt, 2008 − 92 − ... phương pháp tuyến tính đa bước sử dụng làm cặp phương pháp dự báo- hiệu chỉnh l phng phỏp Nystroăm v phng phỏp Adams- Moulton ã Chương Trình bày thuật tốn sử dụng cặp phương pháp dự báohiệu chỉnh. .. ẩn Nếu k = phương pháp gọi phương pháp số bước Nếu k > phương pháp gọi phương pháp số đa bước hay phương pháp số k -bước Ví dụ 1.4 Phương pháp số yn+1 = yn + hf (xn , yn ) phương pháp hiển bước... xác phương pháp Adams - Moulton bước p = − 49 − Chương Dự báo hiệu chỉnh với cặp phương pháp Nystră om v AdamsMoulton gii s phng trỡnh vi phõn om bc vi Kt hp phng phỏp Nystră 3.1 phương pháp Adams

Ngày đăng: 26/06/2021, 13:33

HÌNH ẢNH LIÊN QUAN

Cho a= x0 < x1 < .... < xn =b và bảng sau x x 0x1x2....xn−1 x n yy 0y1y2.....yn−1yn - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
ho a= x0 < x1 < .... < xn =b và bảng sau x x 0x1x2....xn−1 x n yy 0y1y2.....yn−1yn (Trang 17)
Ví dụ 1.18. Xét hàm số cho bởi bảng - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
d ụ 1.18. Xét hàm số cho bởi bảng (Trang 18)
Hãy tìm đa thức nội suy Newton lùi với các mốc cách đều cho bởi bảng trên. - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
y tìm đa thức nội suy Newton lùi với các mốc cách đều cho bởi bảng trên (Trang 18)
Cho bảng Butcher - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
ho bảng Butcher (Trang 19)
Ví dụ 1.20. Với bảng Butcher - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
d ụ 1.20. Với bảng Butcher (Trang 20)
Hình 2.1: Bảng giá trị hệ số βi tương ứng với phương pháp Nystrom ¨k bước - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 2.1 Bảng giá trị hệ số βi tương ứng với phương pháp Nystrom ¨k bước (Trang 34)
Hình 2.2: Bảng giá trị hệ số βi tương ứng với phương pháp Adams- Moulto nk bước e. Phương pháp Adams - Moulton 8 bước - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 2.2 Bảng giá trị hệ số βi tương ứng với phương pháp Adams- Moulto nk bước e. Phương pháp Adams - Moulton 8 bước (Trang 43)
Hình 3.1: Đồ thị biểu diễn nghiệm hiệu chỉnh - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.1 Đồ thị biểu diễn nghiệm hiệu chỉnh (Trang 54)
Hình 3.2: Đồ thị biểu diễn nghiệm chính xác - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.2 Đồ thị biểu diễn nghiệm chính xác (Trang 54)
Nhận xét 3.1. Từ bảng sai số so sán h2 cột giá trị ta thấy giá trị dự báo và giá trị hiệu chỉnh gần bằng giá trị nghiệmy(x) do Maple tính, cụ thể là giá trị dự báo đúng đến 9, 10 chữ số sau dấu phẩy, còn giá trị hiệu chỉnh đúng đến 10, 11, 12, 13 chữ số s - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
h ận xét 3.1. Từ bảng sai số so sán h2 cột giá trị ta thấy giá trị dự báo và giá trị hiệu chỉnh gần bằng giá trị nghiệmy(x) do Maple tính, cụ thể là giá trị dự báo đúng đến 9, 10 chữ số sau dấu phẩy, còn giá trị hiệu chỉnh đúng đến 10, 11, 12, 13 chữ số s (Trang 54)
Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
ng tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị (Trang 56)
Hình 3.3: Đồ thị biểu diễn nghiệm hiệu chỉnh - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.3 Đồ thị biểu diễn nghiệm hiệu chỉnh (Trang 57)
Nhận xét 3.3. Từ bảng sai số ta thấy giá trị hiệu chỉnh và giá trị dự báo đều gần với giá trị nghiệmy(x)do Maple tính đến 9, 10, 11 chữ số sau dấu phẩy - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
h ận xét 3.3. Từ bảng sai số ta thấy giá trị hiệu chỉnh và giá trị dự báo đều gần với giá trị nghiệmy(x)do Maple tính đến 9, 10, 11 chữ số sau dấu phẩy (Trang 62)
Hình 3.6: Đồ thị biểu diễn nghiệm chính xác - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.6 Đồ thị biểu diễn nghiệm chính xác (Trang 62)
Hình 3.5: Đồ thị biểu diễn nghiệm hiệu chỉnh - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.5 Đồ thị biểu diễn nghiệm hiệu chỉnh (Trang 62)
Nhận xét 3.4. Từ bảng sai số ta thấy giá trị hiệu chỉnh và giá trị dự báo đều gần với giá trị nghiệmy(x)do Maple tính đến 9, 10, 11 chữ số sau dấu phẩy. - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
h ận xét 3.4. Từ bảng sai số ta thấy giá trị hiệu chỉnh và giá trị dự báo đều gần với giá trị nghiệmy(x)do Maple tính đến 9, 10, 11 chữ số sau dấu phẩy (Trang 65)
Hình 3.8: Đồ thị biểu diễn nghiệm chính xác - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.8 Đồ thị biểu diễn nghiệm chính xác (Trang 66)
Hình 3.7: Đồ thị biểu diễn nghiệm hiệu chỉnh - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.7 Đồ thị biểu diễn nghiệm hiệu chỉnh (Trang 66)
Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
ng tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị (Trang 70)
Hình 3.9: Đồ thị biểu diễn nghiệm hiệu chỉnh - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.9 Đồ thị biểu diễn nghiệm hiệu chỉnh (Trang 71)
Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
ng tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị (Trang 73)
Nhận xét 3.7. Từ bảng sai số so sán h2 cột giá trị ta thấy giá trị hiệu chỉnh gần với giá trị nghiệm y(x)do Maple tính đến 12, 13 chữ số sau dấu phẩy; giá trị dự báo đúng tới 11, 12 chữ số sau dấu phẩy so với giá trị nghiệm y(x)do Maple tính. - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
h ận xét 3.7. Từ bảng sai số so sán h2 cột giá trị ta thấy giá trị hiệu chỉnh gần với giá trị nghiệm y(x)do Maple tính đến 12, 13 chữ số sau dấu phẩy; giá trị dự báo đúng tới 11, 12 chữ số sau dấu phẩy so với giá trị nghiệm y(x)do Maple tính (Trang 77)
Hình 3.14: Đồ thị biểu diễn nghiệm chính xác - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.14 Đồ thị biểu diễn nghiệm chính xác (Trang 78)
Hình 3.13: Đồ thị biểu diễn nghiệm hiệu chỉnh - Sử dụng cặp phương pháp nystrom và adams moulton trong dự báo và hiệu chỉnh nghiệm số của bài toán cauchy
Hình 3.13 Đồ thị biểu diễn nghiệm hiệu chỉnh (Trang 78)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w