0

所以我创建了一个返回值的过程。(对于 (2.1) 及以上的数字,sqrt 模拟是正确的)。我可以为任何给定的数字评估它,但我无法绘制它。为什么以及如何解决它?

在此处输入图像描述

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

> 
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);
> 
4

1 回答 1

1

你需要 eval 引号。尝试

情节('sqr'(x,10), x = 3..5 ); 你得到的错误是因为 sqr 被过早地调用 x 作为参数,它不能这样做。

或者,您可以修改 sqr 本身以在它获取非数字参数时返回未评估(这就是 sqrt 的工作方式)。

于 2011-11-04T12:05:16.647 回答