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

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

Преобразования векторных объектов

Оператор APPEND(*)

Встроенный оператор APPEND(v1,v2,...,vk) выполняет конкатенацию векторов, перечисленных в списке параметров, то есть производит их сцепление, образуя один вектор суммарной размерности. Для образования матрицы из векторов с векторными компонентами размерность векторных компонент у сцепляемых векторов должна быть одинаковой.

Преобразование вектора в матрицу

Преобразование n-мерного вектора, получаемого в результате выполнения какого-либо оператора, создающего результат векторного типа, в прямоугольную матрицу размером (1´n) осуществляется простым заключением этого оператора в квадратные скобки. Внешний вид такой матрицы в поле алгебраического окна будет отличаться от вектора тем, что компоненты n столбцов единственной строки матрицы будут отделены друг от друга пробелами.

Взаимную трансформацию векторов и матриц рассмотрим на примере оператора VECTOR() В нем в качестве векторизуемой функции возьмем матрицу M из раздела суммирования членов ряда:

VECTOR(lim M   , i, 1, 3)

       n˜2  n,i          

[2, -1, 1]

Этим оператором из матрицы M покомпонентно выбираются элементы второй строки, которые формируют результирующий вектор.

Здесь появилось еще одно новшество: подстановка в выражение с помощью встроенного оператора LIM вместо имени переменной ее локального значения. В общем случае оператор вычисления предела вызывается и исполняется следующим образом:

LIM((1 + 1/n)^n, n, –, -1)

    €     1 ‚n

lim ¦1 + ———¦

n˜–      n ƒ

2.71828182845

Взяв оператор VECTOR() в квадратные скобки, после его исполнения получим матрицу:

„VECTOR(lim M   , i, 1, 3)†

…       n˜2  n,i          ‡

[ 2  -1  1 ]

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

[VECTOR(LIM(M™n™i, n, 2), i, 1, 3)]`

„VECTOR(lim M   , i, 1, 3)†`

…       n˜2  n,i          ‡

„  2 †

¦ -1 ¦

…  1 ‡

Если вместо оператора транспонирования поставить индекс выделения первой строки прямоугольной матрицы размера (1´n) , то в результате получится исходный вектор:

[VECTOR(LIM(M™n™i, n, 2), i, 1, 3)]™1

„VECTOR(lim M   , i, 1, 3)†

…       n˜2  n,i          ‡

                           1

[2, -1, 1]

В приведенном выше тексте программы численного интегрирования подобные действия с векторами и векторами с векторными компонентами использованы для наглядного, табличного представления результата интегрирования и его удобного сопоставления с результатом аналитического решения системы.

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

В качестве заголовка к столбцам таблицы числовых значений, созданной оператором Frk(h,k,m) и являющейся (m+1)-мерным вектором с 3-х мерными векторными компонентами, в программе использовано значение вектора v. В строке #6 вектор v, представленный здесь в форме вектора с одной векторной компонентой, и вектор Frk(h,k,m) преобразуются оператором F(h,k,m) в один вектор с суммарной длиной (m+2).

Для оцифровки аналитического решения исходной системы использован оператор #7 с именем Sin . Его оператор APPEND() слева к вектору с оцифрованными значениями присоединяет однокомпонентный вектор заголовка ["sin(2¹t)"]. Длина озаглавленного вектора аналитического решения равна длине столбца озаглавленной таблицы решения. Чтобы присоединить аналитический столбец к таблице, столбец нужно превратить в вектор с одной векторной компонентой, а таблицу –транспонировать. Результат сцепления необходимо транспонировать обратно. Перечисленные действия реализует оператор под номером #8, который содержит в списках своих аргументов фактические значения основных параметров численного решения задачи.