개발/매트랩

[매트랩] fzero 로 비선형 함수의 근 구하기

섭교수 2022. 5. 27. 00:21
반응형

fzero 함수

 

기본 구문은 다음과 같습니다.

(1) x = fzero(fun,x0)

 

(2) x = fzero(fun,x0,options)

 

 

(1) x = fzero(fun,x0)은 fun(x) = 0인 x 점을 구하는 구문입니다.

이 해는 fun(x)의 부호가 바뀌는 곳에 있습니다. fzero는 x^2과 같은 함수의 근을 구할 수 없습니다.

즉 sin(x)-1 의 근도 구할 수가 없습니다.

예시구문은 다음과 같습니다

>> fun = @(x)sin(x)-3*x^2;
>> x0 = -1;

x =

  -4.3457e-17

>> x0 = 3;
>> x = fzero(fun, x0)

x =

    0.3274

 

fzero 함수는 기본적으로 초깃값 x0에서 가까운 해를 구하기 때문에 해가 여러개인 경우 초깃값에 따라 다른 결과가 나올 수 있습니다.

(2) x = fzero(fun,x0,options)는 options를 풀이 과정에 적용하여 해를 구합니다.

이때 option은 플롯 함수를 포함하는 옵션을 의미하며 적절히 설정하여 풀이 과정을 검토합니다.

예시구문은 다음과 같습니다.

 

>> fun = @(x)sin(x)-0.9;
>> x0 = 1;
>> options = optimset('PlotFcns',{@optimplotx,@optimplotfval});
>> x = fzero(fun, x0, options)

x =

    1.1198

 

 

 

 

※ normcdf, binocdf 등 다른 내장함수와 함께 사용할 수 있다.

※ 만약 f(x) = 3 의 근을 구하고 싶다면 fun = @(x) f(x)-3 으로 설정해야 한다.

 

※ fzero는 fun = 0 의 해를 구하는 함수.

반응형