text:
Trở về Mục lục cuốn sách
Giới thiệu
Các phương pháp số dùng đến số ngẫu nhiên được gọi là phương pháp Monte-Carlo—đặt tên theo sòng bạc nổi tiếng. Ứng dụng dễ thấy của các phương pháp này là ở trong lĩnh vực vật lý ngẫu nhiên: chẳng hạn nhiệt động học thống kê. Tuy vậy, còn có những ứng dụng khác, khó thấy hơn, chẳng hạn, để ước tính tích phân nhiều chiều.
Số ngẫu nhiên
Không có thuật toán nào đủ khả năng tạo ra dãy số ngẫu nhiên thực sự. Tuy vậy, có những thuật toán phát sinh ra những dãy lặp lại gồm, chẳng hạn, M số nguyên gần như phân bố ngẫu nhiên trong khoảng từ 0 đến M − 1. Ở đây, M là số nguyên (hi vọng là) lớn. Kiểu dãy số này được gọi là giả ngẫu nhiên.
Thuật toán thường gặp nhất để phát sinh các dãy số nguyên giả ngẫu nhiên được gọi là phương pháp đồng dư tuyến tính. Công thức liên hệ giữa các số nguyên thứ n và thứ (n + 1) trong dãy này là:
In + 1 = (A In + C) mod M, [e71]
trong đó A, C, và M là các hằng số nguyên dương. Số thứ nhất trong dãy, còn được gọi là “nhân”, là do người dùng chọn.
Xét một trường hợp ví dụ trong đó A = 7, C = 0, và M = 10. Một dãy số điển hình được phát sinh từ công thức ([e71]) là
I = {3, 1, 7, 9, 3, 1, ⋯}.
Rõ ràng, sự lựa chọn các giá trị A, C, và M như trên là không thật tốt, vì dãy số tự lặp lại chỉ sau bốn vòng lặp. Tuy nhiên, nếu A, C, và M được chọn thích hợp thì dãy có độ dài tối đa (tức là độ dài bằng M), và gần như phân bố ngẫu nhiên trong khoảng từ 0 đến M − 1.
Hàm sau đây được lập để thực hiện phương pháp đồng dư tuyến tính.
// random.cpp // Linear congruential pseudo-random number generator. // Generates pseudo-random sequence of integers in // range 0 .. RANDMAX. #define RANDMAX 6074 // RANDMAX = M - 1 int random (int seed = 0) { static int next = 1; static int A = 106; static int C = 1283; static int M = 6075; if (seed) next = seed; next = next * A + C; return next % M; }
Từ khóa
static phía trước lời khai báo biến địa phương cho thấy rằng chương trình phải bảo trì giá trị của biến đó giữa các lần gọi hàm. Nói cách khác, nếu biến tĩnh
next có giá trị 999 khi thoát khỏi hàm
random thì ở lần gọi hàm này sau đó,
next sẽ có giá trị bằng đúng như vậy. Lưu ý rằng giá trị của các biến địa phương không-tĩnh thì không được bảo tồn giữa các lần gọi hàm. Chỉ định
= 0 ở dòng đầu của hàm
random là giá trị mặc định cho đối số
seed. Thực ra,
random có thể được gọi theo một trong hai cách. Thứ nhất,
random có thể được gọi mà không kèm theo đối số nào: tức là
random (): trong trường hợp này,
seed được đặt giá trị mặc định bằng 0. Thứ hai,
random có thể được gọi với một đối số nguyên, tức là
random (n): trong trường hợp này, giá trị của
seed được đặt bằng
n. Cách gọi
random thứ nhất đơn giản là sẽ trả lại số nguyên tiếp theo trong dãy giả ngẫu nhiên. Cách gọi thứ hai đặt nhân cho dãy là giá trị
n (tức là I1 được đặt bằng
n), rồi trả lại số nguyên tiếp theo trong dãy, tức là I2. Lưu ý rằng nguyên mẫu của hàm
random có dạng
int random (int = 0): dấu
= 0 chỉ định rằng đối số có thể có mặt hoặc không.
Hàm trên trả về một số nguyên giả ngẫu nhiên trong khoảng từ 0 đến RANDMAX (trong đó RANDMAX nhận giá trị M − 1). Để thu được một biến ngẫu nhiên x, phân bố đều trong khoảng từ 0 đến 1, ta cần viết:
x = double (random ()) / double (RANDMAX);
Bây giờ nếu x thực sự ngẫu nhiên thì không được có tương quan giữa các giá trị liên tiếp của x. Như vậy, một cách hay để thử nghiệm phương pháp tạo số ngẫu nhiên là vẽ xj theo xj + 1 (trong đó xj tương ứng với số thứ j trong chuỗi giả ngẫu nhiên) với nhiều giá trị khác nhau của j. Để một phương pháp phát sinh số ngẫu nhiên là tốt, đồ thị chấm điểm của nó cần điền kín đặc hình vuông đơn vị. Hơn nữa, cần phải đảm bảo không tồn tại một mẫu họa tiết nào nhận thấy được trong sự phân bố điểm.
Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, được phát sinh bởi một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bằng A = 106, C = 1283, và M = 6075.[rand3]
Hình [rand3] cho thấy một đồ thị tương quan cho 10000 cặp xj–xj + 1 đầu tiên phát sinh bằng một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bởi A = 106, C = 1283, và M = 6075. Có thể thấy rằng đây là một sự lựa chọn dở các giá trị cho A, C, và M, vì dãy số giả ngẫu nhiên tự lặp lại sau vài vòng lặp, dẫn đến các giá trị xj không lấp kín khoảng từ 0 đến 1.
Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, được phát sinh bởi một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bằng A = 107, C = 1283, và M = 6075.[rand4]
Hình [rand4] cho thấy một đồ thị tương quan cho 10000 cặp xj–xj + 1 đầu tiên phát sinh bằng một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bởi A = 107, C = 1283, và M = 6075. Có thể thấy rằng đây là một sự lựa chọn dở các giá trị cho A, C, và M, vì dãy số giả ngẫu nhiên có chiều dài tối đa, cho các giá trị xj phân bố khá đồng đều trong khoảng từ 0 đến 1. Tuy nhiên, nếu nhìn kĩ vào Hình [rand4], ta có thể thấy một xu hướng mờ nhạt cho thấy các điểm chấm xếp theo các hàng ngang và dọc. Điều này cho thấy rằng xj không hoàn toàn phân bố một cách ngẫu nhiên: nghĩa là còn tương quan nào đó giữa các giá trị xj kế tiếp. Vấn đề nằm ở chỗ M quá thấp: nghĩa là sự lựa chọn không đủ rộng rãi cho các giá trị xj khác nhau trong khoảng từ 0 đến 1.
Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, được phát sinh bởi một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bằng A = 1103515245, C = 12345, và M = 32768.[rand1]
Hình [rand1] cho thấy một đồ thị tương quan cho 10000 cặp xj–xj + 1 đầu tiên phát sinh bằng một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bởi A = 1103515245, C = 12345, và M = 32768. Sự tụ tập của các điểm trong hình cho thấy rằng một lần nữa xj không thật sự phân bố một cách ngẫu nhiên. Lần này vấn đề là ở chỗ tràn số nguyên: nghĩa là cá giá trị của A và M đủ lớn khiến cho A In > 1032 − 1 với nhiều số nguyên trong dãy giả ngẫu nhiên. Như vậy, thuật toán ([e71]) đã không được thực thi một cách chính xác.
Sự tràn số nguyên có thể được khắc phục bằng cách dùng thuật toán Schrange. Nếu y = (A z) modM thì
trong đó q = M / A và r = M%A. Phương pháp có tên Park và Miller để phát sinh ra một chuỗi giả ngẫu nhiên tương ứng với phương pháp đồng dư tuyến tính được đặc trưng bởi các giá trị A = 16807, C = 0, và M = 2147483647. Hàm dưới đây thực hiện phương pháp này, dùng thuật toán Schrange để tránh tràn số nguyên.
// random.cpp // Park and Miller's psuedo-random number generator. #define RANDMAX 2147483646 // RANDMAX = M - 1 int random (int seed = 0) { static int next = 1; static int A = 16807; static int M = 2147483647; // 2^31 - 1 static int q = 127773; // M / A static int r = 2836; // M % A if (seed) next = seed; next = A * (next % q) - r * (next / q); if (next < 0) next += M; return next; }
Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, phát sinh bằng phương pháp giả ngẫu nhiên Park & Miller.[rand2]
Hình [rand2] cho thấy một đồ thị tương quan cho 10000 cặp xj–xj + 1 đầu tiên phát sinh bằng phương pháp Park & Miller. Bây giờ ta thấy được không còn bất kì mẫu họa tiết tiết nào xuất hiện trong các điểm chấm. Điều này cho thấy rằng xj được phân bố ngẫu nhiên trong khoảng từ 0 đến 1. Từ giờ trở đi, ta sẽ dùng phương pháp Park & Miller để phát sinh tất cả số giả ngẫu nhiên cần thiết khi nghiên cứu các phương pháp Monte-Carlo.
Hàm phân phối
Đặt P(x) dx là xác suất tìm thấy biến ngẫu nhiên x trong khoảng từ x đến x + dx. Ở đây, P(x) được gọi là mật độ xác suất. Lưu ý rằng P = 0 tương ứng với không có khả năng, còn P = 1 tương ứng với chắc chắn. Vì chắc chắn là có giá trị của x nằm trong khoảng từ − ∞ đến + ∞ nên các mật độ xác suất đều chịu ràng buộc chuẩn hóa sau đây
∫−∞+∞P(x) dx = 1.
Giả sử rằng ta muốn lập một biến ngẫu nhiên x phân bố đều trong khoảng từ x1 đến x2. Nói cách khác, mật độ xác suất của x là
Một biến như vậy được lập như sau
x = x1 + (x2 - x1) * double (random ()) / double (RANDMAX);
Có hai cách cơ bản để ta lập biến ngẫu nhiên phân bố không đều: phương pháp biến đổi và phương pháp bác bỏ. Ta sẽ lần lượt nghiên cứu từng phương pháp này.
Trước hết, ta hãy xét phương pháp chuyển đổi. Đặt y = f(x), trong đó f là một hàm đã biết, còn x là một biến ngẫu nhiên. Giả sử rằng mật độ xác suất của x là Px(x). Khi đó mật độ xác suất Py(y) của y là gì? Quy tắc cơ bản ở đây là bảo toàn xác suất:
∣Px(x) dx∣ = ∣Py(y) dy∣.
Nói cách khác, xác suất tìm được x trong khoảng từ x đến x + dx cũng bằng xác suất tìm được y trong khoảng từ y đến y + dy. Từ đó rút ra
Py(y) = Px(x) / ∣fʹ(x)∣,
trong đó fʹ = df / dx.
Chẳng hạn, ta hãy xét phân bố Poisson:
Đặt y = f(x) = − lnx, khi đó ∣fʹ∣ = 1 / x. Giả sử rằng
Từ đó dẫn đến
Py(y) = 1 / ∣fʹ∣ = x = e − y,
với x = 0 ứng với y = ∞, và x = 1 ứng với y = 0. Ta kết luận rằng nếu
x = double (random ()) / double (RANDMAX); y = - log (x);
thì y có phân bố tuân theo dạng phân bố Poisson.
Phương pháp chuyển đổi yêu cầu một hàm phân bố xác suất khả vi. Điều này không phải lúc nào cũng có được. Trong những trường hợp như vậy, ta có thể dùng phương pháp bác bỏ.
Giả sử rằng ta muốn một biến ngẫu nhiên y phân bố với mật độ Py(y) trong khoảng ymin đến ymax. Đặt Py max là giá trị lớn nhất của P(y) trong khoảng này (xem Hình [rej]). Phương pháp bác bỏ là như sau. Biến y được lấy mẫu một cách ngẫu nhiên trong khoảng từ ymin đến ymax. Với mỗi giá trị của y, đầu tiên ta lượng giá Py(y). Sau đó ta phát sinh một số ngẫu nhiên x phân bố đều trong khoảng từ 0 đến Py max. Cuối cùng, nếu Py(y) < x thì ta bác bỏ giá trị y; còn nếu ngược lại thì ta giữ nó. Ở trường hợp sau này, y sẽ được phân bố theo Py(y).
Phương pháp bác bỏ.[rej]
Lấy ví dụ, ta hãy xét phân bố Gauss:
trong đó ȳ là giá trị trung bình của y, và σ là độ lệch chuẩn. Đặt
vì có một khả năng nhỏ đến mức bỏ qua được, là y sẽ nằm lệch khỏi giá trị trung bình xa hơn 4 lần độ lệch chuẩn. Từ đó dẫn đến
với cực đại xảy ra ở y = ȳ . Hàm được lập trình dưới đây sử dụng phương pháp bác bỏ để trả về một biến ngẫu nhiên tuân theo dạng phân bố Gauss với trị trung bình mean và độ lệch chuẩn sigma:
// gaussian.cpp // Function to return random variable distributed // according to Gaussian distribution with mean mean // and standard deviation sigma. #define RANDMAX 2147483646 int random (int = 0); double gaussian (double mean, double sigma) { double ymin = mean - 4. * sigma; double ymax = mean + 4. * sigma; double Pymax = 1. / sqrt (2. * M_PI) / sigma; // Calculate random value uniformly distributed // in range ymin to ymax double y = ymin + (ymax - ymin) * double (random ()) / double (RANDMAX); // Calculate Py double Py = exp (- (y - mean) * (y - mean) / 2. / sigma / sigma) / sqrt (2. * M_PI) / sigma; // Calculate random value uniformly distributed in range 0 to Pymax double x = Pymax * double (random ()) / double (RANDMAX); // If x > Py reject value and recalculate if (x > Py) return gaussian (mean, sigma); else return y; }
Hình [rej1] minh họa sự thể hiện của hàm kia trong quá trình chạy. Có thể thấy rằng hàm đã thành công trong việc trả lại một giá trị ngẫu nhiên tuân theo phân bố Gauss.
Một triệu giá trị trả lại từ hàm gaussian với mean = 5. và sigma = 1,25. Các giá trị được chia vào 100 ngăn, mỗi ngăn có bề rộng bằng 0,1. Hình vẽ cho thấy số điểm trong mỗi ngăn sau khi chia cho một hệ số chuẩn hóa thích hợp. Một đường cong Gauss cũng được vẽ cùng để tiện so sánh.[rej1]
Tích phân Monte-Carlo
Xét tích phân một chiều: ∫xlxh f(x) dx. Ta có thể ước tính số trị tích phân này bằng cách chi khoảng từ xl đến xh thành N đoạn đều nhau với bề rộng
h = (xh − xl) / N.
Đặt xi là trung điểm của đoạn thứ i, và đặt fi = f(xi). Từ đó giá trị xấp xỉ của tích phân có dạng
∫ xlxh f(x) dx ≃ ∑ i=1N fi h
Phương pháp tích phân này—vốn được biết với tên phương pháp trung điểm—không thật chính xác, nhưng rất dễ khái quát hóa cho tích phân nhiều chiều.
Sai số gắn với phương pháp trung điểm là gì? À, sai số tổng hợp thì bằng tích của từng sai số trên từng đoạn, O(h2), với số đoạn chia, O(h−1). Sai số mỗi đoạn chia hình thành từ sự biến đổi tuyến tính của f(x) trong mỗi đoạn chia. Như vậy, sai số tổng thể là O(h2) × O(h−1) = O(h). Vì, h ∝ N−1, ta có thể viết
∫ xlxh f(x) dx ≃ ∑ i=1Nfi h + O(N−1).
Bây giờ ta hãy xét tích phân hai chiều. Chẳng hạn, diện tích giới hạn bởi một đường cong [hình cong]. Ta có thể tính tích phân như vậy bằng cách chia không gian thành các ô vuông cùng kích thước h, rồi đếm số ô vuông có tâm điểm nằm trong phạm vi đường cong, chẳng hạn được N ô vuông. Khi đó, xấp xỉ cho tích phân có dạng
A ≃ N h2.
Đây là khái quát hóa cho phương pháp trung điểm trong trường hợp hai chiều.
Sai số gắn với phương pháp trung điểm trong trường hợp hai chiều bằng bao nhiêu? À sai số này phát sinh từ các ô vuông bị cắt bởi qua bởi đường cong. Những ô vuông hoặc là đóng góp hoàn toàn, hoặc là không đóng góp gì vào giá trị tích phân, tùy theo tâm của chúng nằm trong hay nằm ngoài hình đường cong. Trên thực tế, chỉ những phần của ô vuông bị cắt qua mà nằm trong hình cong thì mới đóng góp vào giá trị tích phân. Do vậy, sai số bằng tích giữa diện tích của một ô cho trước, O(h2), với số ô giao cắt bởi đường cong, O(h−1). Vì vậy, sai số tổng hợp là O(h2) × O(h−1) = O(h) = O(N−1/2). Từ đó, ta có thể viết
A = N h2 + O(N−1/2).
Bây giờ ta hãy xét tích phân ba chiều. Chẳng hạn, thể tích bao bọc trong một mặt cong. Ta có thể tính tích phân như vậy bằng cách chia không gian thành những khối lập phương giống nhau có kích thước h, rồi đếm số lập phương (chẳng hạn, N) có tâm nằm bên trong của mặt cong đó. Lúc này, xấp xỉ cho tích phân có dạng
V ≃ N h3.
Đây là khái quát hóa cho phương pháp trung điểm trong trường hợp ba chiều. À, sai số này phát sinh từ các khối lập phương bị cắt qua bởi mặt cong. Những khối lập phương này hoặc là đóng góp hoàn toàn, hoặc là không góp gì vào giá trị tích phân, tùy theo điểm tâm của chúng có nằm trong mặt cong hay không. Trên thực tế, chỉ những phần khối lập phương bị cắt qua mà nằm trong mặt cong mới đóng góp vào giá trị tích phân. Do vậy, sai số bằng tích giữa thể tích của một khối lập phương cho trước, O(h3), với số các khối bị giao cắt bởi mặt cong, O(h−2). Vì vậy, sai số tổng hợp là O(h3) × O(h−2) = O(h) = O(N−1/3). Từ đó, ta có thể viết
V = N h3 + O(N−1/3).
Sau cùng, ta hãy xem xét việc dùng phương pháp trung điểm để ước lượng thể tích, V, của một siêu khối d-chiều, bao quanh bởi siêu mặt (d − 1)-chiều. Rõ ràng là, từ những ví dụ trên, ta có
V = N hd + O(N−1/d),
trong đó N là số siêu lập phương giống hệt nhau mà siêu khối đã bị chia ra. Lưu ý rằng sai số giảm sút theo N ngày càng chậm hơn khi số chiều, d, tăng lên. Lời giải thích cho hiện tượng này khá đơn giản. Giả sử rằng N = 106. Với N = 106 ta có thể chia một đoạn thẳng có chiều dài đơn vị thành các đoạn con có độ đo tuyến tính [chính là chiều dài] bằng 10−6, nhưng chỉ có thể chia một diện tích đơn vị thành những phần nhỏ có độ đo tuyến tính bằng 10−3, và thể tích đơn vị thành các phần nhỏ có độ đo tuyến tính bằng 10−2. Như vậy, với số các đoạn chia là cố định thì khoảng cách lưới chia (và do đó, sai số tích phân) tăng một cách đáng kể khi số chiều tăng lên.
Bây giờ ta hãy xét đến cái gọi là phương pháp Monte-Carlo để tính tích phân nhiều chiều [nhiều lớp]. Chẳng hạn, xét việc tính diện tích A, bao quanh bởi đường cong C. Giả sử rằng đường cong nằm trọn trong một miền đơn giản nào đó, có diện tích Aʹ, như minh họa trên Hình [fmc]. Ta hãy phát sinh Nʹ điểm phân bố ngẫu nhiên trong khắp diện tích Aʹ. Giả sử rằng N điểm trong số đó nằm phía trong đường cong C. Khi đó ước tính diện tích bao bởi đường cong đơn giản là
A = (N / Nʹ) Aʹ. [emc]
Phương pháp tích phân Monte-Carlo.[fmc]
Sai số gắn với phương pháp tích phân Monte-Carlo bằng bao nhiêu? À, mỗi điểm có một xác suất p = A / Aʹ là nằm phía trong đường cong. Vì vậy, việc xác định xem một điểm cho trước có nằm phía trong đường cong hay không cũng giống với đo một biến ngẫu nhiên có hai giá trị có thể: 1 (tương ứng với điểm nằm phía trong đường cong) với xác suất p, và 0 (tương ứng với điểm nằm phía ngoài đường cong) với xác suất 1 − p. Nếu ta thực hiện Nʹ lần đo với x (nghĩa là, nếu ta rải Nʹ điểm trên khắp Aʹ) thì số điểm nằm phía trong đường cong là
N = ∑ i = 1Nʹxi,
trong đó xi biểu diễn lần đo thứ i của x. Bây giờ, giá trị trung bình của N là
N̄ = ∑ i=1Nʹx̄ = Nʹ x̄,
trong đó
x̄ = 1 × p + 0 × (1 − p) = p.
Vì vậy,
N̄ = Nʹ p = Nʹ A / Aʹ;
kết quả này thống nhất với PT ([emc]). Ta kết luận rằng, xét trung bình, một phép đo của N sẽ dẫn đến kết quả đúng. Nhưng, độ phân tán trong phép đo như vậy bằng bao nhiêu? À, nếu σ biểu thị cho độ lệch chuẩn của N thì ta có
vốn cũng có thể viết là
Tuy nhiên, bằng nếu i = j, và bằng 0 trong trường hợp còn lại, vì các phép đo của x đều không tương quan. Vì vậy,
Bây giờ,
và
Do đó,
cho ta
σ = √[Nʹ p (1 − p)].
Sau cùng, vì các giá trị mà N dễ nhận được rơi vào trong khoảng N = N̄ ± σ nên ta có thể viết
Từ PT ([emc]), sẽ dẫn đến
[e999]
Nói cách khác, sai số có độ lớn cỡ (Nʹ) − 1 / 2.
Phương pháp Monte-Carlo có thể được khái quát quá ngay cho d-chiều. Chẳng hạn, xét một siêu khối trong d-chiều có thể tích V được giới hạn bởi siêu mặt A, (d − 1)-chiều. Giả sử rằng A nằm trọn vẹn trong một siêu thể tích Vʹ đơn giản nào đó. Ta có thể phát sinh ngẫu nhiên Nʹ điểm phân bố khắp Vʹ. Gọi N là số những điểm nằm trong A. Từ đó dẫn đến công thức ước tính V đơn giản là
V = (N / Nʹ) Vʹ.
Bây giờ, trong khi suy diễn PT ([e999]), không có gì phụ thuộc vào dữ kiện hai chiều của tích phân đang xét. Vì vậy, ta có thể khái quát hóa phương trình này để nhận được
Ta kết luận rằng sai số gắn với tích phân Monte-Carlo luôn luôn có độ lớn cỡ (Nʹ)−1/2, bất kể số chiều của tích phân là bao nhiêu.
Bây giờ đến lúc chúng ta so sánh và làm rõ sự khác biệt giữa các phương pháp trung điểm và Monte-Carlo để tính tích phân nhiều chiều. Trong phương pháp trung điểm, ta lấp đầy không gian với một lưới chia cách đều gồm, chẳng hạn N điểm (nghĩa là các trung điểm của từng đoạn chia); sai số tổng hợp sẽ có độ lớn cỡ N−1/d, trong đó d là số chiều của tích phân. Trong phương pháp Monte-Carlo, ta lấp đầy không gian với, chẳng hạn N điểm chấm phân bố ngẫu nhiên, và sai số tổng hợp sẽ có độ lớn cỡ N−1/2, không phụ thuộc vào số chiều của tích phân. Đối với tích phân một chiều (d = 1), phương pháp trung điểm hiệu quả hơn phương pháp Monte-Carlo, vì với phương pháp đầu, sai số có độ lớn cỡ N−1, còn ở phương pháp sau sai số có độ lớn cỡ N−1/2. Với tích phân hai chiều (d = 2), hai phương pháp trung điểm và Monte-Carlo hiệu quả như nhau, vì trong cả hai trường hợp sai số có độ lớn cỡ N−1/2. Sau cùng, với tích phân ba chiều (d = 3), phương pháp trung điểm kém hiệu quả so với phương pháp Monte-Carlo, vì sai số có độ lớn cỡ N−1/3, so với N−1/2 của phương pháp sau. Ta kết luận được rằng trong trường hợp số chiều đủ lớn thì tính tích phân theo phương pháp Monte-Carlo sẽ luôn hiệu quả hơn một phương pháp tổng hợp (như phương pháp trung điểm) dựa trên một lưới cách đều.
Ví dụ tính toán: thể tích của một khối cầu 2 chiều có đường kính đơn vị nội tiếp trong khối lập phương 2 chiều.[exam]
Cho tới giờ, ta mới chỉ xét đến cách dùng phương pháp Monte-Carlo để tính một lớp khá đặc biệt gồm các tính phân trong đó hàm tích phân chỉ có thể nhận giá trị 0 hoặc 1. Tuy nhiên, phương pháp Monte-Carlo có thể dễ dàng được điều chỉnh để ước tính được những tích phân tổng quát hơn. Giả sử rằng ta cần tính ∫ f dV, trong đó f là một hàm tổng quát và miền cũng tích phân nằm trong số chiều bất kì. Ta tiến hành bằng việc rải một cách ngẫu nhiên N trên khắp miền lấy tính phân rồi tính f tại mỗi điểm. Đặt xi là điểm thứ i. Xấp xỉ Monte-Carlo cho tích phân chỉ đơn giản là
∫ f dV = (1/N) ∑ i=1Nf(xi) + O(1 / √N).
Sai số tích phân, ε, theo số điểm chia lưới, N, đối với ba tích phân tính theo phương pháp trung điểm. Các tích phân là diện tích của một hình tròn bán kính bằng đơn vị (biểu thị bởi đường nét liền), thể tích của một khối cầu bán kính đơn vị (nét chấm chấm), và siêu thể tích của một khối cầu trong không gian 4 chiều có bán kính đơn vị (nét gạch đứt).[midpoint]
Chúng ta kết thúc mục này bằng một bài toán ví dụ. Ta hãy tính thể tích của một khối cầu d-chiều có bán kính bằng 1 đơn vị, trong đó d chạy từ 2 đến 4, bằng cả hai cách trung điểm và Monte-Carlo methods. Với cả hai cách, miền lấy tích phân là khối lập phương ngoại tiếp khối cầu, xem Hình [exam].
Sai số tích phân, ε, theo số điểm, N, đối với ba tích phân tính theo phương pháp Monte-Carlo. Các tích phân là diện tích của một hình tròn bán kính bằng đơn vị (biểu thị bởi đường nét liền), thể tích của một khối cầu bán kính đơn vị (nét chấm chấm), và siêu thể tích của một khối cầu trong không gian 4 chiều có bán kính đơn vị (nét gạch đứt).[montecarlo]
Hình [midpoint] cho thấy sự phụ thuộc của sai số tích phân ứng với phương pháp trung điểm vào số điểm chia, N. Có thể thấy rằng khi số chiều của tích phân tăng lên thì sai số giảm bớt không nhanh bằng tốc độ tăng của N.
Hình [montecarlo] cho thấy sự phụ thuộc của sai số tích phân ứng với phương pháp Monte-Carlo vào số điểm chia, N. Có thể thấy rằng có rất ít thay đổi ở mức độ giảm sai số khi N tăng, với các số chiều lấy tích phân khác nhau. VÌ vậy, khi số chiều d tăng lên, phương pháp Monte-Carlo cuối cùng sẽ vượt trội phương pháp trung điểm.
4 responses to “Chương 9: Các phương pháp Monte-Carlo (Phần 1)”
Pingback: Nhập môn Vật lý tính toán | Blog của Chiến
Bạn có thể trình bày rõ hơn về thuật toán tạo số ngẫu nhiên park-miller không.
Khi chạy thử chương trình tạo số ngẫu nhiên mà bạn trình bày ở trên không hiểu sao các lần chạy đều chỉ in ra được 1 giá trị thôi.
Cám ơn bạn đã phản hồi. Mình sẽ cố gắng implement thuật toán ngay để xem trục trặc chỗ nào.
Bạn có thể tìm thấy đoạn chương trình thử với 5 lần gọi hàm ngẫu nhiên sau đây: http://codepad.org/Q4wASCvw
Tất nhiên để các lần chạy cho ra kết quả khác nhau thì ta vẫn phải “mồi” bằng
srand()của C++, và lấy
random(s)với
s=rand();
Những lần gọi hàm tiếp theo thì chỉ cần
random(0)và bây giờ bộ sinh số ngẫu nhiên hoạt động bằng cách tính ra giá trị kế tiếp của
next.

