상세 컨텐츠

본문 제목

fzero , fsolve

장.Matlab/Non Linear Equation Solver

by 수내동떡볶이주먹 2021. 2. 2. 20:46

본문

앞에서 다룬 solve 의 기능만으로는 조금 부족함을 느낄 것이다.

 

물론 matlab 에 help solve를 사용하면 여러가지 응용방법이 나오지만 그것은 필요에 따라 가져다 쓰는것으로 하고 

 

fzero 와 fsolve를 사용하면 solve로 해결하기 힘든 여러가지 방정식의 해를 구할 수 있다.

 

먼저 fzero는 함수 f 의 부호가 음수 양수로 변할때 0이 되는 지점을 수치해석적으로 구해주는 프로그램이다.

 

sin 함수와 연립을 할때 자주 사용한다

 

 

fzero

 

solve 를 이용하면 이런 에러 메세지가 나온다

 

이럴때 fzero를 사용하면 편리하다

 

먼저 plot으로 내가 원하는 값의 위치를 대략 파악한다

 

 

가장 큰 작은 -5보다 큼을 알 수 있다

 

 

이렇게 내가 원하는 구간을 바꾸어 가면서 값을 구하면 된다. 

 

모든 근을 한번에 구해 줄 수 있는 기능이 있거나 아니면 코딩을 해서 해를 순차적으로 빈 배열에 넣어서 한번에 구할 수 있도록 만들수도 있지만 , 간단한 계산은 fzero를 이용하는게 빠르고 편리한 경우가 많다

 

 

 

비선형 방정식의 풀이

 

가끔 비선형 방정식을 수치적으로 풀어야 할 경우가 있다

 

이럴때 fsolve라는 기능을 사용하면 매우 편리하다.

 

우리가 알아야 할 값은 함수식과 초기값이다.

 

근은 초기값과 가까운 것으로 계산이 된다

 

위의 식을 한번 계산해보자

 

 

 

 

우연의 일치라고 하기는 좀 그렇지만 x1 의 값과 x2 의 값이 같은값이 나왔다

 

그것은 x1 과 x2가 같다고 놓고 식을 정리해보면 결국 같은 식이 나오기 때문이다

 

이렇게 간단하게 비선형 방정식도 해결 할 수 있다.

 

그렇다면 F 식에서 exp(-x1) 을 +x1 으로 바꾸어서 해보자

 

 

이렇게 해가 없다는 말이 나오면서 실제로 계산된 fval의 값이 0에 근접하지 않는 값이 나오게 된다.

 

비선형 방정식에는 해가 없을수도 있음을 유의하면서 여러가지 식을 풀어보면 좋을것 같다!

 

 

'장.Matlab > Non Linear Equation Solver' 카테고리의 다른 글

solve 기능 이용하기  (0) 2021.02.02
1차원 2차원 Newton 방법  (1) 2021.02.02

관련글 더보기

댓글 영역