Создание матриц и базовые матричные операции. Создание диагональных матриц Создание матрицы

Одиночное число в Mathcad называется скаляром. Столбец чисел называется вектором, а прямоугольная таблица чисел - матрицей. Общий термин для вектора или матрицы - массив.

Имеются три способа создать массив:

  • Заполняя массив пустых полей, как обсуждается в этом разделе. Эта методика подходит для не слишком больших массивов.
  • Используя дискретный аргумент, чтобы определить элементы с его помощью, как обсуждено в следующей главе. Эта методика подходит, когда имеется некоторая явная формула для вычисления элементов через их индексы.
  • Считывая их из файлов данных.

Можно различать имена матриц, векторов и скаляров, используя различный шрифт для их написания. Например, во многих математических и инженерных книгах имена векторов пишутся жирным, а имена скалярных переменных - курсивом.

Создание вектора

Вектор - массив или матрица, содержащая один столбец. Чтобы создать вектор в Mathcad, выполните следующее:

  • Щёлкните в свободном месте или на поле.
  • Выберите Матрицы из меню Математика или нажмите M . Появляетс я диалоговое окно, как на рисунке справа.
  • Укажите число строк, равное числу элементов вектора, в поле “Строк”. Например, чтобы создать вектор с тремя элементами, напечатайте 3.
  • Напечатайте 1 в поле “Столбцов”, затем нажмите “Создать”. Mathcad создает вектор с пустыми полями для заполнения.

На следующем этапе нужно заполнить эти поля скалярными выражениями. Для этого выполните следующее:

  • Щёлкните на верхнем поле и напечатайте 2.
  • Переместите выделяющую рамку в следующее поле. Можно сделать это или клавишей , или щёлкнув непосредственно на втором поле.
  • Напечатайте 3 во втором поле. Затем переместите выделяющую рамку в третье поле, и напечатайте 4.

Если понадобится создавать еще векторы, можно оставить диалоговое окно “Матрицы” открытым для дальнейшего использования.

Как только вектор создан, можно использовать его в вычислениях в точности так же, как и число. Например, чтобы добавить другой вектор к этому вектору, необходимо выполнить следующее:

  • Нажмите [­ ] несколько раз или щёлкните на любой из скобок вектора. Выделяющая рамка теперь заключает весь вектор. Это означает, что знак плюс, который будет напечатан, относится к вектору целиком, а не к какому-либо из элементов.
  • Нажмите клавишу плюс (+ ). Mathcad показывает поле для второго вектора.
  • Используйте диалоговое окно “Матрицы”, чтобы создать другой вектор с тремя элементами.
  • Заполните этот вектор, щелкая в каждом поле и печатая числа, показанные справа. Можно также использовать , чтобы двигаться от одного элемента к другому.
  • Нажмите знак = , чтобы увидеть результат.

Сложение - только одна из операций Mathcad, определенных для векторов и матриц. В Mathcad также есть вычитание матриц, умножение матриц, скалярное произведение, целочисленные степени, детерминанты и много других операторов и функций для векторов и матриц. Полные списки появляются в разделах “Векторные и матричные операторы” и “Векторные и матричные функции” ниже в этой главе.

Создание матрицы

Чтобы создать матрицу, сначала щёлкните в свободном месте или на поле. Затем:

  • Выберите Матрицы из меню Математика , или нажмите M. Появится диалоговое окно.

  • Введите число строк и столбцов в нужные поля. В этом примере матрица имеет две строки и три столбца. Затем нажмите на “Создать”. Mathcad создаст матрицу с пустыми полями.
  • В завершение заполните поля, как описано в предыдущем разделе для векторов.

Можно использовать эту матрицу в формулах в точности так же, как и число или вектор.

Везде в настоящем руководстве термин вектор относится к вектору-столбцу. Вектор-столбец идентичен матрице с одним столбцом. Можно также создать вектор-строку, создав матрицу с одной строкой и многими столбцами. Операторы и функции, которые берут векторный аргумент, всегда ожидают вектор-столбец. Они не применимы к векторам-строкам. Чтобы превратить вектор-строку в вектор-столбец, используйте оператор транспонирования1.

Изменение размера матрицы

