Mục lục:

Cách tạo chương trình tích hợp số trong Python: 10 bước
Cách tạo chương trình tích hợp số trong Python: 10 bước

Video: Cách tạo chương trình tích hợp số trong Python: 10 bước

Video: Cách tạo chương trình tích hợp số trong Python: 10 bước
Video: Tự học Lập Trình Python trong 10 phút - Siêu Dễ Hiểu 2024, Tháng bảy
Anonim
Cách tạo chương trình tích hợp số bằng Python
Cách tạo chương trình tích hợp số bằng Python

Đây là một hướng dẫn về cách tạo và chạy một chương trình sẽ đánh giá các tích phân xác định bằng cách sử dụng một thuật toán tích phân số. Tôi đã chia các bước thành 3 phần: hiểu thuật toán sẽ được sử dụng để tạo chương trình, viết mã chương trình bằng ngôn ngữ lập trình Python và chạy chương trình. Hướng dẫn này dành cho những người có thể cần nhanh chóng tạo ra một máy tính để đánh giá các tích phân xác định, hoặc có thể cần thuật toán để sử dụng trong một chương trình quy mô lớn hơn. Kiến thức giải tích cơ bản được mong đợi, nhưng thông tin toán học có liên quan sẽ được xem xét. Kiến thức về lập trình không được mong đợi, nhưng hữu ích vì tôi chỉ mô tả ngắn gọn cách lập trình thực sự hoạt động.

Những gì bạn sẽ cần:

Một máy tính cá nhân có thể truy cập Internet

Bước 1: Tìm hiểu thuật toán Phần 1: Tích phân xác định và việc sử dụng nó

Hiểu thuật toán Phần 1: Tích phân xác định và việc sử dụng nó
Hiểu thuật toán Phần 1: Tích phân xác định và việc sử dụng nó

Tôi sẽ giả sử bạn biết một chút tích phân là gì trong bối cảnh của phép tính cơ bản. Số tích phân rất quan trọng vì chúng cho phép bạn tính tổng một mảng giá trị nhân với độ dài thập phân; điều này rất hữu ích trong nhiều lĩnh vực tài chính, lý thuyết số, vật lý, hóa học, cũng như nhiều lĩnh vực khác. Tuy nhiên, chương trình này sẽ chỉ cho phép bạn tính toán diện tích bên dưới một đường cong trong một khoảng hữu hạn, hay nói cách khác, nó không đánh giá các đạo hàm phản - một thuật toán mạnh hơn nhiều là cần thiết cho điều đó. Thuật toán này hữu ích nếu bạn cần đánh giá một tích phân xác định trong một chương trình lớn hơn được chỉ định cho một thứ khác hoặc nếu bạn muốn kiểm tra câu trả lời của mình cho bất kỳ tích phân xác định nào được thực hiện bằng tay.

Một tích phân xác định cơ bản đại diện cho diện tích bên dưới một đường cong được xác định bởi một hàm, ví dụ: f (x). Đối với một tích phân xác định, chúng ta tìm kiếm diện tích giữa hai điểm (có nhãn là a và b tương ứng). Trong hình, vùng màu ngọc lam là vùng mà tôi đang đề cập đến và phương trình xác định điều này cũng được hiển thị trong vùng đó. Chức năng hiển thị trong hình là tùy ý.

Bước 2: Tìm hiểu thuật toán Phần 2: Xấp xỉ số

Hiểu thuật toán Phần 2: Xấp xỉ số
Hiểu thuật toán Phần 2: Xấp xỉ số

