Kỳ dị dẫn (Strange Attractors)
(blog.shashanktomar.com)- Đây là một dự án trực quan hóa Strange Attractors bằng Three.js, cho thấy quá trình các mẫu hình phức tạp và đẹp mắt được tạo ra từ những phương trình toán học đơn giản
- Bài viết giải thích các khái niệm cơ bản của hệ động lực học (Dynamical Systems) và lý thuyết hỗn loạn (Chaos Theory), tập trung vào trạng thái của hệ biến đổi theo thời gian và các quy tắc quyết định sự tiến hóa đó
- Strange attractor được định nghĩa bởi bốn đặc điểm: cấu trúc fractal, độ nhạy với điều kiện ban đầu, quỹ đạo phi tuần hoàn và trật tự trong hỗn loạn
- Hiệu ứng cánh bướm được minh họa bằng trực quan hóa Thomas Attractor, cho thấy những thay đổi rất nhỏ của tham số
acó thể tạo ra các mẫu hoàn toàn khác nhau - Triển khai trực quan hóa thời gian thực bằng cách dùng kỹ thuật ping-pong rendering dựa trên GPU để tính toán và render hiệu quả hàng nghìn hạt
Hệ động lực học và lý thuyết hỗn loạn
-
Hệ động lực học là cách mô hình hóa bằng toán học các hiện tượng thay đổi theo thời gian, với nhiều ví dụ như chuyển động của hành tinh, tăng trưởng dân số hay thị trường chứng khoán
- Gồm không gian pha (Phase Space) biểu diễn mọi trạng thái có thể của hệ, và động lực học (Dynamics) đưa hệ từ trạng thái này sang trạng thái tiếp theo
- Ví dụ, trong mô hình tăng trưởng dân số, quy mô dân số và tốc độ tăng trưởng tạo thành trạng thái trong không gian pha, còn tỷ lệ sinh, tỷ lệ tử và sức chứa môi trường quyết định động lực học
-
Lý thuyết hỗn loạn (Chaos Theory) là lĩnh vực nghiên cứu các hệ thống không thể dự đoán, và nhiều hiện tượng trong tự nhiên thuộc về các hệ phi tuyến và nhạy cảm như vậy
- Các quy luật vẫn tồn tại, nhưng dự đoán trở nên bất khả thi do thông tin không đầy đủ
- Đặc trưng tiêu biểu là hiệu ứng cánh bướm, nơi khác biệt nhỏ trong điều kiện ban đầu tạo ra thay đổi lớn ở kết quả
Attractor và Strange Attractor
-
Attractor là tập hợp trạng thái mà hệ hội tụ tới theo thời gian; ví dụ, điểm dừng của con lắc là một attractor
- Sự hội tụ về attractor xảy ra do các yếu tố như tính ổn định, tiêu tán năng lượng (Dissipation) và sự co lại (Contraction)
-
Strange Attractor là attractor có quỹ đạo khó dự đoán do các phương trình phi tuyến phức tạp, với các đặc điểm sau
- Cấu trúc fractal: các mẫu phức tạp lặp lại ở nhiều thang đo khác nhau
- Độ nhạy với điều kiện ban đầu: thay đổi nhỏ dẫn đến kết quả hoàn toàn khác
- Quỹ đạo phi tuần hoàn: không lặp lại cùng một đường đi
- Trật tự trong hỗn loạn: trông như ngẫu nhiên nhưng bên trong có cấu trúc nhất định
Hiệu ứng cánh bướm và trực quan hóa Thomas Attractor
- Hiệu ứng cánh bướm là hiện tượng một thay đổi nhỏ tạo ra khác biệt lớn về lâu dài, thường được giải thích bằng ẩn dụ “cú đập cánh của một con bướm ở Trung Quốc gây ra một cơn bão ở vùng Caribe”
- Khi thay đổi giá trị tham số
acủa Thomas Attractor thành 0.10, 0.13, 0.19, 0.21..., quỹ đạo hạt và hình dạng tổng thể thay đổi hoàn toàn - Khi đổi trạng thái ban đầu thành
cubevàsphere surface, các hạt đi theo những đường khác nhau nhưng cuối cùng vẫn hội tụ về cùng một trạng thái attractor
Chi tiết triển khai
- Phần trực quan hóa dùng Three.js để tính toán và render trực tiếp nhiều hạt trên GPU
- Kỹ thuật ping-pong rendering giúp giảm thiểu việc truyền dữ liệu giữa CPU và GPU, bằng cách luân phiên sử dụng hai framebuffer object (FBO)
- Bộ đệm
pingvàponglần lượt lưu trạng thái hiện tại và trạng thái kế tiếp - Chương trình shader cập nhật vị trí của từng hạt theo phương trình attractor
- Ở mỗi frame, hai bộ đệm được hoán đổi để render trạng thái hạt mới
- Bộ đệm
Tham khảo và tài liệu bổ sung
- Các tài liệu liên quan được trích dẫn gồm Attractor visualization của Maxim, Wikipedia: Attractor, List of Chaotic Maps, WebGLFundamentals: Ping Pong Rendering
- Các ví dụ bổ sung về trực quan hóa attractor 3D được giới thiệu từ chaoticatmospheres.com, dynamicmath.xyz, Reddit r/generative
- Tác giả đang nhận phản hồi trên trang GitHub Discussion của blog và dự định tích hợp vào blog trong tương lai
1 bình luận
Ý kiến trên Hacker News
Kiểu trực quan hóa không gian pha 3D này cho thấy rất rõ chúng ta có thể rút ra được bao nhiêu thông tin
Nhưng đồng thời cũng khiến tôi cảm nhận được mình đang bỏ lỡ bao nhiêu sự phong phú trong những thế giới có hơn 3 chiều
Tôi tự hỏi liệu có thể trực quan hóa 4D trở lên bằng cách xem các lát cắt 3D, hoặc đi theo các hạt Lagrangian và biểu diễn sự thay đổi của giá trị D bằng màu sắc hay không
Những kiểu trực quan hóa như thế này làm tôi nhớ đến thời kỳ đầu của cơ học thống kê, khi Boltzmann và Gibbs tranh luận về không gian pha và khái niệm cân bằng
Chúng ta có thể tiếp cận bằng suy luận hoặc hiểu từng phần, nhưng không thể nắm bắt trọn vẹn
Thực ra tôi còn nghĩ bản thân tư duy 3D cũng là một năng lực thích nghi lớn mà con người có được so với nhiều loài động vật khác
Thật sự rất ngầu! Sẽ tuyệt hơn nếu có tính năng chỉnh các giá trị a và b để tìm ra những mẫu strange attractor của riêng mình
Nếu có thêm kiểu như chế độ tự do thì cũng sẽ rất vui
Trên di động thì ở thanh menu phía dưới, còn trên desktop thì nhìn là thấy ngay
Hồi còn tuổi teen, khoảng 25 năm trước, tôi từng tự làm một trình trực quan hóa attractor hỗn loạn dạng 2D
Rồi bỗng tôi nghĩ, “Nếu thay vì trực quan hóa mà mình render nó thành âm thanh thì sao?”
Tôi ánh xạ tần số theo góc, biên độ theo độ lớn, và khi tự xử lý định dạng WAV thì lần đầu tiên tôi học được khái niệm endianness
Kết quả không đến mức hoàn toàn không nghe nổi, mà nghe giống hiệu ứng âm thanh máy tính trong các phim khoa học viễn tưởng cũ
Ví dụ như Hypster by Nonlinear Circuits và Orbit 3 by Joranalogue, rất thú vị vì chúng thêm vào âm thanh những chuyển động vừa khó đoán vừa có tính chu kỳ
Hồi học trung học, gần như từ thời khủng long, tôi hay nghịch với các attractor
Khi đó với máy 486 phải mất 20–30 phút mới vẽ xong một hình, nên việc giờ đây có thể render 3D theo thời gian thực thật đáng kinh ngạc
Trải nghiệm kiểu này đã ảnh hưởng rất lớn đến tư duy hệ thống của tôi, như về quỹ đạo hay tính bất ổn
https://fractint.org/
Nhìn trực quan hóa này làm tôi nhớ đến Phong
https://phong.com/
Tình cờ đúng tuần này tôi vừa lôi lại dự án tạo fractal mà mình làm hồi lớp 11 năm 2002 và hiện đại hóa nó bằng thư viện đồ họa SFML
https://github.com/gradientwolf/fractals_SFML
Đọc bài này làm tôi thực sự rất vui. Những dự án nhỏ như vậy đưa tôi trở lại thời kỳ tò mò đơn sơ và thuần khiết của tuổi thiếu niên
Về câu “không chắc đây có phải là một mở rộng chính xác về mặt toán học hay không”, thực ra khi mở rộng lên không gian nhiều chiều thì không tồn tại một đáp án duy nhất
Có thể có nhiều cách, hoặc thậm chí không có cách nào cả
Dù vậy, bản thân những nỗ lực “đủ gần đúng” vẫn rất thú vị
Chẳng hạn, nếu tìm các thử nghiệm của những người muốn tạo Mandelbrot 3D, sẽ thấy tuy không có lời giải hoàn hảo nhưng có những khả năng cực kỳ hấp dẫn
Thật sự rất đẹp. Trông như đang xem đàn sáo đá bay múa đồng bộ
https://www.youtube.com/watch?v=V4f_1_r80RY
Cách bài viết giải thích lý thuyết toán học rất trực quan và mới mẻ
Nếu tác giả viết thêm về những chủ đề khác nữa thì chắc chắn cũng sẽ rất thú vị
Nhìn trực quan hóa này làm tôi nhớ đến module “strange” của xscreensaver