Sử dụng một cặp phương pháp adams để giải số phương trình vi phân

83 21 0
Sử dụng một cặp phương pháp adams để giải số phương trình vi phân

Đ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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TOÁN Nguyễn Thị Tuyết SỬ DỤNG MỘT CẶP PHƯƠNG PHÁP ADAMS ĐỂ GIẢI SỐ PHƯƠNG TRÌNH VI PHÂN KHĨA LUẬN TỐT NGHIỆP Ngành: Sư phạm Toán Người hướng dẫn: ThS Nguyễn Hoàng Thành Đà Nẵng - 2012 Mục lục Kiến thức chuẩn bị 1.1 Bài toán Cauchy 1.1.1 Bài toán 1.1.2 Tiếp cận cách giải số toán Cauchy 1.2 Định lý tồn nghiệm 1.3 Giới thiệu phương pháp số giải phương trình vi phân 10 1.4 Cấp xác phương pháp số 13 1.5 Tính phù hợp 14 1.6 Tính zero - ổn định 15 1.7 Sự hội tụ phương pháp số 15 1.8 Đa thức nội suy Newton 17 1.8.1 Sai phân số tính chất 17 1.8.2 Đa thức nội suy cuối bảng với mốc cách 19 Phương trình Riccati 21 1.9.1 Dạng tắc phương trình Riccati 21 1.9.2 Một số tính chất phương trình Riccati 21 1.10 Phương pháp lặp đơn giải phương trình đại số siêu việt 23 1.11 Phương pháp Runge - Kutta 24 1.9 Các phương pháp số Adams - Bashforth, Adams - Moulton 2.1 27 Phương pháp tuyến tính đa bước −1− 27 2.2 2.3 2.1.1 Cấp xác phương pháp tuyến tính đa bước 28 2.1.2 Tính phù hợp 29 2.1.3 Tính zero - ổn định 29 2.1.4 Sự hội tụ phương pháp tuyến tính k bước 30 Công thức Adams - Bashforth 30 2.2.1 Xây dựng công thức 30 2.2.2 Một vài phương pháp Adams - Bashforth 32 2.2.3 Các phương pháp Adams - Bashforth bậc cao 36 Công thức Adams - Moulton 40 2.3.1 Xây dựng công thức 40 2.3.2 Một vài công thức Adams - Moulton 42 2.3.3 Các phương pháp Adams - Moulton bậc cao 44 Sử dụng kết hợp phương pháp Adams để giải số phương trình vi phân 3.1 49 Kết hợp phương pháp Adams - Bashforth bước phương pháp Adams - Moulton bước để giải số phương trình vi 3.2 phân 49 3.1.1 Thuật toán 49 3.1.2 Áp dụng giải số ví dụ 50 Kết hợp phương pháp Adams - Bashforth bước phương pháp Adams - Moulton bước để giải số phương trình vi phân 61 3.2.1 Thuật toán 61 3.2.2 Áp dụng giải số ví dụ 62 Phụ lục 73 Tài liệu tham khảo 81 −2− LỜI CẢM ƠN Em xin bày tỏ lòng biết ơn sâu sắc tới 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 đỡ em cách cài đặt sử dụng Latex, cách lập trình Maple ứng dụng giải số phương trình vi phân Em xin bày tỏ lịng biết ơn chân thành tới tồn thể thầy giáo khoa Tố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 q trình học tập trường Nhân dịp em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè bên em, cổ vũ, động viên, giúp đỡ em suốt trình học tập thực khóa luận tốt nghiệp Đà Nẵng, ngày 22 tháng 05 năm 2012 Sinh viên Nguyễn Thị Tuyết −3− LỜI MỞ ĐẦU Phương trình vi phân mơ hình mơ tả tốt qui 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 giải số 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 ứng dụng 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 Để làm điều người ta thường tổ hợp phương pháp đa bước để nhận phương pháp đảm bảo độ xác cao Phương pháp đa bước ( yn+1 tính tường minh thơng qua yn , yn−1 , ) dùng để dự báo (predict ) nghiệm Phương pháp đa bước ẩn ( yn+1 tính cách giải phương trình phi tuyến yn+1 = ϕ (yn+1 )) cho lượng hiệu chỉnh nghiệm (corrector) Từ có tên gọi phương pháp dự báo- hiệu chỉnh (predict- corrector viết tắt P-C) Trong luận văn em sử dụng cặp phương pháp Adams gồm phương pháp Adams-Bashforth phương pháp Adams-Moulton, làm cặp phương pháp dự báo- hiệu chỉnh để giải số phương trình vi phân nhằm tăng độ xác nghiệm Bố cục khóa luận bao gồm ba chương phụ lục • Chương khóa luận trình bày 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 khóa luận 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 phương pháp dự báo- hiệu chỉnh −4− phương pháp Adams-Bashforth phương pháp Adams-Moulton • Chương tập trung trình bày ý tưởng, thuật toán sử dụng cặp phương pháp dự báo- hiệu chỉnh để giải số phương trình vi phân.Cuối chương có sử dụng phần mềm Maple vào giải số số ví dụ cụ thể minh họa hình vẽ • Phụ lục trình bày số đoạn code Maple để giải phương trình vi phân 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 làm 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 22 tháng 05 năm 2012 Sinh viên Nguyễn Thị Tuyết −5− Chương Kiến thức chuẩn bị 1.1 1.1.1 Bài toán Cauchy Bài toán Cho hàm số y : [a, b] → Rn hàm số f: [a, b] × Rn → Rn Tìm nghiệm y(x) thỏa mãn điều kiện                    1.1.2 y = f (x, y)  y (a)   y (a)  y (a) = η =    yn (a)        (1.1) Tiếp cận cách giải số toán Cauchy Chia [a, b] thành N phần điểm chia a = x0 < x1 < x2 < < xN = b b−a N Giả sử y(x) nghệm toán (1.1), kí hiệu yn suy ra: xi = + ih với h = −6− y (xn ) Mục đích ta tìm phương pháp hữu hiệu để tính dãy giá trị N xấp xỉ {yn }N n=0 nghiệm toán (1.1) tập rời rạc {xn }n=0 1.2 Định lý tồn nghiệm Định nghĩa 1.1 Cho hàm f(x,y) xác định miền D ⊂ R2 Ta nói f thỏa điều kiện Lipschitz theo biến y D tồn số dương L (gọi số Lipschitz) cho |f (x, y1 ) − f (x, y2 )| ≤ L |y1 − y2 | ; ∀ (x, y1 ) , (x, y2 ) ∈ D Nhận xét 1.1 Điều kiện Lipschitz mạnh so với điều kiện giới ∂f D nội đạo hàm riêng ∂y ∂f ∂f liên tục ≤ L áp dụng định lý ∂y ∂y Lagrange cho hàm f(x,y) theo biến y ta Thật vậy, giả sử f (x, y1 ) − f (x, y2 ) = (y1 − y2 ) ∂f [x, y1 + θ (y2 − y1 )] ∂y từ suy điều kiện Lipschitz Định lý 1.1 (Xem[13]) 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 tốn Cauchy tồn đoạn b I := [x0 − h; x0 + h] với h := a, M := max |f (x, y)| (x,y)∈D M −7− Chứng minh Giả sử y(x) nghiệm tốn Cauchy, tích phân vế phương trình y (x) = f (x, y) ta phương trình tích phân y(x) x y (x) = y0 + f (t, y (t)) dt x0 Ta chứng minh hai bước tồn nghiệm tính * Sự tồn Ta chứng minh phép lặp Picard hội tụ I đến nghiệm toán Cauchy Trước tiên ta chứng minh quy nạp |yk+1 (x) − yk (x)| ≤ M L − x0 |k+1 ; ∀x ∈ I (k + 1)! k |x Với k=0, bất đẳng thức x f (t, y0 (t)) dt ≤ M |x − x0 | x0 bất đẳng thức Giả sử ta có điều với k-1, với x0 ≤ x ≤ x0 + h ta có x |yk+1 (x) − yk (x)| = x0 x ≤ [f (t, yk (t)) − f (t, yk−1 (t))] dt |f (t, yk (t)) − f (t, yk−1 (t))|dt x0 x ≤L |yk (t) − yk−1 (t)|dt x0 ≤ ML x k k+1 |x − x0 |k k |x − x0 | dt = M L k! (k + 1)! x0 −8− Trường hợp x0 − h ≤ x ≤ x0 ta đánh giá tương tự Xét dãy hàm {yk (x)} I, ta có |yk+p (x) − yk (x)| ≤ |yk+p (x) − yk+p−1 (x)| + |yk+p−1 (x) − yk+p−2 (x)| + + |yk+1 (x) − yk (x)| M ≤ L M ≤ L (L |x − x0 |)k+p (L |x − x0 |)k+1 + + (k + p)! (k + 1)! (L.h)j j! j≥k+1 ∞ Chuỗi số j=0 (L.h)j hội tụ j! (L.h)j bé tùy ý k j! j≥k+1 đủ lớn Theo tiêu chuẩn Cauchy, dãy {yk (x)} hội tụ I đến hàm y(x) Để chứng minh y(x) nghiệm ta cần qua giới hạn đẳng thức x yk+1 (x) = y0 + f (t, yk (t)) dt x0 Vì dãy hàm {yk (x)} hội tụ đều, f liên tục hình chữ nhật D nên dãy hàm {f (t, yk (t))} hội tụ I đến hàm f (t, yk (t)) Do chuyển giới hạn qua dấu tích phân để đẳng thức x y (x) = y0 + f (t, y (t)) dt x0 Vậy y(x) nghiệm tốn Cauchy * Tính Giả sử tốn Cauchy cịn có nghiệm z(x), ta có x y (x) − z (x) = [f (t, y (t)) − f (t, z (t))] dt x0 −9− Giá trị xn |yd − yM | |yh − yM | 0 0.3 0.676.10−8 0.61.10−9 0.4 0.652.10−8 0.130.10−8 0.5 0.268.10−7 0.179.10−7 0.6 0.312.10−7 0.402.10−7 0.7 0.268.10−7 0.186.10−7 0.8 0.1140.10−6 0.1203.10−6 0.9 0.391.10−7 0.355.10−7 0.87.10−8 0.84.10−8 Nhận xét 3.5 Giá trị dự báo hiệu chỉnh gần giá trị maple tính ví dụ Qua hai ví dụ ta nhận thấy việc tính giá trị y1 , y2 phương pháp Runge - Kutta nấc sau dự báo - hiệu chỉnh phương pháp Adams - Bashforth bước Adams - Moulton bước đạt kết tốt Hình 3.9: Đồ thị biểu diễn nghiệm hiệu chỉnh − 68 − Hình 3.10: Đồ thị biểu diễn nghiệm Maple tính Ví dụ 3.6 Giải toán y = x cos y − yex y(0) = , x ∈ [0, 0.1] Chia đoạn [0, 1] làm 100 phần điểm chia = x0 , x1 , x2 , , x10 = 0.1 Sử dụng phương pháp Runge - Kutta hiển nấc tính giá trị y1 , y2 với − 69 − 0.1 − h= = 0.001, x1 = x0 + h = 0.001, x2 = x1 + h = 0.002 100   Yn1 = yn             Y = y + h f (xn , Yn1 )  n2 n            h Yn3 = yn + h f (xn , Yn1 ) − f (xn + , Yn2 ) 2         h    Yn4 = yn + h f (xn + , Yn2 ) − f (xn − h, Yn3 )   3          1    yn+1 = yn + h f (xn , Yn1 ) + f (xn + h, Yn2 ) + f (xn + h, Yn4 ) 6 Ta có y1 = 4.9983320824988910−7 y2 = 0.19986652497907710−7 Dự báo giá trị y3 phương pháp Adams - Bashforth bước y3 = y2 + h1 23 f (x2 , y2 ) − f (x1 , y1 ) + f (x0 , y0 ) 12 12 = 0.000445432496043 Sử dụng phương pháp Adams - Moulton bước hiệu chỉnh nhiều lần giá trị y3 , kí hiệu giá trị sau hiệu chỉnh y3∗ y3∗ = y2 + h1 f (x1 , y1 ) + f (x2 , y2 ) − f (x1 , y1 ) 12 12 = 0.000445432495293 Tiếp tục dự báo giá trị y4 phương pháp Adams - Bashforth bước ta y4 = 0.000789119975502 − 70 − hiệu chỉnh Adams - Moulton bước nhiều lần ta y4∗ = 0.000789119974751 Thực trình tương tự đến giá trị y10 So sánh với giá trị maple tính ta có bảng sau Giá Giá trị yn Giá trị yn Giá trị yn trị xn dự báo hiệu chỉnh maple tính 0 0 0.3 0.000445432496043 0.000445432495293 0.0004454323101 0.4 0.000789119975502 0.000789119974751 0.000789119856 0.5 0.001228645741146 0.001228645740395 0.001228645681 0.6 0.001762919732843 0.001762919732091 0.001762918844 0.7 0.002390831849204 0.002390831848451 0.002390828966 0.8 0.003111251935824 0.003111251935071 0.00311124667 0.9 0.00392302977477 0.003923029774017 0.00392302232 0.004824995076381 0.004824995075628 0.004824986029 Từ bảng giá trị so sánh giá trị maple tính với giá trị dự báo giá trị hiệu chỉnh ta có bảng sai số sau Giá trị xn |yd − yM | |yh − yM | 0 0.3 0.1859.10−9 0.1852.10−9 0.4 0.1195.10−9 0.1188.10−9 0.5 0.60.10−10 0.59.10−10 0.6 0.889.10−9 0.888.10−9 0.7 0.2883.10−8 0.2882.10−8 0.8 0.5266.10−8 0.5265.10−8 0.9 0.7455.10−8 0.7454.10−8 0.9047.10−8 0.9047.10−8 − 71 − Nhận xét 3.6 Từ bảng sai số so sánh cột giá trị ta thấy giá trị dự báo giá trị hiệu chỉnh gần với giá trị maple tính đến 10 chữ số sau dấu phẩy Sự chênh lệch dự báo hiệu chỉnh nhỏ chứng tỏ dự báo phương pháp Adams - Bashforth bước cho kết tốt Hình 3.11: Đồ thị biểu diễn nghiệm hiệu chỉnh Hình 3.12: Đồ thị biểu diễn nghiệm Maple tính − 72 − Phụ Lục Chương trình giải Maple Code: Kết hợp phương pháp Adams - Bashforth bước Adams Moulton bước giải số phương trình vi phân 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]("10000"), " 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: − 73 − end do: h1 := evalf((1/2)*h,20): x01:=evalf(x[0]+h1,20): x[1]:=evalf(x[0]+h, 20): yh[0]:=evalf(y0,20): yd[0]:=evalf(y0,20): y01:=evalf(yd[0]+h1*f(x[0],yd[0]),20): yd[1]:=evalf(y01+h1*((3/2)*f(x01, y01)-(1/2)*f(x[0], yd[0])), 20): H[1][0]:=yd[1]: H[1][1]:=evalf(y01+h1*((5/12)*f(x[1],H[1][0])+(2/3)*f(x01,y01) -(1/12)*f(x[0],yd[0])),20): i:=1: while abs(H[1][i]-H[1][i-1])>epsilon i:=i+1; H[1][i]:=evalf(y01+h1*((5/12)*f(x[1],H[1][i-1])+(2/3)*f(x01, y01)-(1/12)*f(x[0],yd[0])),20): if i>nmax then break; end if; end do: yh[1]:=H[1][i]: for i from to n yd[i]:=yh[i-1]+h*(3/2*f(x[i-1],yh[i-1])-1/2*f(x[i-2], yh[i-2])); H[i][0]:=yd[i]; H[i][1]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][0])+(2/3)* 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])+(2/3)* − 74 − 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: rs:=dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t)): ngh:=unapply(rhs(rs),t): y=ngh(x); tmp:=dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t),type=numeric, output=listprocedure,range=a b): ngh:=subs(tmp,y(t)): 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 %20A %20A\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])),evalf(abs(ngh(x[i*n/10])yh[i*n/10]))): 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](p1,p2); Code: Kết hợp phương pháp Adams - Bashforth bước Adams Moulton bước giải số phương trình vi phân restart; with(Maplets[Elements]): GD:=Maplet([ ["Nhap ham f(x,y)= ",TextField[f]("x^2+y^2")], − 75 − [ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("1")], [ "Nhap n= ", TextField[n]("10000"), " y0= ", TextField[y0] ("0")], [Button("Thoat", Shutdown([f,a,b,n,y0]))] ]): gtn:=Maplets[Display](GD); ["x*exp(x)-y*cos(x)", "0", "1", "100", "0"] 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: 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,15): Y[0]:=evalf(y0,20): yd[0]:=evalf(Y[0],20): yh[0]:=evalf(Y[0],15): Y01:=evalf(yh[0],15): Y02:=evalf(yh[0]+h*((1/2)*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); − 76 − yd[1]:=evalf(Y[1],15): yh[1]:=evalf(Y[1],15): Y11:=evalf(yh[1],15): Y12:=evalf(yh[1]+h*((1/2)*f(x[1],Y11)),15): Y13:=evalf(yh[1]+h*((1/2)*f(x[1],Y11)-(3/2)*f(x[1]+(1/2)*h, Y12)),15): Y14:=evalf(yh[1]+h*((4/3)*f(x[1]+(1/2)*h,Y12)-(1/3)*f(x[1]-h, Y13)),15): Y[2]:=evalf(yh[1]+h*((1/6)*f(x[1],Y11)+(2/3)*f(x[1]+(1/2)*h, Y12)+(1/6)*f(x[1]+h,Y14)),15); yd[2]:=evalf(Y[2],15): yh[2]:=evalf(Y[2],15): yd[3]:=evalf(yh[2]+h*((23/12)*f(x[2], yh[2])-(4/3)*f(x[1], yh[1])+(5/12)*f(x[0],yh[0])),15): H[3][0]:=yd[3]: H[3][1]:=evalf(yh[2]+h*((3/8)*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(yh[2]+h*((3/8)*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-1]+h*(23/12*f(x[i-1],yh[i-1])-4/3*f(x[i-2], yh[i-2])+(5/12)*f(x[i-3],yh[i-3])),15); H[i][0]:=yd[i]; − 77 − H[i][1]:=evalf(yh[i-1]+h*((3/8)*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*((3/8)*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): 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)),15): 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 − 78 − printf("%10.3f %20.15f %20.15f %20.15f %20A %20A\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])),evalf(abs(ngh(x[i*n/10])-yh[i*n/10]))); 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,style=point ,legend="Nghiệm hiệu chỉnh"): plots[display](p1,p2); − 79 − KẾT LUẬN Đề tài sử dụng cặp phương pháp Adams - Bashforth Adams - Moulton làm cặp phương pháp dự báo - hiệu chỉnh để giải số phương trình vi phân Đặc biệt có sử dụng Maple làm cơng cụ giải nhanh xác tốn phương trình vi phân phức tạp khơng thể tìm nghiệm dạng giải tích Ở chương em có nêu vài phương pháp Adams - Bashforth Adams - Moulton bậc cao, đồng thời tiến hành xét hội tụ tính cấp xác Tuy nhiên, chương em sử dụng kết hợp cặp phương pháp Adams - Bashforth bước Adams - Moulton bước, Adams - Bashforth bước Adams - Moulton bước để giải số phương trình vi phân sử dụng phương pháp Adams bậc cao ta phải tính nhiều giá trị ban đầu khiến sai số lớn sử dụng đến cặp phương pháp Adams bước cho thấy kết thu tốt Phương pháp Adams - Bashforth kết hợp với phương pháp Adams Moulton cặp dự báo - hiệu chỉnh tốt − 80 − Tài liệu tham khảo [1] Phạm Kỳ Anh, Giải tích số, NXB đại học quốc gia Hà Nội, 2000 [2] Butcher J.C , Numerical methods for ordinary differential equations (second edition), John Wiley & Sons, 2008 [3] Dahlquits, Convergence and stability in the numerical integration of ordinary differential equation, Math Scand 4, 1956, pp 33-53 [4] Nguyễn Hữu Điển, Hướng dẫn sử dụng Maple V, NXB Thống Kê, 1999 [5] Nguyễn Hữu Điển, Nguyễn Minh Tuấn, Latex tra cứu soạn thảo, NXB ĐHQG Hà Nội, 2003 [6] Nguyễn Thế Hoàn, Cơ sở phương trình vi phân lý thuyết ổn định, NXB Giáo Dục, 2000 [7] Henrici , Discrete variable methods in ordinary differential equation, Wiley, New York, 1962 [8] Phạm Văn Hạp, Lê Đình Thịnh, Phương pháp tính thuật tốn, NXB Giáo Dục, 2000 [9] Dỗn Tam Hịe, Tốn học tính tốn, NXB giáo dục, 2005 [10] Arieh Iserles, A first course in the numerical analysis of differential equation (second edition), Cambridge University Press, New York, 2009 − 81 − [11] Isaascon and H.B Keller, Analysis of Numerical Methods, Wiley, New York, 1966 [12] Bùi Tuấn Khang, Giáo trình phương pháp tính, Tài liệu lưu hành nội bộ, Đại học Đà Nẵng, 2003 [13] J.D Lambert, Numerical Methods for ordinary differential systems, John Wiley and Sons, Reprinted May 1991 [14] B V Ramana, Higher Engineering Mathematics, McGraw-Hill, 2006 [15] 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, NXB ĐHSP Hà Nội, 2007 − 82 − ... − Chương Sử dụng kết hợp phương pháp Adams để giải số phương trình vi phân 3.1 Kết hợp phương pháp Adams - Bashforth bước phương pháp Adams - Moulton bước để giải số phương trình vi phân 3.1.1... phương pháp Adams - Moulton bậc cao 44 Sử dụng kết hợp phương pháp Adams để giải số phương trình vi phân 3.1 49 Kết hợp phương pháp Adams - Bashforth bước phương pháp Adams - Moulton bước để giải. .. phương pháp số giải phương trình vi phân Nhiều tốn khoa học kỹ thuật quy vi? ??c tìm nghiệm phương trình vi phân thỏa mãn số điều kiện Những phương pháp giải áp dụng cho lớp hẹp phương trình vi phân

Ngày đăng: 22/05/2021, 10:02

Tài liệu cùng người dùng

Tài liệu liên quan