Một máy tính cần một tập hợp các hướng dẫn để tính toán diện tích bên dưới một hàm tùy ý sẽ hoạt động cho bất kỳ hàm nào, vì vậy các phương pháp phân tích mà bạn có thể quen thuộc sẽ không sử dụng được vì chúng quá đặc biệt. Một phương pháp để tính tích phân xấp xỉ mà máy tính thực sự có thể xử lý, được thực hiện bằng cách lấp đầy khu vực quan tâm với một lượng hình chữ nhật do người dùng xác định có chiều rộng bằng nhau và chiều cao thay đổi, sau đó tính tổng tất cả các diện tích của hình chữ nhật. Các thuộc tính cứng nhắc của hình chữ nhật sẽ để lại một số tổng diện tích không bị ảnh hưởng, do đó tại sao đây được coi là một phép gần đúng; tuy nhiên, bạn càng có thể nhồi nhét nhiều hình chữ nhật vào giữa các ranh giới (a và b), thì ước tính gần đúng sẽ càng chính xác vì các vùng chưa được chạm sẽ trở nên thưa thớt hơn. Vì một máy tính sẽ thực hiện nhiệm vụ, bạn có thể đặt số lượng hình chữ nhật trong vùng mong muốn là một số rất lớn, làm cho phép tính gần đúng cực kỳ chính xác. Trong hình bên, hãy tưởng tượng rằng mỗi hình chữ nhật trong khu vực được chỉ định có chiều rộng bằng nhau. Tôi đã cố gắng hết sức để làm cho chúng có chiều rộng bằng nhau trong Microsoft Paint, nhưng không thực hiện công việc tốt nhất.

Bước 3: Tìm hiểu thuật toán Phần 3: Quy tắc điểm giữa

Hiểu thuật toán Phần 3: Quy tắc điểm giữa
Hiểu thuật toán Phần 3: Quy tắc điểm giữa

Quy tắc này chỉ định cách các hình chữ nhật được tạo ra và sử dụng trong phép tính gần đúng. Mỗi hình chữ nhật trong số các hình chữ nhật "N" phải có chiều rộng bằng nhau, Δx, nhưng mỗi hình chữ nhật thứ n không thể hoàn toàn giống nhau: hệ số thay đổi là chiều cao thay đổi khi hàm được đánh giá tại một điểm nhất định. Quy tắc điểm giữa được đặt tên từ thực tế là bạn đang đánh giá chiều cao của mỗi hình chữ nhật là f (x_n), trong đó "x_n" là tâm điểm tương ứng của mỗi hình chữ nhật, như được đặt ở bên trái hoặc bên phải của hình chữ nhật. Việc sử dụng điểm giữa cũng giống như việc triển khai giá trị trung bình sẽ làm cho phép gần đúng chính xác hơn so với việc bạn sử dụng bên phải hoặc bên trái. Hình ảnh hỗ trợ cho bước này tóm tắt cách quy tắc điểm giữa được xác định về mặt toán học.

Bước 4: Tạo chương trình Phần 1: Tải xuống trình biên dịch / trình soạn thảo Python

Bây giờ bạn đã hiểu thuật toán cần được thực hiện, vấn đề là nhờ một máy tính thực hiện phép tính cho bạn. Bước đầu tiên để nói với một máy tính phải làm gì là nhận được các công cụ để làm điều đó. Thuật toán này có thể được mã hóa bằng bất kỳ ngôn ngữ nào; để đơn giản, chương trình này sẽ được mã hóa bằng ngôn ngữ Python. Để ra lệnh cho máy tính của bạn thực hiện các hoạt động với Python, bạn sẽ cần một trình soạn thảo lấy các hướng dẫn được viết bằng ngôn ngữ đó, sau đó sẽ được biên dịch sang ngôn ngữ máy mà máy tính của bạn có thể hiểu được để nó có thể thực hiện các tác vụ mà bạn yêu cầu. Trong thời đại ngày nay, một trình soạn thảo và trình biên dịch thường được tích hợp, tuy nhiên không phải lúc nào cũng vậy. Bạn có thể sử dụng bất kỳ trình soạn thảo / trình biên dịch nào mà bạn cảm thấy thoải mái, nhưng tôi sẽ chỉ cho bạn cách lấy được yêu thích cá nhân của tôi cho Python: Canopy. Nếu bạn đã có trình soạn thảo / trình biên dịch, bạn có thể bỏ qua các bước này.

  1. Truy cập
  2. Nhấp vào Tải xuống Canopy
  3. Nhấp vào nút tải xuống tương ứng với hệ điều hành của bạn

    Quá trình tải xuống sẽ tự động bắt đầu

  4. Làm theo hướng dẫn nhỏ giọt sau khi khởi động tệp thực thi
  5. Chạy chương trình
  6. Nhấp vào "Trình chỉnh sửa" từ menu chính của chương trình
  7. Nhấp vào "tạo tệp mới" ở giữa màn hình