markdown:
Trở về
[Mục lục](https://quangchien.wordpress.com/2012/03/10/ch1-computational-physics#toc) cuốn sách
### Giới thiệu
Các phương pháp số dùng đến số ngẫu nhiên được gọi là
*phương pháp Monte-Carlo*—đặt tên theo sòng bạc nổi tiếng. Ứng dụng dễ thấy của các phương pháp này là ở trong lĩnh vực *vật lý ngẫu nhiên*: chẳng hạn nhiệt động học thống kê. Tuy vậy, còn có những ứng dụng khác, khó thấy hơn, chẳng hạn, để ước tính tích phân nhiều chiều.
### Số ngẫu nhiên
Không có thuật toán nào đủ khả năng tạo ra dãy số ngẫu nhiên thực sự. Tuy vậy, có những thuật toán phát sinh ra những dãy lặp lại gồm, chẳng hạn,
*M* số nguyên gần như phân bố ngẫu nhiên trong khoảng từ 0 đến *M* − 1. Ở đây, *M* là số nguyên (hi vọng là) lớn. Kiểu dãy số này được gọi là *giả ngẫu nhiên*.
Thuật toán thường gặp nhất để phát sinh các dãy số nguyên giả ngẫu nhiên được gọi là phương pháp
*đồng dư tuyến tính*. Công thức liên hệ giữa các số nguyên thứ *n* và thứ ( *n* + 1) trong dãy này là: *I* = ( n + 1 *A* *I* + *n* *C*) mod *M*, [e71]
trong đó
*A*, *C*, và *M*là các hằng số nguyên dương. Số thứ nhất trong dãy, còn được gọi là “nhân”, là do người dùng chọn.
Xét một trường hợp ví dụ trong đó
*A* = 7, *C* = 0, và *M* = 10. Một dãy số điển hình được phát sinh từ công thức ([e71]) là *I* = {3, 1, 7, 9, 3, 1, ⋯}.
Rõ ràng, sự lựa chọn các giá trị
*A*, *C*, và *M* như trên là không thật tốt, vì dãy số tự lặp lại chỉ sau bốn vòng lặp. Tuy nhiên, nếu *A*, *C*, và *M* được chọn thích hợp thì dãy có độ dài tối đa (tức là độ dài bằng *M*), và gần như phân bố ngẫu nhiên trong khoảng từ 0 đến *M* − 1.
Hàm sau đây được lập để thực hiện phương pháp đồng dư tuyến tính.
// random.cpp // Linear congruential pseudo-random number generator. // Generates pseudo-random sequence of integers in // range 0 .. RANDMAX. #define RANDMAX 6074 // RANDMAX = M - 1 int random (int seed = 0) { static int next = 1; static int A = 106; static int C = 1283; static int M = 6075; if (seed) next = seed; next = next * A + C; return next % M; }
Từ khóa
static phía trước lời khai báo biến địa phương cho thấy rằng chương trình phải bảo trì giá trị của biến đó giữa các lần gọi hàm. Nói cách khác, nếu biến tĩnh
next có giá trị 999 khi thoát khỏi hàm
random thì ở lần gọi hàm này sau đó,
next sẽ có giá trị bằng đúng như vậy. Lưu ý rằng giá trị của các biến địa phương không-tĩnh thì không được bảo tồn giữa các lần gọi hàm. Chỉ định
= 0 ở dòng đầu của hàm
random là giá trị mặc định cho đối số
seed. Thực ra,
random có thể được gọi theo một trong hai cách. Thứ nhất,
random có thể được gọi mà không kèm theo đối số nào: tức là
random (): trong trường hợp này,
seed được đặt giá trị mặc định bằng 0. Thứ hai,
random có thể được gọi với một đối số nguyên, tức là
random (n): trong trường hợp này, giá trị của
seed được đặt bằng
n. Cách gọi
random thứ nhất đơn giản là sẽ trả lại số nguyên tiếp theo trong dãy giả ngẫu nhiên. Cách gọi thứ hai đặt nhân cho dãy là giá trị
n (tức là
*I* 1 được đặt bằng
n), rồi trả lại số nguyên tiếp theo trong dãy, tức là
*I* 2. Lưu ý rằng nguyên mẫu của hàm
random có dạng
int random (int = 0): dấu
= 0 chỉ định rằng đối số có thể có mặt hoặc không.
Hàm trên trả về một số nguyên giả ngẫu nhiên trong khoảng từ 0 đến RANDMAX (trong đó RANDMAX nhận giá trị
*M* − 1). Để thu được một biến ngẫu nhiên *x*, phân bố đều trong khoảng từ 0 đến 1, ta cần viết:
x = double (random ()) / double (RANDMAX);
Bây giờ nếu
*x* thực sự ngẫu nhiên thì không được có tương quan giữa các giá trị liên tiếp của *x*. Như vậy, một cách hay để thử nghiệm phương pháp tạo số ngẫu nhiên là vẽ *x* theo j *x* (trong đó *j*+ 1 *x* tương ứng với số thứ *j* *j*trong chuỗi giả ngẫu nhiên) với nhiều giá trị khác nhau của *j*. Để một phương pháp phát sinh số ngẫu nhiên là tốt, đồ thị chấm điểm của nó cần điền kín đặc hình vuông đơn vị. Hơn nữa, cần phải đảm bảo không tồn tại một mẫu họa tiết nào nhận thấy được trong sự phân bố điểm. *Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, được phát sinh bởi một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bằng A = 106, C = 1283, và M = 6075.*[rand3]
Hình [rand3] cho thấy một đồ thị tương quan cho 10000 cặp
*x* – j *x* đầu tiên phát sinh bằng một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bởi *j*+ 1 *A*= 106, *C*= 1283, và *M*= 6075. Có thể thấy rằng đây là một sự lựa chọn dở các giá trị cho *A*, *C*, và *M*, vì dãy số giả ngẫu nhiên tự lặp lại sau vài vòng lặp, dẫn đến các giá trị *x* không lấp kín khoảng từ 0 đến 1. *j* *Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, được phát sinh bởi một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bằng A = 107, C = 1283, và M = 6075.*[rand4]
Hình [rand4] cho thấy một đồ thị tương quan cho 10000 cặp
*x* – j *x* đầu tiên phát sinh bằng một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bởi *j*+ 1 *A*= 107, *C*= 1283, và *M*= 6075. Có thể thấy rằng đây là một sự lựa chọn dở các giá trị cho *A*, *C*, và *M*, vì dãy số giả ngẫu nhiên có chiều dài tối đa, cho các giá trị *x* phân bố khá đồng đều trong khoảng từ 0 đến 1. Tuy nhiên, nếu nhìn kĩ vào Hình [rand4], ta có thể thấy một xu hướng mờ nhạt cho thấy các điểm chấm xếp theo các hàng ngang và dọc. Điều này cho thấy rằng *j* *x* không hoàn toàn phân bố một cách ngẫu nhiên: nghĩa là còn tương quan nào đó giữa các giá trị *j* *x* kế tiếp. Vấn đề nằm ở chỗ *j* *M*quá thấp: nghĩa là sự lựa chọn không đủ rộng rãi cho các giá trị *x* khác nhau trong khoảng từ 0 đến 1. *j* *Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, được phát sinh bởi một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bằng A = 1103515245, C = 12345, và M = 32768.*[rand1]
Hình [rand1] cho thấy một đồ thị tương quan cho 10000 cặp
*x* – j *x* đầu tiên phát sinh bằng một phương pháp phát sinh số giả ngẫu nhiên đồng dư tuyến tính, được đặc trưng bởi *j*+ 1 *A*= 1103515245, *C*= 12345, và *M*= 32768. Sự tụ tập của các điểm trong hình cho thấy rằng một lần nữa *x* không thật sự phân bố một cách ngẫu nhiên. Lần này vấn đề là ở chỗ tràn số nguyên: nghĩa là cá giá trị của *j* *A*và *M*đủ lớn khiến cho *A* *I* > 10 *n* 32− 1 với nhiều số nguyên trong dãy giả ngẫu nhiên. Như vậy, thuật toán ([e71]) đã không được thực thi một cách chính xác.
Sự tràn số nguyên có thể được khắc phục bằng cách dùng
*thuật toán Schrange*. Nếu *y* = ( *A* *z*) mod *M* thì
trong đó
*q* = *M* / *A* và *r* = *M*% *A*. Phương pháp có tên *Park và Miller* để phát sinh ra một chuỗi giả ngẫu nhiên tương ứng với phương pháp đồng dư tuyến tính được đặc trưng bởi các giá trị *A* = 16807, *C* = 0, và *M* = 2147483647. Hàm dưới đây thực hiện phương pháp này, dùng thuật toán Schrange để tránh tràn số nguyên.
// random.cpp // Park and Miller's psuedo-random number generator. #define RANDMAX 2147483646 // RANDMAX = M - 1 int random (int seed = 0) { static int next = 1; static int A = 16807; static int M = 2147483647; // 2^31 - 1 static int q = 127773; // M / A static int r = 2836; // M % A if (seed) next = seed; next = A * (next % q) - r * (next / q); if (next < 0) next += M; return next; }
*Đồ thị chấm điểm của xj theo xj + 1 với j = 1, 10000. Ở đây, xj là các giá trị ngẫu nhiên, phân bố đều trong khoảng từ 0 đến 1, phát sinh bằng phương pháp giả ngẫu nhiên Park & Miller.*[rand2]
Hình [rand2] cho thấy một đồ thị tương quan cho 10000 cặp
*x* – j *x* đầu tiên phát sinh bằng phương pháp Park & Miller. Bây giờ ta thấy được không còn bất kì mẫu họa tiết tiết nào xuất hiện trong các điểm chấm. Điều này cho thấy rằng *j*+ 1 *x* được phân bố ngẫu nhiên trong khoảng từ 0 đến 1. Từ giờ trở đi, ta sẽ dùng phương pháp Park & Miller để phát sinh tất cả số giả ngẫu nhiên cần thiết khi nghiên cứu các phương pháp Monte-Carlo. *j*
### Hàm phân phối
Đặt
*P*( *x*) *d* *x* là xác suất tìm thấy biến ngẫu nhiên *x* trong khoảng từ *x* đến *x* + *d* *x*. Ở đây, *P*( *x*) được gọi là *mật độ xác suất*. Lưu ý rằng *P* = 0 tương ứng với không có khả năng, còn *P* = 1 tương ứng với chắc chắn. Vì chắc chắn là có giá trị của *x* nằm trong khoảng từ − ∞ đến + ∞ nên các mật độ xác suất đều chịu ràng buộc chuẩn hóa sau đây
∫
−∞ +∞ *P*( *x*) *d* *x* = 1.
Giả sử rằng ta muốn lập một biến ngẫu nhiên
*x* phân bố đều trong khoảng từ *x* 1 đến *x* 2. Nói cách khác, mật độ xác suất của *x* là
Một biến như vậy được lập như sau
x = x1 + (x2 - x1) * double (random ()) / double (RANDMAX);
Có hai cách cơ bản để ta lập biến ngẫu nhiên phân bố không đều:
*phương pháp biến đổi* và *phương pháp bác bỏ*. Ta sẽ lần lượt nghiên cứu từng phương pháp này.
Trước hết, ta hãy xét phương pháp chuyển đổi. Đặt
*y* = *f*( *x*), trong đó *f* là một hàm đã biết, còn *x* là một biến ngẫu nhiên. Giả sử rằng mật độ xác suất của *x* là *P* ( x *x*). Khi đó mật độ xác suất *P* ( *y* *y*) của *y*là gì? Quy tắc cơ bản ở đây là bảo toàn xác suất:
∣
*P* ( x *x*) *d* *x*∣ = ∣ *P* ( *y* *y*) *d* *y*∣.
Nói cách khác, xác suất tìm được
*x* trong khoảng từ *x* đến *x* + *d* *x* cũng bằng xác suất tìm được *y* trong khoảng từ *y* đến *y* + *d* *y*. Từ đó rút ra *P* ( y *y*) = *P* ( *x* *x*) / ∣ *f*ʹ( *x*)∣,
trong đó
*f*ʹ = *d* *f* / *d* *x*.
Chẳng hạn, ta hãy xét
*phân bố Poisson*:
Đặt
* y* = *f*( *x*) = − ln *x*, khi đó ∣ *f*ʹ∣ = 1 / *x*. Giả sử rằng
Từ đó dẫn đến
*P* ( y *y*) = 1 / ∣ *f*ʹ∣ = *x*= e −, *y*
với
*x* = 0 ứng với *y* = ∞, và *x* = 1 ứng với *y* = 0. Ta kết luận rằng nếu
x = double (random ()) / double (RANDMAX); y = - log (x);
thì
*y* có phân bố tuân theo dạng phân bố Poisson.
Phương pháp chuyển đổi yêu cầu một hàm phân bố xác suất khả vi. Điều này không phải lúc nào cũng có được. Trong những trường hợp như vậy, ta có thể dùng phương pháp bác bỏ.
Giả sử rằng ta muốn một biến ngẫu nhiên
*y* phân bố với mật độ *P* ( y *y*) trong khoảng *y* minđến *y* max. Đặt *P* là giá trị lớn nhất của *y*max *P*( *y*) trong khoảng này (xem Hình [rej]). Phương pháp bác bỏ là như sau. Biến *y*được lấy mẫu một cách ngẫu nhiên trong khoảng từ *y* minđến *y* max. Với mỗi giá trị của *y*, đầu tiên ta lượng giá *P* ( *y* *y*). Sau đó ta phát sinh một số ngẫu nhiên *x*phân bố đều trong khoảng từ 0 đến *P* . Cuối cùng, nếu *y*max *P* ( *y* *y*) < *x*thì ta bác bỏ giá trị *y*; còn nếu ngược lại thì ta giữ nó. Ở trường hợp sau này, *y*sẽ được phân bố theo *P* ( *y* *y*). *Phương pháp bác bỏ.*[rej]
Lấy ví dụ, ta hãy xét phân bố Gauss:
trong đó
*ȳ* là giá trị trung bình của *y*, và *σ* là độ lệch chuẩn. Đặt
vì có một khả năng nhỏ đến mức bỏ qua được, là
*y* sẽ nằm lệch khỏi giá trị trung bình xa hơn 4 lần độ lệch chuẩn. Từ đó dẫn đến
với cực đại xảy ra ở
*y* = *ȳ* . Hàm được lập trình dưới đây sử dụng phương pháp bác bỏ để trả về một biến ngẫu nhiên tuân theo dạng phân bố Gauss với trị trung bình mean và độ lệch chuẩn sigma:
// gaussian.cpp // Function to return random variable distributed // according to Gaussian distribution with mean mean // and standard deviation sigma. #define RANDMAX 2147483646 int random (int = 0); double gaussian (double mean, double sigma) { double ymin = mean - 4. * sigma; double ymax = mean + 4. * sigma; double Pymax = 1. / sqrt (2. * M_PI) / sigma; // Calculate random value uniformly distributed // in range ymin to ymax double y = ymin + (ymax - ymin) * double (random ()) / double (RANDMAX); // Calculate Py double Py = exp (- (y - mean) * (y - mean) / 2. / sigma / sigma) / sqrt (2. * M_PI) / sigma; // Calculate random value uniformly distributed in range 0 to Pymax double x = Pymax * double (random ()) / double (RANDMAX); // If x > Py reject value and recalculate if (x > Py) return gaussian (mean, sigma); else return y; }
Hình [rej1] minh họa sự thể hiện của hàm kia trong quá trình chạy. Có thể thấy rằng hàm đã thành công trong việc trả lại một giá trị ngẫu nhiên tuân theo phân bố Gauss.
*Một triệu giá trị trả lại từ hàm gaussian với mean = 5. và sigma = 1,25. Các giá trị được chia vào 100 ngăn, mỗi ngăn có bề rộng bằng 0,1. Hình vẽ cho thấy số điểm trong mỗi ngăn sau khi chia cho một hệ số chuẩn hóa thích hợp. Một đường cong Gauss cũng được vẽ cùng để tiện so sánh.*[rej1]
### Tích phân Monte-Carlo
Xét tích phân một chiều: ∫
*x* *l* *x* *h * *f*( *x*) *d* *x*. Ta có thể ước tính số trị tích phân này bằng cách chi khoảng từ *x* đến l *x* thành *h* *N*đoạn đều nhau với bề rộng *h* = ( *x* − h *x* ) / *l* *N*.
Đặt
*x* là i *trung điểm*của đoạn thứ *i*, và đặt *f* = *i* *f*( *x* ). Từ đó giá trị xấp xỉ của tích phân có dạng *i*
∫
*x* *l* *x* *h* * f*( *x*) *d* *x* ≃ ∑ *i*=1 *N* * f* *i* *h*
Phương pháp tích phân này—vốn được biết với tên
*phương pháp trung điểm*—không thật chính xác, nhưng rất dễ khái quát hóa cho tích phân nhiều chiều.
Sai số gắn với phương pháp trung điểm là gì? À, sai số tổng hợp thì bằng tích của từng sai số trên từng đoạn,
*O*( *h* 2), với số đoạn chia, *O*( *h* −1). Sai số mỗi đoạn chia hình thành từ sự biến đổi tuyến tính của *f*( *x*) trong mỗi đoạn chia. Như vậy, sai số tổng thể là *O*( *h* 2) × *O*( *h* −1) = *O*( *h*). Vì, *h* ∝ *N* −1, ta có thể viết
∫
*x* *l* *x* *h* * f*( *x*) *d* *x* ≃ ∑ *i*=1 *N* *f* *i* *h* + *O*( *N* −1).
Bây giờ ta hãy xét tích phân hai chiều. Chẳng hạn, diện tích giới hạn bởi một đường cong [hình cong]. Ta có thể tính tích phân như vậy bằng cách chia không gian thành các ô vuông cùng kích thước
*h*, rồi đếm số ô vuông có tâm điểm nằm trong phạm vi đường cong, chẳng hạn được *N* ô vuông. Khi đó, xấp xỉ cho tích phân có dạng *A* ≃ *N* *h* 2.
Đây là khái quát hóa cho phương pháp trung điểm trong trường hợp hai chiều.
Sai số gắn với phương pháp trung điểm trong trường hợp hai chiều bằng bao nhiêu? À sai số này phát sinh từ các ô vuông bị cắt bởi qua bởi đường cong. Những ô vuông hoặc là đóng góp hoàn toàn, hoặc là không đóng góp gì vào giá trị tích phân, tùy theo tâm của chúng nằm trong hay nằm ngoài hình đường cong. Trên thực tế, chỉ những phần của ô vuông bị cắt qua mà nằm trong hình cong thì mới đóng góp vào giá trị tích phân. Do vậy, sai số bằng tích giữa diện tích của một ô cho trước,
*O*( *h* 2), với số ô giao cắt bởi đường cong, *O*( *h* −1). Vì vậy, sai số tổng hợp là *O*( *h* 2) × *O*( *h* −1) = *O*( *h*) = *O*( *N* −1/2). Từ đó, ta có thể viết *A* = *N* *h* 2 + *O*( *N* −1/2).
Bây giờ ta hãy xét tích phân ba chiều. Chẳng hạn, thể tích bao bọc trong một mặt cong. Ta có thể tính tích phân như vậy bằng cách chia không gian thành những khối lập phương giống nhau có kích thước
*h*, rồi đếm số lập phương (chẳng hạn, *N*) có tâm nằm bên trong của mặt cong đó. Lúc này, xấp xỉ cho tích phân có dạng *V* ≃ *N* *h* 3.
Đây là khái quát hóa cho phương pháp trung điểm trong trường hợp ba chiều. À, sai số này phát sinh từ các khối lập phương bị cắt qua bởi mặt cong. Những khối lập phương này hoặc là đóng góp hoàn toàn, hoặc là không góp gì vào giá trị tích phân, tùy theo điểm tâm của chúng có nằm trong mặt cong hay không. Trên thực tế, chỉ những phần khối lập phương bị cắt qua mà nằm trong mặt cong mới đóng góp vào giá trị tích phân. Do vậy, sai số bằng tích giữa thể tích của một khối lập phương cho trước,
*O*( *h* 3), với số các khối bị giao cắt bởi mặt cong, *O*( *h* −2). Vì vậy, sai số tổng hợp là *O*( *h* 3) × *O*( *h* −2) = *O*( *h*) = *O*( *N* −1/3). Từ đó, ta có thể viết *V* = *N* *h* 3 + *O*( *N* −1/3).
Sau cùng, ta hãy xem xét việc dùng phương pháp trung điểm để ước lượng thể tích,
*V*, của một siêu khối *d*-chiều, bao quanh bởi siêu mặt ( *d* − 1)-chiều. Rõ ràng là, từ những ví dụ trên, ta có *V* = *N* *h* + d *O*( *N* −1/), *d*
trong đó
*N* là số siêu lập phương giống hệt nhau mà siêu khối đã bị chia ra. Lưu ý rằng sai số giảm sút theo *N* ngày càng chậm hơn khi số chiều, *d*, tăng lên. Lời giải thích cho hiện tượng này khá đơn giản. Giả sử rằng *N* = 10 6. Với *N* = 10 6 ta có thể chia một đoạn thẳng có chiều dài đơn vị thành các đoạn con có độ đo tuyến tính [chính là chiều dài] bằng 10 −6, nhưng chỉ có thể chia một diện tích đơn vị thành những phần nhỏ có độ đo tuyến tính bằng 10 −3, và thể tích đơn vị thành các phần nhỏ có độ đo tuyến tính bằng 10 −2. Như vậy, với số các đoạn chia là cố định thì khoảng cách lưới chia (và do đó, sai số tích phân) tăng một cách đáng kể khi số chiều tăng lên.
Bây giờ ta hãy xét đến cái gọi là
*phương pháp Monte-Carlo* để tính tích phân nhiều chiều [nhiều lớp]. Chẳng hạn, xét việc tính diện tích *A*, bao quanh bởi đường cong *C*. Giả sử rằng đường cong nằm trọn trong một miền đơn giản nào đó, có diện tích *A*ʹ, như minh họa trên Hình [fmc]. Ta hãy phát sinh *N*ʹ điểm phân bố *ngẫu nhiên* trong khắp diện tích *A*ʹ. Giả sử rằng *N* điểm trong số đó nằm phía trong đường cong *C*. Khi đó ước tính diện tích bao bởi đường cong đơn giản là *A* = ( *N* / *N*ʹ) *A*ʹ. [emc] *Phương pháp tích phân Monte-Carlo.*[fmc]
Sai số gắn với phương pháp tích phân Monte-Carlo bằng bao nhiêu? À, mỗi điểm có một xác suất
*p* = *A* / *A*ʹ là nằm phía trong đường cong. Vì vậy, việc xác định xem một điểm cho trước có nằm phía trong đường cong hay không cũng giống với đo một biến ngẫu nhiên có hai giá trị có thể: 1 (tương ứng với điểm nằm phía trong đường cong) với xác suất *p*, và 0 (tương ứng với điểm nằm phía ngoài đường cong) với xác suất 1 − *p*. Nếu ta thực hiện *N*ʹ lần đo với *x* (nghĩa là, nếu ta rải *N*ʹ điểm trên khắp *A*ʹ) thì số điểm nằm phía trong đường cong là *N* = ∑ *i* = 1 ʹ N *x* , *i*
trong đó
*x* biểu diễn lần đo thứ i *i*của *x*. Bây giờ, giá trị trung bình của *N*là *N̄* = ∑ *i*=1 ʹ N *x̄*= *N*ʹ *x̄*,
trong đó
*x̄* = 1 × *p* + 0 × (1 − *p*) = *p*.
Vì vậy,
*N̄* = *N*ʹ *p* = *N*ʹ *A* / *A*ʹ;
kết quả này thống nhất với PT ([emc]). Ta kết luận rằng, xét trung bình, một phép đo của
*N* sẽ dẫn đến kết quả đúng. Nhưng, độ phân tán trong phép đo như vậy bằng bao nhiêu? À, nếu *σ* biểu thị cho *độ lệch chuẩn* của *N* thì ta có
vốn cũng có thể viết là
Tuy nhiên,
bằng
nếu
*i* = *j*, và bằng 0 trong trường hợp còn lại, vì các phép đo của *x* đều *không tương quan*. Vì vậy,
Bây giờ,
và
Do đó,
cho ta
*σ* = *√*[ *N*ʹ *p* (1 − *p*)].
Sau cùng, vì các giá trị mà
*N* dễ nhận được rơi vào trong khoảng *N* = *N̄* ± *σ* nên ta có thể viết
Từ PT ([emc]), sẽ dẫn đến
[e999]
Nói cách khác, sai số có độ lớn cỡ (
*N*ʹ) − 1 / 2.
Phương pháp Monte-Carlo có thể được khái quát quá ngay cho
*d*-chiều. Chẳng hạn, xét một siêu khối trong *d*-chiều có thể tích *V* được giới hạn bởi siêu mặt *A*, ( *d* − 1)-chiều. Giả sử rằng *A* nằm trọn vẹn trong một siêu thể tích *V*ʹ đơn giản nào đó. Ta có thể phát sinh ngẫu nhiên *N*ʹ điểm phân bố khắp *V*ʹ. Gọi *N* là số những điểm nằm trong *A*. Từ đó dẫn đến công thức ước tính *V* đơn giản là *V* = ( *N* / *N*ʹ) *V*ʹ.
Bây giờ, trong khi suy diễn PT ([e999]), không có gì phụ thuộc vào dữ kiện hai chiều của tích phân đang xét. Vì vậy, ta có thể khái quát hóa phương trình này để nhận được
Ta kết luận rằng sai số gắn với tích phân Monte-Carlo
*luôn luôn* có độ lớn cỡ ( *N*ʹ) −1/2, bất kể số chiều của tích phân là bao nhiêu.
Bây giờ đến lúc chúng ta so sánh và làm rõ sự khác biệt giữa các phương pháp trung điểm và Monte-Carlo để tính tích phân nhiều chiều. Trong phương pháp trung điểm, ta lấp đầy không gian với một lưới chia
*cách đều* gồm, chẳng hạn *N* điểm (nghĩa là các trung điểm của từng đoạn chia); sai số tổng hợp sẽ có độ lớn cỡ *N* −1/ d, trong đó *d*là số chiều của tích phân. Trong phương pháp Monte-Carlo, ta lấp đầy không gian với, chẳng hạn *N*điểm chấm *phân bố ngẫu nhiên*, và sai số tổng hợp sẽ có độ lớn cỡ *N* −1/2, không phụ thuộc vào số chiều của tích phân. Đối với tích phân một chiều ( *d*= 1), phương pháp trung điểm *hiệu quả hơn*phương pháp Monte-Carlo, vì với phương pháp đầu, sai số có độ lớn cỡ *N* −1, còn ở phương pháp sau sai số có độ lớn cỡ *N* −1/2. Với tích phân hai chiều ( *d*= 2), hai phương pháp trung điểm và Monte-Carlo *hiệu quả như nhau*, vì trong cả hai trường hợp sai số có độ lớn cỡ *N* −1/2. Sau cùng, với tích phân ba chiều ( *d*= 3), phương pháp trung điểm *kém hiệu quả*so với phương pháp Monte-Carlo, vì sai số có độ lớn cỡ *N* −1/3, so với *N* −1/2của phương pháp sau. Ta kết luận được rằng trong trường hợp số chiều đủ lớn thì tính tích phân theo phương pháp Monte-Carlo sẽ luôn hiệu quả hơn một phương pháp tổng hợp (như phương pháp trung điểm) dựa trên một lưới cách đều. *Ví dụ tính toán: thể tích của một khối cầu 2 chiều có đường kính đơn vị nội tiếp trong khối lập phương 2 chiều.*[exam]
Cho tới giờ, ta mới chỉ xét đến cách dùng phương pháp Monte-Carlo để tính một lớp khá đặc biệt gồm các tính phân trong đó hàm tích phân chỉ có thể nhận giá trị 0 hoặc 1. Tuy nhiên, phương pháp Monte-Carlo có thể dễ dàng được điều chỉnh để ước tính được những tích phân tổng quát hơn. Giả sử rằng ta cần tính ∫
*f* *d* *V*, trong đó *f* là một hàm tổng quát và miền cũng tích phân nằm trong số chiều bất kì. Ta tiến hành bằng việc rải một cách ngẫu nhiên *N* trên khắp miền lấy tính phân rồi tính *f* tại mỗi điểm. Đặt *x* là điểm thứ i *i*. Xấp xỉ Monte-Carlo cho tích phân chỉ đơn giản là
∫
*f* *d* *V* = (1/ *N*) ∑ *i*=1 *N* *f*( *x* ) + i *O*(1 / *√* *N*). *Sai số tích phân, ε, theo số điểm chia lưới, N, đối với ba tích phân tính theo phương pháp trung điểm. Các tích phân là diện tích của một hình tròn bán kính bằng đơn vị (biểu thị bởi đường nét liền), thể tích của một khối cầu bán kính đơn vị (nét chấm chấm), và siêu thể tích của một khối cầu trong không gian 4 chiều có bán kính đơn vị (nét gạch đứt).*[midpoint]
Chúng ta kết thúc mục này bằng một bài toán ví dụ. Ta hãy tính thể tích của một khối cầu
*d*-chiều có bán kính bằng 1 đơn vị, trong đó *d* chạy từ 2 đến 4, bằng cả hai cách trung điểm và Monte-Carlo methods. Với cả hai cách, miền lấy tích phân là khối lập phương ngoại tiếp khối cầu, xem Hình [exam]. *Sai số tích phân, ε, theo số điểm, N, đối với ba tích phân tính theo phương pháp Monte-Carlo. Các tích phân là diện tích của một hình tròn bán kính bằng đơn vị (biểu thị bởi đường nét liền), thể tích của một khối cầu bán kính đơn vị (nét chấm chấm), và siêu thể tích của một khối cầu trong không gian 4 chiều có bán kính đơn vị (nét gạch đứt).*[montecarlo]
Hình [midpoint] cho thấy sự phụ thuộc của sai số tích phân ứng với phương pháp trung điểm vào số điểm chia,
*N*. Có thể thấy rằng khi số chiều của tích phân tăng lên thì sai số giảm bớt không nhanh bằng tốc độ tăng của *N*.
Hình [montecarlo] cho thấy sự phụ thuộc của sai số tích phân ứng với phương pháp Monte-Carlo vào số điểm chia,
*N*. Có thể thấy rằng có rất ít thay đổi ở mức độ giảm sai số khi *N* tăng, với các số chiều lấy tích phân khác nhau. VÌ vậy, khi số chiều *d* tăng lên, phương pháp Monte-Carlo cuối cùng sẽ vượt trội phương pháp trung điểm.
## 4 responses to “
Chương 9: Các phương pháp Monte-Carlo (Phần 1)”
Pingback: Nhập môn Vật lý tính toán | Blog của Chiến
Bạn có thể trình bày rõ hơn về thuật toán tạo số ngẫu nhiên park-miller không.
Khi chạy thử chương trình tạo số ngẫu nhiên mà bạn trình bày ở trên không hiểu sao các lần chạy đều chỉ in ra được 1 giá trị thôi.
Cám ơn bạn đã phản hồi. Mình sẽ cố gắng implement thuật toán ngay để xem trục trặc chỗ nào.
Bạn có thể tìm thấy đoạn chương trình thử với 5 lần gọi hàm ngẫu nhiên sau đây: http://codepad.org/Q4wASCvw
Tất nhiên để các lần chạy cho ra kết quả khác nhau thì ta vẫn phải “mồi” bằng
srand()của C++, và lấy
random(s)với
s=rand();
Những lần gọi hàm tiếp theo thì chỉ cần
random(0)và bây giờ bộ sinh số ngẫu nhiên hoạt động bằng cách tính ra giá trị kế tiếp của
next.

Link: <http://wp.me/p1kFN-gY>; rel=shortlink


text:
Túi xách Dior màu đỏ sang trọng cho bạn gái đi tiệc thêm quý phái. Dior là dòng túi mang đến sự nữ tính tự tin cho giới trẻ, dior màu đỏ thật sự nổi bậc
Tên
Email
Điểm
Nội dung
Từ khóa :
túi xách dior
,
túi dior
,
túi dior đẹp
Sản phẩm Dior đỏ rất tốt, giá thành phải chăng, bền đẹp rẻ, mình mua túi xách, bóp ví màu Đỏ. Túi xách Dior màu đỏ sang trọng cho bạn gái đi tiệc thêm quý phái : Sản phẩm tốt, số điểm cho sản phẩm này là 5
Túi xách, bóp ví Dior đỏ rất tốt, giá thành phải chăng, bền đẹp rẻ, sản phẩm cao cấp, hàng hiệu, uy tín chất lượng mà không phải ở shop nào cũng có. Túi xách Dior màu đỏ sang trọng cho bạn gái đi tiệc thêm quý phái : Sản phẩm giá rẻ tốt
Chát trực tuyến với MiliStore

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: text/html

Connection: close

Cache-Control: private

Set-Cookie: ListproductID=p219; expires=Thu, 05-Oct-2017 01:52:04 GMT; path=/

X-Powered-By-Plesk: PleskWin

Content-Type: text/html; charset=utf-8


text:
Bé tô màu những câu chuyện của gấu Pooh
Thương hiệu: Pandabooks | Mã hàng: SD-191179
- Hình ảnh sinh động rõ nét, dễ tô
- Giúp bé phát triển khả năng hội họa
- Rèn luyện đôi tay khéo léo
Sản phẩm đã Hết hàng
Khoa học đã chứng minh, trí thông minh của trẻ có thể gia tăng với những bài tập kích thích trí não đúng mức. .Tô màu là một trong những phương pháp vừa học vừa chơi, giúp bé phát triển thị giác, bồi dưỡng khả năng tư duy, quan sát và rèn luyện sự khéo léo của đôi bàn tay. Bé tô màu những câu chuyện của gấu Pooh chính là một hình thức để kích thích trí tưởng tượng, phát triển trí tuệ và tư duy thẩm mỹ của trẻ. Qua tô màu, các em có thể bộc lộ tình cảm của mình với thế giới xung quanh, đồng thời làm quen với hình dạng và màu sắc, rèn luyện khả năng động não và luyện phối hợp đôi bàn tay khéo léo.
Với những hình thù ngộ nghĩnh của các nhân vật hoạt hình, màu sắc tươi sáng, bộ sách sẽ là người bạn đồng hành thân thiết của các em nhỏ.
Bé tô màu những câu chuyện của gấu Pooh
- Bộ sách Bé tập tô màu là một lựa chọn thú vị để cha mẹ và các bé cùng vui chơi hàng ngày.
- Các bậc phụ huynh nên dành thời gian để hướng dẫn, động viên bé khi bé vẽ.
- Những tác phẩm sau khi bé hoàn thành bạn nên cổ vũ, khen ngợi để bé thêm hứng thú.
- Ngoài ra, bạn cũng nên lưu ý trong việc chọn màu vẽ an toàn cho bé.
- Bộ sách "Bé tô màu những câu chuyện của gấu Pooh" không chỉ phù hợp để bố mẹ hướng dẫn con cái ở nhà mà còn khuyến khích sử dụng trong các trường mầm non, mẫu giáo.
Pooh và các bạn chuẩn bị tham gia vào những cuộc phiêu lưu rất kỳ thú. Các em hãy tham gia cùng các bạn ấy bằng cách dùng chì màu hoặc sáp màu của mình để tô nhé! Chắc chắn các em sẽ có những khoảnh khắc thật vui vẻ và hơn nữa lại còn có một cuốn sách rất tuyệt vời để lưu giữ nữa đấy!

markdown:
# Bé tô màu những câu chuyện của gấu Pooh
Thương hiệu:
[Pandabooks](/thuong-hieu/pandabooks)
|
Mã hàng: SD-191179
- Hình ảnh sinh động rõ nét, dễ tô
- Giúp bé phát triển khả năng hội họa
- Rèn luyện đôi tay khéo léo
Sản phẩm đã Hết hàng
Khoa học đã chứng minh, trí thông minh của trẻ có thể gia tăng với những bài tập kích thích trí não đúng mức. .Tô màu là một trong những phương pháp vừa học vừa chơi, giúp bé phát triển thị giác, bồi dưỡng khả năng tư duy, quan sát và rèn luyện sự khéo léo của đôi bàn tay.
**Bé tô màu những câu chuyện của gấu Pooh** chính là một hình thức để kích thích trí tưởng tượng, phát triển trí tuệ và tư duy thẩm mỹ của trẻ. Qua tô màu, các em có thể bộc lộ tình cảm của mình với thế giới xung quanh, đồng thời làm quen với hình dạng và màu sắc, rèn luyện khả năng động não và luyện phối hợp đôi bàn tay khéo léo. *Với những hình thù ngộ nghĩnh của các nhân vật hoạt hình, màu sắc tươi sáng, bộ sách sẽ là người bạn đồng hành thân thiết của các em nhỏ.*
### Bé tô màu những câu chuyện của gấu Pooh
- Bộ sách Bé tập tô màu là một lựa chọn thú vị để cha mẹ và các bé cùng vui chơi hàng ngày.
- Các bậc phụ huynh nên dành thời gian để hướng dẫn, động viên bé khi bé vẽ.
- Những tác phẩm sau khi bé hoàn thành bạn nên cổ vũ, khen ngợi để bé thêm hứng thú.
- Ngoài ra, bạn cũng nên lưu ý trong việc chọn màu vẽ an toàn cho bé.
- Bộ sách "Bé tô màu những câu chuyện của gấu Pooh" không chỉ phù hợp để bố mẹ hướng dẫn con cái ở nhà mà còn khuyến khích sử dụng trong các trường mầm non, mẫu giáo.
Pooh và các bạn chuẩn bị tham gia vào những cuộc phiêu lưu rất kỳ thú. Các em hãy tham gia cùng các bạn ấy bằng cách dùng chì màu hoặc sáp màu của mình để tô nhé! Chắc chắn các em sẽ có những khoảnh khắc thật vui vẻ và hơn nữa lại còn có một cuốn sách rất tuyệt vời để lưu giữ nữa đấy!
**Thông tin chi tiết**
|
|![]()
Bạn có muốn tạo tài khoản để cập nhật nhiều ưu đãi không ?

Set-Cookie: _CookiesCustomerId=PC891122FC8A5A4,1; expires=Thu, 20-Sep-2018 02:17:09 GMT; path=/


text:
Flash Card chủ đề nghề nghiệp A5 to bản về giúp bé nhận thức và ghi nhớ dễ dàng thông qua các hình ảnh rõ nét, màu sắc. Flash Card là thẻ với hình ảnh, chữ viết, con số, khái niệm hoặc hình minh họa được sử dụng cho việc học tập. Thẻ flash đơn giản, linh hoạt, kích thích và hấp dẫn hầu hết trẻ em. Kích thước của thẻ càng lớn hơn càng hấp dẫn hơn với trẻ nhỏ. FFlash Card chủ đề nghề nghiệp A5 gồm có nghề như công an, đưa thư, luật sư... giúp bé nhận biết các các nghề và trang phục đặc trưng của nghề.
Flash Card chủ đề nghề nghiệp A5 giúp bé học nhanh qua các hình ảnh sắc nét
Lợi ích mà phương pháp Glenn Doman mang lại thông qua Flash Card chủ đề nghề nghiệp A5
- Dạy trẻ nhận biết hình ảnh con vật
- Phát triển toàn diện trí thông minh và trí nhớ cho trẻ
- Giúp trẻ tiếp cận dễ dàng với thế giới xung quanh
Tại sao nên sử dụng thẻ Glenn Doman cho bé?
Phương pháp Glenn Doman do giáo sư Glenn Doman sáng tạo với 30 kinh nghiệm nghề nghiệp được tối ưu để giúp tất cả các bé trên thế giới được giáo dục sớm với chi phí rẻ nhất.
Phương pháp giáo dục sớm cho bé bắt đầu từ 0 – 3 tuổi và kéo dài đến khi bé vào cấp 1
Phương pháp được tối ưu để bé vừa học vừa chơi, giúp bé luôn thích thú khi học.
Là phương pháp duy nhất giúp ba mẹ tiếp xúc với bé từ việc chơi lẫn học ngay từ lúc còn nhỏ. Giúp tình thân gia đình thêm gắn kết.
Phương pháp được tối ưu để bé được giáo dục sớm mà không ngại học, hoặc học không hiệu quả khi vào lớp 1. Bé sẽ luôn phát triển và thông minh vượt bậc.
Phương pháp được áp dụng tại các nước có nền giáo dục phát triển như: Mỹ, Đức, Pháp, Nhật, Canada, Anh… và hiệu quả đem lại đã được khẳng định.
Và còn hàng ngàn lợi ích khách về việc phương pháp học tập chuẩn này đem lại cho con bạn một trí thông minh vượt trội và xuất sắc.
Phương pháp Glenn Doman do giáo sư Glenn Doman sáng tạo là một phương pháp giáo dục trẻ nhỏ phổ biến trên toàn thế giới với những cách thức sử dụng thẻ bài đơn giản là Flashcard hay Dot card giúp bé phát triển kha năng về trí nhớ và tuy duy. Glenn Doman không bắt trẻ phải biết đọc, viết hay biết phân biệt đồ vật mà thực chất là giúp tác động và kích thích trí thông minh và tiềm năng có sẵn của trẻ. Các bạn có thể tham khảo thêm bài viết chuyên mục: Glenn Doman để tìm hiểu thêm về phương pháp học tập mới lạ này.

markdown:
**Flash Card chủ đề nghề nghiệp A5** to bản về giúp bé nhận thức và ghi nhớ dễ dàng thông qua các hình ảnh rõ nét, màu sắc. Flash Card là thẻ với hình ảnh, chữ viết, con số, khái niệm hoặc hình minh họa được sử dụng cho việc học tập. Thẻ flash đơn giản, linh hoạt, kích thích và hấp dẫn hầu hết trẻ em. Kích thước của thẻ càng lớn hơn càng hấp dẫn hơn với trẻ nhỏ. FFlash Card chủ đề nghề nghiệp A5 gồm có nghề như công an, đưa thư, luật sư... giúp bé nhận biết các các nghề và trang phục đặc trưng của nghề. *Flash Card chủ đề nghề nghiệp A5 giúp bé học nhanh qua các hình ảnh sắc nét*
## Lợi ích mà phương pháp Glenn Doman mang lại thông qua Flash Card chủ đề nghề nghiệp A5
- Dạy trẻ nhận biết hình ảnh con vật
- Phát triển toàn diện trí thông minh và trí nhớ cho trẻ
- Giúp trẻ tiếp cận dễ dàng với thế giới xung quanh
Tại sao nên sử dụng thẻ Glenn Doman cho bé?
Phương pháp Glenn Doman do giáo sư Glenn Doman sáng tạo với 30 kinh nghiệm nghề nghiệp được tối ưu để giúp tất cả các bé trên thế giới được giáo dục sớm với chi phí rẻ nhất.
Phương pháp giáo dục sớm cho bé bắt đầu từ 0 – 3 tuổi và kéo dài đến khi bé vào cấp 1
Phương pháp được tối ưu để bé vừa học vừa chơi, giúp bé luôn thích thú khi học.
Là phương pháp duy nhất giúp ba mẹ tiếp xúc với bé từ việc chơi lẫn học ngay từ lúc còn nhỏ. Giúp tình thân gia đình thêm gắn kết.
Phương pháp được tối ưu để bé được giáo dục sớm mà không ngại học, hoặc học không hiệu quả khi vào lớp 1. Bé sẽ luôn phát triển và thông minh vượt bậc.
Phương pháp được áp dụng tại các nước có nền giáo dục phát triển như: Mỹ, Đức, Pháp, Nhật, Canada, Anh… và hiệu quả đem lại đã được khẳng định.
Và còn hàng ngàn lợi ích khách về việc phương pháp học tập chuẩn này đem lại cho con bạn một trí thông minh vượt trội và xuất sắc.
Phương pháp Glenn Doman do giáo sư Glenn Doman sáng tạo là một phương pháp giáo dục trẻ nhỏ phổ biến trên toàn thế giới với những cách thức sử dụng thẻ bài đơn giản là Flashcard hay Dot card giúp bé phát triển kha năng về trí nhớ và tuy duy. Glenn Doman không bắt trẻ phải biết đọc, viết hay biết phân biệt đồ vật mà thực chất là giúp tác động và kích thích trí thông minh và tiềm năng có sẵn của trẻ. Các bạn có thể tham khảo thêm bài viết chuyên mục: Glenn Doman để tìm hiểu thêm về phương pháp học tập mới lạ này.
|
|![]()
Bạn có muốn tạo tài khoản để cập nhật nhiều ưu đãi không ?

Set-Cookie: _CookiesCustomerId=PCDFE6C369142D4,1; expires=Thu, 20-Sep-2018 02:16:39 GMT; path=/


text:
Giường ngủ trẻ em là một phần quan trọng cho cuộc sống hiện đại, nhiều cuộc nhiên cứu chỉ ra rằng trẻ có giường ngủ riêng sẽ phát triển đều đặn hơn và thông minh hơn nhờ khả năng tự lập ngay từ nhỏ. Cách phối màu hợp lý từ các mẫu thiết kế nội thất phòng trẻ em sẽ khiến kích thích thị giác cho trẻ. Không những thế, có không gian riêng bé sẽ có 1 bầu không khí trong lành khi ngủ sẽ khiến hệ hô hấp của bé khỏe mạnh và một giấc ngủ ngon.
Chọn các mẫu giường ngủ cho trẻ là một điều tất yếu mà các bậc ông bố bà mẹ nên làm để chứng tỏ tình yêu với con cái mình.
ShopTreTho.com.vn xin giới thiệu đến các bậc phụ huynh bộ giường em bé hình xe ô tô K012 được các bậc phụ huynh và các em nhỏ đang được yêu thích hiện nay.
Với sản phẩm giường em bé hình xe ô tô K012 giúp cho căn phòng của bé tiết kiệm được diện tích và tạo cho bé một không gian riêng thật ấn tượng.
Điểm nổi bật của giường em bé hình xe ô tô K012:
Giường em bé hình xe ô tô K012 được làm từ chất liệu lớp sơn Lacker (lớp sơn dầy, đẹp, chống trầy xước như sơn ôtô), phụ tùng kim loại nhập khẩu, đạt các tiêu chuẩn quốc tế.
Sản phẩm được thiết kế theo phong cách hiện đại giúp tiết kiệm hiệu quả nhất các diện tích của căn phòng nhà bạn.
Thông số kỹ thuật:
Kích thước phủ bì:2600 x 1100 x 600 mm
Kích thước đệm: 1000*1900mm
Với giường em bé hình xe ô tô K012 bạn nên dùng đệm bông ép dày 5cm.
Xuất xứ: Trung Quốc.

markdown:
[Giường ngủ trẻ em](/danh-muc/giuong-cui-tre-em) là một phần quan trọng cho cuộc sống hiện đại, nhiều cuộc nhiên cứu chỉ ra rằng trẻ có giường ngủ riêng sẽ phát triển đều đặn hơn và thông minh hơn nhờ khả năng tự lập ngay từ nhỏ. Cách phối màu hợp lý từ các mẫu thiết kế nội thất phòng trẻ em sẽ khiến kích thích thị giác cho trẻ. Không những thế, có không gian riêng bé sẽ có 1 bầu không khí trong lành khi ngủ sẽ khiến hệ hô hấp của bé khỏe mạnh và một giấc ngủ ngon.
Chọn các mẫu giường ngủ cho trẻ là một điều tất yếu mà các bậc ông bố bà mẹ nên làm để chứng tỏ tình yêu với con cái mình.
[ShopTreTho.com.vn](https://shoptretho.com.vn) xin giới thiệu đến các bậc phụ huynh bộ ** được các bậc phụ huynh và các em nhỏ đang được yêu thích hiện nay. giường em bé hình xe ô tô K012**
Với sản phẩm giường em bé hình xe ô tô K012 giúp cho căn phòng của bé tiết kiệm được diện tích và tạo cho bé một không gian riêng thật ấn tượng.
### Điểm nổi bật của giường em bé hình xe ô tô K012:
Giường em bé hình xe ô tô K012 được làm từ chất liệu lớp sơn Lacker (lớp sơn dầy, đẹp, chống trầy xước như sơn ôtô), phụ tùng kim loại nhập khẩu, đạt các tiêu chuẩn quốc tế.
Sản phẩm được thiết kế theo phong cách hiện đại giúp tiết kiệm hiệu quả nhất các diện tích của căn phòng nhà bạn.
**Thông số kỹ thuật:**
Kích thước phủ bì:2600 x 1100 x 600 mm
Kích thước đệm: 1000*1900mm
Với giường em bé hình xe ô tô K012 bạn nên dùng đệm bông ép dày 5cm.
Xuất xứ: Trung Quốc.
|
|![]()
Bạn có muốn tạo tài khoản để cập nhật nhiều ưu đãi không ?

Set-Cookie: _CookiesCustomerId=PC099D8E3EA65A4,1; expires=Thu, 20-Sep-2018 02:16:55 GMT; path=/


text:
Kem bôi phục hồi da phơi nắng Chicco
Thương hiệu: Chicco | Mã hàng: Chicco
- Phục hồi và cung cấp dưỡng chất chăm sóc da
- Hấp thu nhanh và không gây rít, nhờn da
- An toàn tuyệt đối cho trẻ và phụ nữ mang thai
Sản phẩm đã Hết hàng
Sau khi tiếp xúc với ánh nắng mặt trời da thường bị mất nước dẫn tới tình trạng da bị ửng đỏ, phơi nắng có thể làm da bị rát, cháy nắng. Kem phục hồi và chăm sóc da Chicco giúp bổ sung độ ẩm và các dưỡng chất thiết yếu để hạn chế tối đa các tổn thương do tia UV tác động sau khi tiếp xúc với ánh nắng mặt trời.
Chicco yêu thương làn da nhạy cảm của bé
Kem bôi phục hồi và chăm sóc da Chicco
Cung cấp độ ẩm, giúp làm dịu mát da sau khi tiếp xúc ánh nắng Mặt trời: Với chiết xuất lô hội và Glycerin kem phục hồi và chăm sóc da sẽ giúp làm da mềm, dịu mát, phục hồi độ ẩm. Đối với trường hợp da bị cháy nắng, sử dụng Kem phục hồi và chăm sóc da sẽ giúp xoa dịu tức thời cảm giác bỏng rát và làm mát da nhanh chóng.
Phục hồi da bị tổn thương và cung cấp dưỡng chất chăm sóc da: Bên cạnh việc bị mất nước, nếu da bị tiếp xúc lâu dài với ánh nắng làm da bị tổn thương do tác động từ các tia UV, làm da bị cháy đỏ, nổi mẩn và biến đổi màu da. Để khắc phục các tổn thương này, ngoài việc cung cấp và bổ sung độ ẩm cho da, Kem phục hồi và chăm sóc da còn mang đến các vitamin và dưỡng chất thiết yếu giúp dưỡng da, làm da khỏe hơn.
- Chiết xuất tinh dầu Hạnh nhân: dưỡng da mềm mịn và làm trắng da.
- Vitamin E và Panthenol (tiền vitamin B): nuôi dưỡng da khỏe mạnh và dưỡng da từ sâu bên trong.
Dạng kem bôi, hấp thu nhanh và không gây rít, nhờn da.
An toàn tuyệt đối cho trẻ và phụ nữ mang thai: Không chứa cồn và chất tạo màu, không hương liệu, không parabens, không gây kích ứng, dị ứng da.
Sản phẩm đã được kiểm nghiệm an toàn với da nhạy cảm, được Cơ quan Quản lý tại Hoa Kỳ, Nhật Bản, EU và hơn 100 quốc gia chứng nhận an toàn cho trẻ sơ sinh. Tại Việt Nam, sản phẩm đã được Bộ Y tế cấp giấy phép lưu hành số 90327/14/CBMP-QLD.
Dung tích 200ml.
Sản xuất nhập khẩu trực tiếp từ Italy.
Kem phục hồi da phơi nắng Chicco cùng mẹ chăm sóc làn da bé
Lưu ý khi sử dụng kem bôi phục hồi chăm sóc da Chicco
Sử dụng sau khi tiếp xúc với ánh nắng mặt trời, sau khi bơi, tắm biển hoặc phơi nắng lâu, đặc biệt dành cho da bị cháy nắng.
Lau khô da và thoa đều kem khắp da (sau khi đã tiếp xúc/phơi nắng).
Lưu ý tránh để kem tiếp xúc với mắt.

markdown:
# Kem bôi phục hồi da phơi nắng Chicco
Thương hiệu:
[Chicco](/thuong-hieu/chicco)
|
Mã hàng: Chicco
- Phục hồi và cung cấp dưỡng chất chăm sóc da
- Hấp thu nhanh và không gây rít, nhờn da
- An toàn tuyệt đối cho trẻ và phụ nữ mang thai
Sản phẩm đã Hết hàng
Sau khi tiếp xúc với ánh nắng mặt trời da thường bị mất nước dẫn tới tình trạng da bị ửng đỏ, phơi nắng có thể làm da bị rát, cháy nắng.
**Kem phục hồi và chăm sóc da Chicco** giúp bổ sung độ ẩm và các dưỡng chất thiết yếu để hạn chế tối đa các tổn thương do tia UV tác động sau khi tiếp xúc với ánh nắng mặt trời. *Chicco yêu thương làn da nhạy cảm của bé*
## Kem bôi phục hồi và chăm sóc da Chicco
Cung cấp độ ẩm, giúp làm dịu mát da sau khi tiếp xúc ánh nắng Mặt trời: Với chiết xuất lô hội và Glycerin kem phục hồi và chăm sóc da sẽ giúp làm da mềm, dịu mát, phục hồi độ ẩm. Đối với trường hợp da bị cháy nắng, sử dụng Kem phục hồi và chăm sóc da sẽ giúp xoa dịu tức thời cảm giác bỏng rát và làm mát da nhanh chóng.
Phục hồi da bị tổn thương và cung cấp dưỡng chất chăm sóc da: Bên cạnh việc bị mất nước, nếu da bị tiếp xúc lâu dài với ánh nắng làm da bị tổn thương do tác động từ các tia UV, làm da bị cháy đỏ, nổi mẩn và biến đổi màu da. Để khắc phục các tổn thương này, ngoài việc cung cấp và bổ sung độ ẩm cho da, Kem phục hồi và chăm sóc da còn mang đến các vitamin và dưỡng chất thiết yếu giúp dưỡng da, làm da khỏe hơn.
- Chiết xuất tinh dầu Hạnh nhân: dưỡng da mềm mịn và làm trắng da.
- Vitamin E và Panthenol (tiền vitamin B): nuôi dưỡng da khỏe mạnh và dưỡng da từ sâu bên trong.
Dạng kem bôi, hấp thu nhanh và không gây rít, nhờn da.
An toàn tuyệt đối cho trẻ và phụ nữ mang thai: Không chứa cồn và chất tạo màu, không hương liệu, không parabens, không gây kích ứng, dị ứng da.
Sản phẩm đã được kiểm nghiệm an toàn với da nhạy cảm, được Cơ quan Quản lý tại Hoa Kỳ, Nhật Bản, EU và hơn 100 quốc gia chứng nhận an toàn cho trẻ sơ sinh. Tại Việt Nam, sản phẩm đã được Bộ Y tế cấp giấy phép lưu hành số 90327/14/CBMP-QLD.
Dung tích 200ml.
Sản xuất nhập khẩu trực tiếp từ Italy.
*Kem phục hồi da phơi nắng Chicco cùng mẹ chăm sóc làn da bé *
## Lưu ý khi sử dụng kem bôi phục hồi chăm sóc da Chicco
Sử dụng sau khi tiếp xúc với ánh nắng mặt trời, sau khi bơi, tắm biển hoặc phơi nắng lâu, đặc biệt dành cho da bị cháy nắng.
Lau khô da và thoa đều kem khắp da (sau khi đã tiếp xúc/phơi nắng).
Lưu ý tránh để kem tiếp xúc với mắt.
|
|![]()
Bạn có muốn tạo tài khoản để cập nhật nhiều ưu đãi không ?

Set-Cookie: _CookiesCustomerId=PC8CBA4316AC844,1; expires=Thu, 20-Sep-2018 02:17:00 GMT; path=/


text:
Bé trai nhà em 11 tháng, nặng 8 kg, dài 74 cm, rất lười uống sữa và chỉ chịu bú bình khi đã lim dim ngủ.
Khi sinh bé nặng 3,2 kg. Từ tháng thứ 6, bé lên cân rất chậm, chỉ tăng được một kg từ lúc 6 tháng đến giờ và 2 tháng gần đây thì không lên g nào. Em cho bé ăn dặm lúc 5,5 tháng.
Chế độ ăn hiện tại của bé như sau:
- Ban ngày: Ăn ngày 3 bữa cháo lúc 8h, 12h và 17h (mỗi bữa được hơn nửa chén ăn cơm). Uống 2 lần sữa giữa các bữa cháo, mỗi lần khoảng 80 ml (chỉ khi nào lim dim ngủ bé mới chịu bú bình và bú rất ít). Ăn thêm váng sữa, sữa chua, trái cây.
- Buổi tối bú mẹ khoảng 2-3 lần, theo nhu cầu của bé.
Em muốn hỏi: Cân nặng, chiều cao của bé có quá thấp không? Con em có nguy cơ bị suy dinh dưỡng kkhông ạ? Làm sao cho bé chịu bú sữa khi thức? Có cách nào giúp con tăng cân tốt hơn không? (Phạm Ngọc Ân)
Trả lời
Chào bạn,
Bình thường bé trai 11 tháng trung bình cân nặng là là 9,4 kg, chiều cao là 74,5 cm. Bé nhà bạn bị thiếu cân, còn chiều cao thì bình thường. Hiện bé trong tình trạng đe dọa suy dinh dưỡng. Từ tháng thứ 6 bé lên cân chậm có thể do chế độ ăn chưa đủ. Mỗi ngày bạn nên cung cấp cho bé 500-700 ml sữa, ưu tiên cho bé bú mẹ, chỉ cho bé ăn thêm sữa ngoài khi mẹ không đủ sữa hoặc khi bạn đi vắng. Khi cho uống sữa công thức, có thể tận dụng cảm giác khát để cho bé uống, số lượng lúc đầu có thể ít, nhưng tăng dần lên mỗi lần10 ml để bé không thấy thay đổi nhiều.
Không chỉ bé nhà bạn khi lim dim ngủ mới ăn sữa công thức đâu, vì nhiều khi bú mẹ nhưng bé vẫn vừa ăn vừa ngủ, bé bú đến khi thấy no thì tự nhả ti và ngủ say, vì vậy nhiều mẹ không biết thấy con ngậm ti mà ngủ lại dừng không cho bé bú mẹ. Khi bé lớn hơn, tự bé sẽ ăn sữa khi thức.
Bạn xen kẽ cứ một bữa sữa, lại một bữa cháo. Sau khi uống sữa khoảng 2 đến 2 tiếng rưỡi thì cho ăn cháo. Sau khi ăn cháo khoảng 3 đến 3 tiếng rưỡi bạn lại cho bé uống sữa. Nếu bé uống sữa ít, bạn cho bé ăn thêm sữa chua mỗi ngày 50 g sau bữa cháo khoảng 30 phút, hoặc cho bé ăn thêm phomai cho vào bát cháo buổi sáng. Ăn 3 bữa cháo, mỗi bữa khoảng một bát ăn cơm, gồm 30 g thịt hoặc cá béo, tôm, cua,trứng… với rau xanh, 5 g dầu mỡ. Ngoài ra, nên bổ sung thêm hoa quả tươi cho bé.
Không nên cho bé ăn vặt, bú vặt trước bữa ăn, để bé có cảm giác đói thì sẽ ăn ngon và nhiều hơn. Ăn uống điều độ, ngủ đủ giấc và ngủ trước 22h sẽ giúp bé tăng cân và tăng chiều cao. Có thể bổ sung cho bé men tiêu hóa theo chỉ định của bác sĩ để giúp bé ăn ngon miệng hơn.
Thạc sĩ, bác sĩ Doãn Thị Tường Vi
Phòng khám dinh dưỡng, Trung tâm y tế dự phòng Hà Nội

markdown:
Bé trai nhà em 11 tháng, nặng 8 kg, dài 74 cm, rất lười uống sữa và chỉ chịu bú bình khi đã lim dim ngủ.
Khi sinh bé nặng 3,2 kg. Từ tháng thứ 6, bé lên cân rất chậm, chỉ tăng được một kg từ lúc 6 tháng đến giờ và 2 tháng gần đây thì không lên g nào. Em cho bé ăn dặm lúc 5,5 tháng.
Chế độ ăn hiện tại của bé như sau:
- Ban ngày: Ăn ngày 3 bữa cháo lúc 8h, 12h và 17h (mỗi bữa được hơn nửa chén ăn cơm). Uống 2 lần sữa giữa các bữa cháo, mỗi lần khoảng 80 ml (chỉ khi nào lim dim ngủ bé mới chịu bú bình và bú rất ít). Ăn thêm váng sữa, sữa chua, trái cây.
- Buổi tối bú mẹ khoảng 2-3 lần, theo nhu cầu của bé.
Em muốn hỏi: Cân nặng, chiều cao của bé có quá thấp không? Con em có nguy cơ bị suy dinh dưỡng kkhông ạ? Làm sao cho bé chịu bú sữa khi thức? Có cách nào giúp con tăng cân tốt hơn không?
*(Phạm Ngọc Ân)*
|
|
|
|
Ảnh minh họa:
**Trả lời**
Chào bạn,
Bình thường bé trai 11 tháng trung bình cân nặng là là 9,4 kg, chiều cao là 74,5 cm. Bé nhà bạn bị thiếu cân, còn chiều cao thì bình thường. Hiện bé trong tình trạng đe dọa suy dinh dưỡng. Từ tháng thứ 6 bé lên cân chậm có thể do chế độ ăn chưa đủ. Mỗi ngày bạn nên cung cấp cho bé 500-700 ml sữa, ưu tiên cho bé bú mẹ, chỉ cho bé ăn thêm sữa ngoài khi mẹ không đủ sữa hoặc khi bạn đi vắng. Khi cho uống sữa công thức, có thể tận dụng cảm giác khát để cho bé uống, số lượng lúc đầu có thể ít, nhưng tăng dần lên mỗi lần10 ml để bé không thấy thay đổi nhiều.
Không chỉ bé nhà bạn khi lim dim ngủ mới ăn sữa công thức đâu, vì nhiều khi bú mẹ nhưng bé vẫn vừa ăn vừa ngủ, bé bú đến khi thấy no thì tự nhả ti và ngủ say, vì vậy nhiều mẹ không biết thấy con ngậm ti mà ngủ lại dừng không cho bé bú mẹ. Khi bé lớn hơn, tự bé sẽ ăn sữa khi thức.
Bạn xen kẽ cứ một bữa sữa, lại một bữa cháo. Sau khi uống sữa khoảng 2 đến 2 tiếng rưỡi thì cho ăn cháo. Sau khi ăn cháo khoảng 3 đến 3 tiếng rưỡi bạn lại cho bé uống sữa. Nếu bé uống sữa ít, bạn cho bé ăn thêm sữa chua mỗi ngày 50 g sau bữa cháo khoảng 30 phút, hoặc cho bé ăn thêm phomai cho vào bát cháo buổi sáng. Ăn 3 bữa cháo, mỗi bữa khoảng một bát ăn cơm, gồm 30 g thịt hoặc cá béo, tôm, cua,trứng… với rau xanh, 5 g dầu mỡ. Ngoài ra, nên bổ sung thêm hoa quả tươi cho bé.
Không nên cho bé ăn vặt, bú vặt trước bữa ăn, để bé có cảm giác đói thì sẽ ăn ngon và nhiều hơn. Ăn uống điều độ, ngủ đủ giấc và ngủ trước 22h sẽ giúp bé tăng cân và tăng chiều cao. Có thể bổ sung cho bé men tiêu hóa theo chỉ định của bác sĩ để giúp bé ăn ngon miệng hơn.
Thạc sĩ, bác sĩ
**Doãn Thị Tường Vi** *Phòng khám dinh dưỡng, Trung tâm y tế dự phòng Hà Nội*

Set-Cookie: _CookiesCustomerId=PCE6B2E4A7566E4,1; expires=Thu, 20-Sep-2018 02:17:43 GMT; path=/


text:
Đổi thay (3) – Thăm hang Tám cô
Dịp đi miền Trung vừa rồi, chuyến thăm Hang Tám Cô để lại cho mình nhiều cảm xúc nhất.
Một giờ chiều, sau khi thăm động Phong Nha , đang ăn trưa bạn nói “ở gần đây có hang Tám cô, chúng ta sẽ ghé đó thắp vài nén hương”. Cơm nước xong xuôi, chúng tôi tiếp tục lên lên con ngựa sắt Serius rong duỗi.
Đoạn đường 20 nơi có Hang 8 cô
Đường 20 Quyết Thắng, là một con lộ ngoằn ngèo xuyên sâu trong miền rừng núi Bố Trạch. Thời chiến tranh đây là tuyến đường quan trọng, nối với đoạn đường Trường Sơn nằm sâu trong biên giới Lào. Tại km 16, một tiểu đội gồm 8 cô gái ở đó làm nhiệm vụ mở đường. Họ ăn ở tại một cái hang ven đá ven đường. Năm 1972, trong giặc Mỹ thả bom gần hang. Miệng hang bị vùi dập bởi một tảng đá lớn, vùi sống 8 chiến sỹ, gồm 4 chiến sỹ nữ và 4 chiến sỹ nam – những Thanh niên xung phong – quên cả tuổi thanh xuân – làm nhiệm vụ mở đường.
Sau khi qua khỏi trạm kiểm lâm, chúng tôi ruổi xe trên đường 20 vắng hoe. Hai bên chỉ có cây rừng, đường khá đẹp, lượn lắt men theo các sườn núi. Con đường của thời hòa bình: heo hút đến buồn. Khó tưởng được cách đây chỉ hơn 30 năm đoạn đường này đã hứng chịu biết bao bom đạn giặc Mỹ. Bom đạn lấp đường, tạo hố…nhờ những anh chị thanh niên xung phong dũng cảm miệt mài thông đường ngay ngày hôm sau lại tiếp tục thông tuyến để xe qua.
Gần đến địa điểm tưởng niệm, trời bất chợt đổ cơn mưa. Chúng tôi quên không mang theo áo mưa, cố tiếp tục phóng xe dưới cơn mưa rừng đang đổ về ào ạt. Mưa chiều đã buồn rồi, mưa chiều vùng rừng núi còn buồn hơn. Trời đất âm u, cây cối xào xạc lập bập theo những cơn gió. Mưa càng to, gió càng lớn, một âm thanh lùng bùng rất não lòng. Chúng tôi co mình trong cái mưa lạnh phóng xe đi.
Nhà chờ cho khách thập phương thăm viếng được làm khang trang. Chúng tôi dừng lại và uống vài chén trà nóng cùng các chiến sỹ làm nhiệm vụ canh gác trước khi lên hang.
Nói chuyện với các chiến sỹ chúng tôi được biết ngày 14-11-1972 giặc Mỹ rải bom ngay đường 20, một tảng đá lớn đã bịt kín cửa hang chôn vùi tám thanh niên xung phong. Bên ngoài người ta nghe tiếng kêu cứu của các anh chị “Cúc ơi, cứu tao với…”. Bộ đội ta nghĩ nhiều cách để giải thoát. Có ba phương án được các anh đặt ra
– Dùng bom nổ tảng đá. Cách này bàn lui tới không sử dụng vì nếu nổ đá thì chắc các anh chị cũng sẽ khó thoát khỏi cái chết.
– Dùng cuốc xẻng đào bới. Cách này cũng không ổn vì tảng đá nặng và đất đá vùi lấp quá kín
– Dùng dây buộc vào tảng đá và cho xe tăng kéo. Cách này được sử dụng nhưng thật không may dây bị đứt và cả ba chiếc xe tăng rơi xuống vực
Các anh chị chỉ còn cách đổ nước, sửa vào men tảng đá, hi vọng nước thấm vào đất các anh chị còn sống được ngày nào thì hi vọng đến ngày đó. Từ bên trong vẫn nghe những âm thanh cầu cứu, nhưng bên ngoài cũng bất lực. Sang ngày thứ năm, âm thanh cầu cứu dường như không còn nữa. Sang ngày thứ chín, đơn vị làm lễ truy điệu cho các anh chị.
Năm 1996, việc khai quật hang đá mới được thực hiện. Người ta thấy 8 bộ hài cốt trong hang và một số vật dụng của các chiến sỹ.
Điều đặc biệt là các nữ và nam chiến sỹ hi sinh, phần lớn ở tuổi đôi mươi (19-20) tuổi, đang còn tuổi thanh xuân, tràn đầy sự sống.
Trong chuyến cầu siêu cho các chiến sỹ, khi người dương thế hỏi “các anh chị có tâm nguyện gì chưa thực hiện được?”, các anh chị nói chúng tôi đã mãn nguyện được nhà nước quan tâm, người đời sau thăm viếng hương khói. Nhưng chỉ xin một điều, lúc chúng tôi ra đi đang còn tuổi thanh xuân trong trắng, xin cô bác tưởng nhớ chúng tôi bằng những bông hoa hồng trắng, tượng trưng cho sự trong trắng của một người con gái và cả sự trong sáng của một thời tuổi trẻ đầy khất khao.
Lúc chúng tôi đến, mưa tầm tã. Chúng tôi mua hương hoa lên ngôi nhà tưởng niệm các chiến sỹ đã hi sinh ở đường 20 nói chung.
Chúng tôi ra đến hang thắp tám nén hương ở tám bàn thờ tượng trưng cho 8 chiến sỹ.
Tôi thấy có rất nhiều vòng hoa hồng trắng, những chiếc gương lược thật đặt trên các góc thờ.
Nơi đây, gần 40 năm là trọng điểm thả bom của giặc Mỹ nhằm xóa đi một con đường. Nhưng chúng không thể, con đường vẫn tiếp tục vươn dài, xuyên qua những vùng rừng núi Trường Sơn, như một sợi chỉ đỏ một mạch máu giúp quân đội ta vận chuyển vũ khi lương thực đến miền Nam. Con đường xây nên không chỉ bằng sức, mồ hôi, mà bằng cả máu, bằng cả tuổi thanh xuân, bằng cả sự dũng cảm, kiên trì nhẫn nại, không sợ hiểm nguy của những người con đất Việt, mà tiêu biểu là 4 cô gái và bốn chàng trai, vĩnh viễn nằm lại nơi đây bằng một sự kiện đã đi vào huyền thoại.
Đổi thay. Chiến tranh đã lùi xa. Con đường 20 đã được lát nhựa. Không có những ổ bom, những xe công sự, không còn mùi máu, mùi chết chóc, mùi khói lửa, chỉ có những chiếc xe du lịch đời mới, xe gắn máy bon bon chở những khuôn mặt rạng ngời của thời bình đến viếng các anh chị.
Chúng tôi ra về, miên man nghĩ đến đến sự đổi thay sau một khoảng thời gian 40 năm. Sự đổi thay hướng đến tương lai, những hi vọng đã được xây đắp vững chắc bằng sự hi sinh anh hùng của cả một dân tộc.
Cửa hang
Di vật còn sót lại trong hang là đồ dùng của các chiến sỹ
Đền thờ các chiến sỹ hi sinh trên đường 20
Bàn thờ nhỏ thờ các chiến sỹ. Trên bàn thờ có hoa hồng trắng và đồ dùng con gái: gương lược
Cửa hang
Mảnh bom này còn sót lại từ thời đó, dùng làm kẻng báo động khi có máy bay Mỹ
Bia đá khắc tên tuổi của các chiến sỹ. Các anh các cô hi sinh ở độ tuổi đôi mươi
Hoa hồng trắng trên bàn thời đầy hương khói khách viếng
Bởi thế sống đến hôm nay mà em vẫn chưa biết hết tất cả về mãnh đất Quảng Bình lại có những địa danh như vậy, nhưng vẫn luôn tự hào về nơi chúng ta sinh ra và lớn lên anh nhỉ, thank you anh đã cho em biết những điều kỳ tích như vậy!

markdown:
## Đổi thay (3) – Thăm hang Tám cô
Dịp đi miền Trung vừa rồi, chuyến thăm Hang Tám Cô để lại cho mình nhiều cảm xúc nhất.
Một giờ chiều, sau khi thăm động Phong Nha , đang ăn trưa bạn nói “ở gần đây có hang Tám cô, chúng ta sẽ ghé đó thắp vài nén hương”. Cơm nước xong xuôi, chúng tôi tiếp tục lên lên con ngựa sắt Serius rong duỗi.
Đoạn đường 20 nơi có Hang 8 cô
Đường 20 Quyết Thắng, là một con lộ ngoằn ngèo xuyên sâu trong miền rừng núi Bố Trạch. Thời chiến tranh đây là tuyến đường quan trọng, nối với đoạn đường Trường Sơn nằm sâu trong biên giới Lào. Tại km 16, một tiểu đội gồm 8 cô gái ở đó làm nhiệm vụ mở đường. Họ ăn ở tại một cái hang ven đá ven đường. Năm 1972, trong giặc Mỹ thả bom gần hang. Miệng hang bị vùi dập bởi một tảng đá lớn, vùi sống 8 chiến sỹ, gồm 4 chiến sỹ nữ và 4 chiến sỹ nam – những Thanh niên xung phong – quên cả tuổi thanh xuân – làm nhiệm vụ mở đường.
Sau khi qua khỏi trạm kiểm lâm, chúng tôi ruổi xe trên đường 20 vắng hoe. Hai bên chỉ có cây rừng, đường khá đẹp, lượn lắt men theo các sườn núi. Con đường của thời hòa bình: heo hút đến buồn. Khó tưởng được cách đây chỉ hơn 30 năm đoạn đường này đã hứng chịu biết bao bom đạn giặc Mỹ. Bom đạn lấp đường, tạo hố…nhờ những anh chị thanh niên xung phong dũng cảm miệt mài thông đường ngay ngày hôm sau lại tiếp tục thông tuyến để xe qua.
Gần đến địa điểm tưởng niệm, trời bất chợt đổ cơn mưa. Chúng tôi quên không mang theo áo mưa, cố tiếp tục phóng xe dưới cơn mưa rừng đang đổ về ào ạt. Mưa chiều đã buồn rồi, mưa chiều vùng rừng núi còn buồn hơn. Trời đất âm u, cây cối xào xạc lập bập theo những cơn gió. Mưa càng to, gió càng lớn, một âm thanh lùng bùng rất não lòng. Chúng tôi co mình trong cái mưa lạnh phóng xe đi.
Nhà chờ cho khách thập phương thăm viếng được làm khang trang. Chúng tôi dừng lại và uống vài chén trà nóng cùng các chiến sỹ làm nhiệm vụ canh gác trước khi lên hang.
Nói chuyện với các chiến sỹ chúng tôi được biết ngày 14-11-1972 giặc Mỹ rải bom ngay đường 20, một tảng đá lớn đã bịt kín cửa hang chôn vùi tám thanh niên xung phong. Bên ngoài người ta nghe tiếng kêu cứu của các anh chị “Cúc ơi, cứu tao với…”. Bộ đội ta nghĩ nhiều cách để giải thoát. Có ba phương án được các anh đặt ra
– Dùng bom nổ tảng đá. Cách này bàn lui tới không sử dụng vì nếu nổ đá thì chắc các anh chị cũng sẽ khó thoát khỏi cái chết.
– Dùng cuốc xẻng đào bới. Cách này cũng không ổn vì tảng đá nặng và đất đá vùi lấp quá kín
– Dùng dây buộc vào tảng đá và cho xe tăng kéo. Cách này được sử dụng nhưng thật không may dây bị đứt và cả ba chiếc xe tăng rơi xuống vực
Các anh chị chỉ còn cách đổ nước, sửa vào men tảng đá, hi vọng nước thấm vào đất các anh chị còn sống được ngày nào thì hi vọng đến ngày đó. Từ bên trong vẫn nghe những âm thanh cầu cứu, nhưng bên ngoài cũng bất lực. Sang ngày thứ năm, âm thanh cầu cứu dường như không còn nữa. Sang ngày thứ chín, đơn vị làm lễ truy điệu cho các anh chị.
Năm 1996, việc khai quật hang đá mới được thực hiện. Người ta thấy 8 bộ hài cốt trong hang và một số vật dụng của các chiến sỹ.
Điều đặc biệt là các nữ và nam chiến sỹ hi sinh, phần lớn ở tuổi đôi mươi (19-20) tuổi, đang còn tuổi thanh xuân, tràn đầy sự sống.
Trong chuyến cầu siêu cho các chiến sỹ, khi người dương thế hỏi “các anh chị có tâm nguyện gì chưa thực hiện được?”, các anh chị nói chúng tôi đã mãn nguyện được nhà nước quan tâm, người đời sau thăm viếng hương khói. Nhưng chỉ xin một điều, lúc chúng tôi ra đi đang còn tuổi thanh xuân trong trắng, xin cô bác tưởng nhớ chúng tôi bằng những bông hoa hồng trắng, tượng trưng cho sự trong trắng của một người con gái và cả sự trong sáng của một thời tuổi trẻ đầy khất khao.
Lúc chúng tôi đến, mưa tầm tã. Chúng tôi mua hương hoa lên ngôi nhà tưởng niệm các chiến sỹ đã hi sinh ở đường 20 nói chung.
Chúng tôi ra đến hang thắp tám nén hương ở tám bàn thờ tượng trưng cho 8 chiến sỹ.
Tôi thấy có rất nhiều vòng hoa hồng trắng, những chiếc gương lược thật đặt trên các góc thờ.
Nơi đây, gần 40 năm là trọng điểm thả bom của giặc Mỹ nhằm xóa đi một con đường. Nhưng chúng không thể, con đường vẫn tiếp tục vươn dài, xuyên qua những vùng rừng núi Trường Sơn, như một sợi chỉ đỏ một mạch máu giúp quân đội ta vận chuyển vũ khi lương thực đến miền Nam. Con đường xây nên không chỉ bằng sức, mồ hôi, mà bằng cả máu, bằng cả tuổi thanh xuân, bằng cả sự dũng cảm, kiên trì nhẫn nại, không sợ hiểm nguy của những người con đất Việt, mà tiêu biểu là 4 cô gái và bốn chàng trai, vĩnh viễn nằm lại nơi đây bằng một sự kiện đã đi vào huyền thoại.
Đổi thay. Chiến tranh đã lùi xa. Con đường 20 đã được lát nhựa. Không có những ổ bom, những xe công sự, không còn mùi máu, mùi chết chóc, mùi khói lửa, chỉ có những chiếc xe du lịch đời mới, xe gắn máy bon bon chở những khuôn mặt rạng ngời của thời bình đến viếng các anh chị.
Chúng tôi ra về, miên man nghĩ đến đến sự đổi thay sau một khoảng thời gian 40 năm. Sự đổi thay hướng đến tương lai, những hi vọng đã được xây đắp vững chắc bằng sự hi sinh anh hùng của cả một dân tộc.
Cửa hang
Di vật còn sót lại trong hang là đồ dùng của các chiến sỹ
Đền thờ các chiến sỹ hi sinh trên đường 20
Bàn thờ nhỏ thờ các chiến sỹ. Trên bàn thờ có hoa hồng trắng và đồ dùng con gái: gương lược
Cửa hang
Mảnh bom này còn sót lại từ thời đó, dùng làm kẻng báo động khi có máy bay Mỹ
Bia đá khắc tên tuổi của các chiến sỹ. Các anh các cô hi sinh ở độ tuổi đôi mươi
Hoa hồng trắng trên bàn thời đầy hương khói khách viếng
tom de thuongsaid, on 02/10/2010 at 8:30 sáng
Bởi thế sống đến hôm nay mà em vẫn chưa biết hết tất cả về mãnh đất Quảng Bình lại có những địa danh như vậy, nhưng vẫn luôn tự hào về nơi chúng ta sinh ra và lớn lên anh nhỉ, thank you anh đã cho em biết những điều kỳ tích như vậy!

WARC-Truncated: length

WARC-Identified-Payload-Type: application/xhtml+xml

Server: nginx

Vary: Cookie

X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

Link: <http://wp.me/pLdvU-7B>; rel=shortlink

Content-Type: text/html; charset=UTF-8

X-ac: 1.dca _dca