2015-04-17 11 views
5

Próbuję znaleźć sposób na uzyskanie maksymalnej i minimalnej wartości funkcji przy użyciu Maxima (wxMaxima), ale do tej pory nie znalazłem sposobu, aby to zrobić.Jak znaleźć maksimum i minimum funkcji za pomocą Maxima?

Czy możesz mi powiedzieć, jak byś to zrobił?

Na przykład załóżmy, że mam następujący kod:

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

A potem wykreślić tę funkcję w zakresie -10, 10, i otrzymujemy:

enter image description here

wiem że maksimum wynosi 3/2, a minimum powinno wynosić -1/2.

Odpowiedz

8

Moja rada polega na znalezieniu ekstremalnych wartości w taki sam sposób, jak zrobiłbyś to ręcznie: oblicz pochodną, ​​rozwiązuj dla pochodnej = 0 i podstaw wszystkie wartości znalezione z powrotem w pierwotnej funkcji. Np

(%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 

Jeśli zostały uważając, że będzie sprawdzeniu, że x = 2, a x = 2, to w rzeczywistości wartości skrajne, a nie tylko punkty przegięcia, a ja potwierdzają, że mianownik% O3 niezerowe na x = -2 i x = 2 przed próbą oceny f (x) w tych punktach.

+1

+1. Szczególnie podobał mi się krok 'num (%)'. Nie jest to bezwzględnie konieczne, ale pomaga maksymom się nie udusić za pomocą kroku "rozwiązać". Muszę to zapamiętać (często kończę kopiując licznik ręcznie ... głupie mnie - dzięki) –

0

pomocą funkcji lbfgs tak:

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

Kod powyżej daje pozycję [x = 2] maksimum funkcji.

+2

Proszę wyjaśnić, dlaczego to powinno działać, jaki jest cel 'lbfgs', itp. – nbro

0

lbfgs znajduje minimalną wartość.

Kod Tim znajduje minimalną wartość -f(x), a tym samym maksymalną wartość f(x). [x] = zmienna. [1.0] = wstępna prognoza. [-1,0] = ustalenie maksymalnej wartości międzyx = -1 i x = 0. 1e-4 = epsilon, myślę, że w zasadzie kończy się to poziomem dokładności lub wartości kroku.

0

enter image description here

Określenie gdy pochodna wzrasta lub maleje

+0

Proszę przynajmniej wyjaśnić z grubsza twoje zdjęcie/kod. Przydaje się również udostępnianie kodu/poleceń, jeśli chce się łatwo odtworzyć obraz. – nbro

Powiązane problemy