* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
1060
Программирование в системах компьютерной алгебры
К созданию своих библиотечных процедур следует относиться достаточно осторожно. Их применение лишает ваши Maple программы совместимости со стандартной версией Maple. Если вы используете одну две процедуры, проще по местить их в те документы, в которых они действительно нужны. Иначе вы будете вынуждены к каждой своей программе прикладывать еще и библиотеку процедур. Особенно рискованно изменять стандартную библиотеку Maple.
14.2.13. Программирование символьных операций
Найти достаточно простую и наглядную задачу, решение которой отсутствует в системе Maple, не очень просто. Поэтому для демонстрации решения задачи с применением аналитических методов воспользуемся примером, ставшим клас сическим, – реализуем итерационный метод Ньютона при решении нелинейного уравнения вида f(x) = 0. Как известно, метод Ньютона сводится к итерационным вычислениям по сле дующей формуле: xi+1 = xi + f(xi)/f’(xi). Реализующая его процедура выглядит довольно просто:
> restart: NI:=proc(expr,x) local iter; iter:=x-expr/diff(expr,x); unapply(iter,x) end;
NI := proc(expr, x) local iter; iter := x – expr/diff(expr, x); unapply(iter, x) end proc Для получения итерационной формулы в аналитическом виде здесь использу ется функция unapply. Теперь, если задать решаемое уравнение, то можно полу чить искомое аналитическое выражение:
> expr:=sin(x)^2-0.5;
expr := sin(x)2 – .5
> F:=NI(expr,x);
Далее, задав начальное приближение для x в виде x = x0, можно получить ре зультаты вычислений для ряда итераций:
> x0:=0.2;
x0 := .2
> to 8 do x0:=F(x0);od;
x0 := 1.382611210 x0 := .117460944 x0 := 2.206529505