Maple: Почему я не могу построить свою функцию, определяемую proc? - PullRequest
0 голосов
/ 23 октября 2011

Итак, я создал процедуру, которая возвращает значение.(аналог sqrt, верный для чисел из (2.1) и выше).Я могу оценить это для любого данного числа, но я не могу построить это.Почему и как это исправить?

enter image description here

код (преобразованный в 1-й математический вход):

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

1 Ответ

1 голос
/ 04 ноября 2011

Вам нужны кавычки. Попробуйте

участок ('sqr' (x, 10), x = 3..5); Вы получаете ошибку, потому что sqr вызывается преждевременно с x в качестве аргумента, и он не может этого сделать.

В качестве альтернативы, вы можете изменить сам sqr так, чтобы он возвращал неоцененное значение, если он получает нечисловые аргументы (так работает sqrt).

...