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.74 MB, 19 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
1.1 Ôn tập về phép tính . . . . 1
1.2 Sai số làm trịn và số học máy tính. . . . 1
1.3 Thuật toán và sự hội tụ . . . . 1
1.4 Python: ngơn ngữ tính tốn và lập trình . . . . 1
2.6 Nghiệm của đa thức và phương pháp Măuller . . . 24
<b>3 Ni suy v xp x bằng đa thức26</b>3.1 Đa thức nội suy và đa thức Lagrange . . . 26
3.2 Xấp xỉ số liệu và phương pháp Neville . . . 30
3.3 Sai phân chia . . . 30
3.4 Nội suy Hermite . . . 30
3.5 Nội suy Newton . . . 30
3.6 Nội suy spline bậc ba . . . 34
3.7 Đường cong tham số . . . 34
<b>4 Đạo hàm và tích phân bằng số35</b>4.1 Đạo hàm bằng số . . . 36
4.2 Ngoại suy Richardson . . . 40
4.3 Tích phân bằng số. . . 40
4.4 Tích phân Romberg . . . 45
4.5 Phương pháp cầu phương thích ứng. . . 45
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">5.7 Điều khiển sai số và phương pháp Runge–Kutta–Fehlberg. . . 62
5.8 Phương pháp đa bước. . . 62
5.9 Phương pháp đa bước với bước nhảy biến thiên . . . 62
5.10 Phương pháp ngoại suy . . . 62
5.11 Phương trình cấp cao và hệ phương trình vi phân . . . 62
7.6 Kỹ thuật giảm dư giải hệ tuyến tính. . . 74
7.7 Giới hạn sai số và tinh chỉnh phép lặp . . . 74
7.8 Phương pháp gradient liên hợp . . . 74
<b>8 Lý thuyết xấp xỉ75</b>8.1 Xấp xỉ bình phương nhỏ nhất . . . 75
8.2 Đa thức trực giao và xấp xỉ bình phương nhỏ nhất . . . 79
<i></i> [ D<small>RAFTING</small>
8.3 Đa thức Chebyshev và [Economization] chuỗi lũy thừa. . . 80
8.4 Xấp xỉ hàm hữu tỷ . . . 80
8.5 Xấp xỉ đa thức lượng giác . . . 80
8.6 Biến đổi Fourier nhanh. . . 80
<b>9 Xấp xỉ giá trị riêng81</b>9.1 Đại số tuyến tính và giá trị riêng . . . 81
9.2 Ma trận trực giao và biến đổi đồng dạng . . . 81
9.3 Phương pháp lũy thừa . . . 81
11.2 Phương pháp bắn cho bài toán phi tuyến. . . 83
11.3 Phương pháp sai phân hữu hạn cho bài tốn tuyến tính . . . 83
11.4 Phương pháp sai phân hữu hạn cho bài toán phi tuyến. . . 84
11.5 Phương pháp Rayleigh–Ritz . . . 84
<b>12 Nghiệm số của phương trình đạo hàm riêng85</b>12.1 Phương trình đạo hàm riêng Elliptic . . . 85
12.2 Phương trình đạo hàm riêng Parabolic. . . 86
12.3 Phương trình đạo hàm riêng Hyperbolic . . . 86
12.4 Giới thiệu về phương pháp phần tử hữu hạn . . . 86
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">1.1 Ôn tập về phép tính. . . . 1
1.2 Sai số làm trịn và số học máy tính. . . . 1
1.3 Thuật toán và sự hội tụ. . . . 1
1.4 Python: ngơn ngữ tính tốn và lập trình . . . . 1
1.5 Python + VS Code: cách sử dụng . . . . 6
<b>1.4.1 Lý do chọn Python</b>
Để phục vụ tốt cho việc tính tốn cho các ví dụ cụ thể, hay khó hơn, là xây dựng cơngthức cho một bài tốn tổng qt, ta có thể dùng các ngơn ngữ như MATLAB, Mathematica,Python.
Tác giả, công ty MathWorks Wolfram Research Guido van Rossum
1
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>Thông tinMATLABMathematicaPython</b>
Hệ điều hành: Windows (1),macOS (2), Linux (3), An-droid (4), iOS (5), RaspberryPi (6)
miễn phí,mã nguồn mởDung lượng tải – cài đặt trên
Download tạipython.org/downloads, chọn phiên bản Python tương ứng với hệ điều hành
Để tìm phiên bản của hệ điều hành, nhấp chuột phải vào biểu tượng Computer<small>*</small>Số liệu lấy từ Linux, Python được tích hợp sẵn
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>1.4.2 Visual Studio Code: môi trường phát triển tích hợp (IDE)</b>
Trong mơn học này, ta tính tốn và lập trình trên một loại tệp gọi là sổ tay JupyterNotebook, bằng công cụ Visual Studio Code (VS Code). Tải VS Code từ
<b>Sau khi cài VS Code, ta cần cài thêm phần mở rộng (1) Python và (2) Jupyter cho nó.</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Chương 1. Chuẩn bị <b>5</b>
Để tạo mới một file, ta vào menu File
và chọn loại file muốn tạo
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">rồi nhập lệnh cài gói cần dùng, theo cú pháppip install gói_lệnh
Để tính tốn cho mơn học, ta cài ba gói
Một sổ tay gồm nhiều ô. Mỗi ô được chia thành hai phần: ô lệnh và ô kết quả. Ô lệnhcũng có thể gồm nhiều lệnh. Các đối tượng, dù cùng tên, trong hai sổ tay khác nhau thìcũng khơng liên quan gì đến nhau<small>*</small>.
Để chạy một ơ lệnh, ta nhấn nút Execute Cell bên trái ơ đó, hoặc tổ hợp phím Shift +Enter, hoặc Ctrl + Enter.
Trong phần này, các cú pháp trong Python được diễn đạt tổng qt, hoặc minh họa bằngví dụ cụ thể.
<b>1.5.1 Phép tốn số học</b>
<small>*</small>Trong Mathematica, đối tượng nhận giá trị nào trên sổ tay này, thì cũng nhận giá trị đó trên các sổ tay khác
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Chương 1. Chuẩn bị <b>7Phép toánLệnh Python</b>
a + b a + ba
<b>1.5.3 Dãy</b>
a = [4, 1, -2] khai báo dãy a gồm các phần tử 4, 1, 2
Ghép cặp các phần tử theo vị trí tương ứng của hai dãy<small>1</small> X = [1 , 2, 3]
<small>2</small> Y = [4 , 5, 6] # cỡ của hai dãy có thể khác nhau<small>3</small> list( zip(X , Y) ) # [(1, 4), (2, 5), (3, 6)]
Nếu dãy a độ dài n, gồm các phần tử a<small>0</small>, a<small>1</small>, ... ,a<sub>n−1</sub>, thì
<small>1</small> sign = lambda x: 1 if x > 0 else 0 if x == 0 else -1 # cách 1
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>1.5.6 Gói lệnh sympy</b>
Gói lệnh hỗ trợ tính tốn với biểu thức symbolic, tức là biểu thức chứa ký hiệu, hay biếnbất định. Khai báo gói bằng lệnh
trong đó dấu * được hiểu bao gồm tất cả các lệnh của gói. Ta gọi các lệnh này bằng cáchgõ trực tiếp tên lệnh đó.
<small>3</small> M = MatrixSymbol (’M ’, 3, 4) # các biến symbolic xếp thành ma trận cỡ
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b>Hàm sơ cấp</b>
sin x, cos x, tan x, cot x sin(x), cos(x), tan(x), cot(x)arcsin x, arccos x, arctan x, arccotx asin(x), acos(x), atan(x), acot(x)
Ngoài ra, để tính 3! = 6, ta dùng lệnh
<b>Tính giá trị của biểu thức</b>
x<small>2</small>dx =<sup>1</sup>3
<b>Xử lý biểu thức</b>
( sin (x) * cos (x) ). simplify () # <sup>sin 2x</sup>
2 : rút gọn biểu thức( x **2 - 3* x + 2 ). factor () # (x−1) (x−2): phân tích thành nhân tử( (x + 1) **2 ). expand () #x<small>2</small>+ 2x + 1: khai triển đa thức
<b>Giải phương trình, hệ phương trìnhVí dụ 1.5.</b> a) Phương trình x<small>2</small>
b) Hệ phương trình
x + y = 3x
có nghiệmx = 2, y = 1.
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Chương 1. Chuẩn bị <b>11</b>
so lve ( x **2 - 3* x +2 , x ) # [1, 2]solve ( [x +y - 3, x- y - 1] , [x , y] ) # {x: 2, y: 1}
Đối với véctơ x = (2,
x = [2, -1, -3] khai báo kiểu dãy
x = np.array([2, -1, -3]) khai báo thành kiểu mảng của gói numpy
Tích vơ hướng
trong đó lệnh
<b>Ma trận</b>
Đối với ma trận A =
3
A = [[3, -1, 2], [0, 4, 1]] khai báo kiểu dãy (lồng dãy)A = np.array( [[3, -1, 2], [0, 4, 1]] ) khai báo kiểu mảng
<i></i> [ D<small>RAFTING</small>
trong đó các lệnh ở khung cuối của bảng dùng được cho cả hai kiểu dữ liệu.
Với hai ma trận A, B có kiểu mảng, và cỡ tương thích (tức là, cỡ phù hợp để thực hiệnđược phép tốn)
<b>Giải hệ phương trình tuyến tính</b>
<b>Ví dụ 1.6.</b>Ví dụ 1.5, nghiệm x = 2, y = 1, có thể viết dưới dạng
1 11
<small>1</small> A = [[1 , 1] , [1 , -1]]<small>2</small> b = [3 , 1]
<small>3</small> np . linalg . solve (A , b) # array([2., 1.])
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Chương 1. Chuẩn bị <b>13</b>
<small>1</small> X = np . linspace (0, 2 , 10 + 1) # hoặc X = [0 + i * (2-0)/10 for i inrange(10+1)]
<small>2</small> Y = [x **2 for x in X ]<small>3</small> import matplotlib . pyp lot as plt<small>4</small> plt . plot (X , Y);
<b>1.5.9 Cấu trúc điều khiểnRẽ nhánh: if</b>
<small>4</small> i += 1 # i = i + 1, có chức năng thay đổi giá trị của điều kiện
<i></i> [ D<small>RAFTING</small>
Từ khóa
def, lambdafor, in, rangefrom, import, asif, else, eliflistprintreturnroundwhilezip
Dấu ’ ". , ; : # ( [ {
sympydiffE, pifactorialintegratelog, lnNRationalsin, cos, tan, cotasin, acos, atan, acotsolve
symbols, MatrixSymbol
plot
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18"><i>[1] Phạm Kỳ Anh. Giải tích số. Đại học Quốc gia Hà Nội, 2002. 284 trang.</i>
<i><b>[2] Richard L. Burden, Douglas J. Faires and Annette M. Burden. Numerical Analysis.</b></i>
phiên bản 10. Cengage Learning, 2016. 918 trang.
<i>[3] NumPy community. NumPy User Guide. phiên bản 1.22.0. 531 trang.</i><small>URL</small>:https : / /numpy.org/doc/stable.
<i><b>[4] Phan Văn Hạp and Lê Đình Thịnh. Phương pháp tính và các thuật toán. Nhà xuất bản</b></i>
</div>