Documente Academic
Documente Profesional
Documente Cultură
1, 2020-2021, an II
Optimizarea funcţiilor
Curs 7 - 13.11.20201/40
Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
Realizati un fisier script pentru calculul iteratiilor necesare aflarii solutiei ecuatiei:
x3 – x2 – sin(x)-1=0 prin metoda injumatatirii intervalului, cu o eroare de cel putin 1e-10.
Considerati [-10,10] ca fiind interval initial de cautare a solutiei.
clear all
a(1)=-10
b(1)=10
n=100
for i=1:n
fa(i)=a(i)^3-a(i)^2-sin(a(i))-1
fb(i)=b(i)^3-b(i)^2-sin(b(i))-1
m(i)=(a(i)+b(i))/2
fm(i)=m(i)^3-m(i)^2-sin(m(i))-1
if fa(i)*fm(i)<0
a(i+1)=a(i)
b(i+1)=m(i)
else a(i+1)=m(i)
b(i+1)=b(i)
end
if abs(a(i+1)-b(i))<=10^-10
break
end
end Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 2/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
Realizati un fisier script pentru calculul iteratiilor necesare aflarii solutiei ecuatiei:
x3 – x2 – sin(x)-1=0 prin metoda injumatatirii intervalului, cu o eroare de cel putin 1e-10.
Considerati [-10,10] ca fiind interval initial de cautare a solutiei.
clear all
fct=inline('x^3-x^2-sin(x)-1')
err =
n=50 %numarul maxim de iteratii 7.275957614183426e-11
tol=1e-10 m =
Columns 1 through 2
a(1)=-10
0 5.000000000000000
b(1)=10 Columns 3 through 4
m(1)=(a(1)+b(1))/2 2.500000000000000 1.250000000000000
Columns 5 through 6
for i=1:n
1.875000000000000 1.562500000000000
m(i)=(a(i)+b(i))/2 Columns 7 through 8
if fct(a(i))*fct(m(i))<0 1.718750000000000 1.640625000000000
Columns 9 through 10
a(i+1)=a(i)
1.679687500000000 1.699218750000000
b(i+1)=m(i) Columns 11 through 12
end 1.689453125000000 1.694335937500000
Columns 13 through 14
if fct(m(i))*fct(b(i))<0
1.691894531250000 1.693115234375000
a(i+1)=m(i) ...
b(i+1)=b(i) Columns 35 through 36
1.694167018285953 1.694167017994914
end
Columns 37 through 38
err=abs(a(i)-b(i)) 1.694167018140433 1.694167018067674
if err<=tol Column 39
1.694167018031294
break
end
end
m Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 3/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
Realizati un fisier script pentru calculul iteratiilor necesare aflarii solutiei ecuatiei:
x3 – x2 – sin(x)-1=0 prin metoda injumatatirii intervalului, cu o eroare de cel putin 1e-10.
Considerati [-10,10] ca fiind interval initial de cautare a solutiei.
0.5
x/2+2 sin(x)+cos(x/(x+))
8
0
6 -0.5
4 -1
-1.5
2
-2
0
-2.5
-2
-3
-4 -3.5
-10 -8 -6 -4 -2 0 2 4 6 8 10
x
Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 5/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
solve('ecuatie')
[x1 x2 … xn]=solve('ecuatie_1', 'ecuatie_2', …. , 'ecuatie_n’)
sau
syms x
solve(ecuatie)
sau
syms x y …
solve(ecuatie1,ecuatie2 …)
sau
[valoare_x valoare_Functie]=fzero(nume_functie,xo)
sau
[valoare_x valoare_Functie]=fsolve(nume_functie,xo)
sau
[valoare_X valoare_FUNCTIE]=fsolve(nume_functie,XO)
unde:
nume_functie trebuie definita ca functie speciala in MATLAB
X=[x(1) ; x(2) …]
XO=[ valoare1; valoare2; …]
Functiile/ecuatiile se introduc:
- ca atare, intre ghilimele;
- ca functii speciale, definite ca fisiere de tip functie
NumeFunctie.m
function [param_iesire]=NumeFunctie(param_intrare)
instructiuni
- cu ajutorul inline
NumeFunctie=inline(’Expresie’,’vi1’,’vi2’,…)
- ca functii anonimus, @
NumeFunctie=@(vi1, vi2, ...)Expresie
ezplot(' x^2-5+y^2 ' ,[-5 5]);hold on; ezplot(' x^2 –y- 1' ,[-5 5])
x 2-y-1 = 0
syms x y 5
solve(x^2-5+y^2,y+1-x^2) 4
???
3
SAU: 2
function F = myfun(x) 0
y
F = [x(1)^2-5-x(2)^2; x(2) + 1-x(1)^2] -1
-2
x0=[1;1] -3
[x fval]=fsolve(@myfun,x0) -4
-5
-5 -4 -3 -2 -1 0 1 2 3 4 5
x
Optimizarea funcţiilor
Curs 7 -– Calcul
Curs 7 – 13.11.2020 13.11.2020
numeric asistat de calculator 11/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
Obiective:
•Optimizarea în inginerie;
•Optimizare unidimensională, optimizare multidimensională;
•Optim global, optim local;
•Transformarea problemei de maximizare într-o problemă de
minimizare;
•Localizarea optimului unei funcţii de o singura variabilă prin
bracketing, metoda secţiunii de aur, metoda Fibonacci , metoda
lui Brent, metoda interpolarii parabolice sau metoda interpolarii
cubice;
•Localizarea optimului unei funcţii de mai multe variabile prin
metoda lui Powell, metoda Fletcher-Reeves
•Utilizarea comenzilor fminunc şi fminbnd
•Utilizarea comenzii fminsearch - “cel mai bine posibil”
Optimizare:
y
f(x) y f''(x)<0
f'(x)=0
maximum f(x)
local f(x)
global minimum f(x) x
minimum f(x) 0
0 x*
global x
maximum -f(x) local
maximum -f(x) solutii f(x)=0
minimum f(x)
- f(x) f'(x)=0
f''(x)>0
a) b)
Optimizarea funcţiilor
a) optimizare globală a funcţiei f(x)
b) maximul şi minimul local al funcţiei f(x)
Optimizare:
y
optimum f(x, y)
f(x, y)
y*
x
0
x*
Optimizare bidimensională f(x,y)
Optimizare - metode:
Bracketing
l1 l2
Care conduce la:
φ2 − φ − 1 = 0.
l1 + l2
Având ca rezultat:
Definiţia lui Euclid pentru
φ = l1 / l2 , “secţiunea de aur”
1/φ =0,61803398874989484820458683436
Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 16/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
“Secţiunea de aur”
“Secţiunea de aur”
Bracketing
function [a,b] = goldBracket(func,x1,h)
% Brackets the minimum point of f(x).
% USAGE: [a,b] = goldBracket(func,xStart,h)
% INPUT:
% func = handle of function that returns f(x).
% x1 = starting value of x.
% h = initial step size used in search.
% OUTPUT:
% a, b = limits on x at the minimum point.
c = 1.618033989;
f1 = feval(func,x1);
x2 = x1 + h; f2 = feval(func,x2);
% Determine downhill direction & change sign of h if needed.
if f2 > f1
h = -h;
x2 = x1 + h; f2 = feval(func,x2);
% Check if minimum is between x1 - h and x1 + h
if f2 > f1
a = x2; b = x1 - h; return
end
end
% Search loop
for i = 1:100
h = c*h;
x3 = x2 + h; f3 = feval(func,x3);
if f3 > f2
a = x1; b = x3; return Numerical Methods in Engineering with MATLAB
end
x1 = x2; f1 = f2; x2 = x3; f2 = f3;
Jaan Kiusalaas
end
error(’goldbracket did not find minimum’)
Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 22/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
Etape:
0 x
x1 x2 x4 x3
xoptim real
1 ( x2 − x1 ) 2 ( f ( x2 ) − f ( x3 )) − ( x2 − x3 ) 2 ( f ( x2 ) − f ( x1 ))
x4 = x2 −
2 ( x2 − x1 ) ( f ( x2 ) − f ( x3 )) − ( x2 − x3 ) ( f ( x2 ) − f ( x1 ))
p( ) = c1( − a )3 + c2 ( − a )2 + c3( − a ) + c4
p( a ) = c4 = f ( a )
p( b ) = c1( b − a )3 + c2 ( b − a )2 + c3 ( b − a ) + c4 = f ( b )
p' ( a ) = c3 = f ' ( a )
p' ( b ) = 3c1( b − a )2 + 2c2 ( b − a ) + c3 ( b − a ) = f ' ( b )
Conditiile de minim:
p' ( ) = 0 si
p' ' ( ) 0
Minimul este:
w− f'( a )− z
= a +(b − a )
f ' ( b ) − f ' ( a ) + 2w
unde:
w = z2 − f ' ( a ) f ' ( b )
z = s − f'( a )− f'(b )
f (b )− f ( a )
s = 3
b−a Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 28/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
Optimizare in MATLAB:
fminunc(NumeFunctie,x1, x2, e-14)
fmin - nu mai exista incepand cu versiunea R2014
x2
f ( x) = − 2 sin( x)
10
FCT=inline(’x^2/10-2*sin(x)’)
[xmin FCTvaloare]=fminbnd(FCT, 0,10)
xmin = 1.4276
FCTvaloare = -1.7757
Curs 7 – 13.11.2020 – Calcul numeric asistat de calculator 29/40
Departamentul TCM, CNAC , Sem. 1, 2020-2021, an II
TEMA 1/2
https://docs.google.com/forms/d/e/1FAIpQLSdKMo0fMOmFII50oJXi5TpktjU-
h4Sy5K3slOFxP4pBrfJgMQ/viewform?usp=sf_link
PROBLEME
•xmin =
• 6.0781
•FCTvaloare =
• -7.2991
PROBLEME
Soluţie:
a) Metoda secţiunii de aur:
PROBLEME
Soluţie:
b) Metoda interpolării parabolice
Plecând de la punctele iniţiale x1 = 0, x2 = 5 şi x3= 10
PROBLEME
Soluţie:
c) Rezolvarea cu ajutorul funcţiei fminbnd în Matlab
» [xmin valfct]=fminbnd('x.^3/10-5*x.*cos(x)',1,10)
» [xmin valfct]=fminbnd('x^3/10-5*x*cos(x)',1,10)
» [xmin valfct]=fminbnd(@functie,1,10)
» [xmin valfct]=fminbnd('functie',1,10)
x=linspace(-2,2,50)
y=linspace(-3,3,50)
% se generează reţeaua de puncte
[X,Y]=meshgrid(x,y)
% se calculează valorile funcţiei în nodurile reţelei
Z=5*X.^2-5*X.*Y+2.5*Y.^2-X-1.5*Y+10
subplot(1,2,1)
%se trasează izolinii pentru suprafaţa definita
cs=contour(X,Y,Z);colormap([0 0 0]);
clabel(cs);grid on
xlabel('x');ylabel('y')
subplot(1,2,2)
%se trasează suprafata 3D
cs=surfc(X,Y,Z);colormap
zmin=floor(min(Z))
zmax=ceil(max(Z))
xlabel('x');ylabel('y')
» fct102=inline('5*x(1).^2-5*x(1).*x(2)+2.5*x(2).^2-x(1)-1.5*x(2)+10')
»[xmin,valfct]=fminsearch(fct102,[0 -0.5])
» fct105=inline('exp(x(1))+5*(x(2)-2*x(3)+9*x(1))^2')
» [xmin,valfct]=fminsearch(fct105,[0.5 0.5 0.5])
PROBLEME - optimizare
1. Determinaţi lungimea celei mai mici scări care ajunge din afara
gardului până la peretele casei. Se ştie că gardul are o înălţime h şi este
construit la depărtare d faţă de casă.
Calculaţi lungimea scării pentru h =2.5 şi d = 1.5 m.
TEMA 2/2:
O folie din carton este indoita ca in figura, de-a lungul liniilor punctate, pentru a forma o cutie
fara capac. Determinati necunoscutele a si b astfel incat sa fie utilizat cat mai putin material,
pentru constructia unei cutii cu volumul de 1 m3. Verificati rezultatul.
https://docs.google.com/forms/d/e/1FAIpQLSdKMo0fMOmFII50oJXi5TpktjU-
h4Sy5K3slOFxP4pBrfJgMQ/viewform?usp=sf_link
Intrebari ???