Từ thời điểm này, bạn sẽ thấy một cửa sổ trống màu trắng với con trỏ giống như một tài liệu xử lý văn bản cơ bản. Bây giờ bạn đã sẵn sàng để bắt đầu viết mã thuật toán tích phân số để giải các tích phân xác định. Các bước tiếp tục sẽ có một đoạn mã mà bạn sẽ sao chép và giải thích về những gì đoạn mã đó làm cho toàn bộ chương trình.

Bước 5: Tạo chương trình Phần 2: Nhập hàm & xác định biến

Tạo chương trình Phần 2: Nhập hàm & xác định biến
Tạo chương trình Phần 2: Nhập hàm & xác định biến

Sao chép mã trong hình.

Đối với bất kỳ chương trình nào bạn có thể thấy mình đang viết mã, sẽ có các biến số. Một biến là một tên được đặt cho một giá trị sẽ được vận hành và có thể thay đổi. Trong hầu hết các ngôn ngữ lập trình (nếu không phải tất cả), bạn phải khởi tạo một biến trước khi chương trình có thể thực hiện các thay đổi đối với nó. Trong trường hợp của chương trình này, tôi đã đặt tên cho các biến "N," "a," và "b." Các giá trị này đại diện cho số lần lặp lại (số lượng hình chữ nhật AKA), đường biên dưới và đường biên trên tương ứng. Bạn có thể đặt tên cho chúng bất cứ thứ gì bạn muốn, nhưng để phù hợp với các công thức được đưa ra trong "Hiểu thuật toán Phần 3: Quy tắc điểm giữa", tốt nhất là giữ nguyên chúng. Lưu ý rằng chúng không chỉ được đặt thành một giá trị cụ thể. Điều này là do chúng được tạo đầu vào mà khi chương trình được chạy, người dùng chương trình có thể xác định giá trị sẽ là gì. Văn bản trong dấu ngoặc kép, sau lệnh nhập, hiển thị khi bạn chạy chương trình cho bạn biết loại giá trị cần nhập vào. Bạn cũng sẽ nhận thấy rằng "int" và "float" được sử dụng trước các chỉ định đầu vào. Các thuật ngữ này cho máy tính biết giá trị này sẽ là loại biến nào. "Int" là số nguyên và "float" là giá trị dấu phẩy động (tức là số thập phân). Cần phải rõ ràng tại sao chúng được chỉ định như vậy.

Bất kỳ văn bản nào xuất hiện sau dấu "#" là một chú thích cho phép lập trình viên làm theo mã theo cách nhân văn; Tôi đã đưa ra một số nhận xét nhất định trong mã của tôi mà bạn sẽ sao chép, nhưng vui lòng thêm bất kỳ nhận xét nào giúp bạn cụ thể. Chương trình sẽ không đọc bất cứ thứ gì có dấu "#" trước nó dưới dạng một lệnh.

Phần mã có nội dung "từ nhập toán học *" yêu cầu chương trình nhập một mảng các hàm toán học có thể được sử dụng mà không cần phải tự lập trình chúng. Dấu "*" chỉ có nghĩa là "tất cả". Đọc phần mã này dưới dạng: từ thư viện toán học, nhập tất cả các hàm. Điều này cho phép bạn sử dụng các hàm toán học như sin, cosine, log, exp, v.v. Các hàm này có thể được tích hợp toán học trong mã.

Bước 6: Tạo chương trình Phần 3: Tạo một hàm để tích hợp

Tạo chương trình Phần 3: Tạo một hàm để tích hợp
Tạo chương trình Phần 3: Tạo một hàm để tích hợp

Sao chép mã trong hình bên dưới mã trước đó.

CẢNH BÁO: Phần này dày đặc và tôi muốn làm rõ một số điều có thể gây nhầm lẫn. Khi nói về lập trình, từ "chức năng" bật lên rất nhiều. Thuật ngữ này cũng xuất hiện rất nhiều khi bạn đang nói về toán học. Vì vậy, từ thời điểm này, khi tôi nói về một hàm theo nghĩa lập trình, tôi sẽ viết "Hàm Python" và khi tôi nói về hàm toán học, tôi sẽ nói "hàm toán học". Tại một số điểm, chúng tôi sẽ sử dụng một hàm Python làm đại diện cho hàm toán học được đề cập.

