आर

2012-04-10 12 views
18

में किसी फ़ंक्शन के विपरीत के लिए हल करना क्या किसी दिए गए एकल परिवर्तनीय फ़ंक्शन के विपरीत के लिए हल करने का कोई तरीका है? प्रेरणा मेरे लिए आर को बाद में आर के बारे में बताती है कि वे विपरीत कार्य के इनपुट के रूप में मूल्यों के वेक्टर का उपयोग करें ताकि यह व्यस्त कार्य मानों को थका सके।आर

उदाहरण के लिए, मेरे पास फ़ंक्शन y (x) = x^2 है, उलटा y = sqrt (x) है। क्या कोई तरीका आर विपरीत कार्य के लिए हल कर सकता है?

मैंने uniroot() देखा, लेकिन मैं किसी फ़ंक्शन के शून्य के लिए हल नहीं कर रहा हूं।

कोई भी सुझाव उपयोगी होगा।

धन्यवाद!

उत्तर

25

आप किस तरह के उलटा खोज रहे हैं? यदि आप एक प्रतीकात्मक उलटा खोज रहे हैं (उदाहरण के लिए, एक फ़ंक्शन वाई जो समान रूप से sqrt (x) के बराबर है) आपको एक प्रतीकात्मक प्रणाली का उपयोग करना होगा। कंप्यूटर बीजगणित प्रणाली से कनेक्ट करने के लिए आर पुस्तकालय के लिए ryacas पर देखें जो संभावित रूप से इनवर्स, याकास की गणना कर सकता है।

अब, अगर आप केवल बिंदु वार प्रतिलोम गणना करने के लिए की जरूरत है, तो आप अपने समारोह uniroot के मामले में के रूप में आपके द्वारा लिखी गई परिभाषित कर सकते हैं:

> 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 

एक दिया y और f(x) के लिए, यह गणना करेगा x जैसे f(x) = y, जिसे उलटा भी कहा जाता है।

+1

बहुत अच्छा है, हालांकि अर्धविराम अनावश्यक हैं ... –

+1

आह, आर मेरी प्राथमिक भाषा नहीं है इसलिए मुझे यकीन नहीं है कि शैली क्या है ... मैं इसे ठीक कर दूंगा। –

+0

मैं एक बड़ा वेक्टर 'y <- f (seq (0,100, .001)' उत्पन्न करने का सुझाव देने जा रहा था और 'ecdf' या इसी तरह के टूल के माध्यम से y के संदर्भ में x का वितरण फ़ंक्शन बनाने के लिए परिणामों का उपयोग कर रहा था, लेकिन माइक की विधि शायद बेहतर है। –