Tôi có một vấn đề về toán học nhỏ. Tôi muốn có một chức năng với các đặc tính này:Chức năng toán đơn giản f (x) nào có các tính chất này?
- cho x lớn hơn nhiều so với 0: lim f (x) = x
- cho x nhỏ hơn nhiều so với 0: lim f (x) = 0
- và f (0) = 1 (xin lỗi, tôi đã ở đây f (1) = 1 mà đã sai!)
- f (x) nên monotonically increasing
Vì vậy, các chức năng nên trông hơi giống như điều này:
^
| /
|/
|/
___.-+´
--´-----+------>
|
Điều tốt nhất tôi có cho đến thời điểm này là x/(1 + e^(-x))
nhưng sau đó tôi nhận ra rằng nó giảm xuống dưới 0 và không tăng lên một cách đơn điệu.
Trợ giúp tuyệt vời để chơi xung quanh với chức năng này là GraphFunc Online.
Ngoài ra, sẽ rất hữu ích nếu chức năng này nhanh để tính toán vì tôi cần phải thực hiện nó rất thường xuyên.
EDIT: Tôi đang sử dụng chương trình này để giới hạn giá trị. Tôi có một thuật toán tối ưu hóa, sử dụng đường cong phù hợp với thuật toán Levenberg-Marquardt. Nhưng thuật toán này không cho phép các ràng buộc và tối ưu hóa trên toàn bộ các giá trị thực. Vì vậy, tôi cần một hàm như thế này để tôi có thể thêm một ràng buộc nhân tạo để hàm lớn hơn 0. Một cách tiếp cận đơn giản sẽ là sử dụng f(x) = x²
nhưng sau đó hàm không tăng đơn điệu và nó có hai minimas.
Levenberg-Marquardt xấp xỉ các dẫn xuất, vì vậy tôi nghĩ nó sẽ là tốt nhất khi hàm cũng trơn tru. Nhưng tôi không chắc chắn nếu điều này là hoàn toàn cần thiết.
Tôi không thấy cách liên quan đến chương trình này. –
Tại thời điểm này, tôi mong đợi để xem nhiều hơn một thẻ ngôn ngữ. Giải thích lý do tại sao bạn làm điều này theo chương trình hoặc một cái gì đó như thế. – EBGreen
Tôi có thể dễ dàng thấy cách liên quan đến lập trình này, nhưng có lẽ OP có thể thêm một số ngữ cảnh để thỏa mãn người khác. –