Можно изменять размер матрицы, вставляя и удаляя строки и столбцы. Для этого необходимо выполнить следующее:

  • Щёлкните на одном из элементов матрицы, чтобы заключить его в выделяющую рамку. Mathcad будет начинать вставку или удаление с этого элемента.

  • Выберите Матрицы из меню Математика . Появляется диалоговое окно.

  • Напечатайте число строк и-или столбцов, которые нужно вставить или удалить. Затем нажмите на “Вставить” или на “Удалить”. Например, чтобы удалить столбец, который содержит выбранный элемент, напечайте 1 в поле “Столбцов”, 0 в поле “Строк”, и нажмите на “Удалить”.

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

  • Если вставляются строки, Mathcad создает строки пустых полей ниже выбранного элемента. Если вставляются столбцы, Mathcad создает столбцы пустых полей справа от выбранного элемента.
  • Чтобы вставить строку выше верхней строки или столбец слева от первого столбца, сначала заключите матрицу целиком в выделяющую рамку, щёлкнув внутри и нажав [­ ] несколько раз. Затем выберите Матрицы и продолжите, как обычно.
  • Когда строки или столбцы удаляются, Mathcad начинает со строки или столбца, занятых выбранным элементом. Mathcad удаляет строки вниз от этого элемента и столбцы - направо от этого элемента.
  • Если напечатать 0 в поле “Строк”, Mathcad ни вставит, ни удалит строки. Если напечатать 0 в поле “Столбцов”, Mathcad ни вставит, ни удалит столбцы.

Обратите внимание, что при удалении строк или столбцов Mathcad выбрасывает содержащуюся в них информацию.

Чтобы удалить всю матрицу или вектор, заключите их в выделяющую рамку и выберите Вырезать из меню Правка .

Полагаться на случай или самому создавать сценарий своей жизни?

Лично я всегда выбираю второй вариант, но если вы со мной не согласны, можете закрыть это письмо.

Остались..?

Тогда открою вам одну страшную тайну!

Чем важнее для вас событие, тем негативнее рисуются его картины.

Сразу включается страх: “А вдруг все пойдет не так…” И дальше ваше воображение услужливо показывает вам, что может пойти “не так”. В конце концов вы так накручиваете себя, что уже не видите иного выхода. И если все так и происходит, вы говорите: “Ну вот, я так и знал/а!” А если не происходит, то: “Фух, пронесло!”

Но сколько нервов было потрачено?!

Знаете, по некоторым данным, свадьба, которая, казалось бы, должна быть самым счастливым событием для молодоженов, становится для них самым сильным стрессом. Это “А вдруг все пойдет не так?” проявляется во всей красе, и выдыхают “счастливые” влюбленные, когда все наконец заканчивается.

А ведь мы сами программируем свое будущее! реально!!

И нет смысла повторять то, что вы и так знаете – “мысли материальны”.

Не проще ли сразу выбрать приемлемый для вас вариант событий и больше не “париться”?

Перейду сразу к главному.

В моей закрытой информационной коллекции есть один особый метод. С его помощью вы можете сами выбирать, как будут развиваться те или иные события в вашей жизни. Делается это при помощи вашей интуиции.

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

При этом вы можете согласиться с предложенным вариантом или потребовать другой сценарий!

В этом вся фишка!

Только представьте, насколько это удобно!

Допустим, у вас возникает желание подняться вверх по карьерной лестнице и занять руководящую должность…

Если вы прямо сейчас подумаете, как можно этого достичь, мозг тут же выдаст вам некое решение. К примеру, – много и усердно трудиться, всегда показывать себя с лучшей стороны. Но насколько вас устраивает это решение?

Наверняка где-то в глубине души вы хотели бы, чтобы все произошло гораздо легче и проще. К примеру, чтобы вас взяли и повысили просто так, без всякой видимой на то причины. Приходите на работу, а приказ о вашем назначении уже подписан. Нереально? Еще как реально, если выбрать этот сценарий вместо многолетнего труда.

Существует множество вариантов развития событий!

И о каждом из них ваше подсознание знает заранее! Но оно идет по пути наименьшего сопротивления, охраняя вас попутно от всего нового и неизведанного.

