Math 尝试绘制递归函数时递归级别太多
我试图在Maple 17中绘制递归函数的图形,但我不断得到错误错误,(在f中)递归级别太多 我需要画一个x=1,…40范围内的对数图。 代码如下:Math 尝试绘制递归函数时递归级别太多,math,plot,maple,Math,Plot,Maple,我试图在Maple 17中绘制递归函数的图形,但我不断得到错误错误,(在f中)递归级别太多 我需要画一个x=1,…40范围内的对数图。 代码如下: with(plots); f:=x->(2.25*f(x-1)-0.5*f(x-2)); f(1):=1/3; f(2):=1/12; logplot(f(x),1..40); 我如何解决这个问题?也许我需要用迭代的形式来写,但我不知道怎么写。 非常感谢您的帮助 您的函数对浮点错误非常敏感。在计算f的值时,必须使用精确的算法。如果不这样做,
with(plots);
f:=x->(2.25*f(x-1)-0.5*f(x-2));
f(1):=1/3;
f(2):=1/12;
logplot(f(x),1..40);
我如何解决这个问题?也许我需要用迭代的形式来写,但我不知道怎么写。
非常感谢您的帮助 您的函数对浮点错误非常敏感。在计算f的值时,必须使用精确的算法。如果不这样做,则会得到负函数值,然后使用对数就没有意义了 此外,您的函数仅为整数值n定义。你必须以某种方式通知绘图命令
f:= proc(n)
option remember;
if not n::posint then 'procname'(args)
else 9/4*thisproc(n-1) - 1/2*thisproc(n-2)
end if
end proc:
f(1):= 1/3: f(2):= 1/12:
plot([seq([x,log10(f(x))], x= 1..40)]);
考虑到您的评论,如果您执行以下操作,那么您将得到一个与Matlab中得到的图形非常接近的图形
Digits:= 15:
f:= proc(n)
option remember;
if not n::posint then 'procname'(args)
else 2.25*thisproc(n-1) - 0.5*thisproc(n-2)
end if
end proc:
f(1):= 1/3: f(2):= 1/12:
f_exact:= proc(n)
option remember;
if not n::posint then 'procname'(args)
else 9/4*thisproc(n-1) - 1/2*thisproc(n-2)
end if
end proc:
f_exact(1):= 1/3: f_exact(2):= 1/12:
plots:-logplot([
[seq([x, abs(f(x))], x= 1..40)],
[seq([x,f_exact(x)], x= 1..40)]
]);
我想我需要更好地解释自己:我的作业是绘制f的递归形式的图,然后将其与f的直接形式的图进行比较(这是您给出的图)。我的目标是得到这样的东西:![IMG]谢谢你的帮助!我的f是递归形式的。直接形式是通过rsolve得到的,正如你在MaplePrimes上问同样的问题时所显示的那样。我认为您练习的目标是绘制浮点形式以显示错误。但是我们不能用对数,因为函数是负数。我们可以用绝对值的对数。你是对的,我明白了。如果是这样的话,我的问题是如何在Maple中绘制我给出的图像(图像来自Matlab)中的图形?抱歉问了这么多问题,我是新来的。谢谢!非常感谢,现在它工作了。你帮了我很多,谢谢!