Lợi nhuận:
- Khả năng phân biệt giữa phép tính ký hiệu và phép tính số và chọn công cụ phù hợp (SymPy hoặc NumPy/SciPy) cho từng vấn đề
- Khả năng đọc và hiểu mã số do trí tuệ nhân tạo tạo ra, tự chạy mã đó và xác minh mã đó bằng cách thực hiện bài kiểm tra thông thường với đầu vào đã biết.
- Hiểu các giới hạn của độ chính xác của số dấu phẩy động, sử dụng dung sai thay vì đẳng thức chính xác và quản lý tác động của việc đoán ban đầu đối với các phương pháp số.
Phép tính ký hiệu đưa ra công thức chính xác của tích phân hoặc phương trình; Nhưng hầu hết các vấn đề thực tế trong toán học không thể giải được bằng một công thức đóng. Đây là lúc tính toán số phát huy tác dụng: tạo ra kết quả số gần đúng với độ chính xác mong muốn, thay vì một công thức chính xác. Tìm giá trị của tích phân với độ chính xác đến 0,001, tính nghiệm của phương trình theo xấp xỉ thập phân, trích xuất số liệu thống kê từ một tập dữ liệu - đây đều là các phép tính số. Trong Python, các công cụ cho việc này là thư viện NumPy (mảng số và toán học) và SciPy (điện toán khoa học). Trong phần này, bạn sẽ học cách sử dụng AI làm trợ lý tạo mã Python để tính toán số và kiểm tra tính chính xác của mã.
Một định nghĩa quan trọng: số dấu phẩy động là định dạng trong đó máy tính lưu trữ số thập phân với độ chính xác hạn chế. Đó là lý do tại sao trong số học máy tính, 0,1 + 0,2 có thể trở thành 0,300000000000000004, không hẳn là 0,3. Đây không phải là sai lầm, đó là bản chất của phép tính số - nhưng nó sẽ dẫn đến kết quả sai nếu bạn không nhận thức được. Trong tính toán bằng số, người ta làm việc với "đủ gần" thay vì "bằng chính xác".
Biểu tượng hay số? Chọn đúng công cụ
Trạng thái
Tượng trưng (SymPy)
Số (NumPy/SciPy)
Có một công thức đóng
ưa thích
không cần thiết
Không có công thức/quá phức tạp
không thể giải quyết
ưa thích
Yêu cầu độ chính xác hoàn toàn
Có
Xấp xỉ.
Dữ liệu lớn/đa xử lý
chậm
rất nhanh
Kết quả có số thập phân là đủ
—
phù hợp
Một học viên giỏi sử dụng cả hai: giải một cách tượng trưng nếu có thể, tính số nếu không, và kiểm tra chéo cái này với cái kia bất cứ khi nào có thể.
Từng bước: Tính toán số an toàn với AI
1. Xác định vấn đề và độ nhạy cảm. "Có bao nhiêu chữ số thập phân?" và “trong phạm vi nào?” Làm rõ câu hỏi của bạn.
2. Viết mã vào AI, không xuất ra. Ghi nhớ bài 4: Đừng tạo ra mã dự đoán AI. Bạn chạy mã.
3. Đọc và hiểu mã. Hiểu từng dòng mã được tạo. Đúng thư viện, đúng chức năng, đúng tham số? Đừng chạy mã mà bạn không hiểu.
4. Kiểm tra với một tình huống đã biết. Hãy thử mã với thông tin đầu vào đơn giản mà bạn đã biết câu trả lời. Ví dụ: sin(0)=0, giống như giá trị của một tích phân đã biết. Nếu code đưa ra đúng thì bạn sẽ tin tưởng nó hơn.
5. Kiểm tra chéo bằng ký hiệu hoặc thủ công. Nếu có thể, hãy xác nhận kết quả tương tự bằng SymPy hoặc phương pháp thủ công.
6. Cẩn thận với bẫy dấu phẩy động. Thay vì hoàn toàn bình đẳng với ==, hãy sử dụng các dung sai như abs(a - b) < 1e-9.
Mẹo: Luôn kiểm tra mã số "với câu trả lời bạn biết". Nếu bạn đã viết một công cụ tìm nghiệm, trước tiên hãy áp dụng nó cho một phương trình có nghiệm đã biết (x=±2), chẳng hạn như x²−4=0. Nếu mã nhận thấy điều này đúng thì nó sẽ có nhiều khả năng đáng tin cậy hơn đối với các phương trình mà bạn không biết. "Kiểm tra độ tỉnh táo" này là cách xác minh rẻ nhất.
Cạm bẫy của phép tính số: sự hội tụ và tích lũy sai số.
Hầu hết các phương pháp số đều hoạt động lặp đi lặp lại: bắt đầu từ phỏng đoán ban đầu và dần dần tiếp cận câu trả lời thực tế. Quá trình tiến gần hơn này được gọi là sự hội tụ. Nhưng không phải phương pháp lặp nào cũng hội tụ; một số phân kỳ (di chuyển ra khỏi kết quả) hoặc hội tụ đến một giá trị không chính xác. Nếu mã do AI tạo không kiểm tra xem phương thức có hội tụ hay không, nó có thể âm thầm cung cấp cho bạn một số sai. Vì vậy, chỉ vì một kết quả bằng số "tạo ra một số" không có nghĩa là nó đúng; Cũng cần phải xác nhận rằng con số đó thực sự hội tụ về lời giải đang tìm kiếm.
Sự tinh tế thứ hai là sự tích lũy lỗi. Trong một chuỗi dài các phép tính, các lỗi làm tròn dấu phẩy động nhỏ ở mỗi bước có thể tích lũy và trở nên lớn hơn; Đặc biệt khi bạn lấy hiệu của hai số rất gần nhau (điều này được gọi là sự hủy bỏ thảm khốc), các chữ số có nghĩa của kết quả có thể bị mất. Trí tuệ nhân tạo không phải lúc nào cũng dự đoán được những vấn đề ổn định số học như vậy. Trong các phép tính quan trọng, việc tính toán lại và so sánh kết quả với một phương pháp khác hoặc với độ chính xác cao hơn sẽ phát hiện ra sự tích tụ lỗi tiềm ẩn.
Lưu ý: “Cho kết quả” và “hội tụ về kết quả đúng” của một phương pháp số là hai việc khác nhau. Đảm bảo mã bao gồm kiểm tra độ hội tụ (ví dụ: sự khác biệt giữa hai bước liên tiếp trở nên đủ nhỏ); Nếu nó không chứa nó, hãy nhờ trí tuệ nhân tạo thêm điều khiển này.
ba trường hợp nhỏ
Trường hợp 1 - Lựa chọn chức năng không chính xác. Một sinh viên đã yêu cầu AI cung cấp mã để tìm nghiệm của một hàm. AI đã sử dụng scipy.optimize.fsolve, nhưng đã chọn dự đoán ban đầu sai và hội tụ sai gốc. Đầu tiên, học sinh kiểm tra hàm số bằng cách vẽ đồ thị (xem phần trực quan), đưa ra dự đoán ban đầu chính xác và tìm ra nghiệm thực. Bài học: công cụ tìm nghiệm số rất nhạy cảm với điểm bắt đầu.
Trường hợp 2 - Bẫy dấu phẩy động. Một kỹ sư đã chạy mã AI viết if 0,1 + 0,2 == 0,3: và nhận ra rằng điều kiện đó không bao giờ đúng. AI đã bỏ qua độ chính xác của dấu phẩy động. Mã đã được sửa bằng abs((0,1+0,2) - 0,3) < 1e-9. 1e-9 có nghĩa là "mười đến âm chín", một dung sai rất nhỏ.
Trường hợp 3 - Thử nghiệm thông thường đã phát hiện được lỗi. Một giáo viên đã nhận được mã từ scipy.integrate.quad để tính số tích phân xác định. Lần đầu tiên ông thử nghiệm nó với một tích phân đã biết như ∫₀¹ x dx = 0,5; mã đã cho 0,5. Sau đó, anh tính tích phân thực và xác nhận kết quả bằng SymPy. Ông tin tưởng khi hai phương pháp độc lập đều cho kết quả như nhau. Tổng thời gian: 6 phút.
Bốn mẫu có thể sao chép
1) Yêu cầu mã số tài khoản:
Viết mã Python để giải quyết vấn đề sau đây MỘT CÁCH SỐ: [problem]. Sử dụng NumPy/SciPy. Độ nhạy: [ví dụ. 6 số thập phân]. Tôi sẽ chạy mã; dự đoán đầu ra. Giải thích ngắn gọn trong dòng nhận xét về chức năng bạn đã chọn và tại sao.
2) Thêm một bài kiểm tra ý thức chung:
Thêm một biện pháp kiểm tra thông thường vào mã này để kiểm tra tính ĐÚNG của nó trước khi chạy: thử với một dữ liệu đầu vào đơn giản đã biết câu trả lời (ví dụ: root ±2 cho x²-4=0) và kiểm tra xem nó có cho kết quả như mong đợi hay không. Mã: [tại đây]
3) Kiểm tra chéo ký hiệu và số:
Viết mã giải tích phân/phương trình sau bằng CẢ HAI SymPy (ký hiệu) VÀ SciPy (số): [vấn đề]. In ra hai kết quả để tôi có thể so sánh chúng. Thêm một dòng kiểm tra sự khác biệt với abs().
4) Bảo mật dấu phẩy động:
Xem lại các so sánh số dấu phẩy động trong mã này. Nếu có các đẳng thức '==' nghiêm ngặt, hãy thay thế chúng bằng dung sai thích hợp (abs(a-b) < 1e-9) và giải thích lý do. Mã: [tại đây]
Dấu nhắc yếu / Dấu nhắc mạnh
Yếu: "Tìm nghiệm của phương trình này: x³ − 2x − 5 = 0. Viết đáp án."
Kết quả: AI khớp với số thập phân (ví dụ: "2.0946..."). Nó có thể đúng hoặc không; Nó chưa được xác minh vì nó chưa được chạy.
Mạnh mẽ: "Viết mã tìm nghiệm thực của phương trình x³ − 2x − 5 = 0 bằng SciPy. Để đoán ban đầu, trước tiên hãy chỉ định khoảng trong đó hàm đổi dấu. Thêm một dòng thay thế gốc và kiểm tra xem kết quả có phải là ~0 hay không. Tôi sẽ xem kết quả đầu ra."
Kết quả: Mã có thể thực thi, dự đoán ban đầu chính xác, hàm băm tích hợp. Tính hợp lệ của gốc đã được chứng minh.
Những lỗi thường gặp
- Tin tưởng vào kết quả mà không cần chạy mã. Kết quả đầu ra bằng số mà AI “dự đoán” không phải là xác thực.
- Kiểm tra đẳng thức dấu phẩy động với `==`. Nó gần như luôn luôn sai; Hãy sử dụng sự khoan dung.
- Dự báo ban đầu không tốt Các phương pháp tối ưu hóa/gốc số rất nhạy cảm với điểm bắt đầu; Nó có thể hội tụ về gốc sai.
- Không thể hiện sự nhạy cảm "Có bao nhiêu bước?" Nếu không hỏi thì kết quả có thể không phù hợp với nhu cầu.
- Không làm bài kiểm tra ý thức chung. Áp dụng mã cho một vấn đề thực tế mà không kiểm tra nó với đầu vào đã biết là rất rủi ro.
- Chạy mã mà không hiểu nó. Mã bạn không hiểu có thể đang sử dụng sai chức năng; hiểu từng dòng.
Chú ý: Kết quả bằng số luôn mang tính gần đúng. Thay vì nói "kết quả chính xác là thế này", hãy nói "chính xác là thế này". Trong một báo cáo khoa học hoặc kỹ thuật, việc nêu rõ phương pháp và độ chính xác được sử dụng là một phần của độ chính xác. Sẽ là sai lầm khi trình bày một kết quả gần đúng là dứt khoát.
Tóm lại
Phép tính số cho kết quả gần đúng nhưng thực tế đối với những bài toán không giải được bằng công thức đóng; Trong Python, công cụ của nó là NumPy và SciPy. AI nhanh chóng tạo mã cho các thư viện này, nhưng bạn phải chạy mã, đọc và hiểu mã cũng như kiểm tra mã bằng dữ liệu đầu vào đã biết. Hãy cẩn thận với độ chính xác của dấu phẩy động: sử dụng dung sai thay vì đẳng thức chính xác. Kiểm tra chéo các phương pháp ký hiệu và số nếu có thể. Kiểm tra và thay thế thông thường là cách xác minh rẻ nhất và hiệu quả nhất.
Nhiệm vụ ứng dụng
Chọn một bài toán khó giải bằng công thức đóng (ví dụ: nghiệm x³ − 2x − 5 = 0 hoặc giá trị xác định của tích phân không sơ cấp). Yêu cầu AI in cả mã số và nếu có thể, mã kiểm tra chéo ký hiệu-số với các mẫu 1 và 3. Chạy mã trong môi trường Python thực. Trước tiên, hãy thực hiện bài kiểm tra thông thường với đầu vào đã biết, sau đó giải quyết vấn đề thực tế. Hãy chắc chắn sử dụng dung sai nếu có so sánh dấu phẩy động. Lưu ý kết quả cùng với độ nhạy của nó.
danh sách kiểm tra
- [ ] Tôi đã xác định được vấn đề và mức độ nhạy cảm cần thiết.
- [ ] Tôi đã đọc và hiểu từng dòng code do AI tạo ra.
- [ ] Tôi đã chạy mã trong môi trường Python thực.
- [ ] Tôi đã thực hiện một bài kiểm tra thông thường với thông tin đầu vào đã biết.
- [ ] Tôi đã thêm kiểm tra chéo bằng biểu tượng/thủ công nếu có thể.
- [ ] Tôi đã sử dụng dung sai trong so sánh dấu phẩy động.