2015-04-17 19 views
5

Tôi đã cố gắng tìm cách để có được giá trị tối đa và tối thiểu của hàm bằng cách sử dụng Maxima (wxMaxima), nhưng cho đến bây giờ tôi vẫn chưa tìm thấy cách thực hiện.Làm thế nào để tìm tối đa và tối thiểu của một hàm sử dụng Maxima?

Bạn có thể cho tôi biết bạn sẽ làm điều đó như thế nào?

Ví dụ, giả sử tôi có đoạn mã sau:

f(x) := (3*x)/(x^2 - 2*x + 4); 

Và sau đó tôi âm mưu chức năng này trong khoảng -10, 10, và tôi có được:

enter image description here

tôi biết tối đa là 3/2 và mức tối thiểu phải là -1/2.

Trả lời

8

Lời khuyên của tôi là tìm các giá trị cực đoan giống như cách bạn thực hiện bằng tay: tính toán đạo hàm, giải cho đạo hàm = 0 và thay thế bất kỳ giá trị nào được tìm thấy trở lại hàm ban đầu. Ví dụ:

(%i1) f(x) := (3*x)/(x^2 - 2*x + 4); 
             3 x 
(%o1)      f(x) := ------------ 
             2 
            x - 2 x + 4 
(%i2) diff (f(x), x); 
          3   3 x (2 x - 2) 
(%o2)     ------------ - --------------- 
         2    2   2 
         x - 2 x + 4 (x - 2 x + 4) 
(%i3) ratsimp (%); 
             2 
            3 x - 12 
(%o3)     - ----------------------------- 
          4  3  2 
          x - 4 x + 12 x - 16 x + 16 
(%i4) num (%); 
              2 
(%o4)        12 - 3 x 
(%i5) solve (%, x); 
(%o5)       [x = - 2, x = 2] 
(%i6) map (lambda ([e], subst (e, f(x))), %); 
             1 3 
(%o6)        [- -, -] 
             2 2 

Nếu tôi được là cẩn thận, tôi sẽ xác minh rằng x = -2 và x = 2 là giá trị thực sự cực đoan và các điểm không chỉ uốn, và tôi sẽ xác nhận rằng mẫu số của% o3 là nonzero tại x = -2 và x = 2 trước khi cố gắng đánh giá f (x) tại các điểm đó.

+1

1. Tôi đặc biệt thích bước 'num (%)'. Nó không hoàn toàn cần thiết nhưng nó giúp maxima không bị nghẹt thở với bước 'giải quyết'. Tôi phải nhớ rằng (tôi thường kết thúc việc sao chép tử số bằng tay ... ngớ ngẩn tôi - cảm ơn) –

0

Sử dụng chức năng lbfgs như thế này:

lbfgs(-f(x), [x], [1.0], 1e-4, [-1,0]); 

Đoạn mã trên cho vị trí [x = 2] của tối đa của hàm.

+2

Xin vui lòng, giải thích lý do tại sao nên làm việc này, mục đích của 'lbfgs', v.v. – nbro

0

lbfgs tìm giá trị tối thiểu.

Mã của tim tìm giá trị nhỏ nhất là -f(x) và do đó giá trị tối đa là f(x). [x] = biến. [1.0] = ước tính ban đầu. [-1,0] = tìm giá trị tối đa giữax = -1x = 0. 1e-4 = epsilon, tôi nghĩ về cơ bản điều này kết thúc là mức độ chính xác hoặc giá trị bước.

0

enter image description here

Xác định khi đạo hàm được tăng hoặc giảm

+0

Xin vui lòng, ít nhất, gần như giải thích hình ảnh/mã của bạn. Nó cũng có thể hữu ích để chia sẻ mã/lệnh nếu người ta muốn dễ dàng tái tạo hình ảnh của bạn. – nbro

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