적어도 일반적으로 두 방정식의 시스템을 해결하려고합니다. 방정식 중 하나가 상수이고 따라서 y = 1 인 간단한 경우에 대해 fzero를 사용하여 해결할 수 있습니다. 물론 좋은 출발점을 찾기 위해 그래픽 방식을 사용하는 것이 항상 좋은 생각입니다. 두 곡선이 교차하는 위치를 찾으려면
[email protected](t) (9*(sin(t))./t) + cos(t);
y0 = 1;
아이디어는, 다음을 빼기 결과 차이의 근본을 찾는 것입니다.
이 (그건 그렇고, MATLAB은 F 벡터 나 배열 입력에 문제가되지 않도록 내가 분할에 대한 ./ 사용 있습니다.이 개발하는 좋은 습관이다.)
참고 f (t)는 MATLAB에서 0으로 엄격하게 정의되어 있지 않으므로 0/0이됩니다. (A 제한은 함수에 대한 물론 존재하며, 내 limest 도구를 사용하여 평가 될 수있다.)
limest(f,0)
ans =
10
을 내가 솔루션이 0에 있지 알고 있기 때문에, 난 그냥 거기 찾고에서 fzero 경계를 사용합니다 뿌리.
format long g
fzero(@(t) f(t) - y0,[eps,6*pi])
ans =
2.58268206208857
하지만이 유일한 루트입니까? 두 가지 이상의 솔루션이 있다면 어떨까요? 완전히 뿌리를 둔 함수의 모든 뿌리를 찾는 것은 뿌리가 무한히 가까워 지거나 무한히 많은 뿌리가있을 수 있으므로 심한 문제가 될 수 있습니다.
하나의 아이디어는 문제에 대한 여러 솔루션을 찾는 방법을 알고있는 도구를 사용하는 것입니다. 다시 파일 교환에서 발견되었으므로 research을 사용할 수 있습니다.
y0 = 1;
rmsearch(@(t) f(t) - y0,'fzero',1,eps,6*pi)
ans =
2.58268206208857
6.28318530717959
7.97464518075547
12.5663706143592
13.7270312712311
y0 = -1;
rmsearch(@(t) f(t) - y0,'fzero',1,eps,6*pi)
ans =
3.14159265358979
5.23030501095915
9.42477796076938
10.8130654321854
15.707963267949
16.6967239156574
해결책을 설명하는 데 시간을내어 주셔서 감사합니다. – camelbrush