7.4.1. Автоматическая генерация матриц



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

Создание матриц на основе некоторой функции

Наиболее удобный прием автоматизации создания матриц заключается в предварительном определении функции f (i, j), аргументом которой должны быть индексы элементов матрицы:

  •  matrix (м, N, f) — создание матрицы размера MхN, каждый i,j элемент которой есть f (i, j) (листинг 7.20):

  •  M — количество строк матрицы;
  •  N — количество столбцов матрицы;
  •  f(i,j) —функция.

Листинг 7.20. Создание матрицы на основе функции пользователя


Создание матриц для построения 3D графиков

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

  •  CreateSpace(F( или fI, f2, f3) , t0,t1,tgrid,fmap) — создание вложенного массива, представляющего х-, у- и z-координаты параметрической пространственной кривой, заданной функцией F:

  •  F(t) — векторная функция из трех элементов, заданная параметрически относительно единственного аргумента t;
  •  f1(t) ,f2 (t), f3 (t) — скалярные функции;
  •  t0 — нижний предел t (по умолчанию -5);
  •  t1 — верхний предел t (по умолчанию 5);
  •  tgrid — число точек сетки по переменной t (по умолчанию 20);
  •  fmap — векторная функция от трех аргументов, задающая преобразование координат.


Пример использования функции CreateSpace показан на рис. 7.2. Заметьте, для построения графика кривой не потребовалось никакого дополнительного кода, кроме определения параметрической зависимости в вектор-функции F!



Рис. 7.2. Использование функции CreateSpace для построения графика трехмерной кривой


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

  •  CreateMesh(F(или g, или f1,f2,f3),s0,s1,t0,t1,sgrid,tgrid, fmap) — создание вложенного массива, представляющего х-, у- и z-координаты параметрической поверхности, заданной функцией F:

  •  F(s,t) — векторная функция из трех элементов, заданная параметрически относительно двух аргументов s и t;
  •  g (s, t) — скалярная функция;
  •  f1(s,t) ,f2 (s,t) ,f3(s,t) — скалярные функции;
  •  s0, t0 — нижние пределы аргументов s, t (по умолчанию -5);
  •  s1,t1 — верхние пределы аргументов s,t (по умолчанию 5);
  •  sgrid, tgrid — число точек сетки по переменным s и t (по умолчанию 20);
  •  fmap — векторная функция из трех элементов от трех аргументов, задающая преобразование координат.



Рис. 7.3. Использование функции CreateMesh для построения графика трехмерной поверхности


Результатом обеих рассмотренных функций CreateMesh и CreateSpace является соответствующий вложенный массив, служащий в Mathcad для представления тензора. Каждая матрица из числа трех вложенных матриц, образующих вложенный массив данных, определяет х-, у- и z-координаты точек поверхности или кривой.

Создание диагональных матриц

В Mathcad легко создать матрицы, имеющие определенное простое строение, с помощью одной из встроенных функций. Примеры использования этих функций приведены в листинге 7.21:

  •  identity (N) — единичная матрица размера NxN;
  •  diag(v) — диагональная матрица, на диагонали которой находятся элементы вектора v:

  •  N — целое число;
  •  v — вектор.

Листинг 7.21. Создание единичной и диагональной матрицы заданной размерности