这个挑战的目标是使用欧拉方法来近似形式为f (n)(x)= c的微分方程的解。†
输入将是一个整数列表,其中第n个值代表f (n)(0)的值。第一个整数是f(0),第二个整数是f'(0),依此类推。此列表中的最后一个整数是常数,并且将始终保持不变。
作为输入还提供了一个正(非零)整数x,它表示目标值(您正在尝试估计f(x))。欧拉方法的步长始终为1。因此,您将总共需要执行x步。
如果你是unfamliar欧拉的方法,这里是与输入的解释一个详细的例子[4, -5, 3, -1]
,X = 8。
x f(x) f'(x) f''(x) f'''(x)
0 4 -5 3 -1
1 4-5 = -1 -5+3 = -2 3-1 = 2 -1
2 -1-2 = -3 -2+2 = 0 2-1 = 1 -1
3 -3+0 = -3 0+1 = 1 1-1 = 0 -1
4 -3+1 = -2 1+0 = 1 0-1 = -1 -1
5 -2+1 = -1 1-1 = 0 -1-1 = -2 -1
6 -1+0 = -1 0-2 = -2 -2-1 = -3 -1
7 -1-2 = -3 -2-3 = -5 -3-1 = -4 -1
8 -3-5 = -8
本质上,生成的表中的每个单元都是其上方的单元与上方和右侧的单元之和。因此,f(a)= f(a-1)+ f'(a-1); f'(a)= f'(a-1)+ f''(a-1); 和f''(a)= f''(a-1)+ f'''(a-1)。最终答案是f(8)≈-8。††
输入列表将总是包含2层或更多的元件,所有这些都将具有绝对值小于10 X ≥1也有保证。输出是单个整数,即f(x)的近似值。输入可以按任意顺序进行(在x之前的列表或在列表之前的x)。如果需要,x也可以是列表的第一个或最后一个元素。
测试用例:
[4, -5, 3, -1], x = 8 => -8
[1, 2, 3, 4, 5, 6], x = 10 => 3198
[1, 3, 3, 7], x = 20 => 8611
[-3, 3, -3, 3, -3, 3, -3, 3, -3], x = 15 => -9009
[1, 1], x = 1 => 2
†:值得注意的是,在这种情况下使用近似方法实际上是愚蠢的。但是,为解决这一挑战,选择了最简单的功能。
††:实际值恰好为-25⅓,这会使该近似值合格为“不是很好”。