के साथ एक बहुविकल्पीय फ़ंक्शन और संबंधित जैकोबियन के व्युत्पन्न मुझे vector-space पैकेज के साथ समस्या हो रही है। मुझे हाल ही में post में @ मिशनी से बहुत उपयोगी उत्तर मिला, लेकिन वहां मैंने केवल एक फ़ंक्शन से निपटाया जो केवल 1 चर पर निर्भर करता है। क्या उदाहरण के लिए, होता है मेरे पास है जब एक समारोह जो cartesiansवेक्टर-स्पेस पैकेज
f:(0,oo) x [0,2pi] -> R²
(r,phi) -> (r*cos(phi),r*sin(phi))
जो 2 चरों पर निर्भर करने के लिए ध्रुवीय निर्देशांक से मैप करता है।
मैं इस बाहर की कोशिश की है, काफी अनुभवहीन दृष्टिकोण के साथ:
polar :: Double -> Double -> ((Double,Double) :~> (Double,Double))
polar r phi = \(r,phi) -> (((idD) r)*cos(idD phi),((idD) r)*sin(idD phi))
मैं निम्नलिखित त्रुटि मिलती है:
Couldn't match expected type `(Double, Double) :> (Double, Double)'
with actual type `(t0, t1)'
In the expression:
(((idD) r) * cos (idD phi), ((idD) r) * sin (idD phi))
In the expression:
\ (r, phi)
-> (((idD) r) * cos (idD phi), ((idD) r) * sin (idD phi))
In an equation for `polar':
polar r phi
= \ (r, phi)
-> (((idD) r) * cos (idD phi), ((idD) r) * sin (idD phi))
एक घटक के लिए
polarx :: Double -> Double -> ((Double,Double) :~> Double)
polarx r phi = \(r,phi) -> ((idD) r)*cos(idD phi)
मैं
मिलCouldn't match expected type `Double'
with actual type `(Double, Double)'
Expected type: (Double, Double) :> Double
Actual type: (Double, Double) :> (Double, Double)
In the return type of a call of `idD'
In the first argument of `(*)', namely `((idD) r)'
जाहिर है कि कुछ प्रकार के विकार हैं, लेकिन मैं यह नहीं समझ सकता कि क्या गलत है।
एक और सवाल उठता है, जब मैं इस तरह के मैपिंग के जैकबियन की गणना करना चाहता हूं। जैसा कि नाम से पता चलता है, इसमें रैखिक मानचित्रों के साथ कुछ करना है, जो निश्चित रूप से पैकेज द्वारा कवर किया गया है, वास्तव में यह उन मानचित्रों पर आधारित है। लेकिन फिर, मेरे हास्केल ज्ञान अपर्याप्त है, मेरे लिए एक समाधान प्राप्त करने के लिए।
मुझे याद है कि कोनल के बहुत ही सुरुचिपूर्ण स्वचालित भेदभाव फॉर्मूलेशन की एक महत्वपूर्ण सीमा यह है कि यह केवल एक अक्ष के साथ डेरिवेटिव पर काम करता है। यदि आप जैकबियन चाहते हैं, आदि, मुझे लगता है कि ekmett का विज्ञापन पैकेज जाने का तरीका है: http://hackage.haskell.org/package/ad-1.3.0.1 – sclv
धन्यवाद @ एससीएलवी, मैंने बस इस मॉड्यूल में देखा और मैं कहना चाहिए, वाह, मैं प्रभावित हूँ। मैंने इस पैकेज को नहीं देखा है और मैं इसे आज़मा दूंगा, – TheMADMAN
को इंगित करने के लिए धन्यवाद, आप अकेले नहीं हैं - मैं यह समझने के लिए संघर्ष कर रहा हूं कि बहु-आयामी प्रकार एक साथ कैसे फिट होते हैं। मैं कागज 'सुंदर भिन्नता' को पढ़ने जा रहा हूं और आशा करता हूं कि यह कुछ प्रकाश डालेगा - विज्ञापन पैकेज प्रकारों पर काफी सरल दिखता है! – Oliver