6.1. Стиль 1: Первая попытка как решение определенной задачи
Метод Ньютона вычисляет корень функции f(x), используя линейные аппроксимации f(x) через касательные.
Формула следующая:
Мы используем переменную F1 для хранения формулы f(X) (обратите внимание на заглавную букву X) и переменную F0 для формулы правой части.
Вычисления CAS на текущий момент не распознают внутренние переменные. А глобальные переменные обычно вычисляются во время обработки в программе, так как программы запускаются в Главном представлении (Home view). Это создает некоторые трудности с передачей значений и выражений в команды CAS. В Главном представлении (Home view) символьное выражение заключено в одинарные кавычки.
Так, в первом примере мы создаем символьное выражение и "вставляем" другие символьные выражения (например, производную функции), используя строки. В последующих примерах мы передаем одну строку в команду CAS, которая обрабатывает строку таким образом, будто она была введена из командной строки CAS.
Так как CAS распознает функциональную алгебру, мы создаем формулу для F0, просто оперируя самими функциями (термин id - это функция тождества id(x)=x) и полностью игнорируя вспомогательные переменные.
Так как нужная нам формула выглядит следующим образом:
то эквивалентная функция с использованием функциональной алгебры будет выглядеть так:
Стиль 1: Первая попытка как решение определенной задачи
Функция заранее сохраняется в переменной F1 в приложении Function. Затем пользователь запускает команду NEWT() из командной строки, из Каталога программ (Program Catalog) или из меню (нажатие на пункт меню ).
EXPORT NEWT()
BEGIN
LOCAL n, xold, xnew, err;
err := .000001;
n := 0;
xnew := 2;
xold := xnew-2*err;
F0 := EXPR("'X-F1(X) / (" + diff(F1(X), X) + ")'");
L1 := {};
WHILE (ABS(xnew-xold) > err AND n < 100) DO
n := n+1;
L1(n) := xnew;
xold := xnew;
xnew := F0(xold);
END;
L1(n+1) := xnew;
END;