Phương pháp sai phân giải gần đúng phương trình vi phân tuyến tính

77 2.3K 11
Phương pháp sai phân giải gần đúng phương trình vi phân tuyến tính

Đ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

Trong lĩnh vực toán ứng dụng thường gặp rất nhiều bài toán có liên quan tới phương trình vi phân thường. Việc nghiên cứu phương trình vi phân thường vì vậy đóng một vai trò quan trọng trong lý thuyết toán học. Nhiều hiện tượng khoa học và kỹ thuật dẫn đến các bài toán biên của phương trình vật lý toán. Giải các bài toán đó đến đáp số bằng số là một yêu cầu quan trọng của thực tiễn. Trong một số ít trường hợp, thật đơn giản việc đó có thể làm được nhờ vào nghiệm tường minh của bài toán dưới dạng các công thức sơ cấp, các tích phân hoặc các chuỗi hàm. Còn trong đại đa số trường hợp khác, đặc biệt là đối với các bài toán có hệ số biến thiên, các bài toán phi tuyến, các bài toán trên miền bất kỳ thì nghiệm tường minh của bài toán không có hoặc có nhưng rất phức tạp. Chính vì vậy chúng ta phải nhờ tới các phương pháp xấp xỉ để tìm nghiệm gần đúng. Do nhu cầu của thực tiễn và của sự phát triển lý thuyết toán học, các nhà toán học đ• tìm ra rất nhiều phương pháp để giải gần đúng các phương trình vi phân thường (các phương pháp giải tích như phương pháp chuỗi Taylo, phương pháp xấp xỉ liên tiếp Pica, các phương pháp số như phương pháp một bước, phương pháp Ađam, phương pháp Runghe-Kuta,…). Đề tài: "Phương pháp sai phân giải gần đúng phương trình vi phân tuyến tính"