А как полезно было бы выбирать даже в бытовых ситуациях!

Вот вы собираетесь в гости к не совсем любимой свекрови или теще… У вас в голове уже есть примерный сценарий того, как вы отдохнете (или наоборот, выдохните, когда придете домой). Не пойти нельзя. Но можно действительно хорошо отдохнуть и получить удовольствие, если выбрать другой сценарий!

Вот как это работает на практике…

«Решила отдохнуть в отпуске, но не знала, куда поехать…»

«Использовала ваш секретный метод, и прямо в мозг начали сыпаться варианты из подсознания (фантастика просто!) – санаторий, море, отдых на даче. Сначала подумала про санаторий, но тут же воображение стало рисовать противных соседей. Я не согласилась. Потом решила узнать про море, мысль понравилась, но внутри услышала: «Нет билетов» (как потом выяснилось, были только верхние полки, а на них я ездить не могу, на самолете боюсь). Дача тоже не вызывала восторга – комары, соседи…Тогда я стала ждать другие решения. Мысль пришла очень четкая – позвонить друзьям… Позвонила. Оказывается, они едут на море на собственной машине и с радостью возьмут меня с собой. Покупаю купальник, и в путь!!!» Лиля

«Попробовал технику на отношении с девушками…»

«Сказать честно у меня с этим проблемы. Друзья позвали на выходные в клуб. Обычно сижу за столиком и не танцую. Да и внимания на меня девушки не обращают… Но я решил изменить сценарий. Сделал как вы учили и стал ждать. Пришло, что ко мне подсаживается девушка. Сидим вместе смотрим на танцующих. Не вдохновило. Потом подсознание выдало еще несколько вариантов. И наконец пришол сценарий когда девушки сами меня приглашают и от них отбоя нет. Одобрил по методу и забыл. Так вот когда пришли в клуб я как обычно сел за столик. Не успел пойти купить пивка как началось самое интересное… Сначала одна подошла потом другая на танец пригласила, потом третья… Такого отдыха в моей жизни еще никогда не было! Респект вам и уважуха!» Толян

* отзывы приведены без редактуры.

Теперь вы сами можете выбирать, как будут развиваться ваши события!

Техника крайне проста, никаких особых усилий от вас не потребуется.

Все, что вам нужно будет сделать, это:

1. С помощью особого приема очистить мозг от лишних мыслей и подготовить подсознание к работе.

2. Использовать ряд мощнейших триггеров, которые заставят ваше подсознание тут же выдавать вам разные решения.

3. Одобрить особым образом наиболее подходящий вариант развития событий.

Все подробности вы найдете в закрытом архивном документе “Как выстраивать правильную матрицу событий с помощью интуиции”.

Всего – 730 р.! Чтобы быстро получить метод, просто перейдите по ссылке и следуйте

ЛИЧНУЮ ПОДДЕРЖКУ ГАРАНТИРУЮ!

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

Мой личный адрес: om@сайт

P.S. Только вдумайтесь! Вам будет легко самостоятельно управлять своей жизнью! Вы просто выбираете нужный сценарий.

С уважением, Александр Клинг

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

identity (N) - единичная матрица размера NxN;

diag(v) - диагональная матрица, на диагонали которой находятся элементы вектора v:

N - целое число;

v - вектор.

Выделение подматрицы

Из матрицы или вектора можно выделить либо подматрицу, либо вектор-столбец, либо отдельный элемент. И обратно, можно "склеить" несколько матриц в одну.

