2012-04-10 45 views
18

与えられた変数関数の逆関数をRが解く方法はありますか?その目的は、逆関数の入力として値のベクトルを使用するようにRに後で指示し、逆関数の値を吐き出すことができるようにすることです。Rの関数の逆数を解く

たとえば、私は関数y(x)= x^2を持ち、逆はy = sqrt(x)です。 Rが逆関数を解くことができる方法はありますか?

私はuniroot()を参照しましたが、関数のゼロについては解いていません。

提案が参考になります。

ありがとうございます!

答えて

25

あなたはどんな逆を探していますか?シンボリックな逆関数(例えば、sqrt(x)と等しくなる関数y)を探しているなら、シンボリックシステムを使わなければなりません。 ryacasを見て、逆ライブラリを計算する可能性のあるコンピュータ代数システムYacasにRライブラリを接続してください。あなたはポイントごとの逆数を計算するためにのみ、必要がある場合は、あなたが書いているよう

さて、あなたは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の分布関数を構築することを提案しようとしていましたが、 –