CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
||||
|
||||
Minimizarea functiilor si gasirea zerourilor
MATLAB-ul furnizeaza o serie de functii de nivel inalt care realizeaza sarcini de optimizare a functiilor. Aceste functii sunt grupate in principal pe urmatoarele domenii:
Minimizarea functiilor de o variabila
Minimizarea functiilor de mai multe variabile
Setarea optiunilor de minimizare
Gasirea zerourilor unor functii
Pentru exemplificare vom considera minimizarea unei functii de o singura variabila si gasirea zerourilor pentru aceasta functie.
Pentru gasirea unui minim local al unei functii scrise intr-un fisier function, se utilizeaza functia fminbnd.
Reluam aici exemplul din paragraful 2.3: pentru gasirea minimului functiei humps in intervalul (0.3, 1) folosim instructiunea:
x = fminbnd('humps',0.3,1)
x =
0.6370
Daca dorim o afisare detaliata a pasilor facuti de prodedura de minimizare se utilizeaza urmatoarea sintaxa:
x = fminbnd('humps',0.3,1,optimset('Display','iter'))
Func-count x f(x) Procedure
1 0.567376 12.9098 initial
2 0.732624 13.7746 golden
3 0.465248 25.1714 golden
4 0.644416 11.2693 parabolic
5 0.6413 11.2583 parabolic
6 0.637618 11.2529 parabolic
7 0.636985 11.2528 parabolic
8 0.637019 11.2528 parabolic
9 0.637052 11.2528 parabolic
x =
0.6370
Gasirea zerourilor
Functia fzero permite gasirea zerourilor unei functii (este vorba de fapt de o ecuatie cu o singura necunoscuta).
Daca
se da un punct de plecare x0 pentru
procedura de cautare, fzero va cauta un interval in
jurul acestui punct in care functia schimba semnul. Daca un astfel de interval este gasit, fzero returneaza valoarea pentru care functia schimba semnul
(adica zeroul), iar daca un astfel de interval nu este gasit
returneaza
Alta varianta permite cautarea intr-un interval specificat de utilizator.
Exemplu: gasirea unui zerou al functiei humps in apropiere de -0.2:
a = fzero('humps',-0.2)
a =
-0.1316
Pentru verificare evaluam functia in punctul -0.1316 si gasim intr-adevar o valoare foarte aproape de zero:
humps(a)
ans =
8.8818e -16
Se poate folosi si varianta cu interval de cautare precizat de utilizator. In continuare este prezentata aceasta varianta plus folosirea unor optiuni suplimentare pentru afisarea detaliata a informatiilor despre procedura si a pasilor:
options = optimset('Display','iter');
a = fzero('humps',[-1 1],options)
Func-count x f(x) Procedure
1 -1 -5.13779 initial
2 1 16 initial
3 -0.513876 -4.02235 interpolation
4 0.243062 71.6382 bisection
5 -0.473635 -3.83767 interpolation
6 -0.115287 0.414441 bisection
7 -0.150214 -0.423446 interpolation
8 -0.132562 -0.0226907 interpolation
9 -0.131666 -0.0011492 interpolation
10 -0.131618 1.88371e-007 interpolation
11 -0.131618 -2.7935e-011 interpolation
12 -0.131618 8.88178e-016 interpolation
13 -0.131618 -9.76996e-015 interpolation
Zero found in the interval: [-1, 1].
a =
-0.1316
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2207
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved