6

Có một thuật toán để kiểm tra xem hàm đã cho (có thể phi tuyến) f luôn dương? Ý tưởng mà tôi hiện có là tìm gốc rễ của hàm (sử dụng thuật toán newton-raphson hoặc các kỹ thuật tương tự, xem http://en.wikipedia.org/wiki/Root-finding_algorithm) và kiểm tra các dẫn xuất, hoặc tìm tối thiểu f, nhưng chúng dường như không là giải pháp tốt nhất cho vấn đề này, cũng có rất nhiều vấn đề hội tụ với thuật toán tìm gốc.Thuật toán để kiểm tra xem hàm phi tuyến f có luôn là dương hay không

Ví dụ, trong Maple, chức năng xác minh có thể thực hiện việc này, nhưng tôi cần triển khai nó trong chương trình của riêng mình. Trợ giúp về Maple để xác minh: http://www.maplesoft.com/support/help/Maple/view.aspx?path=verify/function_shells Ví dụ về phong cách: giả sử (x, 'thực'); xác minh (x^2 + 1,0, 'greater_than'); -> trả về true, vì đối với mỗi x chúng ta có x^2 + 1> 0

[sửa] Một số nền về câu hỏi: Hàm $ f $ là mô hình phi tuyến vi phân bên tay phải cho mạch . Một mạch phi tuyến có thể được mô hình hóa như một tập hợp các phương trình vi phân thông thường bằng cách áp dụng phân tích nút biến đổi (MNA), vì mục đích đơn giản, chúng ta chỉ xem xét các hệ thống có 1 chiều, vì vậy $ x '= f (x) $ trong đó $ f $ mô tả mạch, ví dụ $ f $ có thể là $ f (x) = 10x - 100x^2 + 200x^3 - 300x^4 + 100x^5 $ (Mô hình cho đường hầm phi tuyến) hoặc $ f = 10 - 2sin (4x) + 3x $ (Mô hình cho giao lộ josephson).

$ x $ bị giới hạn và $ f $ chỉ được xác định trong khoảng $ [a, b] \ in R $. $ f $ liên tục. Tôi cũng có thể giả định rằng $ f $ là Lipschitz với hằng số Lipschitz L> 0, nhưng tôi không muốn trừ khi tôi phải làm vậy.

+0

Tính năng 'verify' của Maple có hoạt động cho tất cả các chức năng có thể không? Làm thế nào về, nói, một đa thức mười độ? – Kevin

+2

Tôi giả định rằng bạn có nghĩa là ** ** ** **, hàm đa thức ** liên tục * (sau khi tất cả, 'f (x) = -1 chương trình iff X tạm dừng khác + 1' là một hàm hợp lệ) *? Nếu vậy, vấn đề thực tế là gì? Bạn đã đề cập hai giải pháp: tìm nguồn gốc của hàm * (kiểm tra giá trị của hàm tại một điểm giữa mỗi gốc) * hoặc gốc của đạo hàm * (kiểm tra giá trị của hàm tại mỗi điểm này) * - một trong những thứ này sẽ hoạt động. –

+0

Một điểm rất tốt, có, chức năng nên được liên tục. Root-finding là giải pháp ban đầu của tôi, nhưng trong trường hợp của tôi, có một số vấn đề hội tụ với nó. Tôi đang tìm một thuật toán tốt hơn. –

Trả lời

3

Nếu tôi hiểu vấn đề của bạn một cách chính xác, nó sẽ giảm xuống để đếm số lượng (thực) rễ trong một khoảng thời gian mà không nhất thiết phải xác định chúng. Thực ra, bạn thậm chí không cần lấy số chính xác, dù nó có bằng không hay không.

Nếu hàm của bạn là đa thức, tôi nghĩ rằng Sturm's theorem có thể áp dụng được. Bài viết trên Wikipedia tuyên bố hai quy trình khác được ưa thích, vì vậy bạn có thể muốn kiểm tra các quy trình đó. Tôi không chắc chắn nếu Descartes' rule of signs hoạt động trên một khoảng thời gian, nhưng Budan's theorem có vẻ như vậy.

Các vấn đề liên quan