Đoạn mã tiếp theo này là trọng tâm của chương trình. Ở đây, một hàm Python được định nghĩa để thực hiện thuật toán tích hợp số bằng cách sử dụng quy tắc điểm giữa. "def Tích phân (N, a, b)" đọc là: xác định một hàm được gọi là "Tích hợp" chấp nhận các biến "N," "a," và "b" và trả về vùng bên dưới đường cong (hàm toán học) cũng được định nghĩa trong hàm Python "Tích hợp". Bạn có thể gọi hàm Python này là bất kỳ thứ gì khi bạn viết mã, nhưng nên gọi nó là tích hợp vì nó là một hàm thực sự tích hợp một hàm toán học.

Tại thời điểm này, cần bình luận về cách Python phân tách các khối mã. Một khối mã là toàn bộ phần thực hiện một nhiệm vụ nhất định. Các ngôn ngữ lập trình khác nhau sẽ có các cách được chỉ định để phân biệt các "khối" này. Đối với Python, một khối được phân biệt bằng thụt lề: mỗi phần thực hiện nhiệm vụ có thụt lề riêng và có thể có các khối được thụt lề trong các khối được thụt lề khác. Điều này đại diện cho các nhiệm vụ bên trong các nhiệm vụ và về cơ bản cho biết thứ tự mà mã cần được thực thi. Trong trường hợp hàm Python được xác định "Tích hợp", mọi thứ bên trong hàm đó được thụt vào một khối, do đó phân biệt các tác vụ sẽ được thực thi trong hàm đó. Có những phần được thụt vào trong hàm Python này cũng thực hiện các tác vụ của riêng chúng. Nó diễn ra như sau: một lệnh (tác vụ) được đặt ra, dấu hai chấm theo sau lệnh và những gì lệnh thực hiện được thụt vào bên dưới.

Ngay sau khi xác định hàm Python "tích hợp", bạn sẽ xác định một hàm Python khác được gọi là f (x). Điều này đại diện cho hàm toán học sẽ được tích hợp. Đối với mỗi hàm toán học khác nhau mà bạn muốn tích hợp, bạn sẽ phải đưa đến dòng chương trình này để thay đổi nó (không giống như các biến được xác định khi chương trình được chạy). Mỗi hàm Python sẽ có một giá trị trả về, đây là giá trị mà hàm trả về khi bạn ném cho nó một giá trị. Trong trường hợp này, giá trị được ném vào là "x" và thuật ngữ "x" này sẽ nhận giá trị của những gì bạn đã ném nó - nó là giá trị tạm thời.

Tiếp theo, vòng lặp for đóng vai trò là tổng được xác định trong các công thức trong phần "Hiểu thuật toán" của hướng dẫn này. Việc tổng kết này yêu cầu thêm một vài biến, một trong số đó sẽ hoạt động như giá trị trả về cho toàn bộ hàm Python "Tích hợp". Trước vòng lặp for, tôi đã chỉ định các biến này là "giá trị" và "giá trị2". nhiệm vụ của vòng lặp for là lặp qua một dải giá trị cho một biến được chỉ định, biến này có thể được xác định một cách thuận tiện trong lệnh for-loop; trong trường hợp này, biến đó là "n." Phạm vi mà phép lặp xảy ra là 1 đến N + 1. Bạn nên lưu ý rằng tổng được xác định trong các công thức nói trên chỉ nằm trong khoảng từ 1 đến N. Chúng tôi xác định nó theo cách này bởi vì ngôn ngữ Python đếm từng giá trị được lặp lại bắt đầu từ 0, vì vậy về cơ bản chúng tôi phải thay đổi phạm vi của các giá trị để phù hợp với mong muốn của chúng tôi phạm vi. Vòng lặp for sau đó cho phép tổng tất cả các chiều cao của hình chữ nhật lại với nhau và lưu trữ giá trị đó vào biến mà tôi gọi là "giá trị". Điều này được thấy trong đoạn mã hiển thị dưới dạng: value + = f (a + ((n- (1/2)) * ((b-a) / N))).

Từ đó, đoạn mã tiếp theo sử dụng biến có tên "value2", sau đó được gán là tổng của tất cả các chiều cao của mỗi hình chữ nhật nhân với chiều rộng tiêu chuẩn của mỗi hình chữ nhật - đây là câu trả lời cuối cùng mà chúng tôi muốn được hiển thị bởi chương trình của chúng tôi và do đó là giá trị trả về của hàm Python "Tích hợp".