Mục lục Lời nói đầu Chơng Khái niệm mở đầu phơng pháp sai phân 1.1 Mở đầu 1.2 Khái niệm toán biên 1.3 Bài toán vi phân ……………………………………………………… 1.4 Líi sai ph©n ………………………………………………………… 1.5 Hàm lới 1.6 Đạo hàm lới ………………………………………………………… 1.7 Qui íc viÕt v« cïng bÐ ……………………………………………… 1.8 Công thức Taylor 1.9 Liên hệ đạo hàm đạo hàm lới 1.10 Phơng pháp sai phân 1.11 Giải toán sai phân phơng pháp truy đuổi 1.11.1 Phơng pháp truy đuổi từ phải 10 1.11.2 Phơng pháp truy đuổi từ trái 11 1.12 Sự ổn định toán sai phân 12 1.13 Sù xÊp xØ …………………………………………………………… 12 1.14 Sù hội tụ 13 1.15 Trờng hợp điều kiện biên loại ba 14 Chơng Phơng pháp sai phân giải gần phơng trình vi phân cấp bốn 18 2.1 Bài toán vi phân 18 2.2 Lới sai phân 19 2.3 Hàm lới 19 2.4 Đạo hàm lới 19 2.5 Phơng pháp sai phân 20 2.6 Cách giải toán sai phân 27 2.6.1 Phơng pháp lặp Seidel co dÃn 27 2.6.2 Phơng pháp truy đuổi 28 2.6.2.1 Phơng pháp truy đuổi từ phải 28 2.6.2.2 Phơng pháp truy đuổi từ trái 31 2.6.2.3 Sự ổn định 34 2.7 Sự xấp xỉ 37 2.8 Sự ổn định toán sai phân 37 2.9 Bài toán sai phân đối víi sai sè ……………………………………… 49 2.10 Sù héi tơ vµ sai sè ………………………………………………… 50 Phơ lơc ……………………………………………………………… … 58 Tµi liệu tham khảo 84 Lời nói đầu Trong lĩnh vực toán ứng dụng thờng gặp nhiều toán có liên quan tới phơng trình vi phân thờng Việc nghiên cứu phơng trình vi phân thờng đóng vai trò quan trọng lý thuyết toán học Nhiều tợng khoa học kỹ thuật dẫn đến toán biên phơng trình vật lý toán Giải toán đến đáp số số yêu cầu quan trọng thực tiễn Trong số trờng hợp, thật đơn giản việc làm đợc nhờ vào nghiệm tờng minh toán dới dạng công thức sơ cấp, tích phân chuỗi hàm Còn đại đa số trờng hợp khác, đặc biệt toán có hệ số biến thiên, toán phi tuyến, toán miền nghiệm tờng minh toán có nhng phức tạp Chính phải nhờ tới phơng pháp xấp xỉ để tìm nghiệm gần Do nhu cầu thực tiễn phát triển lý thuyết toán học, nhà toán học đà tìm nhiều phơng pháp để giải gần phơng trình vi phân thờng (các phơng pháp giải tích nh phơng pháp chuỗi Taylo, phơng pháp xấp xỉ liên tiếp Pica, phơng pháp số nh phơng pháp bớc, phơng pháp Ađam, phơng pháp Runghe-Kuta,) Đề tài: "Phơng pháp sai phân giải gần phơng trình vi phân tuyến tính" Trong phạm vi đồ án mình, em xin trình bày phơng pháp gần để giải phơng trình vi phân cấp bốn tổng quát phơng pháp sai phân Đây hai lớp phơng pháp gần quan trọng đợc nghiên cứu nhiều phơng pháp sai phân phơng pháp phần tử hữu hạn Cả hai phơng pháp tìm cách đa toán đà cho toán đại số, thờng hay nhiều hệ đại số tuyến tính Trong phơng pháp miền ta tìm nghiệm phơng trình thờng đợc phủ lới gồm số hữu hạn điểm (nút), đạo hàm phơng trình đợc thay sai phân tơng ứng giá trị hàm nút lới Em xin cám ơn thầy Lê Trọng Vinh đà tận tình hớng dẫn em thời gian làm đồ án vừa qua Hà nội 12 2003 Sinh viên thực Nguyễn Đức Dũng Chơng Khái niệm mở đầu phơng pháp sai phân 1.1 Mở đầu Trong chơng để trình bày khái niệm phơng pháp sai phân ta xét toán biên phơng trình vi phân cấp hai 1.2 Khái niệm toán biên Bài toán biên có phơng trình vi phân cấp lớn hai điều kiện bổ sung đợc cho nhiều điểm Chẳng hạn toán biên phơng trình vi phân tuyến tính cÊp hai cã d¹ng: [ p( x) y ′( x)] ′ − q( x) y ( x) = − f ( x) a< x Cßn nÕu σ = = ta có toán biên loại hai Trong thực tế ta gặp toán mà x = a x = b có điều kiện biên khác (chẳng hạn x = a ta có điều kiện biên loại x = b ta có điều kiện biên loại hai ba) ta có toán biên hỗn hợp Sau ta xem xét khái niệm phơng pháp sai phân thông qua toán biên loại 1.3 Bài toán vi phân Cho hai sè a vµ b víi a < b Tìm hàm y = y (x) xác định a < x < b tháa m·n: Ly = − ( py′ )′ + qy = f ( x) y(a) = α , y(b) = β (1.1) (1.2) ®ã p = p( x) , q = q ( x) , f ( x) hàm số cho trớc đủ tr¬n tháa m·n: < c0 ≤ p ( x) ≤ c1 , c0 , c1 = const , q( x) , số cho trớc Giả sử toán (1.1) (1.2) có nghiệm y đủ trơn [a, b] 1.4 Lới sai phân Ta chia đoạn [a, b] thành N đoạn nhau, đoạn dài h = ( b a ) N điểm xi = a + ih , i = 0,1, , N Mỗi điểm xi gọi nút lới, h gọi bớc lới ã Tập h = { xi ,1 ≤ i ≤ N − 1} gäi tập nút ã Tập h = { x0 , xN } gọi tập nút biên • TËp Ωh = Ω h ∪ Γh gäi lµ mét líi trªn [a, b] a = x0 1.5 xi x1 xN = b Hàm lới Đó hàm số xác định nút lới h Giá trị hàm lới v nút xi viết vi Một hàm số y (x) xác định x [ a, b] tạo hàm lới y có giá trị nút xi yi = y ( xi ) 1.6 Đạo hàm lới Xét hàm lới v Đạo hàm lới tiÕn cÊp mét cđa v Ký hiƯu lµ v x , có giá trị nút xi là: v xi = vi +1 vi h Đạo hàm lới lïi cÊp mét cđa v , ký hiƯu lµ v x , có giá trị nút xi là: vxi = vi vi h Sau ta thấy h bé đạo hàm lới xấp xỉ đợc đạo hàm thờng (xem công thức (1.5), (1.6), (1.7) ) Do có đạo hàm lới cÊp hai vxx : v xxi = v xi +1 − v xi  vi +1 − vi vi − vi −1  vi +1 − 2vi + vi −1 =  − = h h h h  h2 Nếu a hàm lới thì: (av x ) xi = 1.7 +1v xi +1 − v xi +1vi +1 − (ai +1 + )vi + vi −1 = h h2 Qui íc viết vô bé Khái niệm xấp xỉ liên quan đến khái niệm vô bé Để viết vô bé cách đơn giản ta áp dụng qui ớc sau đây: Giả sử đại lợng (h) vô bé h Nếu tồn số > số M > kh«ng phơ thc h cho: ρ ( h) ≤ Mhα th× ta viÕt: ρ (h) = (h ) Viết nh có nghĩa là: h nhỏ (h) đại lợng nhỏ h (h) tiến đến số không chậm Mh 1.8 Công thức Taylor Ta nhắc lại công thức Taylor công thức quan trọng đợc sử dụng để xấp xỉ toán vi phân toán sai phân Giả sử F (x) hàm số xác định có đạo hàm đến cấp m + khoảng ( , ) chứa x x + x , x dơng hay âm Khi theo c«ng thøc Taylor ta cã: F ( x + ∆x) = F ( x) + ∆xF ′( x) + (∆x) (∆x) m ( m ) (∆x) m +1 ( m +1) F ′′( x) + + F ( x) + F (c) (1.3) 2! m! ( m + 1)! c điểm khoảng từ x đến x + x Có thể viÕt: c = x + θ∆x víi < θ < Ta giả thiết thêm: F (m +1) ( x) ≤ M = const , x ∈ [α , β ] Khi ®ã (∆x ) ( m+1) ( m+1) F (c ) vô bé x Tức tồn sè ( m + 1)! x K > kh«ng phơ thc vµo ∆ cho: (∆x ) ( m +1) ( m +1) F (c) ≤ K (∆x ) ( m +1) (m + 1)! C«ng thøc Taylor ë viết gọn nh sau: F ( x + ∆x ) = F ( x) + ∆xF ′( x ) + 1.9 (∆x) (∆x) m ( m ) F ′′( x ) + + F ( x) + Ο((∆x ) ( m +1) ) 2! m! (1.4) Liên hệ đạo hàm đạo hàm lới Giả sử hàm y (x) đủ trơn Theo công thøc Taylor (1.4) ta cã: y ( xi +1 ) = y ( xi + h) = y ( xi ) + hy′( xi ) + Ο(h ) Ta suy y xi = y ( xi + ) − y ( xi ) = y ′ ( xi ) + Ο (h) h (1.5) y ( xi −1 ) = y ( xi − h) = y ( xi ) − hy′( xi ) + Ο(h ) y xi = y ( xi ) − y ( xi − ) = y ′ ( x i ) + Ο ( h) h (1.6) Ngoµi víi qui íc: xi + 12 = xi + h , yi + 12 = y ( xi + 12 ) Ta cßn cã h h h y ( xi +1 ) = y ( xi + 12 + ) = y ( xi + 12 ) + y′( xi + 12 ) +   y′′( xi + 12 ) + Ο(h ) 2 2!   h h h y ( xi ) = y ( xi + 12 − ) = y ( xi + 12 ) − y′( xi + ) +   y′′( xi + ) + Ο(h ) 2 2!   Ta suy y ( xi +1 ) − y ( xi ) = hy′( xi + 12 ) + Ο(h ) Do ®ã y xi = y xi + = y ( xi + ) − y ( xi ) = y ′ ( xi + ) + Ο (h ) h (1.7) §ång thêi y ( xi + ) + y ( xi ) = y ( xi + 12 ) + Ο ( h ) (1.8) 1.10 Phơng pháp sai phân Ta tìm cách tính gần giá trị nghiệm y ( xi ) nút xi h Gọi giá trị gần vi Muốn có vi ta thay toán vi phân (1.1) (1.2) toán sai phân: Lh v (av x ) xi + qi vi = f i (1.9) v0 = α , v N = β (1.10) ®ã: = p( xi − h ) , qi = q( xi ) , f i = f ( xi ) 1.11 Giải toán sai phân (1.9) (1.10) phơng pháp truy đuổi Viết cụ thể toán (1.9) (1.10) ta có: vi − (ai + +1 + h qi )vi + +1vi +1 = −h f i , i = 1,2, , N − v0 = α , v N = (1.11) (1.12) Đó hệ đại số tuyến tính dạng ba đờng chéo giải phơng pháp truy đuổi Xét hệ ba ®êng chÐo tỉng qu¸t: Ai y i −1 − C i yi + Bi y i + = − Fi , i = 1,2, , N − (1.13) y = m1 y1 + n1 , y N = m2 y N −1 + n2 (1.14) ®ã: Ai > , Bi > , Di = Ci − Ai − Bi ≥ (1.15) ≤ m1 ≤ 1, ≤ m2 ≤ 1, m1 + m2 < (1.16) Nh vËy hƯ (1.11) −(1.12) lµ trờng hợp riêng hệ (1.13) (1.14) khi: Ai = , Bi = +1 , C i = + +1 + h qi , Fi = h f i m1 = , m2 = , n1 = α , n = 1.11.1 Phơng pháp truy đuổi từ phải Ta tìm nghiệm hệ (1.13) (1.14) dạng: yi = α i + y i + + β i + (1.17) Khi đà biết i i (1.17) cho phép tính y i lùi từ phải sang trái Vì lẽ phơng pháp mang tên phơng pháp truy đuổi từ phải Để tính i , i ta viết (1.17) thay i bëi i −1 : y i −1 = αi y i + βi Thay y i −1 nµy vµo (1.13) , ta đợc: ( Ci Ai i ) yi = Bi yi+ + Ai β i + Fi (1.18) Do Ci − Aiα i ≠ (1.19) Điều kiện đợc thỏa mÃn nhờ giả thiết (1.15) (1.16) Vì ta có: Theo giả thiết (1.16) , ta cã ≤ m1 ≤ nªn ≤ α1 ≤ Do ®ã: C1 − A1α ≥ A1 + B1 − A1α = B1 + (1 − α ) A1 ≥ B1 > ⇒ < α2 = B1 ≤1 C1 − A1α Một cách tơng tự, giả sử < i ≤ , i = 2, , k Ta chøng minh ®óng víi i = k + Điều rõ ràng < k +1 = Bk Bk = ≤1 C k − Ak α k ( C k − Ak − Bk ) + Bk + (1 − α k ) Ak Ta suy ra: C i − Aiα i ≥ Ai + Bi − Aiα i = Bi + (1 − α i ) Ai > Bi > , ∀i Gi¶ thiết (1.15) (1.16) điều kiện đảm bảo cho công thức truy đuổi ổn định Với điều kiện (1.19) th× (1.18) cho: yi = Bi A β + Fi y i +1 + i i C i − Aiα i C i − Aiα i §èi chiÕu víi (1.17) , ta suy ra: 10 ' Cho xap xi dau V(i) buoc ' For i = To N Step Vt(i) = Next i ' Tinh V(i) buoc thu m theo cong thuc lap Seidel ' If frmLCD.txtDelta "" Then Delta = Val(frmLCD.txtDelta.Text) Else Delta = 0.01 End If h = (b - a) / N w = 1.5 ' < w < solan = Do V(0) = Ya V(2) = ((-hsa(2) + 0.75 * hsb(2)) * Ya + hsd(2) * Vt(3) - hse(2) * Vt(4) + fvp(2) + 0.5 * hsb(2) * h * Ypa) / (hsc(2) - 0.25 * hsb(2)) V(1) = 0.25 * (3 * Ya + V(2) + * h * Ypa) V(2) = w * V(2) + (1 - w) * Vt(2) For i = To N - Step V(i) = (-hsa(i) * V(i - 2) + hsb(i) * V(i - 1) + hsd(i) * Vt(i + 1) hse(i) * Vt(i + 2) + fvp(i)) / hsc(i) V(i) = w * V(i) + (1 - w) * Vt(i) Next i V(N) = Yb V(N - 1) = 0.25 * (V(N - 2) + * V(N) - * h * Ypb) max = Abs((V(1) - Vt(1)) / V(1)) For i = To N - Step If Abs((V(i) - Vt(i)) / V(i)) > max Then max = Abs((V(i) - Vt(i)) / V(i)) Next i Call BangLap For i = To N - Step frmLCD.grdLcd.TextMatrix(solan, i) = Round(V(i), 5) Next i solan = solan + If solan >= frmLCD.grdLcd.Rows Then frmLCD.grdLcd.Rows = solan + End If For i = To N Step Vt(i) = V(i) Next i Loop While max > Delta And solan < 100 End Sub 63 Public Sub BangLap() Dim i As Integer frmLCD.grdLcd.Cols = N frmLCD.grdLcd.FormatString = " Buoc lap " For i = To frmLCD.grdLcd.Rows - Step frmLCD.grdLcd.TextMatrix(i, 0) = Str$(i) Next i For i = To N - frmLCD.grdLcd.TextMatrix(0, i) = " V(" & Str$(i) & ")" Next i End Sub Public Sub HienBangLap() ReDim V(0 To N) As Double Dim M As Integer frmLCD.Show Call BangLap M=N Call LCD(V(), M) End Sub Public Function SaiSo() As Double ReDim V(0 To N) As Double ReDim W(0 To * N) As Double Dim Error As Double Dim M As Integer Dim i As Integer M=N Call TDP(V(), M) Call TDP(W(), * M) Error = Abs(V(0) - W(0)) For i = To N Step If Abs(V(i) - W(2 * i)) > Error Then Error = Abs(V(i) - W(2 * i)) End If Next i SaiSo = * Error / End Function TËp tin BTVP.frm • ThiÕt kÕ giao diƯn 64 • M· lƯnh Private Sub Form_Load() frmBTVP.Height = 6710 frmBTVP.Width = 7530 frmBTVP.Left = (Screen.Width - frmBTVP.Width) / frmBTVP.Top = (Screen.Height - frmBTVP.Height) / mnuDel.Enabled = False mnuPopupDel.Enabled = False cmdSph.Enabled = False End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then PopupMenu mnuPopup, vbPopupMenuLeftAlign End If End Sub Private Sub cmdExit_Click() End 65 End Sub Private Sub cmdSph_Click() frmBTVP.Hide frmBTSP.Show End Sub Private Sub Frame1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Call Form_MouseUp(Button, Shift, X, Y) End Sub Private Sub lblbt_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Call Form_MouseUp(Button, Shift, X, Y) End Sub Private Sub mnuAbout_Click() frmDATN.Show End Sub Private Sub mnuDel_Click() txtAp.Text = "": txtBp.Text = "": txtCp.Text = "" txtAq.Text = "": txtBq.Text = "": txtCq.Text = "" txtAg.Text = "": txtBg.Text = "": txtCg.Text = "" txtAf.Text = "": txtBf.Text = "": txtCf.Text = "" txtYa.Text = "": txtYb.Text = "" txtYpa.Text = "": txtYpb.Text = "" End Sub Private Sub mnuExit_Click() End End Sub Private Sub mnuInput_Click() Dim i As Integer Dim NextLine As String Dim S() As Double CommonDialog1.Filter = "Text files(*.TXT)|*.TXT" CommonDialog1.ShowOpen If CommonDialog1.FileName "" Then Open CommonDialog1.FileName For Input As #1 i=1 ReDim S(1) As Double Do While Not EOF(1) Line Input #1, NextLine 66 If NextLine "" Then S(i) = Val(NextLine) i=i+1 ReDim Preserve S(i) As Double End If Loop Close #1 ' He so cua ham p(x) ' txtAp.Text = S(1) txtBp.Text = S(2) txtCp.Text = S(3) ' He so cua ham q(x) ' txtAq.Text = S(4) txtBq.Text = S(5) txtCq.Text = S(6) ' He so cua ham g(x) ' txtAg.Text = S(7) txtBg.Text = S(8) txtCg.Text = S(9) ' He so cua ham f(x) ' txtAf.Text = S(10) txtBf.Text = S(11) txtCf.Text = S(12) ' Dieu kien bien ya,yb,y'a,y'b ' txtYa.Text = S(13) txtYb.Text = S(14) txtYpa.Text = S(15) txtYpb.Text = S(16) End If End Sub Private Sub mnuPopupAbout_Click() Call mnuAbout_Click End Sub 67 Private Sub mnuPopupDel_Click() Call mnuDel_Click End Sub Private Sub mnuPopupExit_Click() End End Sub Private Sub mnuPopupInput_Click() Call mnuInput_Click End Sub Private Sub mnutContents_Click() frmContents.Show End Sub Private Sub picBt_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Call Form_MouseUp(Button, Shift, X, Y) End Sub Private Sub tmrTimer_Timer() Dim OK As Boolean Dim OK1 As Boolean Dim OK2 As Boolean Dim OK3 As Boolean Dim OK4 As Boolean If txtAp.Text "" And txtBp.Text "" And txtCp.Text "" Then OK1 = True Else: OK1 = False End If If txtAq.Text "" And txtBq.Text "" And txtCq.Text "" Then OK2 = True Else: OK2 = False End If If txtAg.Text "" And txtBg.Text "" And txtCg.Text "" Then OK3 = True Else: OK3 = False End If If txtAf.Text "" And txtBf.Text "" And txtCf.Text "" Then OK4 = True 68 Else: OK4 = False End If If txtYa.Text "" And txtYb.Text "" And txtYpa.Text "" And txtYpb.Text "" Then OK = True Else: OK = False End If If OK1 = True And OK2 = True And OK3 = True And OK4 = True And OK = True Then cmdSph.Enabled = True mnuDel.Enabled = True mnuPopupDel.Enabled = True Else cmdSph.Enabled = False mnuDel.Enabled = False mnuPopupDel.Enabled = False End If End Sub Private Sub txtAf_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtAf.Text = "" End If Next i End Sub Private Sub txtAg_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtAg.Text = "" End If Next i End Sub Private Sub txtAp_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtAp.Text = "" End If Next i 69 End Sub Private Sub txtAq_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtAq.Text = "" End If Next i End Sub Private Sub txtBf_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtBf.Text = "" End If Next i End Sub Private Sub txtBg_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtBg.Text = "" End If Next i End Sub Private Sub txtBp_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtBp.Text = "" End If Next i End Sub Private Sub txtBq_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtBq.Text = "" End If Next i End Sub 70 Private Sub txtCf_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtCf.Text = "" End If Next i End Sub Private Sub txtCg_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtCg.Text = "" End If Next i End Sub Private Sub txtCp_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtCp.Text = "" End If Next i End Sub Private Sub txtCq_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtCq.Text = "" End If Next i End Sub Private Sub txtYa_Keypress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtYa.Text = "" End If Next i End Sub 71 Private Sub txtYb_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtYb.Text = "" End If Next i End Sub Private Sub txtYpa_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtYpa.Text = "" End If Next i End Sub Private Sub txtYpb_KeyPress(KeyAscii As Integer) Dim i As Integer For i = 65 To 90 Step If KeyAscii = i Or KeyAscii = i + 32 Then txtYpb.Text = "" End If Next i End Sub TËp tin BTSP.frm • ThiÕt kÕ giao diƯn 72 • M· lÖnh Private Sub Form_Load() frmBTSP.Left = (Screen.Width - frmBTSP.Width) / frmBTSP.Top = (Screen.Height - frmBTSP.Height) / cmdCal.Enabled = False mnuSeidel.Enabled = False frmLCD.grdLCD.Rows = 10 End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then PopupMenu mnuRelaxtion, vbPopupMenuLeftAlign End If End Sub Private Sub cmdCal_Click() a = Val(frmBTSP.txtA.Text) b = Val(frmBTSP.txtB.Text) N = Val(frmBTSP.txtN.Text) Dim i As Integer, M As Integer ReDim Y(0 To N) As Double Dim Response as Integer 73 grdTable.Rows = grdTable.Cols = N + M=N For i = To N + Step grdTable.TextMatrix(0, i) = " V(" & Str$(i - 1) & ")" Next i If N >= Then ' Call TDT(Y(),M) ' Call TDP(Y(), M) Call TDKH(Y(),M) For i = To N Step grdTable.TextMatrix(1, i + 1) = Round(Y(i), 8) Next i txtError.Text = Round(SaiSo, 9) Else Response = Msgbox (“Chó ý: Sè đIểm chia lới phải không đợc nhỏ bốn (N >= 4)!, vbOkOnly + vbExclamation, Thông báo) If Response = vbYes then ' Call TDT(Y(),M) ' Call TDP(Y(), M) Call TDKH(Y(),M) End If End If End Sub Private Sub cmdQuit_Click() frmBTSP.Hide frmBTVP.Show End Sub Private Sub mnuExit_Click() frmBTSP.Hide frmBTVP.Show End Sub Private Sub mnuSeidel_Click() ReDim V(0 To N) As Double Dim M As Integer frmLCD.Show frmLCD.txtDelta = "" M=N Call LCD(V(), M) End Sub Private Sub tmrTimer_Timer() 74 If txtA.Text "" And txtB.Text "" And txtN.Text "" Then cmdCal.Enabled = True mnuRelaxtion.Enabled = True mnuSeidel.Enabled = True Else cmdCal.Enabled = False mnuRelaxtion.Enabled = False mnuSeidel.Enabled = False End If End Sub Private Sub txtA_Change() Dim i As Integer grdTable.Cols = N + If txtA.Text = "" Then For i = To N + Step grdTable.TextMatrix(0, i) = "" Next i For i = To N + Step grdTable.TextMatrix(1, i) = "" Next i End If grdTable.Rows = grdTable.Cols = End Sub Private Sub txtB_Change() 'Call txtA_Change Dim i As Integer grdTable.Cols = N + If txtA.Text = "" Then For i = To N + Step grdTable.TextMatrix(0, i) = "" Next i For i = To N + Step grdTable.TextMatrix(1, i) = "" Next i End If grdTable.Rows = grdTable.Cols = End Sub Private Sub txtN_Change() Call txtA_Change End Sub 75 TËp tin LCD.frm • ThiÕt kÕ giao diƯn • M· lƯnh Private Sub Form_Load() frmLCD.Height = 3990 frmLCD.Width = 6240 frmLCD.Left = (Screen.Width - frmLCD.Width) / frmLCD.Top = (Screen.Height - frmLCD.Height) / End Sub Private Sub cmdExit_Click() frmLCD.Hide End Sub Private Sub grdLcd_Click() Call HienBangLap End Sub Private Sub grdLcd_DblClick() Dim i As Integer Dim j As Integer For i = To 100 Step For j = To N - Step grdLcd.TextMatrix(i, j) = "" Next j Next i 76 End Sub TËp tin AboutDATN.frm • ThiÕt kÕ giao diƯn • M· lƯnh Private Sub Form_Load() frmDATN.Left = (Screen.Width - frmDATN.Width) / frmDATN.Top = (Screen.Height - frmDATN.Height) / frmDATN.Width = 7425 frmDATN.Height = 4545 End Sub Private Sub Form_Click() Call Frame1_Click End Sub Private Sub Frame1_Click() frmDATN.Hide End Sub Private Sub imgLogo_Click() Call Frame1_Click End Sub 77 ... phơng pháp chuỗi Taylo, phơng pháp xấp xỉ liên tiếp Pica, phơng pháp số nh phơng pháp bớc, phơng pháp Ađam, phơng pháp Runghe-Kuta,) Đề tài: "Phơng pháp sai phân giải gần phơng trình vi phân tuyến. .. max{ vi − y ( xi ) } ≈ 0.01 i =0 , 17 Ch¬ng Phơng pháp sai phân giải gần phơng trình vi phân cấp bốn Trong chơng ta đà xét khái niệm phơng pháp sai phân thông qua toán biên phơng trình vi phân. .. trình vi phân tuyến tính" Trong phạm vi đồ án mình, em xin trình bày phơng pháp gần để giải phơng trình vi phân cấp bốn tổng quát phơng pháp sai phân Đây hai lớp phơng pháp gần quan trọng đợc

Ngày đăng: 07/08/2013, 13:54

Hình ảnh liên quan

So sánh với các nghiệm gần đúng tại các nút lới, ta có bảng kết quả sau: - Phương pháp sai phân giải gần đúng phương trình vi phân tuyến tính

o.

sánh với các nghiệm gần đúng tại các nút lới, ta có bảng kết quả sau: Xem tại trang 17 của tài liệu.
i= 0, cho trong bảng sau: - Phương pháp sai phân giải gần đúng phương trình vi phân tuyến tính

i.

= 0, cho trong bảng sau: Xem tại trang 53 của tài liệu.
yi =0 ,25 ta đợc bảng kết quả sau: - Phương pháp sai phân giải gần đúng phương trình vi phân tuyến tính

yi.

=0 ,25 ta đợc bảng kết quả sau: Xem tại trang 54 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan