बस एफ # के साथ के बारे में खिलवाड़ और मैं इस सी # संस्करण (एक सी ++ विकी प्रविष्टि से नकल) के आधार पर एक बुनियादी Lagrange अंतर्वेशन समारोह बनाने के लिए कोशिश कर रहा था:नए सिरे से लिखना सी # कोड
double Lagrange(double[] pos, double[] val, double desiredPos)
{
double retVal = 0;
for (int i = 0; i < val.Length; ++i)
{
double weight = 1;
for (int j = 0; j < val.Length; ++j)
{
// The i-th term has to be skipped
if (j != i)
{
weight *= (desiredPos - pos[j])/(pos[i] - pos[j]);
}
}
retVal += weight * val[i];
}
return retVal;
}
सबसे अच्छा मैं आ सकता है एफ # और कार्यात्मक प्रोग्रामिंग का अपने सीमित ज्ञान का उपयोग कर के साथ था:
let rec GetWeight desiredPos i j (pos : float[]) weight =
match i with
| i when j = pos.Length -> weight
| i when i = j -> GetWeight desiredPos i (j+1) pos weight
| i -> GetWeight desiredPos i (j+1) pos (weight * (desiredPos - pos.[j])/(pos.[i] - pos.[j]))
let rec Lagrange (pos : float[]) (vals : float[]) desiredPos result counter =
match counter with
| counter when counter = pos.Length -> result
| counter -> Lagrange pos vals desiredPos (result + (GetWeight desiredPos counter 0 pos 1.0)* vals.[counter]) (counter+1)
किसी को एक बेहतर/tidier एफ # ही सी # कोड के आधार पर संस्करण प्रदान कर सकते हैं?
मुझे लगता है कि यह जब जरूरी कोड पढ़ सकते हैं और बनाए रखने के लिए आसान कार्यात्मक से है का एक अच्छा उदाहरण है। – gradbot