2012-04-10 6 views
18

주어진 단일 변수 함수의 역수를 구하기 위해 R이 사용할 수있는 방법이 있습니까? 그 동기는 나중에 R에 역함수의 입력으로 값 벡터를 사용하여 역 함수 값을 누출하도록 지시하는 것입니다.R의 함수의 역함수를 구하십시오.

예를 들어, 나는 y (x) = x^2의 함수를 가지고 있고, 역수는 y = sqrt (x)입니다. R이 역함수를 풀 수있는 방법이 있습니까?

나는 uniroot()을 찾았지만 함수의 제로를 해결하지는 않습니다.

어떤 제안이 도움이 될 것입니다.

감사합니다.

답변

25

어떤 종류의 반대가 있습니까? 기호 역행 (예 : sqrt (x)와 동일한 함수 y)을 찾으려면 기호 시스템을 사용해야합니다. 반전을 계산할 가능성이있는 컴퓨터 대수학 시스템 인 Yacas에 R 라이브러리를 연결하려면 ryacas을보십시오. 당신이 포인트 현명한 역원을 계산하기 만하면 당신이 작성한으로

이제, 당신이 uniroot의 관점에서 함수를 정의 할 수 있습니다 : 주어진 yf(x)를 들어

> inverse = function (f, lower = -100, upper = 100) { 
    function (y) uniroot((function (x) f(x) - y), lower = lower, upper = upper)[1] 
} 

> square_inverse = inverse(function (x) x^2, 0.1, 100) 

> square_inverse(4) 
[1] 1.999976 

,이 x을 계산합니다 그러한 것은 역도라고도하는 f(x) = y입니다.

+1

세미콜론이 불필요하지만 ... –

+1

아, R이 내 기본 언어가 아니므로 스타일이 무엇인지 확신 할 수 없습니다. –

+0

큰 벡터'y <- f (seq (0,100, .001)'을 생성하고 그 결과를 사용하여'ecdf' 또는 유사한 도구를 통해 y의 차원에서 x의 분포 함수를 만드는 방법을 제안 하겠지만 Mike의 방법 –