Часть матрицы выделяется одним из следующих способов.

    для выделения одного элемента предназначен оператор нижнего индекса. Оператор вводится нажатием кнопки Subscript (Нижний индекс) со значком x n на панели Matrix (Матрица), либо нажатием клавиши <[> ;

    для выделения из матрицы столбца примените оператор выделения столбца нажатием кнопки Matrix Column с изображением угловых скобок <> на панели Matrix, либо сочетанием клавиш +<6> .Этот оператор называют еще, по аналогии с предыдущим, оператором верхнего индекса;

    чтобы выделить из матрицы строку, примените тот же оператор <> к транспонированной матрице;

    для выделения подматрицы используйте встроенную функцию submatrix (A, ir, jr, ic, jc), возвращающую часть матрицы А, находящуюся между строками ir,jr и столбцами ic,jc включительно.

ПРИМЕЧАНИЕ 1

Выделить из матрицы один столбец или строку можно и с помощью функции submatrix .

ПРИМЕЧАНИЕ 2

Те же операции применимы к матрицам-векторам и матрицам-строкам. Следует помнить только, что размер их составляет Nx1 и 1xN соответственно.

Слияние матриц

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

    augment (А, B, C, . ..) - матрица, сформированная слиянием матриц-аргументов слева направо;

    stack (А, B, C, . ..) - матрица, сформированная слиянием матриц-аргументов сверху вниз:

А, B, C, . .. - векторы или матрицы соответствующего размера.

Специфические преобразования матриц

Еще две встроенных функции Mathcad позволяют создавать матрицы на основе некоторой имеющейся матрицы:

    geninv (A) - создание матрицы, обратной (слева) прямоугольной матрице А;

    rref (А) - преобразование матрицы или вектора А в ступенчатый вид:

А - матрица, составленная из действительных чисел.

ПРИМЕЧАНИЕ

Размер NxM матрицы А для функции geninv должен быть таким, чтобы N>M.

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

    sort(v) - сортировка элементов вектора в порядке возрастания

    reverse (v) - перестановка элементов вектора в обратном порядке;

    csort (A, i) - сортировка строк матрицы выстраиванием элементов 1-го столбца в порядке возрастания;

    rsort (A, i) - сортировка столбцов матрицы выстраиванием элементов i-й строки в порядке возрастания:

v - вектор;

А - матрица;

i - индекс строки или столбца.

ПРИМЕЧАНИЕ

Если элементы матриц или векторов комплексные, то сортировка ведется по действительной части, а мнимая часть игнорируется.

Сортировка матриц по строке и столбцу

Для получения сведений о характеристиках матриц или векторов предусмотрены следующие встроенные функции (пример 9 и 10 соответственно):

    rows (A) - число строк;

    cols (А) - число столбцов;

    length (v) - число элементов вектора;

    last (v) - индекс последнего элемента вектора

    max(A) Самый большой элемент в массиве A. Если A имеет комплексные элементы, возвращает наибольшую вещественную часть плюс i, умноженную на наибольшую мнимую часть.

    min(A) Самый маленький элемент в массиве A. Если A имеет комплексные элементы, возвращает наименьшую вещественную часть плюс i, умноженную на наименьшую мнимую часть.:

А - матрица или вектор;

v - вектор.

ПРИМЕЧАНИЕ

Если матричные индексы нумеруются с 1, т. е. системная константа ORIGIN равна не о (по умолчанию), а 1, то число элементов вектора и индекс его последнего элемента совпадают.

Размер матриц

Размер векторов

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

Определение элементов матрицы через функцию

  • matrix(M,N,f) - создание матрицы размера MXN, каждый i,j элемент которой есть f (i, j) (листинг 9.19);
    • м - количество строк;
    • N - количество столбцов;
    • f (i, j) - фуНКЦИЯ.

Листинг 9.19. Создание матрицы

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

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

О вложенных массивах читайте в разд. "Создание тензора" гл. 4.

Рис. 9.4. Использование функции CreateSpace с разным набором параметров

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

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

Рис. 9.5. Использование функции CreateMesh с разным набором параметров

  • 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 - векторная функция из трех элементов от трех аргументов, задающая преобразование координат.

Примеры вложенных массивов, которые создаются функциями createMesh и createspace, приведены в листинге 9.20. Каждая матрица из числа трех вложенных матриц, образующих массив, определяет х-, у- и z-координаты точек поверхности или кривой, соответственно.

Листинг 9.20. Результат действия функций CreateMeeh и CreateSpace (рис. 9.4 - 9.5)

Создание матриц специального вида

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

  • identity (N) - единичная матрица размера NXN;
  • diag(v) - диагональная матрица, на диагонали которой находятся элементы вектора v;
  • geninv(A) - создание матрицы, обратной (слева) матрице А;
  • rref (A) - преобразование матрицы или вектора А в ступенчатый вид;
    • N - целое число;
    • v - вектор;
    • А -матрица из действительных чисел.

Размер NXM матрицы А для функции geninv должен быть таким, чтобы N>M.

Листинг 9.21. Создание матриц специального вида

Фильм "Матрица", братьев Вачевски, безусловно является культовым среди киберпанка, но насколько реальна перспектива создания подобной "Матрицы" на самом деле? Чтобы ответить на этот вопрос, ученые провели анализ готовности суперкомпьютеров на предмет создания виртуальной реальности. И по словам Майкла Макгьюигана из Брукхэвенской национальной лаборатории, такого рода задачи по созданию искусственных миров, наравне с реальностью, не такая уже и фантастика, а недалекое будущее!

В 1950 году, Алан Тьюринг, стоявший у истоков современной компьютерной науки, предложил элементарный тест для искусственного интеллекта, который заключался в том, чтобы во время разговора двух собеседников, один из которых - машина, третий человек попытался точно определить кто из них кто.

Вариантом этого теста Тьюринга является графический тест Тьюринга, который отличается тем, что человек, наблюдая и взаимодействуя с искусственно-созданным миром должен быть не в состоянии наверняка отличить его от реальности. "Под взаимодействием подразумевается возможность контролировать объект, например вращать его, при этом он должен прорисовываться в режиме реального времени", - поясняет Макгьюиган.

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

Как сообщает New Scientist, чтобы определить насколько близка современная компьютерная техника к созданию виртуальной реальности, Макгьуиган решил воспользоваться самым мощным суперкомпьютером в мире - Blue Gene/L, расположенном в Брукхэвенской лаборатории в Нью-Йорке. Суперкомпьютер состоит из 18 стоек в каждой из которых находится 2 тыс. стандартных процессора для ПК, при этом он работают в режиме параллельных вычислений, что и дает Blue Gene его огромную производительность в 103 терафлопс, или 103 трлн. операций с плавающей точкой в секунду. Для сравнения, обычный калькулятор выполняет 10 операций с плавающей точкой в секунду.

Конкретно, исследователь изучал способность суперкомпьютера отображать игру света на объекте, что является важным компонентом любого виртуального мира, претендующего на достоверное отображение реальности.

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

"Хорошая новость заключается в том, что человеческий глаз воспринимает прорисовку этих лучей, как естественную, - говорит Макгьюиган. - Я использовал программу, которую было относительно просто портировать для работы с таким большим количеством процессоров. Другие программы могут работать значительно быстрее и еще более реалистично". И все таки, даже Blue Gene со всей его скоростью и реалистичностью не в состоянии достаточно быстро прорисовать изображения в высоком разрешении, чтобы пройти графический тест Тьюринга.

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

Другие исследователи считают, что прохождение графического теста Тьюринга потребует много большего, нежели просто фото-реалистичная графика, двигающаяся в реальном времени. Реальность гораздо сложнее, говорит Пол Ричмонд и университета Шеффилда, Великобритания. По его словам, искусственный объект может выглядеть как настоящий, но если он не будет двигаться в реалистичной манере, то с настоящим его не спутать. "Главной проблемой является создание реалистичной имиттации, которая включает в себя реалистичную имитацию поведения", - говорит он.

Марк Грандланд из Кэмбриджского университета отмечает, что графический тест Тьюринга не уточняет что должна передавать сцена виртуального мира. "Если бы подразумевалось, что для прохождения теста нужно отобразить отображающую рассеянный свет сферу на отражающей рассеянный свет поверхности, то тест был бы уже давно пройден, - говорит он. - Но Тьюринг не мог представить, что его идеи так быстро станут реальностью".

Макгьюиган согласен с тем, что реалистичная анимация сама по себе представляет проблему. "Моделирование чего-либо постоянно изменяющегося представляется довольно сложным процессом, - подтверждает исследователь. - Вы должны убедить зрителя в том, что прыгнувшее в виртуальном мире нечто обладает весом". Тем не менее он с оптимизмом смотрит на будущее программ по работе с анимацией. По его мнению создание виртуальной реальности подразумевает работу с движением и освещением. Со вторым моментом уже разобрались - дело за движением.