Thứ Bảy, 18 tháng 2, 2017

Tìm trong ký ức


 KHO TÀNG CŨ:
THUẬT TOÁN KHAI CĂN BẬC HAI
CHO HỌC SINH TRUNG HỌC CƠ SỞ


Học sinh tiểu học, bắt đầu học toán từ lĩnh vực số tự nhiên với các phép cộng trừ nhân chia, rồi đến bình phương, lũy thừa (bậc nguyên dương), tuần tự nhi tiến, cũng chẳng có gì mấy khó khăn, phép tính nào cũng có thuật toán – tức là qui tắc đặt phép tính để tính một cách rõ ràng, cứ thuộc bảng cửu chương, làm tính cẩn thận : Thế là ổn.
Bước sang phép tinh khai căn, hẵng nói từ khai căn bậc 2 đã thấy phiền phức rồi. Với các số chính phương thì khỏi cần bàn, quá đơn giản, nhưng còn các số khác thì sao?
Ngày trước – nghĩa là 50, 60 năm trước đây – lên trung học đệ nhất cấp (cấp 2) bắt đầu học sử dụng các bảng tính có sẵn: bảng bình phương, lập phương, căn số bậc hai… rồi các bảng hàm số lượng giác, sin, cos, tg, cotg v..v..
Thế hệ các em học sinh ngày nay thì còn thuận tiện hơn nữa. muốn tính căn số bậc hai của một số: rút máy tính cassio hay điện thoại thông minh ra bấm nhoay nhoáy: Xong!
Thế nhưng nếu ta không có máy tính mà cũng chẳng có bảng tính thì sao nhỉ? Thì … chịu! Trong mấy chục năm dạy học, tôi đã hỏi thử nhiều sinh viên đại học, kể cả sinh viên Toán hẳn hoi thì chưa thấy em nào biết được một “thuật toán” tính căn số bậc hai giống như các thuật toán làm phép nhân, phép chia vậy.
Nhớ lại hồi mới lên Trung học phổ thông (hồi ấy Trung học phổ thông là tên goi tương đương cấp 2 hay TH cơ sở ngày nay, còn cấp 3 hay Phổ thông trung học NGÀY NAY thì trước kia gọi là Trung học chuyên khoa), bọn học sinh chúng tôi có mày mò “truyền bí kíp” cho nhau một thuật toán rất hay, chẳng hiểu vì sao mà những năm sau này không còn thấy ai nhắc đến? Chắc là kỷ nguyên CNTT rồi, chẳng ai cần gì biết đến cái trò thủ công lạc hậu, tổn hao nơ ron nữa!
Vắt tay lên trán, nhớ lại chuyện hơn 60 năm trước, tôi xin giới thiệu lên đây, gọi là: ..Mua vui (hay phiền?) cũng được một vài trống canh.

Thuật toán khai căn bậc hai của một số tự nhiên
Cho n là một số tự nhiên – không chính phương. Tính căn số bậc hai của n - CSBH(n) :
Qui tắc thuật toán:
·         Bước 1: Tìm a0 là số nguyên lớn nhất mà bình phương không vượt quá n.
a0 là phần nguyên của giá trị gần đúng của căn số bậc hai của n - CSBH(n) với sai số ở hàng đơn vị;                                   CSBH(n) xấp xỉ = a0
·         Bước 2: Tính hiệu số n – (a0)2 = Y1. Thêm vào sau Y1 hai số 0 tức là ta tạo ra số 100Y1 . Nhân đôi a0 , rồi tìm một số tự nhiên a1 sao cho khi ghép a1 vào sau số 2.a0 nghĩa là tạo thành con số (2.a0x10) + a1 rồi nhân cho a1 tức là có số [(2.a0x10) + a1]. a1 không vượt quá số 100Y1 .
·         a1 là số thập phân thứ nhất trong giá trị gần đúng của của CSBH(n) với sai số ở hàng số lẻ thứ nhất:                                      CSBH(n) xấp xỉ = a0,a1
·         Bước 3:  Tính hiệu số Y2 = 100Y1 – [(2.a0x10) + a1]. a1. Thêm vào sau Y2 hai số 0 tức là tạo thành số 100 Y2. Ghép hai con số a0,a1 lại thành con số hàng chục 10a0 + a1, nhân đôi số đó rồi tìm một số a2 sao cho khi tạo thành con số {10.[2(10a0 + a1)]+ a2}. a2 thì số này không vượt quá số  100 Y2
·         a2 là số thập phân thứ hai trong giá trị gần đúng của CSBH(n) với sai số ở hàng số lẻ thứ hai                                                        CSBH(n) xấp xỉ = a0,a1a2

·         Bước 4: Lặp lại bước 3, tính hiệu số Y3 = 100Y2 {10.[2(10a0 + a1)]+ a2}.a2. Thêm vào sau Y3  hai số 0 tức là tạo thành số 100 Y3 . Ghép 3 con số a0a1a2 thành một số hàng trăm (100a0 + 10a1 + a2), nhân đôi số đó lên v..v.. và cứ tiếp tục như vậy ta đạt đến độ chính xấc ở số thập phân tùy ý....

-       Trình bày cụ thể qua 2 thí dụ sau đây:

Thí dụ 1: Tìm căn số bậc 2 cua 3: 

 * Bước 1: Tìm số chính phương lớn nhất bé hơn 3, đó là số a0 = 1
