|
Nếu
có 1 quy điều đã ăn sâu vào tâm trí của mọi người, đó là tính
bất khả sai sót của tin học : một máy vi tính thì không bao giờ
nhầm lẫn. Thật ra việc thiết kế nó đã mắc phải một lỗi nghiêm
trọng : nó luôn làm tròn các con số. Và các tính toán của nó có
thể đưa ra những kết quả sai lạc khi mô tả các hiện tượng phức
tạp.
Hiện nay người ta đã biết số Pi (π) với hơn 1 tỉ số lẻ
chính xác, cũng như có thể lập thừa số (viết dưới dạng tích của
nhiều số hạng) một số có vài trăm số hạng, hay tiên liệu đến
từng mét vị trí của một phi thuyền được phóng lên quỹ đạo quanh
sao Mộc. Tất cả là nhờ máy vi tính để giải quyết những phép tính
khổng lồ không thể làm bằng tay. Nếu không phải mất nhiều năm
lao động, thậm chí nhiều thế kỷ, và các sai lầm về tính toán có
thể xảy ra, do đó sẽ đưa đến kết quả không chính xác.
Vào cuối thế kỷ 19, William Shanks bắt tay vào tính
toán 700 số lẻ đầu tiên của số Pi. Công việc này mất 20 năm, từ
1855 đến 1874. Đến năm 1947, Douglas Ferguson dùng máy tính cơ
điện để tính đến 1.000 số lẻ của Pi. Ông nhận thấy từ số lẻ thứ
528, kết quả của ông không phù hợp với của Shanks.
Nhiều nhà toán học khác cũng lao vào cuộc, và đều thừa
nhận rằng William Shanks đã tính sai. Sau đó các máy tính điện
tử giúp con người đi xa hơn, từ việc tính toán những hằng số
toán học cho đến lập thừa số của các số nguyên lớn, đến mức hầu
như người ta tin tưởng tuyệt đối vào độ tin cậy của máy tính.
Thật ra, theo nhà nghiên cứu Jean-François Colonna, sự tin tưởng
đó là rất bấp bênh. Dĩ nhiên là khi chỉ tính toán với các số đơn
gỉản có ít số hạng, nguy cơ sai lầm sẽ rất thấp và thường dễ
phát hiện ra. Nhưng khi cần làm những phép tính lập lại với các
số thực, máy tính có thể lệch khỏi sự chặt chẽ tuyệt đối về toán
học mà người ta gán cho nó. Để chứng minh, Jean-François Colonna
không cần dùng đến các hệ phương trình vi phân phức tạp. Ngay cả
một phép tính đơn giản ở trình độ của một học sinh trung học
cũng đưa ra kết quả khiến những ai tin tưởng vào tin học cũng
đều phải ngỡ ngàng.
Nên nhớ rằng một phương trình có thể có nhiều cách
viết. Như thế, 4*3 + 3*6 (trong tin học, dấu * là phép nhân) có
thể viết thành 3*6 + 3*4 hay 3*(4+6). Do vậy (R+1)*X - R*X*X có
thể lập thành thừa số dưới dạng ((R+1) - R*X)*X hay X + R*(X -
X*X).
Trong ngôn ngữ Pascal, những thay đổi về cách viết đó
không hề ảnh hưởng đến kết quả. Nhung mọi việc sẽ khác nếu là
ngôn ngữ Basic hoặc khi người ta sử dụng các máy tính bỏ túi.
Với các phép tính lặp lại n lần, các kết quả ngày càng sai lệch
ở mỗi lần lặp lại. Ngay cả với các máy tính cực mạnh, chỉ cần
thay đổi cách viết phương trình, đến phép tính thứ 70, máy sẽ
đưa ra những giá trị từ 1,199 đến 0,000009.
Tại sao chiếc máy tính mà người ta tin tưởng một cách
tuyệt đối đôi khi lại có thể “loạng choạng” như thế ? Vì lý do
rất đơn giản : “Các số thực không có trong máy tính” -
Jean-François Colonna giải thích. Số thực có thể là 2, 13 hay
811, hoặc 5/7,
Ö3,
hoặc nữa là π = 3,14159265... Thế nhưng mạch IC và bộ nhớ của
máy vi tính lại không biết đến 5/7 lẫn π hay
Ö3.
Nó chỉ biết những số có 8 đến 16 số hạng có ý nghĩa. Đối với
máy tính, 5/7 hay
căn bậc
2 của
3 được quy thành những giá trị
gần đúng là 0,71428571 hay 1,7320508.
Thật ra 5/7,
căn bậc
2 của
3 và π là những số được viết
với vô số số hạng. Chẳng có mạch vi xử lý nào có thể xử lý sự vô
hạn, vì thế máy sẽ cắt bỏ phần cuối và giữ lại trong bộ nhớ 5/7
= 0.71428571, điều này hoàn toàn sai trong toán học. Cách này sẽ
làm biến mất tính chất kết hợp của phép nhân và phép cộng, do đó
sẽ dẫn đến kết quả sai lạc. Thử tính tích số 3,14*(2,71*2,71) và
(3,14*2,71)*2,71 với chỉ 2 số lẻ, các bạn sẽ có 2 kết quả khác
nhau. Tất nhiên máy vi tính có thể tính đến 12 hay 18 số lẻ,
nhưng ảnh hưởng toàn bộ cũng thế, tức là dẫn đến các kết quả
chẳng những sai lạc mà lại khác nhau tùy theo cách viết phương
trình.
Trong tính toán đơn giản, một máy vi tính hiếm khi vượt
quá 12 số hạng, điều này đủ để thực hiện đa số những phép tính
thông thường. Ngược lại, khi có một chuỗi phép nhân, và nhất là
nếu liên quan đến một hệ thống nhạy cảm với các điều kiện ban
đầu, còn gọi là hỗn độn, khuyết điểm trong phép nhân có thể làm
sai lệch kết quả của máy.
Những hiện tượng có tiến trình hỗn độn rất thường gặp
trong vật lý học, thiên văn học, sinh học và cả kinh tế học.
Chúng được mô tả bằng các phương trình với đạo hàm riêng nhưng
không có đáp số giải tích, và người ta giải bằng những phương
pháp gần đúng liên tục, việc này lại cần đến nhiều phép tính lặp
lại. Do đó, chỉ cần thay máy khác hay thay chương trình cũng đủ
để cho ra kết quả hoàn toàn khác nhau.
Về những khuôn mẫu mô phỏng chuyển động của các hành
tinh, chúng chỉ đúng trong trường hợp một hệ thống như của chúng
ta, với khối lượng của Trái đất rất nhỏ so với khối lượng của
Mặt trời. Cũng nên biết rằng khi phóng phi thuyền, người ta vẫn
phải điều chỉnh nhiều lần so với quỹ đạo đã tính trước.
Với các máy tính hiện nay, để chắc chắn về kết quả, cần
phải áp dụng phương pháp tính toán gọi là “đa chính xác”. Nhưng
phương pháp này có khuyết điểm là mất rất nhiều thời gian, mà
thời gian này lại tăng lũy thừa với độ chính xác mong muốn. Nói
cách khác, làm những phép tính có hàng trăm lần tính lặp lại với
các số có hàng trăm số hạng có thể sẽ mất nhiều tuần lễ, nhiều
năm hay thậm chí hàng thế kỷ.
MINH LUAÂN
(theo Science & Vie)
Trở về Trang Chính
|