Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Minimizarea functiilor si gasirea zerourilor

Matlab



+ Font mai mare | - Font mai mic



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.

Minimizarea unei functii

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 NaN.

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2213
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved