小编Fel*_*cob的帖子

在Haskell的惯用矢量代数

作为在Haskell中使用矢量库进行练习的一种方法,我正在尝试重写我之前用C语言编写的Nelder-Mead最小化算法.到目前为止,我在翻译某些矢量操作时遇到了一些麻烦.

例如,考虑一个函数,该函数从n + 1列表中找出n个向量的质心(过滤掉一个索引),

在C中,这可以写成

static void get_centroid(double **s, int n, int iz,
                         double *C)
{
  for (int i = 0; i < n+1; i++) {
    if (i != iz) {
      for (int j = 0; j < n; j++)
        C[j] += s[i][j];
    }
  }
  for (int j = 0; j < n; j++)
    C[j] /= n;
}
Run Code Online (Sandbox Code Playgroud)

我尝试将其翻译成Haskell,最后得到以下内容

import Data.Vector
import qualified Data.Vector as V

type Node = Vector Double

type Simplex = Vector Node

centroid :: Simplex -> …
Run Code Online (Sandbox Code Playgroud)

haskell

12
推荐指数
1
解决办法
303
查看次数

标签 统计

haskell ×1