我想实现一个类似于 rsolve 的求解线性递推关系的过程。对于我的方法,我需要将函数替换为递归关系并在某些点评估它们。但是,我的代码似乎不起作用。 当我写下:
rec := (a, n) -> a(n) - n*a(n - 1);
rec(n -> n^2, 2);
它正确返回 2。但是,当我写入时
repertoire:=proc(func_guess,recursive_relation)
print(recursive_relation(n -> func_guess[1], 3));
end proc:
repertoire([3^n,n!],rec);
打印出来了
-2*3^n
而不是
(3^3-3*3^2=)0
我也尝试过命令“subs”,但是,
subs(a(n)=n^2,a(n)=n*a(n-1))
返回 n^2=n*a(n-1)。我不在乎递归是否作为函数或方程传递,我似乎无法使任何一个工作。我对 Maple 很陌生,欢迎任何帮助。
PS:一个完美的解决方案将允许 func_guess 包含递归定义的服装函数。
改变
n -> func_guess[1]
到
unapply(func_guess[1], n)
正如您所见,过程参数
n
与传递的表达式 n
中的全局名称 3^n
无关。
还有其他方法可以完成这种常见的任务。但
unapply
很容易(这就是它存在的原因)。