Horner的规则用于简化在特定变量值处评估多项式的过程.https://rosettacode.org/wiki/Horner%27s_rule_for_polynomial_evaluation#Standard_ML
我很容易将使用SML的方法应用于一个变量多项式,表示为int列表:
fun horner coeffList x = foldr (fn (a, b) => a + b * x) (0.0) coeffList
Run Code Online (Sandbox Code Playgroud)
这很好用.我们可以使用以下方法调用它:
- val test = horner [1.0, 2.0, 3.0] 2.0;
> val test = 17.0 : real
Run Code Online (Sandbox Code Playgroud)
[1.0, 2.0, 3.0]表示多项式系数的列表在哪里,2.0是变量x的值,并且17.0是评估多项式的结果.
我的问题是这样的:我们有一个由(int列表列表)表示的两个变量多项式.高级列表中的第n项将表示包含y ^ n的所有多项式项,并且低级列表中的第m项将表示包含x ^ m的所有多项式项.
例如:[[2],[3,0,0,3],[1,2]]是多项式
(2(x ^ 0)(y ^ 0))+
(3(x ^ 0)(y ^ 1)+ 0(x ^ 1)(y ^ 1)+ 0(x ^ 2)(y ^ 1) + 3(x ^ 3)(y ^ 1))+ …