Bước 7: Tạo chương trình Phần 4: Hiển thị câu trả lời

Tạo chương trình Phần 4: Hiển thị câu trả lời
Tạo chương trình Phần 4: Hiển thị câu trả lời

Sao chép mã trong hình bên dưới mã trước đó.

Bây giờ câu trả lời có thể nhận được thông qua hàm Python "Tích hợp", chúng tôi muốn có thể hiển thị nó. Đây chỉ là vấn đề đặt các giá trị được nhập bởi người dùng ("N," "a," và "b") vào hàm Python "Tích hợp" và in nó ra màn hình. Lệnh này được hiển thị trên dòng 21 và thực sự là tất cả những gì bạn cần làm để hoàn thành bước này. Đoạn mã trên dòng 19 và 20 chỉ ở đó để "nâng cao" đầu ra của toàn bộ chương trình. "print (" ………………………. ")" phân tách phần đầu vào của chương trình với phần đầu ra và "print (" Đây là câu trả lời của bạn: ")" chỉ là một ký hiệu mà câu trả lời sẽ được in sau dòng văn bản đó.

Bước 8: Chạy chương trình Phần 1: Chạy chương trình nguyên trạng

Chạy chương trình Phần 1: Chạy chương trình nguyên trạng
Chạy chương trình Phần 1: Chạy chương trình nguyên trạng

Nếu bạn không sử dụng Canopy, thì bạn có thể thậm chí không cần làm theo bước này và việc chạy chương trình có thể yêu cầu các quy trình khác nhau. Trong Canopy, trước khi có thể chạy chương trình, bạn cần phải lưu nó. Loại tệp cho chương trình Python là tệp.py - nó tự động lưu dưới dạng tệp này. Chọn nơi bạn muốn lưu tệp, sau đó bạn có thể chạy chương trình.

Chạy chương trình:

  1. Nhấn vào nút màu xanh lục trông giống như một "nút phát" nằm trên thanh công cụ ngay phía trên nơi tên tệp của bạn hiển thị (tham khảo hình ảnh).
  2. Sau đó, chương trình sẽ chạy ở màn hình dưới cùng của trình soạn thảo, được gọi là môi trường phân tích dữ liệu Canopy. Giả sử bạn đã sao chép lời nhắc như tôi đã viết, bạn sẽ thấy ở cuối môi trường phân tích dữ liệu Canopy có lời nhắc: "Nhập số lần bạn muốn tính tổng (nhiều lần hơn = chính xác hơn):." (tham khảo hình ảnh)
  3. Nhập giá trị cho số lần bạn muốn thực hiện lặp lại, tức là 10000 (số hình chữ nhật bạn muốn nhét vào khu vực của mình), sau đó nhấn enter.
  4. Nhiều lời nhắc sẽ xuất hiện với các câu lệnh phải là lời nhắc đầu vào quen thuộc mà bạn đã mã hóa vào chương trình ở bước 5. Hãy điền chúng một cách thích hợp giống như trong số 3 ở trên.
  5. Tích phân phải được đánh giá, và một kết quả sẽ xuất hiện.

Nếu bạn mã hóa chương trình như được hiển thị trong các hình trước, bạn vừa tích hợp f (x) = x ^ 2 qua một số giới hạn. Tích phân của x ^ 2 rất dễ dàng để đánh giá bằng tay, do đó bạn nên kiểm tra và đảm bảo rằng chương trình đã đưa ra một câu trả lời rất gần với giá trị phân tích chính xác được xác định bằng tay. Khi tôi chạy chương trình với các giá trị N = 10000, a = 0 và b = 10, tôi nhận được câu trả lời là 333.33333249999964. Câu trả lời phân tích chính xác, là 333,333. Điều này cực kỳ chính xác và nhanh chóng. Về cơ bản, bạn đã ép 10, 000 hình chữ nhật từ 0 đến 10 trên trục x và sử dụng chúng để tính gần đúng diện tích bên dưới đường cong x ^ 2!

Bước 9: Chạy chương trình Phần 2: Tích hợp các hàm toán học khác

