Tài Liệu Học Tập
No Result
View All Result
  • Đề Thi
  • Lớp 12
    • Lịch Sử Lớp 12
    • Địa Lí Lớp 12
    • Ngữ Văn Lớp 12
    • GD KTPL Lớp 12
    • Toán Lớp 12
    • Tiếng Anh Lớp 12
    • Hóa Học Lớp 12
    • Sinh Học Lớp 12
    • Vật Lí Lớp 12
  • Lớp 11
    • Toán Lớp 11
    • Ngữ Văn Lớp 11
    • Tiếng Anh Lớp 11
    • Hóa Học Lớp 11
    • Sinh Học Lớp 11
    • Vật Lí Lớp 11
    • Lịch Sử Lớp 11
    • Địa Lí Lớp 11
    • GDCD Lớp 11
  • Lớp 10
    • Toán Lớp 10
    • Ngữ Văn Lớp 10
    • Tiếng Anh Lớp 10
    • Hóa Học Lớp 10
    • Sinh Học Lớp 10
    • Vật Lí Lớp 10
    • Lịch Sử Lớp 10
    • Địa Lí Lớp 10
    • GDKTPL Lớp 10
    • Công nghệ lớp 10
    • Tin Học Lớp 10
  • Lớp 9
    • Toán Lớp 9
    • Ngữ Văn Lớp 9
    • Tiếng Anh Lớp 9
    • Lịch sử và địa lý lớp 9
    • Khoa Học Tự Nhiên Lớp 9
    • GDCD Lớp 9
  • Lớp 8
    • Toán Lớp 8
    • Ngữ Văn Lớp 8
    • Tiếng Anh Lớp 8
    • Lịch sử và địa lý lớp 8
    • Khoa Học Tự Nhiên Lớp 8
    • GDCD 8
  • Lớp 7
    • Toán Lớp 7
    • Văn Lớp 7
    • Tiếng Anh Lớp 7
    • Lịch Sử Và Địa Lí Lớp 7
    • Khoa Học Tự Nhiên Lớp 7
  • Lớp 6
    • Toán Lớp 6
    • Văn Lớp 6
    • Tiếng Anh lớp 6
    • Lịch Sử và Địa Lí Lớp 6
    • Khoa Học Tự Nhiên lớp 6
  • Lớp 5
    • Toán lớp 5
    • Tiếng Việt Lớp 5
    • Tiếng Anh Lớp 5
    • Lịch Sử và Địa Lí Lớp 5
  • Lớp 4
    • Toán lớp 4
    • Tiếng Việt Lớp 4
    • Tiếng Anh Lớp 4
    • Lịch Sử và Địa Lí Lớp 4
  • Lớp 3
    • Toán lớp 3
    • Tiếng Anh Lớp 3
    • Tiếng Việt Lớp 3
  • Mẹo Hay
  • Tin tức
  • Liên Hệ
Tài Liệu Học Tập
No Result
View All Result
Home Tin tức

Thuật toán tính nhanh nghịch đảo căn bậc 2.

by Tranducdoan
23/06/2026
in Tin tức
0
Đánh giá bài viết

Vào khoảng những năm 2002, 2003, khi mã nguồn của tựa game Quake 3 Arena được chuyển thành mã nguồn mở, người ta đã tìm ra một hàm tính ra được giá trị nghịch đảo của căn bậc 2 một cách nhanh chóng, được biết đến rộng rãi với cái tên Fast inverse square root. Vào thời điểm đó, phép tính căn bậc 2 là một phép tính tốn nhiều tài nguyên, mà lại rất hay được sử dụng trong các phép tính vector. Với một game 3d đột phá vào thời điểm đó như Quake 3, thì sử dụng rất nhiều các phép tính dạng này. Mặc dù John Carmack, cha đẻ của dòng game Quake được nhắc đến như người đưa thuật toán trở nên phổ biến, nhưng những cài đặt đầu tiên đã được Gary Tarolli thực hiện trên máy tính SGI Indigo.