Kết quả gần đúng đầu tiên là  CSBH(3) xấp xỉ = 1
* Bước 2: Bình phương của 1 là 1; 3 – 1 = Y1 = 2, Viết tiếp sau số 2 HAI con số 0 ta có 200. Lấy kết quả đầu tiên là 1 nhân với 2: 1 x 2 = 2; tìm một số a1 sao cho khi viết tiếp vào tích số 2 mới thu được thành con số 2(10 + a1) rồi nhân với a1 thì tích số a1.[2(10 + a1)]  vẫn còn bé hơn 200. Số đó là 7 vì : 27 x 7 = 189 < 200
Kết quả gần đúng đến 1 số lẻ thập phân là CSBH(3) xấp xỉ = 1,7
* Bước 3:  Y=  200 – 189 = 11. Viết tiếp vào sau số dư 11 thêm 2 số 0 thành 1100. Lấy 17 x 2 = 34, tìm 1 số a2 viết vào sau 34 thành 34 x 10 + a2 sao cho khi nhân cho a2 vẫn còn bé hơn 1100: số đó là 3 vì 343 x 3 = 1029 < 1100
Kết quả gần đúng đến 2 số thập phân là  CSBH(3) xấp xỉ = 1,73
* Bước 4:  Y3= và 1100 – 1029 = 71. Viết tiếp sau số dư 71 thêm 2 số 0 thành 7100. Lấy 173 x 2 = 346, tìm 1 số a3 viết sau 346 thành 3460 + a3 sao cho khi nhân cho a3 vẫn còn bé hơn 7100: số đó là 2 vì 3462 x 2 = 6924 < 7100
Kết quả gần đúng đến 3 số thập phân làCSBH(3) xấp xỉ =  1,732
* Bước 4: Y4 = 7100 – 6924 = 176. Viết tiếp sau số dư thêm 2 số 0 thành 17600. Lấy 1732 x 2 = 3464, tìm 1 số a4  sao cho (34640 + a4 ) a4 vẫn còn bé hơn 17600: không tìm được, vậy số lẻ tiếp theo là 0  
Ta ngừng lại ở bước này và có kết quả gần đúng đến 3 số thập phân là: 1,732
Thử lại:  (1.732)2            = 1.732 x 1. 732 =  2, 888824  #  3

Thí dụ 2: Tìm căn số bậc 2 cua 127.


 * Bước 1: Tìm số chính phương lớn nhất bé hơn 127    đó là số 11
Kết quả gần đúng đầu tiên là 11, sai số hàng đơn vị
* Bước 2: Bình phương của 11 là 121; 127 – 121 = 6,  Viết tiếp vào sau số dư 6 thêm 2 số 0 thành 600. Lấy 11 x 2 = 22, tìm 1 số a1 viết vào sau 22 thành số 220+a1 sao cho khi nhân cho a1 thì tích số còn bé hơn 600: số đó là 2 vì 222 x 2 = 444 < 600 và 600 – 444 = 156.
Kết quả gần đúng đến 1 số thập phân là 11, 2
* Bước 3: Viết tiếp sau số dư 156 thêm 2 số 0 thành 15600. Lấy 112 x 2 = 224, tìm 1 số a2 viết sau 224 thành 2240 +a2 sao cho khi nhân cho a2 thì tích số còn bé hơn 15600: số đó là 6 vì 2246 x 6 = 13476 còn < 15600 và 15600 – 13476 = 2124.
Kết quả gần đúng đến 2 số thập phân là: 11. 26
* Bước 4: Viết tiếp sau số dư thêm 2 số 0 thành 212400. Lấy 1126 x 2 = 2252, tìm 1 số a3 sao cho (22520 + a3) x a3 vẫn còn bé hơn 212400: số đó là 9 vì 22529 x 9 = 202761 < 212400 và 212400 – 202761 = 9639.
Nếu ngừng lại ở bước này thì kết quả gần đúng đến 3 số thập phân là: 11. 269
 Bước 4 +1: Muốn có độ chính xác cao hơn, viết tiếp sau số dư hai số 0 thành 963900. Lấy 11269 x 2 = 22538, tìm số a4 sao cho (225380 + a4)xa4 thì tích số còn bé hơn 963900: số đó là 4 vì 225384 x 4 = 901536 vẫn < 963900 và 963900 – 901536 = 62634
Kết quả gần đúng  đến 4 số thập phân là: 11, 2694
 Có thể tiếp tục thuật toán để đạt kết quả gần đúng tùy ý.

Thử lại:    11 x 11                       = 121
                  11,2 x 11,2                 = 125,44
                  11,26 x 11,26             = 126,7876
                  11,269 x 11, 269       = 126,990361
                  11,2694 x 11, 2694   = 126,999376   #  127

Các cụ có tài không??? Hoàn toàn chính xác nhé. Có điều chứng minh lại thuật toán này thì là cả một đại vấn đề đấy!

Thông thường người ta hướng dẫn học sinh bố trí tiến hành thuật toán như sau (gần giống như phép chia):  
    
                           
                                3                    1,732
                                200               27      343     3462    34640
                                 189               x7        x3            x2           x0
                                   1100          189   1029     6924   00000
                                    1029
                                         7100     
                                                    6924
                                          176













Không có nhận xét nào:

Đăng nhận xét