1 recursion haskell numerical-methods
我现在正在给Haskell一个忙,并努力在递归方面重写循环.
我正在尝试编写一个基本积分器,它取一些函数f(x)并通过Midpoint方法在[a,b]范围内进行积分.积分函数采用三个参数N,a和b,其中N是用于近似积分的矩形的数量.
当我尝试用GHCI编译它时,我得到了很多抽象的错误消息,我真的不知道从哪里开始.大量"超出范围"和几个"Main.a [或b]的多重声明".
谢谢
MPInt 1 a b = DELTA 1 -- Base case
MPInt N a b = (MPInt (N-1) a b) + DELTA
where
dX = (b - a) / N
DELTA = dX * f (a + dX * (N+0.5))
f :: (Num a) => a -> a
f x = x^2
Run Code Online (Sandbox Code Playgroud)
jwo*_*der 10
你已经命名了你的功能MPInt
.只有模块,类,类型和构造函数的名称才能以大写字母开头; 值(包括函数)必须以小写字母(或下划线或某些标点符号)开头.同样的问题也适用于N
和DELTA
.
您DELTA
在第一种情况的定义中使用MPInt
,但它被定义为第二种情况的一部分.甲where
子句仅适用于表达它之前立即(在这种情况下,MPInt N a b = ...
定义).(此外,第一次使用DELTA
将其视为一个函数,但第二次使用及其定义将其作为数值).