Thực sự để tính xấp xỉ căn bậc 2 của một số, có rất nhiều phương pháp. Dựa theo bài viết Methods of computing square roots , ta có thể thấy, các phương pháp trên đều dựa trên việc đưa ra một dãy vô hạn, một công thức truy hồi dẫn đến kết quả của phép tính căn bậc 2. bằng việc lặp lại công thức đến độ chính xác tùy ý, ta có thể đưa ra kết quả với độ chính xác tùy ý.

Mô tả phương pháp Babylon Ví dụ, để tính căn bậc 2 của 125348, ta sẽ tính như sau:

Thuật toán tính nhanh nghịch đảo căn bậc 2.

Trên các máy tính hiện đại ngày nay, đã có các bộ chỉ thị phần cứng riêng để thực hiện việc này, bằng nhiều phương pháp khác nhau. Tuy nhiên vào thời điểm thập niên 90 của thế kỉ trước, phương pháp Fast inverse square root là một phương pháp hay, mang lại hiệu quả tính toán mà phần cứng chưa thể cung cấp được.

Thuật toán được mô tả cơ bản như sau:

  1. Chuyển số sang dạng nguyên, tính xấp xỉ -1/2 log2(x)
  2. Đổi lại số sang dạng số thực
  3. Xấp xỉ 1 lần nữa với phương pháp Newton

Mục Lục Bài Viết

  1. Xấp xỉ Log2(x)
  2. Xấp xỉ 1 trên căn 2 x
  3. Phương pháp Newton

Xấp xỉ Log2(x)

Biểu diễn số thực x dưới dạng tích của một số thực với một lũy thừa của 2.

với ex là số tự nhiên lớn hơn 0, mx thuộc đoạn từ 0 đến 1. Xem thêm bài Single-precision floating-point format để hiểu về cách biểu diễn số thực dấu phẩy động trên máy tính. Ta tính được 3 giá trị:

  • Sx, là dấu, 0 nếu x > 0, là 1 nếu x < 0 (1 bit)
  • Ex = ex + B là “biased exponent”, với B = 127 là giá trị “exponent bias”(8 bits)
  • Mx = mx × L, với L = 223(23 bits)

Ta có:

Suy ra:

Vì m nằm trong đoạn 0 đến 1, ta có:

Vẽ lên đồ thị để thấy rõ hơn với σ = 0:

Thuật toán tính nhanh nghịch đảo căn bậc 2.

Người ta chứng minh được, với σ ≈ 0.0430357, sai số tuyệt đối sẽ nhỏ nhất.

Ta đổi phần thập phân sang dạng số tự nhiên, ta có:

Suy ra:

Xấp xỉ 1 trên căn 2 x

Ta có:

Dựa theo công thức xấp xỉ log ta có:

Suy ra:

Vì là một hằng số, ta có thể dễ dàng tính được phần Ix một cách dễ dàng.

Phương pháp Newton

Ta sử dụng phương pháp Newton để tăng tính chính xác cho thuật toán. Xin đọc bài Newton’s method Ta có công thức:

Tính đạo hàm ta có:

Theo công thức Newton, ta có:

Thuật toán phiên bản trong Quake 3, ngôn ngữ C:

Thuật toán tính nhanh nghịch đảo căn bậc 2.

Nhìn vào đoạn code này, ta thấy nó không được sạch lắm ( sử dụng lại biến, không định nghĩa constant, … ). Mình sẽ giải thích một số dòng không quen thuộc lắm nếu bạn chưa học C. Ở dòng 9, định nghĩa lại con trỏ kiểu float thành kiểu long trên cùng 1 vùng nhớ, ngược lại với dòng 11. Ở dòng 10, ta có phép toán dịch bit ( << ), sẽ làm giảm giá trị đi 1 nửa.

Vào năm 1999, bộ chỉ thị Streaming SIMD Extensions được thêm vào trên Intel Pentium III đi kèm theo đó là 2 chỉ thị rsqrtss & rsqrtps. 2 Chỉ thị này tính toán sấp xỉ các giá trị 1 trên căn x với độ chính xác chấp nhận được. Vì vậy sau này, người ta không còn thấy sự xuất hiện của thuật toán trên trong các phần mềm nữa.

Việc tính toán trong tin học luôn có những sự khác biệt với tư duy toán học thuần túy của chúng ta. Tuy nhiên những tính toán này đều dựa trên những biến đổi rất cơ bản và tự nhiên. Hy vọng các bạn thấy hay và bổ ích.

