2017-03-17 1 views
2

x 값과 y 값을 포함하는 두 개의 배열을 출력하는 코드가 있습니다. 이제는이 점들을 사용하여 근본 원인을 찾아야하지만 기능을 알지 못하면 이것이 가능합니까? 예를 들어, 쌍 (함수 없음 f(x)) 집합을 사용하여 이분법을 구현하는 방법은 무엇입니까? 온라인에서 찾은 모든 예제는 미리 정의 된 다항식 함수와 함께 사용되는 이분법을 보여줍니다. 은 이분법을 사용하기 위해 근사 함수를 먼저 찾으려면이 필요합니까? 내가 루트로 가정내가 가진 모든 것이 포인트 세트 일 때 루트 검색을 어떻게 구현합니까?

+5

점에 곡선을 맞추고 그 점에서 뿌리를 얻을 수 있습니다. 여기에서 뿌리는 무엇을 의미합니까? 당신이해야 할 일은 y- 성분에 대한 부호가 번갈아 연속 된 점을 찾은 다음, y = 0 인 x를 알아내는 선형 보간법을 수행하는 것입니다. 당신은 너무 많은 검색을하고 충분하지 않은 사고를하고 있습니다. – duffymo

답변

0

당신은 y=0.0

에 포인트가 그들이 제로 그래서 루트 어딘가에 그들 사이 너무 n이 장소와 형태의 다항식 주변 포인트 (보간을하다 넘어 의미 (x0,y0),(x1,y1)y0*y1<=0.0 것을이 결과의 포인트를 찾을 의미 BEZIER 또는 무엇이든간에) 그런 다음 이분법 또는 다른 방법을 사용하십시오. 당신은 그래서 그냥이 문제를 해결 선형 보간법을 사용할 수 있습니다 우선 들어

:

것은 또한 특수 처리 :

x(t) = x0 + (x1-x0).t // parametric line x 
y(t) = y0 + (y1-y0).t // parametric line y 
y(t) = 0.0 // root y 
x(t) = ? // root x 
--------------------- 
0.0 = y0 + (y1-y0).t 
t = -y0/(y1-y0) 
--------------------- 
x(t) = x0 + (x1-x0).t 
x(t) = x0 + -y0/((y1-y0).(x1-x0)) // this is your approximate root 

당신이보고 할 수 있습니다 예 : y0 또는 y1은 0입니다. 그것은 그들이 루트이고 보간 할 필요가 없다는 것을 의미합니다. 둘 다 0이라면 그 사이에 무한한 수의 뿌리가 있습니다

관련 문제