앞에서 다룬 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에 근접하지 않는 값이 나오게 된다.
비선형 방정식에는 해가 없을수도 있음을 유의하면서 여러가지 식을 풀어보면 좋을것 같다!
solve 기능 이용하기 (0) | 2021.02.02 |
---|---|
1차원 2차원 Newton 방법 (1) | 2021.02.02 |
댓글 영역