Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 26
Текст из файла (страница 26)
Нажмите Enter.В случае заданной матрицы всегда можно получить значение любого ее элемента, используя его матричные индексы. Матричные индексы равняются номеру строки и столбца,на пересечении которых элемент находится. В нашей математике отсчет строк и столбцов принято начинать с 1. В программировании же начальные индексы обычно равняются 0. По умолчанию в Mathcad строки и столбцы также отсчитываются с 0.
В томслучае, если такая система вам неудобна или непривычна, вы можете изменить точкуотсчета индексов на 1 (или любую другую). Чтобы это сделать, откройте окно WorksheetOptions (Параметры рабочего листа) меню Tools, на вкладке Built-in Variables (Системные переменные) внесите соответствующие коррективы в величину параметра ORIGIN3.1. Создание матриц и извлечение из них данных* 103(Точка отсчета). Впрочем, можно поступить и проще, сделав переопределение даннойсистемной переменной вверху документа:)ORIGIN:= 1Однако, даже если вы привыкли к отсчету строк и столбцов с единицы, лучше все-такииспользуйте принятые по умолчанию правила. Это даст преимущества хотя бы в том,что вы лучше будете понимать примеры из справочной системы и алгоритмы другихпользователей.Итак, чтобы получить значение какого-то матричного элемента, нужно ввести имя матрицы с соответствующими индексами и поставить «=» (или, если элемент задан символьным выражением, «—>»).
Для задания индексов на панели Matrix (Матричные) имеется специальная кнопка Subscript (Индекс), которой соответствует клавиша «[».Нажав ее, вы увидите, что на месте будущего индекса, чуть ниже текста имени матрицы, появится черный маркер. В него через запятую следует ввести значения индексов.На первом месте при этом должен стоять номер строки, а на втором — столбца. При выделении элемента вектора нужно задать только индекс строки. Вообще, индексы могутбыть определены и через выражения или специальные функции. В том случае, если элементы матрицы заданы как функции, то извлечены они должны быть в таком же виде.Пример 3.3.
Выделение элементов матрицыV:=М:=ОVQ = "Vector"Vsin(x + у)1"Vector"MN(x,y) :=1sin(n) 2JV0,0=1Msino,i=+ уN(x,y)2cos(x - у)cossin(x+ у)0l=°Аналогично извлечению отдельных элементов матрицы, используя индексы, можнозадать новую матрицу. Для этого просто нужно проделать операцию присвоения длякаждого элемента по отдельности. При этом размерность матрицы будет определятьсяэлементом с наибольшими индексами. В том случае, если вы присвоите значения невсем элементам создаваемой матрицы, все остальные будут автоматически определены как 0.Пример 3.4. Поэлементное задание матрицмо,о : =°MММ=О 12 3No,i:=1:N=o"Start"N"End"att"0000"EndКстати, переопределяя значения элементов матриц, можно производить их редактирование.
Особенно важен этот способ в случае больших массивов, не отображаемыхна мониторе, а также при создании различного рода программ.1 0 4 •:• Глава 3. Матричные вычисленияПример 3.5. Форматирование матрицы переопределением элементовV : = ( l 2 3 4)V o o := "Start"V03:="End".
V= ("Start" 2 3 "End" )Поэлементное задание — единственный способ определения тензоров (вложенныхмассивов) в Mathcad. Чтобы задать тензор, просто присвойте соответствующим элементам основного массива значения в виде матриц или векторов (или, что тоже возможно, других вложенных массивов). При этом совершенно не обязательно, чтобы всеэлементы тензора были определены как матрицы.
При желании можно создать массив,содержащий данные всех типов.Пример 3.6. Поэлементное задание тензораТл\._/1п п-(1Т2>хо,1: = я:= "Tenzor"Т={1,2}/Tenzor"3.142Л{2,1})Соответствующие матрицы тензора можно задать выше в виде переменных, а в качестве элементов тензора прописать их имена.Пример 3.7. Альтернативный способ задания тензораа : = ( 1 2)с := "Tenzor"a bс dТ=Ь:=тгd:={1,2}3.142"Tenzor"{2,1}Внимательно изучив приведенные примеры, вы обнаружите, что при визуализациитензоров' Mathcad отображает не сами элементы-матрицы, а цифры, отражающие ихразмерность, заключенные в фигурные скобки. В большинстве случаев такой подходвполне оправдан в связи с тем, что обычно вложенные массивы изучаются не напрямую, а извлечением нужных элементов.
Однако иногда все же бывает полезно раскрытьтензор. Чтобы это сделать, обратитесь к уже хорошо нам знакомому окну Result Format(Формат результата). Здесь, на вкладке Display Options (Параметры отображения)установите флажок Expand Nested Arrays (Раскрывать вложенные массивы). При этомвсе тензоры будут визуализированы в развернутом виде. Так, вложенный массив примера 3.7 приобретет следующий вид:(1 2)Т="Tenzor"3.14213.1. Создание матриц и извлечение из них данных * 1 0 5Извлечь матрицу тензора можно точно так же, как элемент простого массива. Столь жепросто можно узнать значение любого элемента его вложенной матрицы. Для этогоследует просто использовать два набора индексов: первый должен соответствовать положению самой матрицы, второй — ее выделяемому элементу.
Единственной тонкостью при этом является то, что выражение, соответствующее матрице, следует обязательно взять в скобки.Пример 3.8. Выделение элементов матриц тензора2) (3 4)"Т —(6 4)4)т—1.1( т >Ао-Помимо одного элемента, можно очень просто выделить и целые матричные столбцы.Чтобы это сделать, нужно использовать специальный оператор панели Matrix (Матричные) Matrix Column (Столбец матрицы) (также вводится сочетанием Ctrl+б). В том случае, если требуется выделить строку, матрицу необходимо транспонировать (операторMatrix Transpose (Матричное транспонирование) той же рабочей панели).Пример 3.9. Выделение из матрицы строки и столбцаМ:=13 43.1.1.
Ранжированные переменныеОдной из разновидностей задания массивов является использование так называемыхранжированных переменных.Ранжированная переменная (от англ. range — ряд) — это разновидность вектора, особенностью которого является непосредственная связь между индексом элемента и еговеличиной. В Mathcad ранжированные переменные очень активно используются каканалог программных операторов цикла (например, при построении графиков).Простейшим примером ранжированной переменной является вектор, значение элементов которого совпадает с их индексами. Для задания такой ранжированной переменной выполните следующую последовательность действий.1.
Введите имя переменной и оператор присваивания.2. Поставив курсор в маркер значения переменной, нажмите кнопку Range Variable(Ранжированная переменная) панели Matrix (Матрица). При этом будет введеназаготовка в виде двух маркеров, разделенных точками:I := i..
i1 0 6 • Глава 3. Матричные вычисленияКроме того, вставить данную заготовку можно с помощью клавиши «;». Задать оператор ранжированной переменной, просто введя с клавиатуры последовательно дветочки, нельзя.3. В левый маркер заготовки ранжированной переменной введите ее первое значение(в нашем случае 0), в правый — последнее (например, 2):1:=0..24. Выведите результат, поставив «=» после имени переменной:j-ООбратите внимание, что шаг изменения ранжированной переменной при ее заданиис помощью описанного способа постоянен и равен 1. Однако при необходимости егоможно сделать и произвольным. Для этого нужно, поставив после левой границы интервала запятую, ввести второе значение ранжированной переменной. Разность между первым и вторым ее значением и определит шаг.
Границы изменения ранжированной переменной задаются произвольным образом. Так, например, если точка началаизменения ранжированной переменной равна 5 и она должна уменьшаться с шагом 3до - 1 , то ее определение необходимо сделать следующим образом:к:=5,2..-1Результатом будет следующий вектор:к=Нужно отметить, что во многом использование ранжированных переменных основанона том, что большинство математических действий в Mathcad над векторами осуществляется точно так же, как над простыми числами.
Так, например, существует возможность вычисления значений практически любой встроенной и пользовательской функции от вектора. При этом в качестве результата будет выдан вектор, составленный иззначений функции при величинах переменных, равных соответствующим элементамисходного вектора.Пример 3.10.
Вычисление вектора значений встроенной .и пользовательской функции0.5Х:=sin(X) =v0.866,sin(X)1 + cos(X)10.5773.1. Создание матриц и извлечение из них данных * 1 0 7Аналогичным образом можно использовать вектор значений переменной, определенный с помощью ранжированной переменной. У такого способа есть огромное достоинство перед заданием вектора вручную: действительно, если, например, нужно построить график некоторой функции на промежутке от -10 до 10 с шагом 0,1, то на то, чтобыпросчитать «вручную» все 200 значений, потребовалось бы весьма значительное время.При необходимости шаг изменения неременной, по которой вычисляется вектор значений определенной зависимости, можно задать и непостоянным.
Для этого нужнопросто определить его с помощью конкретной функции, изменяющейся по некоторому закону, исходя из значений ранжированной переменной.Пример 3.11. Вычисление вектора значений функции от неравномерноизменяющейся переменнойЫ0..3.2х. :=i кп11 =^-1.047^0123f(x) := cos(x)30.52.094X==f(x) =11.519-0.50.51^27.227^Обратите внимание, что вектор переменной в примере 3.11 задан не совсем как функция. Скорее, его способ определения можно отнести к поэлементному заданию. Вседело в том, что ранжированная переменная работает наподобие цикла в программировании (кстати, для замены циклов она и была введена в Mathcad).