[μμΉνλ‘κ·Έλλ°] ν©κΈλΆν νμλ²
ν©κΈλΆν νμλ²
ν΄λΉ νμλ²μ λ§ κ·Έλλ‘ Euclidμ ν©κΈλΉλ₯Ό μ΄μ©νμ¬ μ°λ¦¬κ° μνλ μ΅μ κ°μ λλ¬νλ λ°©μμ΄λ€.
ν©κΈλΉμ μ μλ μλμ κ°λ€.
νΉμ§
- ν κ°μ μ΅μκ°μ ν¬ν¨νκ³ μλ ꡬκ°μμ μ΅μκ°μ νμνλ λ°©λ² μ€ νλ
- μ΄λΆλ²(Bisection Method)μμ ν κ°μ μ€κ°κ°μ μ¬μ©νλ κ²κ³Όλ λ€λ₯΄κ², ν©κΈλ°ν νμλ²μ μ΅μκ°μ λ°μ μ¬λΆλ₯Ό μκΈ° μν΄ λ κ°μ μ€κ° ν¨μ«κ°μ΄ νμνλ€
- μ΄λ¬ν λ°©λ²μ΄ ν¨μ¨μ μ΄κΈ° μν΄μλ μ€κ°μ λ€μ νλͺ νκ² μ νν΄μΌ νλ©°, μ΄λΆλ²μμμ²λΌ μ΄μ κ°μ μλ‘μ΄ κ°μΌλ‘ μΉνν¨μΌλ‘μ¨ ν¨μ κ³μ°μ μ΅μνμν¨λ€.
μκ³ λ¦¬μ¦
ν΄λΉ κ·Έλ¦Όμ 보μ
μ°λ¦¬λ xl, xrμ ν΅ν΄ μλμ²λΌ x1, x2λ₯Ό κ³μ°ν μ μλ€.
κ·Έλ¦¬κ³ x1, x2μ ν΄λΉνλ ν¨μ«κ° λν κ³μ°μ΄ κ°λ₯νλ€.
1. μ΄λ―Έμ§ (b)λ₯Ό 보면 f(x2) > f(x1)μΈ λͺ¨μ΅μ λ³Ό μ μλ€.
2. μ΄ν ν΄λΉ x2λ₯Ό xlλ‘ μΉννλ κ³Όμ μ ν΅ν΄ λ²μλ₯Ό μ’ν μ μλ€.
{f(x2) < f(x1)λΌλ©΄ xr=x1 μΉν}
μμ κ³Όμ μ iterativeνκ² λ°λ³΅νμ¬ μ΄λμ λ μ°λ¦¬κ° μνλ error rateμ μ§μ νλ€λ©΄, xlκ³Ό xrλ₯Ό λ°ννμ¬ κ²°κ³Όλ₯Ό λΌ μ μλ€.
μ₯μ
- ν©κΈλΉλ₯Ό μ¬μ©νμ λμ μ₯μ μ μ΄μ κ°μ΄ μλ‘μ΄ κ°μ΄ λμ΄ μλ‘μ΄ ν¨μ«κ°μ κ°±μ ν νμκ° μμμ μλ―Ένλ€.
++++
ν©κΈλΆν νμλ²μμ ν¨μκ³μ°μ μλ₯Ό μ΅μννκ³ μνλ λ κ°μ§ μ΄μ
1. ν΄λΉ μκ³ λ¦¬μ¦μ΄ λν κ³μ°μ μΌλΆμΈ κ²½μ°κ° μλ€. μ΄λ¬ν κ²½μ° μ¬λ¬ λ² ν©κΈλΆν νμμ λΆνλ‘κ·Έλ¨μ λΆλ₯΄κ² λλ€. λ°λΌμ ν¨μ κ³μ°μ μλ₯Ό μ΅μννλ κ²μ΄ μ€μνλ€.
2. μκ°μ΄ λ§μ΄ λλ κ³μ°μ ν λ μ 리νλ€. -> ν©κΈ λΆν μ μ΄μ©νκΈ° λλ¬Έμ μ΄λ€ μ νλμ§ μμ x1, x2μ κ²½μ° λ€μ iterationμμμ x1 λλ x2κ° λ μ μλ€.
μλ¬ κ³μ°
ν©κΈλΉ νμμ μ’ λ£νμ κΈ°μ€μ μ΄μ§ νΉμ΄νλ° κ³μ°μ λ€μκ³Ό κ°λ€.
x_optλ λ΄κ° μ νν x1λλ x2λ₯Ό μλ―Ένλ€..
μ½λ
function [x,fx,ea,iter]=goldmin(f,xl,xu,es,maxit,varargin)
phi=(1+sqrt(5))/2;
iter=0;
while(1)
d=(phi-1)*(xu-xl);
x1=xl+d;
x2=xu-d;
if f(x1, varargin{:}) < f(x2, varargin{:})
xopt=x1;
xl=x2;
else
xopt=x2;
xu=x1;
endif
iter=iter+1;
if xopt~=0, ea=(2-phi)*abs((xu-xl)/xopt)*100; endif
if ea <= es || iter >= maxit, break, end
endwhile
x=xopt;
fx=f(xopt, varargin{:});
end