如何在 C# 中创建代表 Vandermonde 系统的大量 Func?

How to create a big array of Func's representing a Vandermonde system in C#?

我正在尝试创建一个大的 Vandermonde Func 数组。我可以像这样创建一个 4x3 系统:

Func<double[], double>[] vandermondeSystem =
{
    x =>  x[0]*Math.Pow(1, 0) + x[1]*Math.Pow(1, 1) + x[2]*Math.Pow(1, 2),
    x =>  x[0]*Math.Pow(2, 0) + x[1]*Math.Pow(2, 1) + x[2]*Math.Pow(2, 2),
    x =>  x[0]*Math.Pow(3, 0) + x[1]*Math.Pow(3, 1) + x[2]*Math.Pow(3, 2),
    x =>  x[0]*Math.Pow(4, 0) + x[1]*Math.Pow(4, 1) + x[2]*Math.Pow(4, 2)
}

但是像这样编写大型(例如 100x50)系统是不可行的,所以我认为我需要使用某种循环或递归,但我不知道如何使用。

This page 解释了如何创建匿名递归来实现 Fibonacci 函数,但我不知道如何使用那里解释的方法。

根据您当前的代码,您可以轻松修改它以支持尺寸为 100x50 等的更大系统。这样的事情怎么样:

Func<double[], double>[] bigVandermondeSystem = new Func<double[], double>[100];

// Constructing a 100 x 50 Vandermonde System
for (int i = 0; i < 100; i++)
{
    var i1 = i;
    bigVandermondeSystem[i] = x => Enumerable
        .Range(0, 50)
        .Sum(number => x[number] * Math.Pow(i1 + 1, number));
}