Chạy chương trình Phần 2: Tích hợp các hàm toán học khác
Chạy chương trình Phần 2: Tích hợp các hàm toán học khác

Trong bước trước, nếu bạn đã trung thành theo dõi, bạn đã tích hợp f (x) = x ^ 2. Đó không phải là hàm toán học duy nhất mà chương trình này có thể tích hợp. Nhớ lại từ bước 5, bạn đã nhập mảng thư viện toán học của các hàm Python vào chương trình. Điều này cho phép bạn sử dụng các hàm toán học phức tạp hơn có thể được tích hợp. Hãy thử một lần. Tất nhiên, bạn có thể sử dụng bất kỳ hàm nào bạn muốn, nhưng tôi sẽ chứng minh thêm tính chính xác của mã này bằng cách tích hợp một hàm toán học cụ thể mang lại một giá trị nổi tiếng khi được tích hợp trong một phạm vi nhất định. Hàm đó là f (x) = Sin [x]. Hàm toán học này được hiển thị trong hình ảnh đi kèm đầu tiên, được vẽ từ 0 đến 2π và vùng quan tâm được tô bóng bằng màu ngọc lam. Có một lượng diện tích dương bằng với diện tích âm trong khoảng này, vì vậy nếu bạn cộng tổng diện tích, bạn sẽ nhận được số không. Hãy xem nếu điều này thực sự xảy ra:

Đưa hàm toán học f (x) = Sin [x] vào chương trình:

  1. Trước khi chạy lại chương trình, trong phần nhận xét "#type your function after return", hãy nhập: sin (x), nơi x ** 2 hiện đang nằm. (tham khảo hình ảnh).
  2. Chạy chương trình bằng cách nhấn lại vào nút phát màu xanh lá cây.
  3. Nhập 10000 cho giá trị N (số lần bạn muốn tính tổng).
  4. đặt "0" cho ranh giới dưới.
  5. Đặt 6.2832 vào cho biên trên (khoảng 2π).
  6. Hãy xem bạn nhận được giá trị nào.

Khi tôi làm điều này, tôi đã nhận được giá trị 1,079e-10: giá trị này tương đương với.0000000001079, thực sự gần bằng 0, vì vậy nó có vẻ chính xác và cho thấy rằng thuật toán xử lý đầy đủ vùng âm.

Bước 10: Chạy chương trình Phần 3: Mở rộng chương trình

Tại thời điểm này, bạn đã hoàn tất: bạn có một thuật toán tích phân xác định đang hoạt động được mã hóa bằng Python chạy trơn tru và đưa ra câu trả lời rất chính xác. Tuy nhiên, chương trình này có thể được cải thiện. Tôi không phải là một lập trình viên và tôi có ít kinh nghiệm với Python. Trên thực tế, tôi đã phải tự làm mới mình trong việc sử dụng Python để hoàn thành hướng dẫn này, nhưng điều đó sẽ giúp bạn tự tin rằng Python là một ngôn ngữ dễ học như vậy. Quan điểm của tôi là bạn có thể mở rộng chương trình này bằng cách làm cho nó hiệu quả hơn, có thể triển khai một số GUI và làm cho nó thân thiện hơn với người dùng.

Suy nghĩ của tôi về việc mở rộng chương trình:

  • Triển khai giao diện người dùng đồ họa cho phép bạn chạy chương trình mà không cần sử dụng môi trường phân tích dữ liệu tương tác Canopy
  • Làm cho nó để hàm toán học được tích hợp không phải được nhập vào bên trong chương trình, nhưng có thể được nhập sau khi chương trình được chạy (ban đầu tôi đã cố gắng làm điều này, nhưng không thể tìm ra).
  • Xác định một hàm Python "Tích hợp" để nó sử dụng hàm f (x) như được áp dụng để có hàm f (x) được xác định bên trong nó.

Đây chỉ là một số ví dụ về các lĩnh vực cần cải thiện, nhưng tôi đảm bảo có nhiều lĩnh vực khác mà nó có thể được nâng cao. Vì vậy, tôi để lại bước này như một ví dụ về những sai sót mà chương trình này mắc phải và có lẽ là một bài tập cho bất kỳ ai muốn cải thiện chương trình hơn nữa.

Đề xuất: