मैं कुछ समय से हास्केल के साथ काम कर रहा हूं, लेकिन मैं एक विशेषज्ञ होने से बहुत दूर हूं। लेकिन मुझे लगता है कि प्रोग्रामिंग के लिए कार्यात्मक दृष्टिकोण मुझे सबसे अच्छा लगा।व्युत्पन्न टावर्स और वेक्टर-स्पेस पैकेज (हैकसेल) का उपयोग कैसे करें
अब तक मैं किसी भी गंभीर सामग्री की गणना करने के लिए एक परियोजना पर काम कर रहा हूं, जैसे किसी दिए गए ढांचे से धाराओं और संभावित विकिरण।
मैंने Conal Elliott द्वारा लिखे गए ब्लॉग का अनुसरण किया (यहां कुछ और Linear Maps है) जो बहुत अच्छा और मौलिक है।
दुर्भाग्य से, मैं एक साधारण उदाहरण :)
अधिक सटीक होना कमी कर रहा हूँ, मैं एक वक्र
f:[0,1] in R -> R³
t -> a*e_y + 2*t*e_z
, जिस पर एक सरल सीधी रेखा है (0, एक, 2 * टी) है । जब मैं एफ के व्युत्पन्न की गणना करना चाहता हूं, उदा। वक्र की लंबाई के लिए, मुझे गणितीय परिणाम पता है, जो काफी सरल है (0,0,2), लेकिन मैं इसे हास्केल में कैसे पूरा कर सकता हूं, खासकर vector-space पैकेज के साथ?
मैं वास्तव में अपनी कार्यक्षमता की वजह से इस लाइब्रेरी का उपयोग करना चाहते हैं, यह वास्तव में दृष्टिकोण मैं भी ले
क्या मैं अब तक इस (लेकिन मुझे लगता है कि अब तक हास्केल सड़क पर आगे नहीं कर रहा हूँ) के लिए होता है :
{-# LANGUAGE Rank2Types, TypeOperators, FlexibleContexts, TypeFamilies #-}
{-# OPTIONS_GHC -Wall #-}
import Numeric.GSL.Integration
import Data.VectorSpace
import Data.Basis
import Data.Cross
import Data.Derivative
import Data.LinearMap
type Vec3 s = Three s
prec :: Double
prec = 1E-9
f1 :: (Floating s, VectorSpace s, Scalar s ~ s) => s -> s
f1 = id
c1 :: Double -> Vec3 Double
c1 = \t -> linearCombo [((v 0 0 1),f1 t),((v 0 1 0),2)]
derivC :: Double -> Vec3 (Double :> Double)
derivC t = c1 (pureD t)
यह pureD समारोह के वास्तविक क्रियान्वयन, अब तक कुछ भी नहीं है कि मैं काम करता है इस स्निपेट संकलित करने के लिए प्राप्त करने की कोशिश की है। मैं निम्नलिखित त्रुटि मिलती है:
tests.hs:26:12:
Couldn't match expected type `Double :> Double'
with actual type `Double'
Expected type: Vec3 (Double :> Double)
Actual type: Vec3 Double
In the return type of a call of `c1'
In the expression: c1 (pureD t)
Failed, modules loaded: none.
वहाँ भी जो वेक्टर अंतरिक्ष का उपयोग करता है और वहाँ एक फूल की कुर्सी, जहां pureD प्रयोग किया जाता है पर भी एक उदाहरण है एक ग्राफिक्स पुस्तकालय है। मैंने उदाहरण को कम करने की कोशिश की लेकिन मुझे नहीं पता कि मैं इसे अपनी समस्या के लिए कैसे मैप कर सकता हूं।
किसी भी मदद की सराहना की जाएगी।
अग्रिम धन्यवाद
पुनश्च: मैं सभी लिंक मैं करना चाहते हैं पोस्ट नहीं कर सकते, लेकिन उपलब्ध कराने के लिए
अच्छी तरह से - मुझे इन पुस्तकालयों के बारे में बहुत कुछ पता नहीं है, लेकिन प्रकार मेल नहीं खाते हैं। 'pureD :: (LMapDom a s, वेक्टर स्पेस बी एस) => बी -> ए:> बी' तो 'शुद्ध डी' का प्रकार' डबल:> डबल 'है लेकिन सी 1' डबल 'की बहस की अपेक्षा करता है। (त्रुटि क्या कहती है) – Oliver
थक्स ओलिवर, मैंने इसे भी देखा है, लेकिन मैंने पहले से ही प्रश्न पोस्ट कर दिया था।बात यह है कि, अभी भी, कि मैं वास्तविक व्युत्पन्न से स्पष्ट नहीं हूं, इसका मतलब है कि मैं प्रकार के हस्ताक्षर से मेल खाने के लिए अपना फ़ंक्शन कैसे बदलूं। मैं मिशनी के जवाब पर नज़र डालेगा। – TheMADMAN