Plot 枫叶:为什么我不能画出由proc定义的函数?

Plot 枫叶:为什么我不能画出由proc定义的函数?,plot,maple,proc-object,Plot,Maple,Proc Object,所以我创建了一个返回值的进程。(sqrt模拟,适用于(2.1)及以上的数字)。我可以为任何给定的数字计算它,但我不能绘制它。为什么以及如何修复它 代码(转换为一维数学输入): > 重新启动: 使用(绘图工具): val:=248; sqr:=proc(sqrtFrom,迭代)答案:=0;ampl:=0;编号:=sqrtFrom;对于k-to-do-answer:=10*answer;编号:=sqrtFrom*10^ampl;当i 您需要评估报价。试一试 图('sqr'(x,10),x=3..

所以我创建了一个返回值的进程。(sqrt模拟,适用于(2.1)及以上的数字)。我可以为任何给定的数字计算它,但我不能绘制它。为什么以及如何修复它

代码(转换为一维数学输入):

>
重新启动:
使用(绘图工具):
val:=248;
sqr:=proc(sqrtFrom,迭代)答案:=0;ampl:=0;编号:=sqrtFrom;对于k-to-do-answer:=10*answer;编号:=sqrtFrom*10^ampl;当i 
evalf(sqrt(val));
sqr(val,10);
图(sqr(x,10),x=3..5);
> 

您需要评估报价。试一试

图('sqr'(x,10),x=3..5); 您得到的错误是因为sqr被过早地调用,并使用x作为参数,而它不能这样做

或者,如果sqr获得非数值参数(这就是sqrt的工作方式),则可以修改sqr本身以返回未计算的参数

> 
restart:
 with(plottools):
val := 248;
sqr := proc (sqrtFrom, iterations) answer := 0; ampl := 0; number := sqrtFrom; for k to iterations do answer := 10*answer; number := sqrtFrom*10^ampl; for i from 0 while i < number do answer := answer+1; i := answer^2 end do; answer := answer-1; difr := -1; while difr < 0 do ampl := ampl+1; difr := sqrtFrom*10^ampl-100*answer^2 end do end do; return evalf(answer/10^(iterations-1)) end proc;
> 
evalf(sqrt(val));
sqr(val, 10);
plot(sqr(x, 10), x = 3 .. 5);
>