Previous Post

Tế bào nội bì có chức năng nào sau đây?

Next Post

Tìm hiểu về hệ thống miễn dịch không đặc hiệu

Tranducdoan

Tranducdoan

Trần Đức Đoàn sinh năm 1999, anh chàng đẹp trai đến từ Thái Bình. Hiện đang theo học và làm việc tại trường cao đẳng FPT Polytechnic

Next Post

Tìm hiểu về hệ thống miễn dịch không đặc hiệu

thời tiết miền bắc đọc sách online cm88 Socolive trực tiếp https://p789bet.biz/ cm88 com socolive https://mb66.black/ xoilactv tructiepbongda Xoilac cakhia tv Trực tiếp bóng đá 90phut Luckywin OK99 f168 f168 MB66 MB66 cm88 com
Tài Liệu Học Tập

Copyright © 2022 Tài Liệu Học Tập.

Chuyên Mục

  • Đề Thi
  • Lớp 12
  • Lớp 11
  • Lớp 10
  • Lớp 9
  • Lớp 8
  • Lớp 7
  • Lớp 6
  • Lớp 5
  • Lớp 4
  • Lớp 3
  • Mẹo Hay
  • Tin tức
  • Liên Hệ

Tham Gia Group Tài Liệu Học Tập

No Result
View All Result
  • Đề Thi
  • Lớp 12
    • Lịch Sử Lớp 12
    • Địa Lí Lớp 12
    • Ngữ Văn Lớp 12
    • GD KTPL Lớp 12
    • Toán Lớp 12
    • Tiếng Anh Lớp 12
    • Hóa Học Lớp 12
    • Sinh Học Lớp 12
    • Vật Lí Lớp 12
  • Lớp 11
    • Toán Lớp 11
    • Ngữ Văn Lớp 11
    • Tiếng Anh Lớp 11
    • Hóa Học Lớp 11
    • Sinh Học Lớp 11
    • Vật Lí Lớp 11
    • Lịch Sử Lớp 11
    • Địa Lí Lớp 11
    • GDCD Lớp 11
  • Lớp 10
    • Toán Lớp 10
    • Ngữ Văn Lớp 10
    • Tiếng Anh Lớp 10
    • Hóa Học Lớp 10
    • Sinh Học Lớp 10
    • Vật Lí Lớp 10
    • Lịch Sử Lớp 10
    • Địa Lí Lớp 10
    • GDKTPL Lớp 10
    • Công nghệ lớp 10
    • Tin Học Lớp 10
  • Lớp 9
    • Toán Lớp 9
    • Ngữ Văn Lớp 9
    • Tiếng Anh Lớp 9
    • Lịch sử và địa lý lớp 9
    • Khoa Học Tự Nhiên Lớp 9
    • GDCD Lớp 9
  • Lớp 8
    • Toán Lớp 8
    • Ngữ Văn Lớp 8
    • Tiếng Anh Lớp 8
    • Lịch sử và địa lý lớp 8
    • Khoa Học Tự Nhiên Lớp 8
    • GDCD 8
  • Lớp 7
    • Toán Lớp 7
    • Văn Lớp 7
    • Tiếng Anh Lớp 7
    • Lịch Sử Và Địa Lí Lớp 7
    • Khoa Học Tự Nhiên Lớp 7
  • Lớp 6
    • Toán Lớp 6
    • Văn Lớp 6
    • Tiếng Anh lớp 6
    • Lịch Sử và Địa Lí Lớp 6
    • Khoa Học Tự Nhiên lớp 6
  • Lớp 5
    • Toán lớp 5
    • Tiếng Việt Lớp 5
    • Tiếng Anh Lớp 5
    • Lịch Sử và Địa Lí Lớp 5
  • Lớp 4
    • Toán lớp 4
    • Tiếng Việt Lớp 4
    • Tiếng Anh Lớp 4
    • Lịch Sử và Địa Lí Lớp 4
  • Lớp 3
    • Toán lớp 3
    • Tiếng Anh Lớp 3
    • Tiếng Việt Lớp 3
  • Mẹo Hay
  • Tin tức
  • Liên Hệ

Copyright © 2022 Tài Liệu Học Tập.