Численные методы в среде символьной математики. Программирование и решение задач: Учебно-методическое пособие, страница 13

… 3  7  8 ‡   … z ‡   … 9 ‡

Из матрицы коэффициентов и матрицы правых частей сделаем присоединенную матрицу (3´4):

     „ 1  4  5  6 †

C := ¦ 2  1  2  3 ¦

     … 3  7  8  9 ‡

Подстановка ее в оператор процедуры и исполнение последней даст

FORCE0(APPEND(„C †, VECTOR(FORCE0(C, i, 1, 1) , i, 2,~

              … 1‡                           i                                ~DIMENSION(C))), 3, 2, 2)

„ 1   4        5             6      †

¦ 0  -7       -8            -9      ¦

… 0   0  -1.285714285  -2.571428571 ‡

Вид вектора системы уравнений с исключенными переменными можно получить, исполнив следующее матричное уравнение:

                              „  x †        

„ 1   4     5        6    †   ¦    ¦   „ 0 †

¦                         ¦   ¦  y ¦   ¦   ¦

¦ 0  -7    -8       -9    ¦ • ¦    ¦ = ¦ 0 ¦

¦                         ¦   ¦  z ¦   ¦   ¦

… 0   0  -1.2857  -2.5714 ‡   ¦    ¦   … 0 ‡

                              … -1 ‡        

„ x + 4·y + 5·z - 6 = 0 †

¦  - 7·y - 8·z + 9 = 0  ¦

… 2.5714 - 1.2857·z = 0 ‡

Эта система легко решается, начиная с нижнего уравнения, из которого получается  z=2 , затем из второго –  y=-1  и первого –  x=0.

Для сокращения длины записи иерархической структуры процедур удобно вместо вставляемых операторов подставлять их оригинальные имена со списком параметров или без, которым предварительно в качестве значений присвоены определения в форме текстов процедур или операндов.

Операторы решения уравнений

В DERIVE имеются встроенные операторы решения алгебраических уравнений и операторы решения систем линейных уравнений.

              „  x + 4·y + 5·z = 6  †

              ¦                     ¦

U(x, y, z) := ¦  2·x + y + 2·z = 3  ¦

              ¦                     ¦

              … 3·x + 7·y + 8·z = 9 ‡

SOLVE(U(x, y, z), [x, y, z])

[ x = 0  y = -1  z = 2 ]

Здесь вектор уравнений, или матрица со строчками отдельных уравнений, или их имя служит первым фактическим параметром оператора SOLVE(). Вторым параметром списка служит вектор переменных, записанных в том порядке, в котором их значения желательно получать в векторе решений. Сам текст оператора можно записывать в командной строке или использовать горячую клавишу с изображением знака ‘=’ нутри лупы.

При решении алгебраических кроме уравнения или его имени в список формальных параметров помещают имя искомой переменной:

       2      3    

x + 4·x  + 5·x  = 6

„             2      3        †

…SOLVE(x + 4·x  + 5·x  = 6, x)‡`

Строка с оператором SOLVE() в данном примере заключена в квадратные скобки и помечена оператором транспонирования с тем, чтобы вектор решения был представлен матрицей с одним столбцом:

„        x = 0.80468       †

¦ x = -0.80234 + 0.92060·î ¦

… x = -0.80234 - 0.92060·î ‡

Оператор SOLVE() удобно применять для разрешения алгебраических выражений относительно необходимой переменной, например:

 x·t - 1       

————————— = 5·x

  x + t        

„     € x·t - 1          ‚†

¦SOLVE¦————————— = 5·x, x¦¦`

…       x + t           ƒ‡

„                 2             †

¦ x = - 0.2·(‹(4·t  - 5) + 2·t) ¦

¦                               ¦

¦                2              ¦

…  x = 0.2·(‹(4·t  - 5) - 2·t)  ‡

Для решения трансцендентных уравнений одной переменной в список параметров оператора SOLVE() добавляются еще два фактических параметра: нижний и верхний пределы диапазона, в котором может находиться его корень. Уравнение желательно представлять в неявной форме, то есть с правой частью равной нулю, который записывать необязательно, так как при подстановке функции в оператор SOLVE() он по умолчанию подразумевается. Исполняется оператор нажатием кнопки ‘»’.

            x             

           ê  + 3         

f(x) := ———————————— - 5·x

         x + SIN(x)       

SOLVE(f(x), x, 0, 2)

NotationDigits := 12

[x = 0.727914584236]

В предпоследней строке показан способ установки в нужный момент количества значащих десятичных разрядов в выводимых числах результатов вычислений. Такая уставка будет действовать для всех операторов, записанных в текущей сессии, пока аналогичным образом или через меню его значение не будет изменено на другое. Такой способ установки позволителен для всех инициализируемых параметров пакета DERIVE.