Работа с векторами maple
Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg . Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg) .
Способы задания векторов.
Для определения вектора в Maple используется команда vector([x1,x2,…,xn]), где в квадратных скобках через запятую указываются координаты вектора. Например:
Координату уже определенного вектора x можно получить в строке вывода, если ввести команду x[i] , где i — номер координаты. Например, первую координату заданного в предыдущем примере вектора можно вывести так:
Вектор можно преобразовать в список и, наоборот, с помощью команды convert(vector, list) или convert(list, vector).
Сложить два вектора a и b можно с помощью двух команд:
Команда add позволяет вычислять линейную комбинацию векторов a и b : , где — скалярные величины, если использовать формат: matadd(a,b,alpha,beta) .
Скалярное, векторное произведение векторов и угол между векторами.
Скалярное произведение двух векторов вычисляется командой dotprod(a,b).
Векторное произведение двух векторов вычисляется командой crossprod(a,b).
Угол между двумя векторами a и b вычисляется с помощью команды angle(a,b) .
Норму (длину) вектора , которая равна , можно вычислить с помощью команды norm(а,2) .
Можно нормировать вектор а с помощью команды normalize(a), в результате выполнения которой будет получен вектор единичной длины .
Нахождение базиса системы векторов. Ортогонализация системы векторов по процедуре Грамма-Шмидта.
Если имеется система n векторов , то с помощью команды basis([a1,a2,…,an]) можно найти базис этой системы.
При помощи команды GramSchmidt([a1,a2,…,an]) можно ортогонализовать систему линейно-независимых векторов .
Задание 1.
1. Даны два вектора: и . Найти и угол между a и b . Для решения этой задачи наберите:
2. Найти векторное произведение , а затем скалярное произведение , где , .
3. Найти норму вектора .
4. Из системы векторов: , , , , выделить базис и ортогонализовать его по процедуре Грамма-Шмидта:
g := [ a1, a2, a3, a5 ]
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
5. Функции для работы, с векторами и матрицами
Функции для работы с векторами и матрицами
Для работы с векторами и матрицами Maple 7 имеет множество функций, входящих в пакет linalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории.
Операции со структурой отдельного вектора V и матрицы М:
- coldim(M) — возвращает число столбцов матрицы М;
- rowdim(M) — возвращает число строк матрицы М;
- vectdim(V) — возвращает размерность вектора V;
- col(M,i) — возвращает i-й столбец матрицы М;
- row(M,i) — возвращает i-ю строку матрицы М;
- tninor(M,i, j) — возвращает минор матрицы М для элемента с индексами i и j;
- delcols(M,i.. j) — удаляет столбцы матрицы М от i-roдо j-ro;
- del rows (V,i..j) — удаляет строки матрицы М от i-й до j-й;
- extend (М, т, n,х) — расширяет матрицу М на m строк и n столбцов с применением заполнителя х.
Основные векторные и матричные операции:
- dotprod(U,V) — возвращает скалярное произведение векторов U и V;
- crossprod(U,V) — возвращает векторное произведение векторов U и V;
- norm(V) или norm(M) — возвращает норму вектора или матрицы;
- copyinto(A,B,i, j) — копирует матрицу А в В для элементов последовательно от i до j;
- concat(Ml,M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2;
- stack(Ml,M2) — возвращает объединенную матрицу с вертикальным слиянием Ml и М2;
- matadd(A,B) и evalm(A+B) — возвращает сумму матриц А и В;
- multlply(A,B) и evalm(A&*B) — возвращает произведение матриц А и В;
- adjoint (М) или adj(M) — возвращает присоединенную матрицу, такую что M?adj(M) дает диагональную матрицу, определитель которой есть det(M);
- charpoly(M,lambda) — возвращает характеристический полином матрицы М относительно заданной переменной lambda;
- det(M) — возвращает детерминант (определитель) матрицы М;
- Eigenvals(M,vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы;
- jordan(M) — возвращает матрицу М в форме Жордана;
- hermite(M) — возвращает матрицу М в эрмитовой форме;
- trace(M) — возвращает след матрицы М;
- rank(M) — возвращает ранг матрицы М;
- transpose(M) — возвращает транспонированную матрицу М;
- inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М;
- singularvals(A) — возвращает сингулярные значения массива или матрицы А.
Приведем примеры применения некоторых из этих функций:
Читатель, понимающий суть матричных вычислений, легко справится с тестированием других функций, входящих в пакет linalg. В приведенных примерах полезно обратить внимание на то, что многие матричные функции способны выдавать результаты вычислений в аналитическом виде, что облегчает разбор выполняемых ими операций.
Глава 6
Решение задач линейной алгебры, оптимизации и регрессии
Задачи линейной алгебры, оптимизации и регрессии — одни из самых массовых в науке, технике и образовании [37, 39–46]. Им и посвящена эта глава. В ней даны основные определения линейной алгебры, основы работы с массивами, векторами и матрицами, функции для работы с векторами и матрицами и для решения систем линейных уравнений. Дано описание средств оптимизации, в том числе новейших системы Maple 10.
6.1. Основные операции линейной алгебры
6.1.1. Основные определения линейной алгебры
Прежде чем перейти к рассмотрению обширных возможностей пакетов Maple в решении задач линейной алгебры, рассмотрим краткие определения, относящиеся к ней.
Матрица (m×n) — прямоугольная двумерная таблица, содержащая m строк и n столбцов элементов, каждый из которых может быть представлен числом, константой, переменной, символьным или математическим выражением (расширительная трактовка матрицы).
Квадратная матрица — матрица, у которой число строк m равно числу столбцов n. Пример квадратной матрицы размера 3×3:
Определитель матрицы — это многочлен от элементов квадратной матрицы, каждый член которого является произведением n элементов, взятых по одному из каждой строки и каждого столбца со знаком произведения, заданным четностью перестановок:
где M1 — определитель матрицы порядка n-1, полученной из матрицы А вычеркиванием первой строки и j-го столбца. В таком виде определитель (он же детерминант) легко получить в символьных вычислениях. В численных расчетах мы будем подразумевать под определителем численное значение этого многочлена.
Сингулярная (вырожденная) матрица — квадратная матрица, у которой детерминант (определитель) равен 0. Такая матрица обычно не упрощается при символьных вычислениях. Линейные уравнения с почти сингулярными матрицами могут давать большие погрешности при решении.
Единичная матрица — это квадратная матрица, у которой диагональные элементы равны 1, а остальные элементы равны 0. Ниже представлена единичная матрица размера 4×4:
Сингулярные значения матрицы А — квадратные корни из собственных значений матрицы transpose(A)∙А, где transpose(A) — транспонированная матрица А (см. ее определение ниже).
Транспонированная матрица — матрица, у которой столбцы и строки меняются местами, то есть элементы транспонированной матрицы удовлетворяют условию A T (i,j)=A(j,i). Приведем простой пример.
Обратная матрица — это матрица М -1 , которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.
Ступенчатая форма матрицы соответствует условиям, когда первый ненулевой элемент в каждой строке есть 1 и первый ненулевой элемент каждой строки появляется справа от первого ненулевого элемента в предыдущей строке, то есть все элементы ниже первого ненулевого в строке — нули.
Диагональ матрицы — расположенные диагонально элементы Аi,i матрицы А. В приведенной ниже матрице элементы диагонали представлены заглавными буквами:
Обычно указанную диагональ называют главной диагональю — для матрицы А, приведенной выше, это диагональ с элементами А, Е и L. Иногда вводят понятия поддиагоналей (элементы d и k) и наддиагоналей (элементы b и f). Матрица, все элементы которой, расположенные кроме как на диагонали, поддиагонали и наддиагонали, равны нулю, называется ленточной.
Ранг матрицы — наибольший из порядков отличных от нуля миноров квадратной матрицы.
След матрицы — сумма диагональных элементов матрицы.
Матрица в целой степени — квадратная матрица в степени n (n — целое неотрицательное число), определяемая следующим образом: М 0 =Е, М 1 =М, М 2 =ММ, …, М n =М n-1 М.
Идемпотентная матрица — матрица, отвечающая условию Р²=Р.
Симметрическая матрица — матрица, отвечающая условию А т =А.
Кососимметрическая матрица — матрица, отвечающая условию А т =-А.
Ортогональная матрица — матрица, отвечающая условию А т =А -1 .
Нуль-матрица — матрица, все элементы которой равны 0.
Блок-матрица — матрица, составленная из меньших по размеру матриц, также можно представить как матрицу, каждый элемент которой — матрица. Частным случаем является блок-диагональная матрица — блок-матрица, элементы-матрицы которой вне диагонали — нуль-матрицы.
Комплексно-сопряженная матрица — матрица Ā, полученная из исходной матрицы А заменой ее элементов на комплексно-сопряженные.
Эрмитова матрица — матрица А, удовлетворяющая условию Ā=А т .
Собственный вектор квадратной матрицы А — любой вектор х∈V n , х≠0, удовлетворяющий уравнению Ах=γх, где γ — некоторое число, называемое собственным значением матрицы А.
Характеристический многочлен матрицы — определитель разности этой матрицы и единичной матрицы, умноженный на переменную многочлена — |А-γЕ|.
Собственные значения матрицы — корни ее характеристического многочлена.
Норма — обобщенное понятие абсолютной величины числа.
Норма трехмерного вектора ||х|| — его длина.
Норма матрицы — значение sup(||Ax||/||x||).
Матричная форма записи системы линейных уравнений — выражение А∙Х=В, где А — матрица коэффициентов системы, X — вектор неизвестных и В — вектор свободных членов. Один из способов решения такой системы очевиден — X=А -1 ∙В, где А -1 — обратная матрица.
6.1.2. Системы линейных уравнений и их матричная форма
Как известно, обычная система линейных уравнений имеет вид:
Здесь а1,1, а1,2, …, an,n — коэффициенты, образующие матрицу А и могущие иметь действительные или комплексные значения, х1, х2, …, хn — неизвестные, образующие вектор X и b1, b2, …, bn — свободные члены (действительные или комплексные), образующие вектор В. Эта система может быть представлена в матричном виде как АХ=В, где А — матрица коэффициентов уравнений, X — искомый вектор неизвестных и В — вектор свободных членов. Из такого представления системы линейных уравнений вытекают различные способы ее решения: X=В/А (с применением матричного деления), X=А -1 В (с инвертированием матрицы А) и так далее.
6.1.3. Матричные разложения
В ходе решения задач линейной алгебры часто приходится использовать различные методы, например известный еще из школы метод исключения Гаусса. Однако для эффективного решения таких задач приходится представлять матрицы специальным образом, осуществляя матричные разложения. В ходе этого приходится работать с некоторыми специальными типами матриц, что нередко резко упрощает решения систем линейных уравнений. Отметим некоторые из наиболее распространенных матричных разложений, которые реализованы в большинстве СКА и СКМ.
LU-разложение, называемое также треугольным разложением, соответствует матричному выражению вида Р∙А=L∙U, где L — нижняя и U — верхняя треугольные матрицы. Все матрицы в этом выражении квадратные.
QR-разложение имеет вид А=Q∙R, где Q — ортогональная матрица, a R — верхняя треугольная матрица. Это разложение часто используется при решении любых систем линейных уравнений, в том числе переопределенных и недоопределенных и с прямоугольной матрицей.
Разложение Холецкого А=L∙L T применяется к симметричной матрице А, при этом L — треугольная матрица.
Сингулярное разложение матрицы А размера M×N (М×N) определяется выражением А=U∙s∙VT, где U и V — ортогональные матрицы размера N×N и М×M, соответственно, a s — диагональная матрица с сингулярными числами матрицы А на диагонали.
6.1.4. Элементы векторов и матриц
Элементы векторов и матриц в Maple являются индексированными переменными, то есть место каждого элемента вектора определяется его индексом, а у матрицы — двумя индексами. Обычно их обобщенно обозначают как i (номер строки матрицы или порядковый номер элемента вектора) и j (номер столбца матрицы). Допустимы операции вызова нужного элемента и присваивания ему нового значения:
V[i] — вызов i-го элемента вектора V;
M[i,j] — вызов элемента матрицы М, расположенного на i-й строке в j-м столбце.
V[i]:=x — присваивание нового значения х i-му элементу вектора V;
M[i,j]:=x — присваивание нового значения х элементу матрицы М.
6.1.5. Преобразование списков в векторы и матрицы
Прежде всего, надо обратить внимание на то, что векторы и матрицы, хотя и похожи на списки, но не полностью отождествляются с ними. В этом можно убедиться с помощью следующих примеров (файл vmop), в которых функция type используется для контроля типов множественных объектов (векторов и матриц):
Таким образом, используя функцию преобразования данных convert, можно преобразовывать одномерные списки в векторы, а двумерные — в матрицы. Функция type используется в следующих формах:
type(V,vector) — тестирует аргумент V и возвращает true, если V — вектор, и false в ином случае;
type(M.matrix) — тестирует аргумент М и возвращает true, если М — матрица, и false в ином случае.
Здесь параметры vector и matrix используются для указания того, какой тип объекта проверяется. Обратите внимание на то, что матрицы отображаются иначе, чем двумерные списки — без двойных квадратных скобок. Отображение вектора подобно отображению одномерного списка, поэтому здесь особенно важен контроль типов данных.
6.1.6. Операции с векторами
Важное достоинство систем компьютерной алгебры, к которым относится и Maple, заключается в возможности выполнения аналитических (символьных) операций над векторами и матрицами. Перед проведением символьных операций с векторами и матрицами рекомендуется очистить память от предшествующих определений с помощью команды restart. Если какие-то элементы векторов или матриц были ранее определены, это может привести к очень сильным искажениям вида конечных результатов. Очистка памяти устраняет возможность ошибок такого рода.
Приведем примеры операций над векторами (файл vectop):
В этих примерах используется функция evalm(M), осуществляющая вычисление матрицы или вектора М.
6.1.7. Операции над матрицами с численными элементами
Над матрицами с численными элементами в Maple можно выполнять разнообразные операции. Ниже приведены основные из них:
Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций.
6.1.8. Символьные операции с матрицами
Одной из привлекательных возможностей СКА является возможность проведения символьных операций с матрицами. Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера в системе Maple:
Приведем еще ряд гримеров выполнения символьных операций с одной матрицей:
Среди других функций для работы с матрицами полезно обратить внимание на функцию map, которая применяет заданную операцию (например, функции дифференцирования diff и интегрирования int) к каждому элементу матрицы. Примеры такого рода даны ниже:
В результате возвращаются матрицы, каждый элемент которых представлен производной или интегралом. Аналогично можно выполнять над матрицами и другие достаточно сложные преобразования.
В дальнейшем мы продолжим изучение матричных функций и операций, включенных в пакеты Maple.
6.2. Пакет линейной алгебры linalg системы
6.2.1. Состав пакета linalg
Несомненно, что уникальной возможностью системы Maple, как и других систем компьютерной алгебры, является возможность решения задач линейной алгебры в символьном (формульном, аналитическом) виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц (уже при 4–5 строках и столбцах) символьные результаты оказываются очень громоздкими и трудно обозримыми. Они полезны только при решении специфических аналитических задач, например с разреженными матрицами, у которых большинство элементов имеют нулевые значения.
Поэтому разработчики Maple были вынуждены реализовать в своей системе численные методы решения задач линейной алгебры, которые широко используются в основных сферах ее приложения — математическом моделировании систем и устройств, расчетах в электротехнике, механике, астрономии и т.д. Решение задач линейной алгебры в численном виде можно рассматривать как одну из форм визуализации результатов вычислений, относящихся к линейной алгебре.
В ядро Maple, как отмечалось, введены очень скромные и минимально необходимые средства для решения задач линейной алгебры. Основной упор в их реализации сделан на подключаемые пакеты. Основным из них, унаследованным от предшествующих реализаций системы, является пакет решения задач линейной алгебры linalg. Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Для их просмотра достаточно использовать команду:
Для большинства пользователей системой Maple набор функций пакета оказывается чрезмерно обширным и потому опущен. Укажем, однако, наиболее употребительные функции пакета linalg:
• addcol — добавляет к одному из столбцов другой столбец, умноженный на некоторое число;
• addrow — добавляет к одной из строк другую строку, умноженную на некоторое число;
• angle — вычисляет угол между векторами;
• augment — объединяет две или больше матриц по горизонтали;
• backsub — реализует метод обратной подстановки при решении системы линейных уравнений (см. также forwardsub);
• band — создает ленточную матрицу;
• basis — находит базис векторного пространства;
• bezout — создает Bezout-матрицу двух полиномов;
• BlockDiagonal — создает блок-диагональную матрицу;
• blockmatrix — создает блок-матрицу;
• cholesky — декомпозиция Холесского для квадратной положительно определенной матрицы;
• charmat — создает характеристическую матрицу (charmat(M,v) матрица, вычисляемая как v∙E-М);
• charpoly — возвращает характеристический полином матрицы;
• colspace — вычисляет базис пространства столбцов;
• colspan — находит базис линейной оболочки столбцов матрицы;
• companion — вычисляет сопровождающую матрицу, ассоциированную с полиномом;
• cond — вычисляет число обусловленности матрицы (cond(M) есть величина norm(M)∙norm(M -l ));
• curl — вычисляет ротор вектора;
• definite — тест на положительную (отрицательную) определенность матрицы;
• diag — создает блок-диагональную матрицу;
• diverge — вычисляет дивергенцию векторной функции;
• eigenvals — вычисляет собственные значения матрицы;
• eigenvects — вычисляет собственные векторы матрицы;
• equal — определяет, являются ли две матрицы равными;
• exponential — создает экспоненциальную матрицу;
• ffgausselim — свободное от дробей Гауссово исключение в матрице;
• fibonacci — матрица Фибоначчи;
• forwardsub — реализует метод прямой подстановки при решении системы линейных уравнений (например для матрицы L и вектора b forwardsub(L,b) возвращает вектор решения х системы линейных уравнений L∙x=b);
• frobenius — вычисляет форму Фробениуса (Frobenius) матрицы;
• gausselim — Гауссово исключение в матрице;
• gaussjord — синоним для rref (метод исключения Гаусса-Жордана);
• geneqns — генерирует элементы матрицы из уравнений;
• genmatrix — генерирует матрицу из коэффициентов уравнений;
• grad — градиент векторного выражения;
• GramSchmidt — вычисляет ортогональные векторы;
• hadamard — вычисляет ограничение на коэффициенты детерминанта;
• hessian — вычисляет гессиан-матрицу выражения;
• hilbert — создает матрицу Гильберта;
• htranspose — находит эрмитову транспонированную матрицу;
• ihermite — целочисленная эрмитова нормальная форма;
• indexfunc — определяет функцию индексации массива;
• innerprod — вычисляет векторное произведение;
• intbasis — определяет базис пересечения пространств;
• ismith — целочисленная нормальная форма Шмитта;
• iszero — проверяет является ли матрица ноль-матрицей;
• jacobian — вычисляет якобиан векторной функции;
• JordanBlock — возвращает блок-матрицу Жордана;
• kernel — находит базис ядра преобразования, соответствующего данной матрице;
• laplacian — вычисляет лапласиан;
• leastsqrs — решение уравнений по методу наименьших квадратов;
• linsolve — решение линейных уравнений;
• Ludecomp — осуществляет LU-разложение;
• minpoly — вычисляет минимальный полином матрицы;
• mulcol — умножает столбец матрицы на заданное выражение;
• mulrow — умножает строку матрицы на заданное выражение;
• multiply — перемножение матриц или матрицы и вектора;
• normalize — нормализация вектора;
• orthog — тест на ортогональность матрицы;
• permanent — вычисляет перманент матрицы — определитель, вычисляемый без перестановок;
• pivot — вращение относительно элементов матрицы;
• potential — вычисляет потенциал векторного поля;
• Qrdecomp — осуществляет QR-разложение;
• randmatrix — генерирует случайные матрицы;
• randvector — генерирует случайные векторы;
• ratform — вычисляет рациональную каноническую форму;
• references — выводит список основополагающих работ по линейной алгебре;
• rowspace — вычисляет базис пространства строки;
• rowspan — вычисляет векторы охвата для места столбца;
• rref — реализует преобразование Гаусса-Жордана матрицы;
• scalarmul — умножение матрицы или вектора на заданное выражение;
• singval — вычисляет сингулярное значение квадратной матрицы;
• singularvals — возвращает список сингулярных значений квадратной матрицы;
• smith — вычисляет Шмиттову нормальную форму матрицы;
• submatrix — извлекает указанную подматрицу из матрицы;
• subvector — извлекает указанный вектор из матрицы;
• sumbasis — определяет базис объединения системы векторов;
• swapcol — меняет местами два столбца в матрице;
• swaprow — меняет местами две строки в матрице;
• sylvester — создает матрицу Сильвестра из двух полиномов;
• toeplitz — создает матрицу Теплица;
• trace — возвращает след матрицы;
• vandermonde — создает вандермондову матрицу;
• vecpotent — вычисляет векторный потенциал;
• vectdim — определяет размерность вектора;
• wronskian — вронскиан векторных функций.
Назначение многих функция вполне очевидно из названия. Далее мы рассмотрим более подробно некоторые функции из этого пакета. С деталями синтаксиса (достаточно разнообразного) для каждой из указанных функций можно ознакомиться в справочной системе Maple. Для этого достаточно использовать команду ?name;, где name — имя функции (из приведенного списка).
6.2.2. Интерактивный ввод матриц
Для интерактивного ввода матриц можно, определив размерность некоторого массива, использовать функцию entermatrix:
После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид:
Создать вектор в maple
Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg . Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg) .
Способы задания векторов.
Для определения вектора в Maple используется команда vector([x1,x2,…,xn]), где в квадратных скобках через запятую указываются координаты вектора. Например:
Координату уже определенного вектора x можно получить в строке вывода, если ввести команду x[i] , где i — номер координаты. Например, первую координату заданного в предыдущем примере вектора можно вывести так:
Вектор можно преобразовать в список и, наоборот, с помощью команды convert(vector, list) или convert(list, vector).
Сложить два вектора a и b можно с помощью двух команд:
Команда add позволяет вычислять линейную комбинацию векторов a и b : , где — скалярные величины, если использовать формат: matadd(a,b,alpha,beta) .
Скалярное, векторное произведение векторов и угол между векторами.
Скалярное произведение двух векторов вычисляется командой dotprod(a,b).
Векторное произведение двух векторов вычисляется командой crossprod(a,b).
Угол между двумя векторами a и b вычисляется с помощью команды angle(a,b) .
Норму (длину) вектора , которая равна , можно вычислить с помощью команды norm(а,2) .
Можно нормировать вектор а с помощью команды normalize(a), в результате выполнения которой будет получен вектор единичной длины .
Нахождение базиса системы векторов. Ортогонализация системы векторов по процедуре Грамма-Шмидта.
Если имеется система n векторов , то с помощью команды basis([a1,a2,…,an]) можно найти базис этой системы.
При помощи команды GramSchmidt([a1,a2,…,an]) можно ортогонализовать систему линейно-независимых векторов .
Задание 1.
1. Даны два вектора: и . Найти и угол между a и b . Для решения этой задачи наберите:
2. Найти векторное произведение , а затем скалярное произведение , где , .
3. Найти норму вектора .
4. Из системы векторов: , , , , выделить базис и ортогонализовать его по процедуре Грамма-Шмидта:
g := [ a1, a2, a3, a5 ]
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Как задать вектор в maple
Иллюстрированный самоучитель по Maple 6/7
В библиотечном файле Unalg имеются следующие функции для задания векторов и матриц:
- vector(n,list) – создание вектора с n элементами, заданными в списке list;
- matrix(n,m,list) – создание матрицы с числом строк n и столбцов m с элементами, заданными списком list.
Ниже показано применение этих функций:
Обратите внимание на последние примеры – они показывают вызов индексированных переменных вектора и матрицы.
Функции для работы с векторами и матрицами
Для работы с векторами и матрицами Maple 7 имеет множество функций, входящих в пакет linalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории.
С помощью каких команд можно ввести вектор, матрицу?
Для определения вектора в Maple используется команда vector([x1,x2,…,xn]), где в квадратных скобках через запятую указываются координаты вектора.
Для определения матрицы в Maple можно использовать команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]), где n— число строк, m – число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую.
Какими двумя командами можно сложить два вектора одинаковой размерности (2 матрицы)?
1)evalm(a+b);
2)matadd(a,b).
Команда add позволяет вычислять линейную комбинацию векторов a и b: , где — скалярные величины, если использовать формат: matadd(a,b,alpha,beta).
Какие виды произведений векторов вычисляются Maple и какие команды для этого используются?
Скалярное произведение двух векторов вычисляется командой dotprod(a,b).
Векторное произведение двух векторов вычисляется командой crossprod(a,b).
Как вычислить норму вектора?
Норму (длину) вектора , которая равна , можно вычислить с помощью команды norm(а,2).
Можно нормировать вектора с помощью команды normalize(a), в результате выполнения которой будет получен вектор единичной длины .
Как вычислить угол между двумя векторами?
Угол между двумя векторами a и b вычисляется с помощью команды angle(a,b).
Опишите команды нахождения базиса системы векторов и построение ортогонального базиса системы векторов.
Если имеется система n векторов , то с помощью команды basis([a1,a2,…,an]) можно найти базис этой системы.
При помощи команды GramSchmidt([a1,a2,…,an]) можно ортогонализовать систему линейно-независимых векторов .
Какими двумя командами можно вычислить произведение двух матриц (или матрицы на вектор)?
1)evalm(A&*B);
Multiply(A,B).
В качестве второго аргумента в командах, вычисляющих произведение, можно указывать вектор.
Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число.
Какие команды используются для нахождения определителя, минора, алгебраического дополнения, следа матрицы?
Определитель матрицы А вычисляется командой det(A).Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-ой строки и j-ого столбца. Минор Mij элемента aij матрицы А можно вычислить командой det(minor(A,i,j)).Ранг матрицы А вычисляется командой rank(A). След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A).
Что такое дефект матрицы? Опишите способ нахождения дефекта квадратной матрицы. Какие команды при этом используются?
Дефект вычисляется по формуле
Какая матрица называется обратной и какими способами она вычисляется в Maple?
Обратную матрицу А — 1 , такую что А — 1 А=АА — 1 =Е, где Е — единичная матрица, можно вычислить двумя способами:
1)evalm(1/A);
Inverse(A).
Что называется собственным вектором и собственным числом матрицы? Что называется спектром матрицы? Какие команды используются для нахождения спектра матрицы и ее собственных векторов? В каком виде в Maple выводятся результаты выполнения этих команд?
Если Ах=lх, то вектор х называется собственным вектором матрицы А, а число l – собственным числом, соответствующим данному собственному вектору. Совокупность всех собственных чисел матрицы называется спектром матрицы.
Для нахождения собственных чисел матрицы А используется команда eigenvalues(A).Для нахождения собственных векторов матрицы А используется команда eigenvectors(A).
Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой.
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).
5. Функции для работы, с векторами и матрицами
Для работы с векторами и матрицами Maple 7 имеет множество функций, входящих в пакет linalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории.
Операции со структурой отдельного вектора V и матрицы М:
- coldim(M) — возвращает число столбцов матрицы М;
- rowdim(M) — возвращает число строк матрицы М;
- vectdim(V) — возвращает размерность вектора V;
- col(M,i) — возвращает i-й столбец матрицы М;
- row(M,i) — возвращает i-ю строку матрицы М;
- tninor(M,i, j) — возвращает минор матрицы М для элемента с индексами i и j;
- delcols(M,i.. j) — удаляет столбцы матрицы М от i-roдо j-ro;
- del rows (V,i..j) — удаляет строки матрицы М от i-й до j-й;
- extend (М, т, n,х) — расширяет матрицу М на m строк и n столбцов с применением заполнителя х.
Основные векторные и матричные операции:
- dotprod(U,V) — возвращает скалярное произведение векторов U и V;
- crossprod(U,V) — возвращает векторное произведение векторов U и V;
- norm(V) или norm(M) — возвращает норму вектора или матрицы;
- copyinto(A,B,i, j) — копирует матрицу А в В для элементов последовательно от i до j;
- concat(Ml,M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2;
- stack(Ml,M2) — возвращает объединенную матрицу с вертикальным слиянием Ml и М2;
- matadd(A,B) и evalm(A+B) — возвращает сумму матриц А и В;
- multlply(A,B) и evalm(A&*B) — возвращает произведение матриц А и В;
- adjoint (М) или adj(M) — возвращает присоединенную матрицу, такую что M?adj(M) дает диагональную матрицу, определитель которой есть det(M);
- charpoly(M,lambda) — возвращает характеристический полином матрицы М относительно заданной переменной lambda;
- det(M) — возвращает детерминант (определитель) матрицы М;
- Eigenvals(M,vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы;
- jordan(M) — возвращает матрицу М в форме Жордана;
- hermite(M) — возвращает матрицу М в эрмитовой форме;
- trace(M) — возвращает след матрицы М;
- rank(M) — возвращает ранг матрицы М;
- transpose(M) — возвращает транспонированную матрицу М;
- inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М;
- singularvals(A) — возвращает сингулярные значения массива или матрицы А.
Приведем примеры применения некоторых из этих функций:
Читатель, понимающий суть матричных вычислений, легко справится с тестированием других функций, входящих в пакет linalg. В приведенных примерах полезно обратить внимание на то, что многие матричные функции способны выдавать результаты вычислений в аналитическом виде, что облегчает разбор выполняемых ими операций.
Линейная алгебра
Искусство использования матриц и векторов для решения задач физики

Матрицы, векторы и основные операции с ними
Прежде всего, надо знать, как создавать матрицы и векторы в Maple. Есть много способов, но рекомендуется близкий к тому, как это делает MatLab. Матрица A , содержащая 1, 2, 3, 4, получается так:
Для ссылок на элементы матрицы применяются обозначения вида A[row,column] , т. е.:
Если надо только определить матрицу B , но не присваивать ей значения, пишется:
Как только В определена, присвоить ей значения можно любым способом, в том числе и вручную:
Можно посмотреть на В , чтобы удостовериться в том, что все правильно:
Детали – см. справку, задав ?Matrix .
Можно создать векторы-столбцы или строки с помощью команды Vector :
По умолчанию создается вектор-столбец.
Для создания вектора-строки (row) надо сказать об этом Maple:
Если надо заполнить векторы числами из строк или столбцов матрицы – примените команды Column и Row . Например, чтобы заполнить с вторым столбцом матрицы А , надо написать:
Для заполнения с первой строкой А :
Вот еще удобный способ для определения матриц и векторов-столбцов без специальной команды, с помощью синтаксической конструкции ColumnRow :
А поскольку матрица представляется как набор векторов-столбцов, то её можно определить таким же способом:
Об этой форме представления надо знать, поскольку она часто используется в Maple help.
Определить матрицы в Maple можно с помощью MatrixPalette – палитры слева от рабочего листа. Использование элементов ее интерфейса очевидно, термины в основном понятны (на всякий случай: skewsymmetric – кососимметрическая). Установите курсор в пустую группу (лучше делать это на отдельном листе, как обычно) и выберите нужные опции в окне палитры. Можно вручную заполнить элементы матрицы m[x, x], можно использовать шаблон для матриц определенного вида. После этого она готова для присваивания с помощью := .
В Maple матрицы и векторы могут содержать и числа, и формулы:
Теперь предположим, что надо задать значения х и у и затем посмотреть на матрицы в представлении с плавающей запятой.
Уже было известно, что надо применить evalf :
Проблема в том, что е – это не выражение, а матрица выражений, поэтому Maple нужны две команды eval : evalm внутри, чтобы сослаться непосредственно на элементы е и evalf снаружи и запустить расчеты с плавающей запятой.
Спросите ?evalm , чтобы увидеть о чем эта команда, или
Запомните, что для получения численного ответа
надо применять десятичные точки в числах.
Функция evalm вычисляет выражения, включая матричные. Она выполняет суммирование, умножение, возведение в целую степень, в том числе для матриц, и показывает отображение функций на матрицы.
Учтите, что, прежде чем передавать аргументы в evalm , Maple может выполнить упрощения, которые будут действительны для матриц. Например, evalm(A^0) возвратит 1, а не единичную матрицу.
Неприсвоенные имена рассматриваются либо как символьные матрицы, либо как скаляры, в зависимости от их использования в выражении.
Для обозначения некоммутативного умножения матриц используйте оператор &* . Произведение матриц ABC может быть введено как A&*B&*C или как &*(A,B,C) , причем последнее более эффективно. Применяется автоматическое упрощение, такое как сбор констант и степеней. Не используйте * , чтобы обозначить чистое умножение матриц, поскольку это вернет ошибку. Операндами &* должны быть матрицы (или имена) за исключением 0. Невычисленное произведение матриц рассматривается как матрицы. Оператор &* имеет то же старшинство, что и оператор * .
Используйте 0, чтобы обозначить нулевой скаляр или матрицу. Применяйте &*() для обозначения единичной матрицы. Возможно, удобно применять alias(Id=&*()) .
Если в сумме есть матрица и константа, то Maple рассматривает константу как умноженную на единичную матрицу. Следовательно, матричные полиномы можно вводить в точности так, как скалярные полиномы.
Как задать матрицу в maple
Лекция 10. Пакеты для математической обработки данных.Maple. Матрицы и графики
Использование пакета для решения задач экономического профиля.
Работа с массивами
Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командойwith(linalg).
Способы задания векторов
Для определения вектора в Mapleиспользуется командаvector([x1,x2,…,xn]),где в квадратных скобках через запятую указываются координаты вектора. Например:
Координату уже определенного вектора xможно получить в строке вывода, если ввести командуx[i], гдеi номер координаты. Например, первую координату заданного в предыдущем примере вектора можно вывести так:
Сложение векторов
Сложить два вектора aиbможно с помощью двух команд:
2) matadd(a,b).
Скалярное, векторное произведение векторов и угол между векторами

Скалярное произведение двух векторов вычисляется командойdotprod(a,b).

Векторное произведение двух векторов вычисляется командойcrossprod(a,b).
Угол между двумя векторами aиbвычисляется с помощью командыangle(a,b).
Норма вектора
Норму (длину) вектора
, которая равна
, можно вычислить с помощью командыnorm(а,2).

Можно нормировать вектор ас помощью командыnormalize(a),в результате выполнения которой будет получен вектор единичной длины.
1. Даны два вектора:
и
. Найти
и угол междуaиb. Для решения этой задачи наберите:

2. Найти векторное произведение
, а затем скалярное произведение
, где
,
.

3. Найти норму вектора .
> restart; with(linalg):

Определение матрицы
Для определения матрицы в Maple можно использовать командуmatrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]),гдеn число строк,m– число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:

В Maple матрицы специального вида можно генерировать с помощью дополнительных команд. В частности диагональную матрицу можно получить командой diag. Например:
> J:=diag(1,2,3);

Генерировать матрицу можно с помощью функции f(i, j) от переменных i, j – индексов матрицы: matrix(n, m, f), где где n — число строк, m – число столбцов. Например:


Число строк в матрице А можно определить с помощью команды rowdim(A), а число столбцов – с помощью команды coldim(A).
Арифметические операции с матрицами
Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: evalm(A+B) или matadd(A,B). Произведение двух матриц может быть найдено с помощью двух команд:
В качестве второго аргумента в командах, вычисляющих произведение, можно указывать вектор, например:






Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:

Определители, миноры и алгебраические дополнения. Ранг и след матрицы.
Определитель матрицы А вычисляется командой det(A). Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-ой строки и j-ого столбца. Минор Mij элемента aij матрицы А можно вычислить командой minor(A,i,j). Ранг матрицы А вычисляется командой rank(A). След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A).


> trace(A);
Обратная и транспонированная матрицы
Обратную матрицу А 1 , такую что А 1 А=АА 1 =Е, где Е единичная матрица, можно вычислить двумя способами:
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Maple, написание процедуры для вычисления инверсии матрицы
Итак, я работаю над проблемой, которая состоит из двух частей. Я закончил первую часть с помощью: этого полезного форума. Кто-то уже пытался решить первую часть проблемы, и я взял их код.
К проблеме:
- Напишите процедуру (здесь я назвал ее «уменьшенный» ) в Maple, которая вычисляет уменьшенную форму эшелона матрицы.
- Напишите процедуру, которая использует «уменьшенный» для вычисления обратной матрицы.
Код к первой части (Код протестирован, и я утверждаю, что он работает правильно)
И основная процедура:
Если вам нужна дополнительная информация о приведенном выше коде, я объясню подробнее.
Для второй части я думаю использовать алгоритм Гаусса Джордана, но у меня есть проблема : Я не могу использовать единичную матрицу в качестве параметра в «сокращенном». потому что у него 0 в строках и столбцах.
У вас есть идеи, как я могу реализовать алгоритм Гаусса Джордана с помощью моей процедуры: сокращено?
Exponenta.ru
Основные объекты и команды Maple. Решение математических задач в Maple Квадратный корень из матрицы в maple
В Maple имеется несколько способов представления функции.
Способ 1. Определение функции с помощью оператора присваивания (:= ): какому-то выражению присваивается имя, например:
Если задать конкретное значение переменной х , то получится значение функции f для этого х . Например, если продолжить предыдущий пример и вычислить значение f при , то следует записать:
После выполнения этих команд переменная х имеет заданное значение .
Чтобы насовсем не присваивать переменной конкретного значения, удобнее использовать команду подстановки subs( ,f), где в фигурных скобках указываются переменные хi и их новые значения аi (i =1,2,…), которые следует подставить в функцию f . Например:
Все вычисления в Maple по умолчанию производятся символьно, то есть результат будет содержать в явном виде иррациональные константы, такие как, и другие. Чтобы получить приближенное значение в виде числа с плавающей запятой, следует использовать команду evalf(expr,t), где expr – выражение, t – точность, выраженная в числах после запятой. Например, в продолжение предыдущего примера, вычислим полученное значение функции приближенно:
Здесь использован символ (% ) для вызова предыдущей команды.
Способ 2. Определение функции с помощью функционального оператора, который ставит в соответствие набору переменных (x1,x2,…) одно или несколько выражений (f1,f2,…) . Например, определение функции двух переменных с помощью функционального оператора выглядит следующим образом:
Обращение к этой функции осуществляется наиболее привычным в математике способом, когда в скобках вместо аргументов функции указываются конкретные значения переменных. В продолжение предыдущего примера вычисляется значение функции:
Способ 3. С помощью команды unapply(expr,x1,x2,…) , где expr – выражение, x1,x2,… – набор переменных, от которых оно зависит, можно преобразовать выражение expr в функциональный оператор. Например:
В Maple имеется возможность определения неэлементарных функций вида
> piecewise(cond_1,f1, cond_2, f2, …).
записывается следующим образом.
Кафедра: Информационные Технологии
Лабораторная Работа
На тему: «СИНТАКСИС, ОСНОВНЫЕ ОБЪЕКТЫ И КОМАНДЫ СИСТЕМЫ MAPLE «
Москва, 2008 год
· знать основные объекты и переменные системы Maple;
· знать и уметь применять команды, используемые при работе с объектами и переменными системы Maple;
· знать синтаксис основных математических функций системы Maple.
Система аналитических вычислений Maple – интерактивная система. В данном случае это означает, что пользователь вводит команду или оператор языка Maple в области ввода рабочего листа и, нажав клавишу , сразу же передает ее аналитическому анализатору системы, который выполняет ее. При правильном введении команды в области вывода появляется результат выполнения этой команды, если команда содержит синтаксические ошибки или ошибки выполнения, система печатает сообщение об этом. Если ошибку надо исправить, то следует вернуться к оператору, откорректировать его и снова выполнить. Выполнив введенную команду, система ожидает очередной команды от пользователя. Можно вернуться в любой момент к любой команде или оператору на рабочем листе, подкорректировать его и снова выполнить. Однако, если на рабочем листе есть команда, использующая результат вновь вычисленной, то ее следует также снова вычислить, установив на нее курсор, и, нажав клавишу , а если таких команд много, то можно выполнить команду графического интерфейсаEdit ® Execute ® Worksheet для повторного вычисления всех команд рабочего листа.
Каждый оператор или команда обязательно завершаются разделительным знаком. Таких знаков в системе Maple два – точка с запятой (;) и двоеточие (:). Если предложение завершается точкой с запятой, то оно вычисляется, а в области вывода отображается результат. При использовании двоеточия в качестве разделителя команда выполняется, но результаты ее работы не отображаются в области вывода рабочего листа. Это удобно, например, при программировании в Maple, когда нет необходимости в выводе каких-то промежуточных результатов, получаемых из операторов цикла, так как вывод этих результатов может занять много места на рабочем листе, да и может потребоваться значительное количество времени на их отображение.
Здесь и далее для команд Maple используется запись в форме синтаксиса языка Maple. Если при выполнении примеров возникает желание отображать команды в математической нотации, то следует командой Options ® Input Display ® Standard Math Notation установить соответствующий режим отображения.
В Maple реализован свой язык, с помощью которого происходит общение пользователя с системой. Базовыми понятиями являются объекты и переменные, из которых с помощью допустимых математических операций составляются выражения.
Простейшими объектами , с которыми может работать Maple , являются числа, константы и строки.
Числа в системе Maple могут быть следующих типов: целые, обыкновенные дроби, радикалы, числа с плавающей точкой и комплексные. Первые три типа чисел позволяют выполнять точные вычисления (без округлений) разнообразных математических выражений, реализуя точную арифметику. Числа с плавающей точкой являются приближенными, в которых число значащих цифр ограничено. Эти числа служат для приближения (или аппроксимации) точных чисел Maple. Комплексные числа могут быть как точными, если действительная и мнимая части представлены точными числами, так и приближенными, если при задании действительной и мнимой частей комплексного числа используются числа с плавающей точкой.
Целые числа задаются в виде последовательности цифр от 0 до 9. Отрицательные числа задаются со знаком минус (–) перед числом, нули перед первой ненулевой цифрой являются не значащими и не влияют на величину целого числа. Система Maple может работать с целыми числами произвольной величины, количество цифр практически ограничено числом 2 28 . Вычисления с целыми числами реализуют четыре арифметических действия (сложение +, вычитание –, умножение *, деление /) и вычисление факториала (!).
Maple представляет большое целое число, которое не помещается в строке области вывода используя символ обратного слэша (\) в качестве символа продолжения вывода на следующей строке. Последняя команда вычисляет количество цифр в результате предыдущего вычисления. В ней в качестве параметра используется операция%, которая является всего лишь удобной формой ссылки на результат выполнения предыдущей операции. В Maple имеются еще две подобные операции, которые идентифицируют результаты предпредыдущей и предпредпредыдущей команд.Их синтаксис выглядит, соответственно, следующим образом:
В Maple имеется достаточно большой набор команд, позволяющих выполнить действия, специфичные при обработке целых чисел: разложение на простые множители (ifactor), вычисление частного (iquo) и остатка (irem) при выполнении операции целого деления, нахождения наибольшего общего делителя двух целых чисел (igcd), выполнение проверки, является ли целое число простым (isprime) и многое другое.
Для проверки вычисления частного и остатка двух целых чисел использованы операции получения результата выполнения предыдущей (вычисление частного) и предпредыдущей (вычисление остатка) команд. Результатом команды isprime () является булева константа true (истина) или false (ложь).
Набрав в области ввода рабочего листа команду? integer, можно получить список всех команд для работы с целыми числами
Обыкновенные дроби задаются с помощью операции деления двух целых чисел. Заметим, что Maple автоматически производит операцию сокращения дробей. Над обыкновенными дробями можно выполнять все основные арифметические операции.
Если при задании дроби ее знаменатель сокращается (см. последнее вычисление в примере), то такая «дробь» трактуется системой Maple как целое число.
Часто представление результата в виде обыкновенной дроби не совсем удобно, и возникает задача преобразования ее в десятичную дробь. Для этого используется команда evalf(), которая аппроксимирует обыкновенную дробь числами с плавающей точкой, используя десять значащих цифр в мантиссе их представления. Если точность по умолчанию не достаточна, то ее можно задать вторым параметром указанной функции.
Дробь и ее десятичное представление не являются идентичными объектами Maple. Десятичное представление всего лишь аппроксимация точной величины, представленной обыкновенной дробью.
Радикалы задаются как результат возведения в дробную степень целых или дробных чисел, или вычисления из них же квадратного корня функцией sqrt(), или вычисления корня n ‑ой степени с помощью функции surd (число, n). Операция возведения в степень задается символом ^ или последовательностью из двух звездочек (**). При возведении в степень дробей их следует заключать в круглые скобки, как, впрочем, и дробный показатель степени. При задании радикалов также производятся возможные упрощения, связанные с вынесением из-под знака радикала максимально возможной величины.
Вычисления с целыми, дробями и радикалами являются абсолютно точными, поскольку при работе с этими типами данных программа Maple не производит никаких округлений в отличие от чисел с плавающей точкой.
Числа с плавающей точкой задаются в виде целой и дробной частей, разделенных десятичной точкой, с предшествующим знаком числа, например, 3.4567, -3.415. Числа с плавающей точкой можно задавать, используя так называемую экспоненциальную форму записи, в которой сразу же после вещественного числа с плавающей точкой или обычного целого, называемого мантиссой, ставится символ е или е, после которого задается целое число со знаком (показатель степени). Такая форма записи означает, что мантиссу следует умножить на десять в степени числа, соответствующего показателю степени, чтобы получить значение числа, записанного в такой экспоненциальной форме. Например, 2.345е4 соответствует числу 23450.0. Таким образом, можно представлять очень большие по абсолютному значению числа (показатель степени положительное число) или очень маленькие (показатель степени отрицательное число).
Из чисел составляются математические выражения с помощью арифметических операций. Символы арифметических операций в Maple перечислены в табл. 1.
Таблица 1. Арифметические операции
Последовательность выполнения арифметических операций соответствует стандартным правилам старшинства операций в математике: сначала производится возведение в степень, затем умножение и деление, а в конце – сложение и вычитание. Все действия выполняются слева направо. Операция вычисления факториала имеет наибольший приоритет. Для изменения последовательности арифметических операций следует использовать круглые скобки.
Если все числа в выражении являются целыми, дробями или радикалами, то результат представляется также с использованием этих типов данных, но если в выражении присутствует число с плавающей точкой, то результатом вычисления такого «смешанного» выражения будет также число с плавающей точкой, если только в выражении не присутствует радикал. В этом случае радикал вычисляется точно, а коэффициент при нем вычисляется либо точно, либо в виде числа с плавающей точкой в зависимости от типа сомножителей.
Система аналитических вычислений Maple всегда пытается произвести вычисления с абсолютной точностью. Если это не получается, тогда подключается арифметика с вещественными числами.
Maple умеет работать и с комплексными числами . Для мнимой единицы
в Maple используется константа I . Задание комплексного числа не отличается от его обычного задания в математике.
04. 01 Преобразование уравнений. Команды lhs и rhs
* Entering and Manipulating Equations: The lhs and rhs commands *
Напомним, что уравнению, точно так же как и выражению, можно присвоить имя. В следующей командной строке мы введём уравнение и присвоим ему имя » eq1 » :
Мы можем вывести на экран левую и правую части уравнения по-отдельности при помощи команд lhs и rhs :
Воспользуемся командами lhs и rhs для того, чтобы привести уравнение к стандартному виду, в котором все члены собраны слева, а справа остался только 0:
> eq2:=lhs(eq1)-rhs(eq1)=0;
04. 02 Нахождение точных корней. Команда solve
* Finding Exact Solutions: The solve command *
Рассмотрим вначале рациональные уравнения. Известно, что существуют алгоритмы определения точных корней рациональных корней вплоть до 4-го порядка включительно. В Maple-команду solve и заложены эти алгоритмы.
Воспользуемся командой solve для нахождения точных корней кубического уравнения :
Обратите внимание: в команде мы указываем, относительно какой переменной следует решать уравнение. Хотя в нашем конкретном случае это и не обязательно:
Maple нашел все 3 действительных корня и вывел их (в неупорядоченном виде ).
Иногда очень важно выбрать конкретный корень, чтобы потом использовать в дальнейших преобразованиях именно его. Для этого заранее следует присвоить имя результату исполнения команды solve . Назовём его X . Тогда конструкция X будет соответствовать первому корню из списка (подчеркнем: это не обязательно меньший корень! ), X — второму корню, и т.д. (Скобки — квадратные! ):
Посмотрите, однако, что будет выведено в результате выполнения похожей команды:
Ещё раз подчеркнём: практика показывает, что уравнению целесообразно присвоить имя. Традиционно в Maple такое имя начинается с букв eq :
(Не путать оператор присваивания » := » со знаком равенства » = » !)
Теперь решим уравнение при помощи команды solve . Множеству корней присвоим имя X :
Для убедительности проверим, нет ли среди найденных корней посторонних. Проверку выполним непосредственной подстановкой
Разумеется, частенько «точные» решения довольно громоздки, если не сказать иначе. Например, это касается уравнения :
Теперь Вам понятно, о чем речь? Для себя заметьте, что мнимая единица в Maple обозначается посредством прописной буквы I . Разумеется, в таких случаях не грех найти приближенные значения корней. Имея на руках точное решение, Вы и сами сообразите, как это сделать:
В подобных ситуациях хорошей альтернативой команде solve является fsolve , особенности которой будут рассмотрены в следующем параграфе.
Команда solve используется при отыскании точных решений не только рациональных уравнений. Ниже приведено несколько тому иллюстраций. Но для многих типов иррациональных, показательных, логарифмических, тригонометрических и даже рациональных уравнений точное решение искать бесполезно. На помощь призывается команда fsolve .
Иногда (а в тригонометрии — всегда ) Maple, по умолчанию , не выводит всё множество корней:
Но безвыходных ситуаций не бывает! Взяв за основу полученный результат, воспользуйтесь своими знаниями тригонометрических уравнений и запишите полное решение (как? ).
Упражнение 4.1
Решить уравнение Разберитесь, сколько различных корней имеет уравнение. Как Maple поступает при наличии равных корней?
Совет : разложите на множители левую часть уравнения.
> factor(x^3-11*x^2+7*x+147);
Корень х = 7 является двукратным, а потому у кубического уравнения только два различных корня. Разложение на множители левой части уравнения — тому подтверждение.
04. 03 Поиск приближенных корней. Команда fsolve
* Finding Approximate Solutions: The fsolve command *
Для приближенного решения уравнений используется Maple-команда fsolve . В случае рационального уравнения, fsolve выводит весь список действительных корней (см. Пример 01). Для трансцендентных уравнений эта команда, по умолчанию, выводит только один корень (см. Примеры 02 и 03).
При помощи fsolve найдём приближенные значения сразу всех четырёх действительных корней рационального уравнения :
Эти четыре корня и составляют исчерпывающее решение исходного рационального уравнения (хотя и приближенное ).
Используя команду fsolve , найти хотя бы один действительный корень уравнения :
Maple и вывел только один корень. На этот раз Maple не стал «живописать». Как теперь убедиться в том, что других действительных корней нет? Следующий пример даёт такой инструментарий.
Получить все действительные корни уравнения и убедиться в этом.
Шаг первый ( Основная идея ) : найдём графическое решение уравнения. Для этого построим график функции, стоящей в левой части уравнения. Абсциссы точек пересечения этого графика с осью Ох и будут искомыми корнями.
Т.к. мы умело подобрали диапазоны изменений абсцисс и ординат точек графика, то легко обнаружим 4 точки пересечения линии с осью Ох. Одна из них соответствует корню, найденному в Примере 02 (какая именно? ).
Второй корень очевиден: х = 0. А как поточнее найти остальные?
Шаг второй ( Уточнение ) : применим команду fsolve более «зряче». В Maple предусмотрена возможность указания промежутка, на котором отыскиваются корни. В частности, для определения отрицательного корня нашего уравнения, укажем, что поиски следует вести в «районе» [-1;-0.2]. Об этом красноречиво свидетельствует графическое решение.
Оставшиеся корни явно принадлежат промежуткам и . Расскажем об этом команде fsolve :
Ну а что произойдёт, если мы подсунем Maple «пустой участок»? Например, отрезок для нашего уравнения. Там графического решения явно нет:
Maple выдаёт название команды, само уравнение, имя аргумента и отрезок. Т.е. ничего нового. Мол: «Ищите корни сами, а я не нашел».
Шаг третий ( Дополнительный анализ ) : Как теперь удостовериться в том, что найдены все корни , а не только в видимой области графического решения? Для этого следует расширить интервал поисков:
Новых точек пересечения нет. В конце концов мы понимаем, что экспоненциальное слагаемое на границах промежутка вносит самый существенный вклад в величину функции из левой части уравнения. Значения функции в этой области стремятся к , а потому дополнительных корней нам не найти.
Попробуем в других местах: справа и слева от области найденных корней.
И здесь ни одного дополнительного корня! Поняв, что с влиянием показательной части уравнения всё ясно, делаем окончательные выводы.
Исчерпывающее решение уравнения состоит из четырёх корней: -.8251554597 , 0 , 1.545007279 , 4.567036837 .
Применим команду fsolve для приближенного решения трансцендентного уравнения .
Как и в предыдущем случае, найдём вначале качественное графическое решение. Для этого ещё нужно угадать, как разбросать по обеим частям уравнения его члены. Но графические возможности Maple настолько великолепны, что почти всегда можно собирать все члены уравнения с одной стороны.
Рассмотрим уравнение, равносильное данному: . Абсциссы точек пересечения графика функции, стоящей в левой части уравнения, с осью Ох и будут искомыми корнями.
График указывает область поисков корней: промежуток . Настаёт черёд команды fsolve :
Корень найден. Но, очевидно, он — не единственный. Расширьте область поисков и ещё раз примените команду fsolve для отыскания второго корня.
Упражнение 4.2
Найти все действительные корни уравнения , начав с графического решения.
Построим график левой части уравнения:
В результате находим корни уравнения в первом приближении: -2 ; -1.5 ; 0 . Применим теперь команду fsolve без указания диапазона поиска (оценим возможности Maple ):
С удовлетворением отмечаем, что Maple выводит все три корня (Не будем забывать, что решали рациональное уравнение.)
Упражнение 4.3
Найти все корни уравнения . Воспользуйтесь графическим решением. Проверьте каждый корень непосредственной подстановкой.
Приведём уравнение к стандартному (для этого раздела) виду:
Теперь построим график левой части уравнения:
По всей видимости, существует два корня. Один примерно равен -2, а другой, похоже, 2.
Применим команду fsolve , ограничив диапазон поиска:
Непосредственной подстановкой проверим корни:
Обратите внимание: в обоих случаях истинного равенства нет. С учётом ошибок при округлении, разумное расхождение вполне допустимо.
Убедитесь в отсутствии других корней. Ответ обоснуйте.
Упражнение 4.4
Графики функций и дважды пересекаются на отрезке [-5;5].
а). Постройте в одной системе координат графики обеих функций и при помощи мыши найдите координаты точек пересечения.
b). Составьте уравнение, корнями которого являются абсциссы точек пересечения графиков.
c). Используйте команду fsolve для решения этого уравнения.
d). Используйте результаты из пункта с) для оценки ординат точек пересечения графиков.
e). У Вас не создалось впечатление, что линии могут пересекаться и в третьей точке с координатами (1;9)? Используйте fsolve и графические возможности Maple, чтобы убедиться в противном.
Теперь построим графики функций:
Приближенные координаты точек пересечения: (-1.8, 6.6) и (2.75, 2) .
b) Составим уравнение:
с) Команда fsolve поможет найти соответствующие корни:
d) Используем команду subs для определения соответствующих ординат точек пересечения:
Общие точки графиков: (-1.800,6.763) и (2.773,2.311) .
e) Графически исследуем окрестность точки х = 1:
Команда fsolve на этот раз позволит доказать отсутствие корней вблизи точки х = 1:
04. 04 Решение уравнений в общем виде
* Solving Literal Equations *
Во многих случаях Maple находит решение уравнения в общем (символьном) виде. Речь идёт об уравнении (а не системы!), содержащем несколько переменных. Решение состоит в том, что какая-то из переменных выражается через остальные.
Пусть необходимо решить уравнение относительно переменной g . По привычке, используем команду solve . И она оправдывает наши надежды:
А так решение можно оформить в привычном виде:
Упражнение 4.4
Решить последнее уравнение относительно других переменных: T, k и v.
Упражнение 4.5
Решить уравнение относительно у. Присвоить последовательности корней имя S. Как связаны корни S и S ?
Корни отличаются только знаком.
РЕШЕНИЕ МАТЕМАТИЧЕСКИХ ЗАДАЧ
В MAPLE
ЧАСТЬ I
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего
«Нижегородский государственный университет им. »
МАТЕМАТИЧЕСКИХ ЗАДАЧ В MAPLE
факультета для студентов, обучающихся по
направлению подготовки 010100 — «Математика».
Решение задач в MAPLE. Часть I. Составители: , : Учебно-методическая разработка. – Н. Новгород: Издательство Нижегородского госуниверситета, 2007. – 35 с.
доцент кафедры ЧиФА факультета ВМК,
доцент кафедры ПиУОС Физического факультета,
Данная разработка представляет собой практическое руководство по изучению возможностей пакета аналитических вычислений Maple . Последовательное изучение тем и выполнение заданий позволит шаг за шагом освоить основные приемы работы в математической системе Maple .
Учебно-методическая разработка предназначена для студентов 2 и 3 курсов механико-математического факультета .
университет им. , 2007
Системы компьютерной алгебры – это новые технологии в научных исследованиях и образовании. В последние годы получили широкое распространение такие системы общего назначения, как Maple, Mathematica.
Система Maple включена в интегрированную систему Scientific WorkPlace и применяется во многих ведущих университетах мира как в научных исследованиях, так и в учебном процессе. Ядро Maple входит в другие распространенные пакеты, такие как MathCad, MathLab.
Данная разработка позволит начинающему войти в технологию использования системы Maple, получить первые навыки, после чего он сможет уже самостоятельно разобраться в более тонких вопросах использования Maple. Хотелось бы отметить, что эта разработка ни в коей мере не является описанием системы Maple. Она предназначена в первую очередь для обучения студентов-математиков решению основных математических задач при помощи Maple.
1. НАЧАЛЬНЫЕ СВЕДЕНИЯ. ТИПЫ ДАННЫХ
Диалог с системой протекает в стиле «вопрос-ответ». Команда начинается с символа > и заканчивается либо точкой запятой (; ), либо двоеточием (: ). Для выполнения команды необходимо нажать клавишу Enter . Если в конце команды стоит точка с запятой, то на экран будет выведен результат действия команды или сообщение об ошибке. Двоеточие в конце команды означает, что команда будет выполнена, но ее результат на экран не будет выводиться. Символ # используется для ввода текстовых комментариев. Также для ввода текста используется клавиша с символом T на панели инструментов. Для возвращения к вводу команд следует нажать клавишу с символом >. Для вызова результата действия предыдущих команд используются символы %, %% или %%%, соответственно. Команда restart отменяет результат действия всех предыдущих команд.
Переменные в Maple характеризуются именем и типом. Имя переменной в Maple может состоять из букв, цифр и некоторых специальных символов, но обязательно должно начинаться с буквы. Ограничений на длину имени нет. Кроме того, Maple различает строчные и прописные буквы. Для присваивания переменной конкретного значения применяется оператор := . Переменные могут использоваться в математических выражениях и функциях без предварительного определения.
Рассмотрим особенности записи в Maple данных числового, строкового и множественного типов.
Выражение принадлежит к целому типу (integer ), если оно состоит из последовательности цифр, не разделенных никакими знаками. Выражения вида a/b, где a, b – целые числа принадлежат к дробному типу (fraction ). К числам с плавающей точкой (float ) относятся выражения вида a. b, a. и. b. Также числа типа float можно записать в показательной форме a*10^b. Комплексные числа (complex ) в Maple записываются в алгебраической форме: a+I*b, где a, b – вещественные числа.
Строковое выражение типа string — это любая конечная последовательность символов, с обеих сторон заключенная в верхние двойные кавычки. Последовательность символов, взятая в обратные кавычки, считается символом (symbol ).
Множество (set ) в Maple задается перечислением в фигурных скобках элементов множества. Например,
https://pandia.ru/text/78/155/images/image003_72.gif» width=»197″ height=»26″>
Для создания массива используется команда array(i1..j1, i2..j2. M), которая возвращает массив с элементами из списка M.
Обращение к элементам множества, списка, массива происходит с указанием индексов элемента в квадратных скобках.
https://pandia.ru/text/78/155/images/image006_53.gif» width=»16 height=19″ height=»19″>
Массив также можно задать командой вида V:=array(1..2,1..2,1..2,); , переопределив затем значения V с помощью оператора присваивания.
В Maple можно записать буквы греческого алфавита в полиграфическом виде. Для этого в командной строке набирается название греческой буквы.
1. Задайте множество A, состоящее из целых чисел от 3 до 20, и множество B, состоящее из квадратов этих чисел. Найдите объединение, пересечение, разность множеств A и B. Найдите мощности всех полученных множеств.
2. Задайте произвольный список и четырехмерный массив.
2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ, ФУНКЦИИ. ПРЕОБРАЗОВАНИЯ АРИФМЕТИЧЕСКИХ
ВЫРАЖЕНИЙ И РЕШЕНИЕ УРАВНЕНИЙ
2.1. Вычисления в Maple
Для записи математических выражений в Maple используются операторы сложения (+), вычитания (-), умножения (*), деления (/), возведения в степень (^), оператор присваивания (:=). Порядок выполнения математических операций является стандартным.
Основные константы в Maple обозначаются следующим образом: Pi — число π, I — мнимая единица i, exp(1) — основание натуральных логарифмов e, infinity – бесконечность, true — истина, false – ложь. Используются следующие знаки сравнения: , >=, , = .
Система Maple одинаково успешно справляется как с символьными вычислениями, так и с численными. По умолчанию расчеты проводятся символьно.
>1/2+123/100+ sqrt (3);
Часть выражения, в которой встречается число, записанное с плавающей запятой (float), будет вычислена приближенно.
>2+ sqrt (2.0)- Pi ;
Все вычисления по умолчанию проводятся с десятью значащими цифрами. Количество значащих цифр можно изменить, применив команду > Digits : = n .
Для того, чтобы получить значение выражения в численном виде используется функция
https://pandia.ru/text/78/155/images/image012_43.gif» width=»414″ height=»19″>
2.2. Задание функций
В Maple встроено большое количество функций. Перечислим обозначения для основных элементарных функций..gif» width=»83 height=57″ height=»57″>
Рассмотрим несколько способов определения новых функций:
1) присваивание переменной некоторого выражения
имя переменной:=выражение;
имя переменной(список параметров):=выражение;
> f (t ):= cos (t )^2+1;
> f (0);
При таком способе задания функции для того, чтобы вычислить значение функции в некоторой точке нужно определить с помощью оператора присваивания значения переменных (параметров), либо использовать оператор подстановки subs.
https://pandia.ru/text/78/155/images/image018_28.gif» width=»106″ height=»33″>
https://pandia.ru/text/78/155/images/image021_25.gif» width=»100″ height=»33″>
>x := Pi : y :=10: f ;
Команда value (выражение) используется для вычисления значения выражения.
Следует обратить внимание на то, что после присвоения переменной x конкретного значения x:=a, переменная x перестанет быть неопределенной. Вернуть x статус непределенной переменной можно командой > x := evaln (x ); или снять присваивание командой > x :=’ x ’ ; либо отменить все присваивания командой restart .
2) Определение функции с помощью функционального оператора
имя функции:=список параметров -> выражение;
Обращение к функции, заданной таким способом, происходит стандартным образом: имя функции(a, b, …), где a, b, … — конкретные значения переменных.
> f 1:=(x , y , z ) -> x ^(y ^ z );
https://pandia.ru/text/78/155/images/image024_25.gif» width=»25″ height=»26 src width=»189″ height=»107″> используется команда
https://pandia.ru/text/78/155/images/image028_21.gif» width=»248″ height=»77″>
> f1:=convert(f, piecewise);
> f 2(-1/2); f 2(-1);
https://pandia.ru/text/78/155/images/image032_20.gif» width=»196″ height=»27″>.gif» width=»73″ height=»49″>. Упростите полученные выражения.
3. Найдите значение выражения . Для выполнения преобразований комплексного числа применяется функция evalc .
4. Запишите функцию без знака модуля.
5. Задайте и найдите f(-10)+3f(-1)+f(3).
6. Задайте функцию в виде функционального оператора и найдите ее значение при x=-1, y=.
2.3. Преобразование математических выражений
Maple обладает широкими возможностями для аналитических преобразований математических формул. К ним относятся такие операции, как приведение подобных, разложение на множители, раскрытие скобок, приведение рациональной дроби к нормальному виду и многие другие.
В Maple можно преобразовывать как все выражение в целом, так и отдельные его части.
Для выделения левой (правой) части в математическом выражении вида A=B используются команды
lhs (выражение);
rhs (выражение);
Для выделения числителя (знаменателя) используются команды
numer (выражение);
denom (выражение);
>denom (rhs (F ));
Для выделения некоторой части выражения, списка или множества служит команда
op (i ,выражение) , где i – число, определяющее позицию в выражении.
> x + y + z ; >op (2,%);
Gif» width=»12″ height=»12 src 54″ width=»266″ loading=lazy>
> isolate (R , sin (x ));
1) Приведение подобных членов в выражении по переменной осуществляется командой
https://pandia.ru/text/78/155/images/image047_14.gif» width=»439″ height=»28″>
2) Разложить на множители выражение можно с помощью команды
https://pandia.ru/text/78/155/images/image050_16.gif» width=»186″ height=»56″>
>alias(w=RootOf(x^3+2*x+1)); factor(x^3+2*x+1,w);
https://pandia.ru/text/78/155/images/image055_15.gif» width=»504″ height=»26 src width=»303″ height=»57″>
> factor(x^2+x+1,complex);
Gif» width=»12″ height=»12 src 58″ width=»173″ loading=lazy>
4) Привести дробь к нормальному виду можно с помощью команды
https://pandia.ru/text/78/155/images/image063_16.gif» width=»60″ height=»54″>
>normal(sin(2*x+3+4/(x-1)+5/(x-2)), expanded);
5) Для преобразований выражений, содержащих радикалы, применяется команда
rationalized « для того, чтобы избавиться от иррациональностей в знаменателях, « expanded « для раскрытия всех скобок.
> (7+5* sqrt (2))^(1/3);
> radnormal ((7+5* sqrt (2))^(1/3));
> a := sqrt (3)/(3^(1/2)+6^(1/2));
rationalized «);
6) Упрощение выражений осуществляется командой
DIV_ADBLOCK515″>
>simplify((sqrt(2)+sqrt(3))*(sqrt(2)-sqrt(3)));
> f:=(1-cos(x)^2+sin(x)*cos(x))/(sin(x)*cos(x)+cos(x)^2); simplify(f, trig);
Также в опциях указываются предположения о значении аргумента. Для формальных символьных преобразований многозначных функций в опциях можно указать symbolic .
> simplify(g, assume=real);
> simplify(g, assume=positive);
>simplify(g, symbolic);
Команда simplify позволяет выполнить преобразования в выражении при заданных условиях (условия указываются в фигурных скобках).
В некоторых случаях бывает полезно предварительно преобразовать выражение при помощи команды
https://pandia.ru/text/78/155/images/image076_12.gif» width=»276″ height=»54″>
>simplify(B, trig);
>simplify (%);
7) Объединить части выражения по определенным правилам можно при помощи команды
https://pandia.ru/text/78/155/images/image079_12.gif» width=»94″ height=»25 src width=»12″ height=»12 src 22″ width=»125″ loading=lazy>
> solve(x^4-11*x^3+37*x^2-73*x+70);
https://pandia.ru/text/78/155/images/image086_12.gif» width=»349″ height=»22 src >
> _EnvExplicit:=true:
Максимальное количество решений, которое может быть найдено с помощью команды solve, определяется значением глобальной переменной _MaxSols , имеющей по умолчанию значение равное 100. Если придать глобальной перменной _EnvAllSolutions значение true , то в случае бесконечного множества решений, команда solve для некоторых уравнений сможет оформить ответ в виде выражения, содержащего переменные определенного типа. Например, для тригонометрических уравнений ответ будет содержать целочисленные параметры вида _Z
> _EnvAllSolutions:= true:
>solve(sin(2*x)=cos(x), x);
https://pandia.ru/text/78/155/images/image094_11.gif» width=»274″ height=»51 src width=»12″ height=»12 src width=»641″ height=»23″>
Для разрешения реккурентностей применяется команда
https://pandia.ru/text/78/155/images/image098_10.gif» width=»255″ height=»22 src width=»119″ height=»23 src width=»180″ height=»56″>.
2. Упростите выражение .
3. Упростите выражение .
4.Приведите подобные в выражении и вычислите его значение при a=-3, x=1.
5. Упростите выражение а) ; б) .
6. Избавьтесь от иррациональностей в знаменателе выражения .
7. Выразите , https://pandia.ru/text/78/155/images/image113_7.gif» width=»46″ height=»48 src width=»164″ height=»41″>;
б) https://pandia.ru/text/78/155/images/image120_7.gif» width=»88″ height=»47 src 27″ width=»153″ loading=lazy> на множители над полем вещественных чисел и над полем рациональных чисел. Найдите разложение в радикалах.
12. Разложите многочлен на множители над полем вещественных чисел и над полем комплексных чисел. Найдите разложение в радикалах.
13. Решите уравнение .
14. Решите систему уравнений .
15. Решите систему уравнений и упростите ответ.
16. Численно найти все решения уравнения .
17. Найти три численных решения уравнения .
18. Решите систему неравенств .
19. Решите неравенство .
3 . ПОСТРОЕНИЕ ГРАФИКОВ
Эта часть посвящена возможностям системы Maple V в визуализации самых разнообразных вычислений.
3.1. Двумерные графики
Для построения графиков функции f(x) от одной переменной (в интервале https://pandia.ru/text/78/155/images/image132_6.gif» width=»69″ height=»24″> по оси Оу ) используется команда
plot(f(x), x=a..b, y=c..d, options),
где options – опция или набор опций, задающих стиль построения графика. Если их не указывать, то будут использованы установки по умолчанию. Настройка изображения также может осуществляться с панели инструментов. Для этого следует щелкнуть левой кнопкой мыши по изображению. После этого становятся активными кнопки в нижнем ряду панели. Также можно узнать координаты точки на графике. Для этого необходимо подвести курсор к нужной точке графика и щелкнуть левой кнопкой мыши. Слева в нижнем ряду кнопок на панели появятся координаты. Настройка изображения также может осуществляться с помощью контекстного меню. Оно вызывается правой кнопкой мыши.
Основные параметры команды plot :
title=”text”, где text- заголовок рисунка (текст можно оставлять без кавычек, если он не содержит пробелов).
coords=polar – установка полярных координат (по умолчанию установлены декартовы).
axes – установка типа координатных осей: axes=NORMAL – обычные оси; axes=BOXED – график в рамке со шкалой; axes=FRAME – оси с центром в левом нижнем углу рисунка; axes=NONE – без осей.
scaling – установка масштаба рисунка: scaling=CONSTRAINED – одинаковый масштаб по осям; scaling=UNCONSTRAINED – график масштабируется по размерам окна.
style = LINE – вывод линиями, style = POINT вывод точками.
numpoints=n – число вычисляемых точек графика (по умолчанию n=50 ).
сolor – установка цвета линии: английское название цвета, например, yellow – желтый и т. д.
xtickmarks=nx и ytickmarks=ny – число меток по оси Оx и оси Оy , соответственно.
thickness=n, где n=1,2,3… — толщина линии (по умолчанию n=1 ).
linestyle=n – тип линии: непрерывная, пунктирная и т. д. (по умолчанию n=1 – непрерывная).
symbol=s — тип символа, которым помечают точки: BOX, CROSS, CIRCLE, POINT, DIAMOND .
font= – установка типа шрифта для вывода текста: f задает название шрифтов: TIMES, COURIER, HELVETICA, SYMBOL; style задает стиль шрифта: BOLD, ITALIC, UNDERLINE; size – размер шрифта в pt.
labels= – надписи по осям координат: tx – по оси Оx и ty – по оси Оy .
discont=true – указание для построения бесконечных разрывов, при этом на графике асимптоты не рисуются.
Пример. Построить график https://pandia.ru/text/78/155/images/image134_1.jpg» width=»292 height=292″ height=»292″>
Построение графика функции, заданной параметрически
С помощью команды plot можно строить также графики функций, заданных параметрически y=y(t), x=x(t) :
plot(, parameters) .
Пример. Построить график параметрической кривой , https://pandia.ru/text/78/155/images/image138_2.jpg» width=»231 height=164″ height=»164″>
Построение графика функции, заданной неявно
Для построения графика неявной функции F(x, y)=0 используется команда https://pandia.ru/text/78/155/images/image139_5.gif» width=»80″ height=»27″>.
>with(plots):implicitplot(x^2+y^2=1, x=-1..1, y=-1..1);
Gif» width=»12 height=12″ height=»12″> textplot(, options), где x0, y0 – координаты точки, с которой начинается вывод текста ’text’ .
Вывод нескольких графических объектов на один рисунок
Если на одном рисунке нужно совместить несколько графиков функций, то можно воспользоваться командой
Если необходимо нарисовать несколько графических объектов, полученных при помощи различных команд, то для этого результат действия команд присваивается некоторым переменным:
> p := plot (…): t := textplot (…):
При этом на экран вывод не производится. Для вывода графических изображений необходимо выполнить команду из пакета plots:
display(, options) .
Пример . Построить графики функций https://pandia.ru/text/78/155/images/image142_6.gif» width=»73″ height=»20 src width=»59″ height=»24 src width=»297 height=24″ height=»24″> , то для этого можно использовать команду inequal из пакета plots:
inequals( c1,…,fn(x, y)>cn>, x=x1…x2, y=y1..y2, options)
В фигурных скобках указывается система неравенств, задающих область, затем размеры координатных осей и параметры. С помощью параметров можно регулировать толщину линий границ, цвета открытых и закрытых границ, цвета внешней и внутренней областей:
.gif» width=»12″ height=»12 src width=»12″ height=»12 src width=»75″ height=»43″>.
3..gif» width=»72″ height=»20″>, в рамке.
4..gif» width=»83″ height=»23 src width=»75″ height=»20 src width=»321″ height=»198″>
График поверхности, заданной параметрически
Если требуется построить поверхность, заданную параметрически: x =x (u ,v ), y =y (u ,v ), z =z (u ,v ), то эти функции перечисляются в квадратных скобках в команде:
plot3d(, u=u1..u2, v=v1..v2) .
Пример . Построить тор.
> plot3d(, s=0..2*Pi, t=0..11*Pi/6, grid=, style=patch, axes=frame, scaling=constrained);
https://pandia.ru/text/78/155/images/image162_4.gif» width=»99″ height=»24″>, строится с помощью команды пакета plot s :
implicitplot3d(F(x, y,z)=c, x=x1..x2, y=y1..y2, z=z1..z2), где указывается уравнение поверхности и размеры рисунка по координатным осям.
График пространственных кривых
В пакете plot s имеется команда spacecurve для построения пространственной кривой, заданной параметрически: .
spacecurve ([ x (t ), y (t ), z (t )], t = t 1.. t 2) , где переменная t изменяется от t1 до t2 .
Построение нескольких трехмерных фигур на одном графике
Команда plot 3 d позволяет строить одновременно несколько фигур, пересекающихся в пространстве. Для этого достаточно вместо описания одной поверхности задать список описаний ряда поверхностей. При этом функция plot 3 d обладает уникальной возможностью – автоматически вычисляет точки пересечения фигур и показывает только видимые части поверхностей. Это создает изображения, выглядящие вполне естественно.
Пример. Выполнить построение двух поверхностей и в пределах https://pandia.ru/text/78/155/images/image168_4.gif» width=»39″ height=»19″>.
> plot 3 d ( , x =- Pi .. Pi , y =- Pi .. Pi , grid =, axes = FRAMED , color = x + y );
Maple позволяет выводить на экран движущиеся изображения с помощью команд animate (двумерные) и animate3d (трехмерные) из пакета plot s . Суть анимации при использовании данных функций заключается в построении серии кадров, причем каждый кадр связан со значением изменяемой во времени переменной t. Среди параметров команды animate3d есть
frames – число кадров анимации (по умолчанию frames=8 ).
Управлять движущимся изображением удобнее с помощью контекстного меню.
Задание 3 .2
Похожие публикации:
- Как сделать дробь в mathcad
- Как сделать смету в archicad
- Как скачать archicad
- Как скачать звук из telegram
Как задать вектор в maple
Прежде чем перейти к рассмотрению обширных возможностей пакетов Maple 7 по части решения задач линейной алгебры, рассмотрим краткие определения, относящиеся к ней.
Матрица (m х n) — прямоугольная двумерная таблица, содержащая m строк и n столбцов элементов, каждый из которых может быть представлен числом, константой, переменной, символьным или математическим выражением (расширительная трактовка матрицы).
Квадратная матрица — матрица, у которой число строк m равно числу столбцов n . Пример квадратной матрицы размера 3×3:

Сингулярная (вырожденная) матрица — квадратная матрица, у которой детерминант (определитель) равен 0. Такая матрица обычно не упрощается при символьных вычислениях. Линейные уравнения с почти сингулярными матрицами могут давать большие погрешности при решении.
Единичная матрица — это квадратная матрица, у которой диагональные элементы равны 1, а остальные элементы равны 0. Ниже представлена единичная матрица размера 4×4:

Сингулярные значения матрицы А — квадратные корни из собственных значений матрицы А Т =А, где А т — транспонированная матрица А (см. ее определение ниже);Транспонированная матрица — матрица, у которой .столбцы и строки меняются . местами, то есть элементы транспонированной матрицы удовлетворяют условию A T (i,j)=A(j,i). Приведем простой пример. Исходная матрица:


Обратная матрица — это матрица М -1 , которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.
Ступенчатая форма матрицы соответствует условиям, когда первый ненулевой элемент в каждой строке есть 1 и первый ненулевой элемент каждой строки появляется справа от первого ненулевого элемента в предыдущей строке, то есть все элементы ниже первого ненулевого в строке — нули.
Диагональ матрицы — расположенные диагонально элементы A i,i матрицы А. В приведенной ниже матрице элементы диагонали представлены заглавными буквами:

Обычно указанную диагональ называют главной диагональю — для матрицы А, приведенной выше, это диагональ с элементами А, Е и L. Иногда вводят понятия под диагоналей (элементы d и k) и над диагоналей (элементы b и f). Матрица, все элементы которой, расположенные кроме как на диагонали, под диагонали и над диагонали, равны нулю, называется ленточной.
Ранг матрицы — наибольший из порядков отличных от нуля миноров квадратной матрицы.
След матрицы — сумма диагональных элементов матрицы.
Определитель матрицы — это многочлен от элементов квадратной матрицы, каждый член которого является произведением n элементов, взятых по одному из каждой строки и каждого столбца со знаком произведения, заданным четностью перестановок:

где M 1 — определитель матрицы порядка n — 1, полученной из матрицы А вычеркиванием первой строки и j-гo столбца. В таком виде определитель (он же детерминант) легко получить в символьных вычислениях. В численных расчетах мы будем подразумевать под определителем численное значение этого многочлена.
Матрица в целой степени — квадратная матрица в степени n (n — целое неотрицательное число), определяемая следующим образом:
М° = Е, М 1 = М, М 2 = ММ . М n =М n-1 М.
Идемпотентная матрица — матрица, отвечающая условию Р 2 = Р.
Симметрическая матрица — матрица, отвечающая условию А т = А.
Кососимметрическая матрица — матрица, отвечающая условию А т = -A. Ортогональная матрица — матрица, отвечающая условию А т =А -1 .Нуль-матрица — матрица, все элементы которой равны 0.Блок-матрица — матрица, составленная из меньших по размеру матриц, также можно представить как матрицу, каждый элемент которой — матрица. Частным случаем является блок-диагональная матрица — блок-матрица, элементы-матрицы которой вне диагонали — нуль-матрицы.
Комплексно-сопряженная матрица — матрица А, полученная из исходной матрицы А заменой ее элементов на комплексно-сопряженные. Эрмитова матрица — матрица А, удовлетворяющая условию А = А .Собственный вектор квадратной матрицы А — любой вектор х е V», х* О, удовлетворяющий уравнению Ах = gx, где g — некоторое число, называемое собственным значением матрицы А.
Характеристический многочлен матрицы — определитель разности этой матрицы и единичной матрицы, умноженный на переменную многочлена, — |А — gE|. Собственные значения матрицы — корни ее характеристического многочлена. Норма — обобщенное понятие абсолютной (величины числа. Норма трехмерного вектора ||х|| — его длина. Норма матрицы — значение sup(||Ax||/||x||).

Матричная форма записи системы линейных уравнений — выражение АХ = В, где А — матрица коэффициентов системы, X — вектор неизвестных и В — вектор свободных членов. Один из способов решения такой системы очевиден — X = А -1 В, где А -1 — обратная матрица.
Пакет решения задач линейной алгебры linalg
Состав пакета linalg
Несомненно, что уникальной возможностью системы Maple 7, как и других систем компьютерной алгебры, является возможность решения задач линейной алгебры в символьном (формульном, аналитическом) виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц (уже при 4-5 строках и столбцах) символьные результаты оказываются очень громоздкими и труднообозримыми. Они полезны только при решении специфических аналитических задач, например с разреженными матрицами, у которых большинство элементов имеют нулевые значения.
Поэтому разработчики Maple 7 были вынуждены реализовать в своей системе численные методы решения задач линейной алгебры, которые широко используются в основных сферах ее приложения — математическом моделировании систем и устройств, расчетах в электротехнике, механике, астрономии и т. д.
В ядро Maple 7, как отмечалось, введены очень скромные и минимально необходимые средства для решения задач линейной алгебры. Основной упор в их реализации сделан на подключаемые пакеты. Основным из них, унаследованным от предшествующих реализаций системы, является пакет решения задач линейной алгебры Unalg. Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Он содержит свыше ста функций:
> with(linalg);
Warning, the names fibonacci, inverse and multiply have been redefined Warning, the protected names norm and trace have been redefined and unprotected[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal, exponential, extend, ffgausselimfifibonacci,forwardsub,frobenius, gausselim, gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert,htranspose, thermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszerojacobian, Jordan, kernel, laplacian, leastsqrs, linsolve,matadd, matrix, minor, minpoly, mulcol, /им/row,multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan, rref, scalarmul, singularvals, smith, stackmatrix, submatrix, subvector, sumbasis, swapcol, swaprow, Sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector, wronskian]
Ниже указано назначение тех функций пакета linalg , которые подробно не описаны:
Ниже мы рассмотрим более подробно наиболее часто используемые функции из этого пакета. С деталями синтаксиса (достаточно разнообразного) для каждой из указанных функций можно ознакомиться в справочной системе Maple. Для этого достаточно использовать команду
?name ; где name — имя функции (из приведенного списка).
Интерактивный ввод матриц
Для интерактивного ввода матриц можно, определив размерность некоторого массива, использовать функцию entermatrix :
После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид:


Основные функции для задания векторов и матриц
В библиотечном файле Unalg имеются следующие функции для задания векторов и матриц:
Ниже показано применение этих функций:

Обратите внимание на последние примеры — они показывают вызов индексированных переменных вектора и матрицы.
Функции для работы с векторами и матрицами
Для работы с векторами и матрицами Maple 7 имеет множество функций, входящих в пакет linalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории.
Операции со структурой отдельного вектора V и матрицы М:
Основные векторные и матричные операции:
Приведем примеры применения некоторых из этих функций:


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

А теперь рассмотрим пример решения матричного уравнения в символьном виде:

Следующий пример показывает решение более сложной системы линейных уравнений с комплексными коэффициентами:

На этот раз решение получено использованием функций умножения матриц и вычисления обратной матрицы в виде X = А- 1 В, то есть в матричном виде. В конце примера показано преобразование результатов с целью их получения в обычной форме комплексных чисел с частями, представленными в форме чисел с плавающей точкой.
Пакет линейной алгебры с алгоритмами NAG LinearAlgebra
Назначение и загрузка пакета LinearAlgebra
В последние годы разработчики систем символьной математики осознали, что малая скорость выполнения векторных и матричных операций при решении задач линейной алгебры оборачивается потерей заметной части рынка систем компьютерной математики. Новые версии таких систем (Mathematica 4/4.1 и Maple 6/7) отличаются от прежних прежде всего резким повышением эффективности решения задач линейной алгебры в численном виде.
В новых реализациях систем Maple и MATLAB была сделана ставка на использование давно апробированных быстрых алгоритмов линейной алгебры, предложенных создателями Number Algorithm Group (NAG). Эти алгоритмы издавна применяются на больших ЭВМ и суперкомпьютерах, обеспечивая ускорение численных матричных операций от нескольких раз до нескольких десятков раз. Их применение обеспечивает эффективное использование систем символьной математики в решении задач, сводящихся к задачам линейной алгебры. В числе таких задач многочисленные задачи теоретической электротехники, механики многих объектов, моделирования электронных устройств и т. д. В Maple 7 использование алгоритмов NAG является одной из первых отличительных черт новой версии системы. Оно реализуется новым пакетом LinearAlgebra . Для его загрузки используются следующие команды:
> restart; with(LinearAlgebra):
[Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm, CharacteristicMatrix, CharacteristicPolyhomial, Column, ColumnDimension, ColumnOpemtion, ColumnSpace, CompanionMatrix, CondittonNumber, ConstantMatrix, ConstantVector, CreatePermutation, CrossProduct, DeleteColumn, DeleteRow, Determinant, DiagonalMatrix, Dimension,
Dimensions, DotProduct, Eigenvalues, Eigenvectors, Equql, FonyardSubstitute, FrobeniusForm, GenerateEquations, GenerateMatrix, GetResuNDataType, * GetResultShape, GivensRotationMatrix, GramSchmidt, HarikelMatrix, HermiteForm, HermitianTranspose, HessenbergForm, HilbertMatrix, Households-Matrix, IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar, IsUnitary,
JordanBlockMatrix, JordanForm, LA_Main, LUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd, Matrixlnverse, MatrixMatrixMultiply, MatrixNorm, MatrixScalarMultiply, MatrixVectorMultiply,Minimal/Polynomial, Minor, Multiply, NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot, QRDecomposition, RandomMatrix, RandomVector, Rank, Row,
RowDimension, RowOperation, RowSpace, ScalarMatrix, ScalarMultiply, ScalarVector, SchurForm, SingularValues, SmithForm, SubMatrix, SubVector, SumBasis, SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, UnitVector, VandermondeMatrix, VectorAdd, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, Zero Vector, Zip ]
> 1nfolevel[LinearA1gebra]:=l:
infolevel LinearAlgebra :=1
Нетрудно заметить, что многие функции этого пакета повторяет по назначению функции более старого пакета linalg , описанного выше. Поэтому мы не будем останавливаться на их повторном описании. Главное то, что эти функции задействуют возможности быстрых алгоритмов NAG и в отличие от функций пакета linalg ориентированы на численные расчеты в формате обработки вещественных чисел, характерном для компьютерной платформы. Знающий матричные методы читатель легко поймет назначение функций пакета LinearAlgebra по их составным названиям. Например, DeleteColumn означает удаление столбца матрицы, ToeplitzMatrix означает создание матрицы Теплица, ZeroMatrix — создание матрицы с нулевыми элементами и т. д. Все имена функций этого пакета начинаются с заглавной буквы.
Примеры матричных операций с применением пакета LinearAlgebra
Применение алгоритмов NAG особенно эффективно в том случае, когда используется встроенная в современные микропроцессоры арифметика чисел с плавающей запятой. С помощью специального флага такую арифметику можно отключать или включать:
> UseHardwareFloats := false; # use software floats
UseHardwareFloats :=false
> UseHardwareFloats := true: # default behaviour
UseHardwareFloats :=true
Матрицы в новом пакете линейной алгебры могут задаваться в угловых скобках, как показано ниже:

После этого можно выполнять с ними типовые матричные операции. Например, можно инвертировать (обращать) матрицы:

Обратите внимание, что Maple 7 теперь выдает информационные сообщения о новых условиях реализации операции инвертирования матриц с вещественными элементами, и в частности об использовании алгоритмов NAG и арифметики, встроенной в сопроцессор. (
Следующий пример иллюстрирует создание двух случайных матриц Ml и М2 и затем их умножение:

Параметр inplace в функции умножения обеспечивает помещение результата умножения матриц на место исходной матрицы Ml — излюбленный прием создателей быстрых матричных алгоритмов NAG. Поскольку матрицы Ml и М2 за- -даны как случайные, то при повторении этого примера результаты, естественно, будут иными, чем приведенные.
Следующий пример иллюстрирует проведение хорошо известной операции/ LU-разложения над матрицей М, созданной функцией Matrix :

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


На этом, учитывая ограниченный объем книги, мы завершаем обзор пакета LmearAlgebra . Читатель, познающий или знающий методы линейной алгебры, может опробовать в работе любые функции этого пакета самостоятельно или познакомиться со множеством примеров, размещенных в справочной системе Maple 7. Возможности пакетов linalg и LinearAlgebra удовлетворят самых требовательных специалистов в этой области математики.
Интеграция Maple 7 с MATLAB
Краткие сведения о MATLAB
Несмотря на обширные средства линейной алгебры (да и многие другие), имеющиеся у системы Maple 7, есть системы компьютерной математики, решающие некоторые классы задач более эффективно, и прежде всего быстрее. В области линейной алгебры к таким системам, безусловно, относится система MATLAB, созданная компанией Math Works, Inc. Ее название происходит именно от слов MATrix LABoratory — матричная лаборатория.
MATLAB содержит в своем ядре многие сотни матричных функций и является одной из лучших матричных систем для персональных компьютеров. Она реализует самые современные алгоритмы матричных операций, включая, кстати, и алгоритмы NAG. Однако главное достоинство MATLAB — наличие множества дополнительных пакетов как по классическим разделам математики, так и по самым новейшим, таким как нечеткая логика, нейронные сети, идентификация систем, обработка сигналов и др. Знаменитым стал пакет моделирования систем и устройств Simulink, включаемый в пакет поставки системы MATLAB. Последней версией системы является MATLAB 6.0. В то же время нельзя не отметить, что MATLAB — одна из самых громоздких математических систем. Инсталляция ее полной версии занимает около 1,5 Гбайт дискового пространства. Несмотря на это, интеграция различных математических систем с данной системой, похоже, становится своеобразной модой. Такая возможность предусмотрена и в системе Maple 7 с помощью пакета Matlab.
Загрузка пакета расширения Matlab
Для загрузки пакета Matlab используется команда: .
> with(Matlab);
[chol, closelink, defined, del, dimensions, eig, evalM,fft, getvar, inv, Iu,ode45, openlink, qr, setvar, size, square, transpose ]
Использование этой команды ведет к автоматическому запуску системы MATLAB (гарантируется работа с версиями MATLAB до 5.3.1 включительно) и установлению необходимой объектной связи между системами Maple 7 и MATLAB.
Как нетрудно заметить, данный пакет дает доступ всего к 18 функциям системы MATLAB (из многих сотен, имеющихся только в ядре последней системы). Таким образом, есть все основания полагать, что возможности MATLAB в интеграции с системой Maple 7 используются пока очень слабо и носят рудиментарный характер. Стоит ли ради этих функций иметь на компьютере огромную систему MATLAB, пользователи должны решать сами. Если ответ положительный, то, скорее всего, пользователь решает тот класс задач, для которых лучше подходит MATLAB, и надо задуматься уже над тем, нужен ли в этом случае Maple.
Типовые матричные операции пакета расширения Matlab
Большинство функций пакета Matlab (не путайте с системой MATLAB, имя которой надо записывать прописными буквами) реализуют самые обычные матричные операции, что и иллюстрируют приведенные ниже примеры.
Зададим матрицу М в формате Maple:

Ниже даны примеры транспонирования матрицы, ее инвертирования, вычисления детерминанта и собственных значений матрицы:

Можно проверить, является ли матрица квадратной:

Можно также проверить, является ли данная матрица матрицей системы MATLAB:

Здесь надо иметь в виду, что форматы матриц в системах Maple и MATLAB различны. Выполним LU-преобразование матрицы:

Таким образом, видно, что пакет Maple в данном случае реализует типовые матричные операции, но средствами системы MATLAB. Загрузка последней происходит автоматически при загрузке пакета Matlab. Если система MATLAB не установлена на вашем компьютере, то доступ к функциям пакета Matlab будет отсутствовать, a Maple 7 при попытке использования данных функций будет выдавать сообщения об ошибках.
Выделение сигнала на фоне шумов
Среди небольшого числа доступных функций системы MATLAB в пакете Matlab нельзя не выделить особо функции быстрого прямого и обратного преобразований Фурье. В системе MATLAB эти функции реализуют наиболее эффективные алгоритмы быстрого преобразования Фурье (БПФ), обеспечивающие решение крупноразмерных задач (например, обработки сигналов, представленных векторами и матрицами больших размеров) в десятки раз быстрее, чем при обычных методах выполнения преобразований Фурье.
Покажем возможность применения БПФ на ставшем классическим примере — выделении спектра полезного сигнала на фоне сильных помех. Зададим некоторый двухчастотный сигнал, имеющий 1500 точек отсчета:
График сигнала представлен на рис. 15.1.

Рис. 15.1. График исходного сигнала
Теперь с помощью генератора случайных чисел наложим на этот сигнал сильный «шум» (слово «шум» взято в кавычки, поскольку речь идет 6 математическом моделировании шума, а не о реальном шуме физической природы):
> tol := 10000:
r := rand(0..to1):
noisyjlata :=[seq(r()/(tol)*data[t], t=l..num)]:
plots[pointp1ot](zip((x,y)->[x,y],T1me,noisy_data), sty1e=1ine);
Нетрудно заметить, что теперь форма сигнала настолько замаскирована шумом (рис. 15.2), что можно лишь с трудом -догадываться, что сигнал имеет периодическую составляющую малой амплитуды. Эта высокочастотная составляющая сигнала скрыта шумом.
Подвергнем полученный сигнал (в виде временной зависимости) прямому преобразованию Фурье, реализованному функцией fft:
Эта операция переводит задачу из временного представления сигнала в частотное, что позволяет использовать частотные методы анализа сигнала. Выделим, к примеру, действительную и мнимую части элементов вектора ft и проверим его размер:


Пакет анализа линейных функциональных систем LinearFunctionalSystems
Назначение пакета LinearFunctionalSystems
Пакет LinearFimctionalSystems содержит набор функций для решения задач, связанных с анализом линейных функциональных систем. Обычно такие системы описываются линейными дифференциальными уравнениями, имеющими то или иное решение. Пакет LinearFunctionalSystems позволяет провести тестирование подготовленной системы, оценить ряд ее параметров и получить решение одним из ряда методов.
Вызов всех функций пакета осуществляется командой:
> with(LinearFunctionalSystems):
[AreSameSolution, CanonicalSystem, ExtendSeries, Homogeneous System, IsSolution,
MatrixTriangularization, PolynomialSolution, Properties, RationalSolution,
SeriesSolution, UniversalDenominator]
Тестовые функции пакета LinearFunctionalSystems
Прежде чем рассматривать основные функции пакета, рассмотрим две тестовые функции. Они представлены следующими формами записи:
IsSolution(sol,sys, vars) IsSolution(sol, A, b, x, case)
IsSolution(sol, A, x, case) AreSameSolutior(sol, soil)
В них: sol — тестируемое решение, sys — система функциональных уравнений, х — независимая переменная решения, А и b — матрица и вектор с рациональными элементами, case — имя метода решения ( ‘differential’, ‘difference’ или ‘qdifference’) .
Функции решения линейных функциональных систем
Группа основных функций пакета LinearFunctionalSystems имеет идентичный синтаксис и записывается в виде:
Здесь name — одно из следующих имен:
Система функциональных уравнений задается либо в виде полной системы sys со списком переменных vars , либо в матричном виде с заданием матриц коэффициентов, системы А и вектора свободных членов b (может отсутствовать) с указанием независимой переменной х и параметра case, имеющего значения ‘differential’, ‘difference’ или ‘ qdifference ‘. Параметр method , задающий метод EG-исключения, может иметь значения ‘ quasimodular ‘ или ‘ ordinary ‘.
Несколько вспомогательных функций пакета LinearFunctionalSystems представлено ниже:
Примеры применения пакета LinearFunctionalSystems
Ниже представлен ряд примеров применения пакета LinearFunctionalSystems , иллюстрирующих его возможности:


Множество дополнительных примеров на анализ и решение линейных функциональных систем можно найти в справке по функциям данного пакета.
maple
Скалярное, векторное произведение векторов и угол между векторами.
Скалярное произведение двух векторов
( a , b ) = ∑ a i b i
вычисляется командой dotprod(a,b).
Векторное произведение двух векторов [ a , b ] вычисляется командой crossprod(a,b).
Угол между двумя векторами a и b вычисляется с помощью команды angle(a,b) .
a = ( x 1 . x n ) , которая
вычислить с помощью
Можно нормировать вектор а с помощью команды normalize(a), в результате выполнения которой будет получен
вектор единичной длины a a .
Нахождение базиса системы векторов. Ортогонализация системы векторов по процедуре Грамма-Шмидта.
Если имеется система n векторов , то с помощью
команды basis([a1,a2,…,an]) можно найти базис этой системы.
При помощи команды GramSchmidt([a1,a2,…,an]) можно ортогонализовать систему линейно-независимых векторов
1. Даны два вектора: a = (2,1,3,2) и b = (1,2, − 2,1) . Найти ( a , b ) и угол между a и b . Для решения этой задачи наберите:
Методы решения математических задач в Maple
2. Найти векторное произведение c = [ a , b ] , а затем скалярное
произведение ( a , c ) , где a = (2, − 2,1) , b = (2,3,6) .
> c:=crossprod(a,b); c :=[ − 15, − 10,10]
3. Найти норму вектора a = (2, − 2,1) .
4. Из системы векторов:
a 1 = (1,2,2, − 1) , a 2 = (1,1, − 5,3) ,
a 3 = (3,2,8,7) , a 4 = (0,1,7, − 4) ,
a 5 = (2,1,12, − 10) выделить базис и
ортогонализовать его по процедуре Грамма-Шмидта:
a2:=vector([1,1,-5,3]): a3:=vector([3,2,8,7]): a4:=vector([0,1,7,-4]): a5:=vector([2,1,12,-10]):
> g:=basis([a1,a2,a3,a4,a5]); g := [ a1, a2, a3, a5 ]
§2. Действия с матрицами
Для определения матрицы в Maple можно использовать команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…,
Методы решения математических задач в Maple
[an1,an2,…,anm]]), где n − число строк, m – число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:
В Maple матрицы специального вида можно генерировать с помощью дополнительных команд. В частности диагональную матрицу можно получить командой diag . Например:
Генерировать матрицу можно с помощью функции f ( i , j ) от переменных i , j – индексов матрицы: matrix(n, m, f), где где n — число строк, m – число столбцов. Например:
f : = ( i , j ) → x i y j
Число строк в матрице А можно определить с помощью команды rowdim(A) , а число столбцов – с помощью команды coldim(A) .
Арифметические операции с матрицами.
Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: evalm(A+B) или matadd(A,B). Произведение двух матриц может быть найдено с помощью двух команд:
В качестве второго аргумента в командах, вычисляющих произведение, можно указывать вектор, например:
Методы решения математических задач в Maple
Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:
Определители, миноры и алгебраические дополнения. Ранг и след матрицы.
Определитель матрицы А вычисляется командой det(A). Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i -ой строки и j -ого столбца. Минор M ij элемента a ij матрицы А можно вычислить командой det(minor(A,i,j)). Ранг матрицы А вычисляется командой rank(A). След матрицы А , равный сумме ее диагональных элементов, вычисляется командой trace(A). 7
Методы решения математических задач в Maple
Обратная и транспонированная матрицы.
Обратную матрицу А − 1 , такую что А − 1 А = АА − 1 = Е , где Е − единичная матрица, можно вычислить двумя способами:
Транспонирование матрицы А – это изменение местами строк и столбцов. Полученная в результате этого матрица называется транспонированной и обозначается А’ . Транспонированную матрицу А’ можно вычислить командой transpose(A).
Например, используя заданную в предыдущем пункте матрицу А , найдем ей обратную и транспонированную:
Выяснение типа матрицы.
Выяснить положительную или отрицательную определенность
при помощи команды definite(A,param), где
param может принимать значения: ‘positive_def’
положительно определена ( A >0), ‘positive_semidef’
определенная ( A ≥ 0) , ‘negative_def’ –
Методы решения математических задач в Maple
константа true – подтверждение, false – отрицание сделанного предположения. Например:
Проверить ортогональность матрицы А можно командой orthog(A).
Функции от матриц.
Возведение матрицы А в степень n производится командой
evalm(A^n). Вычисление матричной экспоненты e A возможно с помощью команды exponential(A). Например:
e (5 a ) cos(2 b ) − e (5 a ) sin(2 b )
25 a 2 − 4 b 2 − 20 ab
e (5 a ) sin(2 b ) e (5 a ) cos(2 b )
Методы решения математических задач в Maple
1. Даны матрицы: A = 4
( AB ) C , det A , det B , det C , det[( AB ) C ]. Наберите:
2. Дана матрица A = 6
найти: det A , A − 1 , A’ , det( M 22 ).
Методы решения математических задач в Maple
3. Найти ранг матрицы
Вычислить e T , где T =
Найти значение многочлена
P ( A ) = A 3 − 18 A 2 + 64 A .
§3. Спектральный анализ матрицы
Собственные числа и собственные векторы матрицы.
Из курса линейной алгебры известно, что если А х = λ х , то вектор х называется собственным вектором матрицы А , а число λ –
Методы решения математических задач в Maple
собственным числом, соответствующим данному собственному вектору. Совокупность всех собственных чисел матрицы называется спектром матрицы. Если в спектре матрицы одно и тоже собственное число встречается k раз, то говорят, что кратность этого собственного числа равна k .
Для нахождения собственных чисел матрицы А используется команда eigenvalues(A). Для нахождения собственных векторов матрицы А используется команда eigenvectors(A). В результате выполнения этой команды будут получены собственные числа, их кратность и соответствующие собственные векторы.
Чтобы понять, в каком виде получаются результаты выполнения команды eigenvectors, внимательно разберитесь со следующим
Как задать вектор в маткаде – Mathcad
Задать два вектора X и Y с пятью элементами двумя способами. Элементы первого вектора – произвольно заданные числа. Элементы 2 –го вектора вычисляются по формуле: .
Выполнить следующие преобразования: элементы вектора Х удвоить, элементы вектора Y увеличить на 1.
Получить вектор Z, равный сумме векторов X и Y. Найти скалярное произведение векторов X и Y.
Задать два вектора X и Y из трех элементов. Найти их скалярное и векторное произведения, используя соответствующие «кнопки» на панели инструментов « Matrix».
Задать две квадратные матрицы А и В одинаковых размеров (не больше 5). Получить: сумму матриц, разность матриц, произведение, определитель каждой из матриц.
Найти обратные матрицы. Произвести проверку того, что обратные матрицы вычислены верно.
Найти скалярное произведение первой строчки матрицы А на ее последний столбик.
Преобразовать матрицу А по правилу: элементы умножить на максимальный элемент этой матрицы (воспользоваться функцией мax из мастера функций).
Преобразовать матрицу В по правилу: элементы каждой строчки умножить на максимальный элемент этой строчки (воспользоваться функцией мax из мастера функций).
Найти суммы элементов в каждом из столбиков матрицы А.
Найти суммы элементов в каждом из строк матрицы А.
Найти сумму всех элементов матрицы А.
Соединить (дописывая справа) матрицы в одну матрицу D. Из второй строки матрицы D получить вектор K.
Повторить пункт 12, но соединение организовать дописыванием вниз.
Определить функцию . Определить функцию с именем — как производную от функции Fun.
Построить две матрицы, у одной матрицы элементы должны вычисляться по формуле: . У другой матрицы элементы , где t1 и t2 — переменные, принимающих значения из промежутка (каждая из своего промежутка значений). Заметим, что размеры матрицы V зависят от выбранных промежутков и шагов.
Порядок выполнения работы
Загрузить систему Mathcad.
Познакомиться с методическим указанием.
Подготовить отчет. В отчет включить разделы: тема, ход работы, вывод.
Сдать работу преподавателю.
Методические указания
Задание векторов и матриц
Векторы могут рассматриваться как матрицы, состоящие из одного столбца. Существуют две возможности задания векторов и матриц:
С помощью индексированных переменных. Любая индексированная переменная, индексами которой являются переменные, принимающие целочисленные значения из некоторого промежутка, уже представляют собой вектор или матрицу.
Пример. Требуется задать вектор x, состоящий из 6 элементов. Элементам этого вектора присвоить значения индексов.
i := 0..5 (знак .. появляется после набора ;)
В) присвоить элементам вектора х значения индексов (к индексу можно перейти с помощью символа — левой квадратной скобки, либо с помощью кнопки на панели инструментов):
C) «распечатать» вектор:
С помощью использования команды Matrix. Взять эту команду можно либо из меню «Insert»(а), либо на панели инструментов «Matrix»(в), как это показано на рис.1. В открывшемся диалоговом окне «Insert Matrix» необходимо указать число строк и число столбцов. В нашем примере число строк равно 6, а число столбцов равно 1. Решение предыдущего примера в этом случае сводится к последовательности действий:
выполнить команду Matrix;
задать параметры в диалоговом окне «Insert Matrix»;
заполнить шаблон, который откроется после нажатия кнопки «Ok».
P.S. Диалоговое окно «Insert Matrix» содержит кнопку «Delete». Если выделен один из элементов матрицы, эта кнопка позволяет удалить число строк (находящихся ниже выделенного элемента) и столбцов (находящихся справа от выделенного элемента), которое будет указано в полях диалогового окна. Аналогично с помощью команды «Insert» можно вставить заданное число строк и столбцов.
Рис.1. Вызов диалогового окна «Insert Matrix» для создания матрицы с помощью команды «Matrix»
Операции с векторами и матрицами, матричные функции
Х -1 – получить обратную матрицу
|X| — вычислить детерминант
М Т – транспонировать
М < >— из матрицы взять вектор-столбец
v – получить сумму элементов

-скалярное произведение векторов

Рис.2. Назначение некоторых команд, расположенных на панели инструментов «Matrix».
Помимо этого, система MathCad представляет большое количество функций для работы с векторами и матрицами. Воспользоваться этими функциями можно с помощью мастера функций f(x) , обратиться к которому можно с помощью команды, как это показано на рис.3.

Рис.3. Вызов мастера функций
Вызов мастера функций открывает диалоговое окно, как это показано на рис.4. В этом окне следует открыть категорию «Vector and Matrix», как это показано на рис.4. В окне «Function Name» перечислены имена функций для выбранной категории в алфавитном порядке. А внизу комментарии по их назначению и использованию.

Рис.4. Диалоговое окно мастера функций
Формирование из вектора диагональной матрицы
Формирование матрицы заданного размера с элементами
где F – определенная функция

Соединение двух матриц в одну матрицу (рядом –функция augment, друг под другом — функция stack)
Выделение подматрицы из матрицы v
Формирование вектора из матрицы по его номеру
Преобразование прямоугольных координат в цилиндрические координаты и наоборот
Рис.5. Примеры использования функций и операторов для работы с векторами и матрицами
Контрольные вопросы
Какие операции представлены на панели инструментов «Matrix»?
Как задать вектор? Как задать матрицу?
Как задать матрицу с элементами, вычисленными по формулам?
Найти функцию rank.и пояснить ее назначение?
Как из матрицы получить вектор – столбец? Вектор-строчку?
Как получить обратную матрицу?
Когда обратную матрицу вычислить нельзя?
Как проверить, вычислена ли обратная матрица правильно?
Где взять функции для работы с матрицами?
Как создать единичную матрицу?
Работа с матрицами и векторами в MathCAD. Задачи линейной алгебры — Студопедия.Нет
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Курганский государственный университет»
Кафедра «Автоматизация производственных процессов»
ОСНОВЫ ИНЖЕНЕРНЫХ РАСЧЁТОВ
Методические указания к комплексу лабораторных, практических и контрольных работ по курсу «Основы инженерных расчётов»
для студентов направлений подготовки
15.03.04 Автоматизация технологических процессов и производств
(профиль «Автоматизация технологических процессов и производств
27.03.04 Управление в технических системах (профиль «Системы и
технические средства автоматизации и управления»)
Кафедра: «Автоматизация производственных процессов»
Дисциплина: «Основы инженерных расчётов»
Составил: к.т.н., доцент Е.К. Карпов.
Утверждены на заседании кафедры 21 декабря 2017 г.
Рекомендованы методическим советом
университета __________ 20__ г.
1 Представление результатов вычислений. Управление вычислениями…………4
2 Работа с матрицами и векторами в MathCAD. Задачи линейной алгебры…….8
3 Создание графиков в MathCAD. Двумерные графики и трехмерные графики13
4 Встроенные функции MathCAD для решения обыкновенных уравнений и систем. Решение систем дифференциальных уравнений………………………..15
5 Первая программа и обработка информации из внешнего файла…………….16
6 Циклы и операторы. Программы с ветвлениями и рекурсивные вычисления.19
7 Задания для контрольной работы……………………………………………….21
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………………………31
ВВЕДЕНИЕ
Целью освоения дисциплины «Основы инженерных расчётов» является приобретение студентами знаний о применении систем компьютерной математики для автоматизации инженерно-технической деятельности и ознакомление с наиболее популярными современными математическими пакетами. Практическое введение в MathCAD и освоение технически структурного программирования в объёме, достаточном для использования этой системы при изучении соответствующих разделов высшей математики, общетехнических и специальных дисциплин.
Изучение приведённых далее материалов позволит студентам узнать о современных средствах автоматизации математических расчётов, получить навыки для решения задач математического моделирования, вычислительных задач математического анализа, построения геометрических фигур различной степени сложности, решения задач, связанных с матрицами, и исследованием динамических систем.
Также методические указания содержат задания для контрольной работы студентов заочной формы обучения и материалы, необходимые для её выполнения.
Представление результатов вычислений. Управление вычислениями
Программный пакет MathCAD обладает встроенной математической палитрой, представляющей собой набор специализированных панелей для работы с различными типами данных, вычислений, графических построений и программирования. Наиболее простой способ знакомства с ними состоит в практическом освоении каждой из них в процессе решения тех или иных задач. В первой главе сделан упор на самые простые вычисления панели калькулятора и работу с различными типами данных. Также показана возможность создания своих функций, основываясь на которой необходимо будет выполнять задания к этой и последующим главам.
На рисунке 1 представлены примеры различных выражений, написанных с помощью программы MathCAD. Примеры а) и б) — это арифметические выражения, операндами которых являются числовые константы, заданные в десятичной (а) и в шестнадцатеричной (б) системах счисления. Результаты вычисления этих выражений — числовые константы, формат представления которых пользователь может выбрать по своему усмотрению.
Пример в) — это алгебраическое выражение, операндами которого являются константы и переменные числового типа. Результат вычисления этого выражения — число, определяемое значениями числовых переменных a, b и c.
В примере г) используется один из операторов суммирования элементов числовых рядов. Операнд этого оператора использует функцию, возвращающую значение синуса угла, заданного с использованием переменной α и предопределенной переменной π;
Пример д) — логическое выражение, использующее операторы сравнения “больше” и “не равно” и логические операторы “отрицания” и “конъюнкции”. Результатом вычисления этого выражения будет одно из двух логических значений: «истина» или «ложь» в зависимости от значений переменных x, y, z.
Пример е) иллюстрирует возможность использования логического выражения в качестве операнда арифметического выражения. Такая возможность в системе MathCAD существует, так как логические константы «истина» и «ложь» ассоциируются с числовыми константами «1» и «0», соответственно.
Примеры ж) и з) иллюстрируют использование операторов интегрирования и дифференцирования.
Рисунок 1 – Примеры различных выражений
На рисунке 2 приведены результаты различных вычислений, произведённых с числовыми типами данных. Выражение а) иллюстрирует возможность различного форматирования результата вычисления выражения числового типа; б) возможность использования в одном выражении чисел, заданных в различных системах счисления; в) содержит примеры использования в выражениях комплексных чисел и встроенных функций для их обработки.
Рисунок 2 – Результаты вычислений над числовыми типами
Строковый тип данных используется для хранения и работы с текстовой информацией. В программе MathCAD существует большое количество функций для работы с ними. На рисунке 3 приведены результаты работы некоторых из них.
Функция concat (от англ. concatenation — слияние) обеспечивает объединение нескольких текстовых строк в одну.
Функция num2str преобразует число в текстовую строку, состоящую из цифр этого числа, а функция str2num производит обратное преобразование (в последнем случае исходная строка символов должна содержать только цифры).
Функция strlen определяет длину (число символов) строки.
Функция substr выделяет из заданной строки подстроку, начиная с символа, номер которого задается вторым параметром функции. Длина выделяемой подстроки задается третьим параметром функции.
Функция str2vec формирует вектор ASCII-кодов символов заданной строки, а функция vec2str формирует строку символов по заданным их ASCII-кодам (коды могут быть представлены в любой системе счисления).
Функция IsString возвращает логическое значение «истина», если ее аргумент имеет строковый тип данных, и значение «ложь» в противном случае.

Рисунок 3 – Работа со строковым типом данных
Важной частью работы с программным пакетом MathCAD является возможность определять функции и использовать их в дальнейшем. На рисунке 4 а) определена пользовательская функция SqTrap, предназначенная для расчета площади трапеции, размеры которой определяются формальными аргументами а, b и h. Предлагается три различных способа обращения к этой функции для расчета площади трапеции с основаниями 1м и 2м и высотой Зм: в первом случае фактические аргументы заданы числовыми константами, во втором — определенными ранее переменными х, у и z, а в третьем — числовыми константами и выражением.
Рисунок б) иллюстрирует возможность использования имени функции в качестве параметра другой функции.

Рисунок 4 – Создание функций
Рисунок в) содержит примеры обработки данных логического типа. Переменная А определена с помощью логического выражения и при заданных значениях переменных х, у и z получила значение «ложь», которое отображается числовым значением “0”. Встроенная функция if() анализирует значение логического выражения, заданного ее первым аргументом, и если оно «истинно», возвращает второй параметр, а в противном случае — третий.
Применение функций при решении практических задач можно использовать в следующих задачах:
— требуется рассчитать мгновенное значение тока, полученного в результате однополупериодного выпрямления синусоидального тока i в различные моменты времени:
чтобы вычислить значение выпрямленного тока в другие моменты времени, достаточно в самом первом выражении изменить значение t и задать режим вычислений;
— определить скорость равноускоренного движения точки через 4 секунды от начала вычислений:
чтобы вычислить значение скорости в любой момент времени, необходимо просто задать это время в созданной функции. Начальная скорость и ускорение задаются константами.
Задания к главе 1:
1) введите все примеры с рисунков главы в MathCAD;
2) разработайте пользовательскую функцию, реализующую специализированный калькулятор для расчёта длины отрезка прямой, заданного координатами x, y, z его граничных точек;
3) создайте 4 переменных строкового типа, содержащие Ваши фамилию, имя, отчество (латинскими буквами) и год рождения. Используя встроенные функции группы «string»:
а) определите переменную fullname, содержащую Ваше полное имя;
б) определите количество символов в строке fullname;
в) определите первый и последний символы строки fullname;
г) выделите подстроку fitstname из строковой переменной fullname;
д) определите ASCII-коды цифр, образующих Ваш год рождения;
е) определите, имеет ли строковый тип данных переменная, хранящая Ваш год рождения;
ж) преобразуйте строковую переменную (год рождения) в соответствующую ей переменную числового типа;
4) разработайте пользовательскую функцию, которая принимает в качестве параметров две строковых переменных А и В и целое число n, а возвращает строку, в которой строка В вставлена в строку А между n-м и (n+1)-м её символами, Если хотя бы один из параметров А, В имеет не строковый тип данных, или если значение параметра n превышает длину строки А, функция должна возвратить строку «Error»;
5) пусть задана переменная строкового типа произвольной длины, последние четыре символа которой — цифры, представляющие год (например, «Konstantin P. Philimonov, esquire, was burn in 1982»). Разработайте пользовательскую функцию, модифицирующую такую переменную путем увеличения «года» на заданное число;
6) решите 9 и 17 варианты заданий 1 и 2 из контрольной работы, опираясь на пример, приведённый в конце данных методических указаний.
Работа с матрицами и векторами в MathCAD. Задачи линейной алгебры
В MathCAD для работы с матрицами и векторами предназначена специальная панель инструментов Matrix (рисунок 5). Чтобы отобразить панель Matrix необходимо щелкнуть по кнопке на математической панели Math.
Рисунок 5 – Панель инструментов Matrix
Рассмотрим назначение некоторых из кнопок панели Matrix:
– создание новой матрицы;
– ввод элемента массива;
– формирование обратной матрицы;
– вычисление определителя матрицы;
– определение столбца матрицы: А – j-й столбец матрицы;
– определение ранжированной переменной: j=m..n;
– вычисление скалярного произведения векторов;
– вычисление векторного произведения векторов.
В примере на рисунке 6 определена переменная А — она получила значение матрицы размерностью 4х6, элементами которой являются константы числового и строкового типов. Строки и столбцы этой матрицы пронумерованы, начиная с нуля, так как переменная ORIGIN имеет нулевое значение (по умолчанию). После переопределения этой переменной соответственно изменилась и нумерация элементов матрицы.
Ниже на том же рисунке иллюстрируется возможность использования переменных и функций в качестве элементов массивов. Заметим, что переменная р и функция g(х) должны быть определены до определения массива В. При вычислении значения переменной В элементы массива р, g(р), и g(1) получили соответствующие числовые значения. В качестве индексов элементов массива использованы три различных математических выражения. При использовании индексных выражений необходимо следить, чтобы они возвращали целочисленные значения, не выходящие за пределы допустимых значений, соответствующих текущему значению переменной ORIGIN. В данном примере строки матрицы B пронумерованы от нуля до двух, а столбцы — от нуля до трех.
Массив D определен путем присвоения значений отдельным его элементам. Если к моменту определения некоторого элемента массива сам массив еще не определен, он будет создан автоматически. Размерность этого массива будет соответствовать значению индекса определяемого элемента, а все «предшествующие» элементы массива получат нулевые значения. Если определяется элемент существующего массива, и индекс элемента выходит за пределы его размерности, массив соответственно «расширяется» с возможным добавлением “нулевых” элементов.
Индексы элементов массива Е определены целочисленными ранжированными переменными і и j, а значения элемента массива Еi,j вычисляются с помощью выражения, включающего эти переменные в качестве операндов.

Рисунок 6 – Способы определения матриц
На рисунке 7 приведены примеры применения операторов для работы с векторами и матрицами: а) – любой двуместный арифметический оператор, операндами которого являются массив и скаляр, применяется ко всем элементам массива, в результате чего изменяются лишь значения элементов массива, а его структура сохраняется.
Если оба операнда — массивы (пример б), то тривиальными являются только операторы сложения и вычитания и лишь в том случае, если оба массива имеют одинаковую размерность.

Рисунок 7 – Применение операторов для работы с векторами и матрицами
Пример в) иллюстрирует применение оператора «| |» с различными операндами. В этом операторе допускается использование только двух видов операндов-массивов: вектор — в этом случае вычисляется его модуль, и квадратная матрица — в этом случае вычисляется ее определитель.
Пример г). Если два вектора (одинаковой размерности) объединены оператором умножения (*), будет вычислено их скалярное произведение. Если два трехэлементных вектора объединены оператором (х), будет определен новый вектор — результат векторного произведения исходных векторов. Этот вектор имеет модуль, равный произведению модулей исходных векторов на синус угла между ними, и описывает направленный отрезок, перпендикулярный плоскости расположения исходных векторов.
Если операндами оператора умножения (*) являются не векторы, а матрицы (пример д), этот оператор выполняет умножение матриц, в результате которого формируется новая матрица.
Пример е) иллюстрирует применение оператора возведения массива в степень. Операндом такого оператора может быть только квадратная матрица, а показатель степени может быть только целочисленным скаляром. При этом нулевая степень матрицы трактуется как единичная матрица, первая степень — сама исходная матрица, другие положительные степени матрицы трактуются в смысле операции матричного умножения, минус первая степень — обратная матрица (результатом умножения которой на исходную матрицу является единичная матрица), прочие отрицательные степени матрицы – соответствующие положительные степени обратной матрицы.
В примере ж) показаны операторы транспонирования массивов и суммирование элементов векторов. Следует обратить внимание на оператор транспонирования вектора: в результате формируется матрица, состоящая из одной строки. Обращение к элементам такой матрицы производится с использованием двойного индекса.
Применение матричных исчислений при решении практических задач можно продемонстрировать, произведя расчёт электрической цепи с помощью уравнений Кирхгофа.
Рассмотрим цепь, изображенную на рисунке 8. Требуется рассчитать токи во всех ветвях различными методами.

Рисунок 8 – Пример электрической цепи для расчёта
Рассчитаем токи во всех ветвях с помощью уравнений Кирхгофа. Зададим данные:
где mE, aE — модуль и аргумент (в радианах) значения ЭДС, заданной в показательной форме;
mZ3, aZ3 — модуль и аргумент сопротивления Z3.
Для наглядности все величины, заданные в показательной форме, переведём в алгебраическую форму. Это можно будет и не делать, так как Mathcad это делает автоматически
Далее составим систему уравнений по законам Кирхгофа. Зададим в системе MathCAD матрицы А и В.
Для нахождения вектора искомых токов записываем
где A -1 – операция вычисления матрицы, обратной А.
Результат вычисления токов вы ведем на экран:
Теперь выполним тот же самый расчёт методом контурных токов.
Примем обход всех независимых контуров по часовой стрелке и обозначим контурные токи I11, I22, I33.
Запишем ZK и EK в системе MathCAD, где ZK – матрица сопротивлений системы контурных уравнений, IK – вектор-столбец контурных токов, EK – вектор столбец контурных ЭДС.
Тогда исходные контурные токи можно получить:
Получим токи ветвей.
Методы расчёта дали один и тот же результат, следовательно, расчёты верны. Наиболее простым для данной цепи является метод контурных токов.
Задания к главе 2:
1) введите все примеры с рисунков главы в MathCAD;
2) сформируйте таблицы значений двух функций: у(х) = 2/(sin 3 (х)+2) и z(х) = 5sin(4х/3) для х = -180 o …180 o с шагом в 6 o ;
3) используя оператор численного дифференцирования, сформируйте таблицы значений 1-й, 2-й и 3-й производных функции z(х)=х 3 + 3х 5 для х = [-5…5];
4) создайте копию матрицы А, вставьте дополнительный столбец между вторым и третьим столбцами, заполните его произвольными значениями, удалите левый столбец и верхнюю строку;
5) создайте вектор-столбец из 5 элементов (ряд натуральных чисел от 1 до 5). Определите значение 3-го элемента столбца. Создайте матрицу-строку из 5 элементов (ряд натуральных чисел от 6 до 10). Определите значение 3-го элемента строки;
6) сформируйте векторы S, С, S2 и С2, элементы которых содержат значения функций соответственно sin(х)‚ cos(х), sin 2 (х) и cos 2 (х), где х — дискретно заданный угол в диапазоне от 0 до 360° с шагом 18°;
7) определите квадратную матрицу Z размерностью 12х12, в которой каждый элемент равен сумме значений своих индексов, если их произведение не превышает 64, иначе – произведению индексов. Постройте пространственный график по данным матрицы Z;
8) решите 5 и 13 варианты заданий 3 и 4 из контрольной работы, опираясь на пример, приведённый в конце данных методических указаний.
Основы работы в MathCAD — Стр 2

Такие графики задаются нажатием кнопки с изображением графика в полярных координатах. Обозначение переменных не изменяется. На рис. 7 приведено построение фигуры Лисажу в полярных координатах.
Задача 5. Построить самостоятельно фигуру Лисажу.
В Маткад можно строить различные трехмерные графики: поверхности, уровней, столбиковые диаграммы и т. п. Для примера построим график поверхности, описываемой
функцией z = 55x 2 + 25y 2 для 0
1.Прежде всего, нужно определить узлы, в которых будет вычисляться функция. Запишем:
После этой записи функция будет вычисляться в точках с координатами i=0, j=0: i=0, j=1 и т.д.
2.Нужно установить связь аргументов х и у с узлами. Мы запишем
3.Запишем саму функцию z(x, y)= 55x 2 + 25y 2
4.Определим матрицу ординат, по которым будет строиться график: M i , j = z(x i , y j).
5.После этого вызовем график поверхности с панели графиков и поставим в нижнем правом углу М. Затем, выйдя из графика, щелкнем курсором. График будет построен.
На рис .8 показано построение этого графика.
Рис.8. Пространственный график в Маткад.
Введя курсор внутрь графика, и щелкнув мышью, мы снова вызовем трехстраничное окно, в котором можно установить все параметры графика.
На странице Viev (вид) устанавливается тип графика: Display as – показывать в виде (поверхности, линии уровней, столбиковой диаграммы), тип осей Axis (в виде непосредственно осей, в виде плоскостей, отсутствие осей), показ заднего плана (Back

Planes): показывать (Show), заполнять цветом поверхность (Fill Color) и кромку(Edge Color) и угол, под которым показываются оси координат.
В зависимости от выбранного типа графика меняется набор надписей на остальных страницах. Например, для графика Surface Plot (график поверхности) на странице Color and Lines (цвет и линии) нанесены надписи: Shading( затенение).
На странице Axis(оси) нанесены те же, что и для случая плоских графиков надписи, но теперь уже для трех осей: Gird Lines – нанесение сетки координат, Numbered – оцифровка соответствующей оси, Autoscale- автоматическая разметка осей, Shove Markers – показать метки по осям, Autogird — автоматический показ сетки координат,
Numbers of Grids — оцифровка сетки.
Задача 6. Построить график функции, приведенной в тексте, выбрав зеленый цвет поверхности, розовый цвет заднего плана, угол представления 45 градусов и оцифрованные оси.
Построить для той же функции график уровней и столбиковую диаграмму.
Задача 7. Построить график функции z = 3×3 −4y 2 для 0
ЛАБОРАТОРНАЯ РАБОТА №3. ДЕЙСТВИЯ НАД МАТРИЦАМИ В МАТКАД.
Понятие о встроенных функциях Маткад.
Большинство задач в Маткад решаются с помощью так называемых встроенных функций, т.е. с помощью заранее составленных программ решения той или иной задачи.
Каждая такая программа имеет свое имя, по которому она вызывается. Имя можно набирать с клавиатуры, но можно и вызывать с помощью кнопки f(x). Нажав эту кнопку, мы вызовем панель Insert Function (вставить функцию), в которой имеется два поля: Function Category (тип функции) и Function Name (имя функции). Выбрав тип и имя, и нажав кнопку ОК, мы вызовем данную функцию (Рис.1).
Рис.1.Панель вызова функции
Пусть, например, нужно найти синус числа 45. Вызвав панель вставки функции, выберем категорию Trigonometric и название sin, нажмем ОК. На экране появится шаблон со словом sin внутри и скобками. Вставив в скобки число 45, нажмем «=». Получим

sin(45)=0.851. Можно было бы набрать левую часть на клавиатуре и, после нажатия знака =, получить тот же ответ.
Аналогично используются и другие встроенные функции Маткад.
В Маткад массивы могут записываться в виде векторов (одномерные массивы), в виде матриц (двумерные массивы) и в виде таблиц. Мы рассмотрим пока только запись матриц и векторов. Для действий над ними имеется панель Matrix (матрица), показанная на рис. 2.
Рис.2. Панель матриц
Для ввода матриц и векторов нажмем кнопку панели матриц и вызовем этим окно ввода Insetrt Matrix (ввести матрицу), показанное на рис.3.
Рис.3. Окно ввода матриц и векторов.
Рис.4. Шаблон вектора.
При вводе вектора в графе columns (столбцы) следует проставить 1, а в графе rows(строки) проставить размер вектора. Появится шаблон, показанный на рис. 4.
Ниже представлено три пятиэлементных массива-вектора: Два из них – численные, третий – буквенный, четвертый состоит из выражений.
При задании буквенных массивов и массивов – выражений необходимо предварительно присваивать им численные значения (за каждой буквой в компьютере должно стоять число). После задания выражений вектора можно, записав его имя и поставив знак =, получить его значение. Рисунок лишний раз иллюстрирует, что Маткад различает строчные и заглавные буквы.

Над векторами определены показанные на рис.5.. операции сложения и вычитания, транспонирования, умножения по математическим правилам умножения матриц. Знак транспонирования следует вводить с панели Matrix (матрица).
Порядковый номер элемента, который является его адресом, называется индексом. Нижняя граница индексации задается значением системной переменной ORIGIN,
которая может принимать значение 0 или 1.
Рис.5. Запись векторов в Маткад.
Имя массива увязано с именами индексированных переменных, значениями которых являются элементы массива. Для этого достаточно в виде подстрочного индекса указать индекс элемента. Например, если третий из представленных массивов имеет имя V, то его элементами при ORIGIN=0 будут индексированные переменные: v0=0 V1=b ,w3= d, W4= x.
При задании ORIGIN=1, получим: v1 =0, V1=a, w3=c, W4=x3 – x5.
Задача 1. Ввести все векторы рис.5 и произвести над ними все действия, проведенные на рисунке. Матрицы в Маткаде вводятся так же, как и векторы, но число столбцов в них больше единицы. Элементами матрицы могут быть также числа, буквы, выражения. Как и в случае векторов, буквенные элементы и элементы – выражения должны быть предварительно определены численно. На рис.6 показаны различные способы ввода матриц.

Рис.6. Ввод матриц.
Задача 2. Ввести все матрицы, приведенные на рис.6.
Элементы матриц являются индексированными переменными, имена которых совпадают с именами матриц. Для каждой индексированной переменной указываются два индекса: один — для номера строки, другой — для номера столбца. Например, для матрицы W средний элемент обозначается как W1,1 а последний как W2,2. (Индексы набираются через запятую). На рис.7 показано изменение индексации при различных значениях переменной ORIGIN.(Набирается обязательно заглавными буквами).
Рис.7. Роль переменной ORIGIN
В Маткад определены следующие действия над векторами и матрицами:
скалярное и векторное умножение,
Они выполняются с использованием следующих кнопок панели Matrix:
кнопка индексации элементов матрицы,
кнопка обращения матрицы,
кнопка скалярного произведения векторов и матриц
кнопка транспонирования матрицы,
кнопка векторного произведения двух векторов
кнопка сложения векторов
кнопка выделения столбца матрицы кнопка вычисления детерминанта матрицы.
На рис.8 приведены все эти действия над матрицами, приведенными на рис.6.

Задача.3: Произвести над матрицами все действия, показанные на рис.8.
Рис.8. Действия над матрицами
Задача.4: Ввести две произвольные матрицы. Перемножить. Например:
Проверьте на бумаге правильность произведенных выше действий
Рис.9. Пример выполнения задачи 4
Обращение и вычисление определителя возможно только для квадратных матриц.
Задача 5.. Введите произвольную квадратную матрицу, найдите обратную ей и вычислите определитель, используя показанные выше кнопки встроенных операторов.
Рис.10. Пример выполнения задачи 5.

Как известно, умножение матрицы на обратную дает единичную матрицу. Проверим, правильно ли было проведено обращение
Задача 6. Найти скалярное и векторное произведения двух заданных трехэлементных векторов: Проверить на бумаге правильность вычислений.
Рис.11. Пример выполнения задачи 6.
Проверим правильность скалярного умножения, перемножив vxТ и vy . Получили также 36.
При рассмотрении матриц больших размеров удобно выделять их столбцы. Мы будем использовать его в модулях 2 и 3 при решении сложных задач.
Задача 7. Используя кнопку выделения столбцов, выделите столбцы произвольной матрицы, например:
Рис.12. Пример выполнения задачи 7.
В Маткаде имеется большое количество встроенных функций для действий над матрицами и векторами. Рассмотрим некоторые из них.
Вычисление максимального и минимального элементов матрицы или вектора производится с помощью встроенных функций Max(A )и Min(A).
Задача 8 . Вычислить максимальный и минимальный элемент произвольной матрицы, например:
Рис13. Вычисление максимального и минимального элемента матрицы.
Определение количества столбцов и строк в матрице удобно для проверки действий над многомерными матрицами и векторами. Оно производится с помощью

встроенных функций Cols(A)- число столбцов матрицы А и Rows(A)- Число строк матрицы А.
Задача 9. Определить число строк и столбцов в произвольной матрице, например
Рис.13. Пример выполнения задачи 9.
Единичная матрица размером N формируется встроенной функцией Idenfity(N), а след матрицы – встроенной функцией . tr(A):
Рис.14. Формирование единичной матрицы и вычисление следа матрицы.
Графики матричных и векторных зависимостей.
В Маткаде возможно построение графиков по данным, записанным в векторной и матричной форме. На рис.15 показано построение двумерного графика по данным векторов vx и vy, а на рис.16. – построение трехмерного графика по заданным в матрице аргументам и вектору функции.
Рис.15. Построение двумерного графика по векторным данным.
Заданы двумерная матрица аргументов S и вектор значений функции этих аргументов Y.Показано построение графика.

Рис.16.Трехмерный график данных, записанных в векторной форме.
Операции над матрицами в аналитической (символьной) форме.
Системы компьютерной алгебры снабжаются специальным процессором для выполнения аналитических (символьных) вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых производятся аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, разумеется, если такое решение существует в принципе (что бывает далеко не всегда).
Ядро символьного процессора Маткад — несколько упрощенный вариант ядра известной системы символьной математики Maple V фирмы Waterloo Maple Software , у которой MathSoft (разработчик Маткада) приобрела лицензию на его применение, благодаря чему Маткад стал системой символьной математики.
Введение в систему Маткад символьных вычислений придает ей качественно новые возможности. Символьные вычисления выполняются, в конечном счете, столь же просто для пользователя, как, скажем, вычисление квадрата х.
Операции, относящиеся к работе символьного процессора, содержатся в подменю позиции Symbolic (Символика) главного меню.
Чтобы символьные операции выполнялись, процессору необходимо указать, над каким выражением эти операции должны производиться, т е надо выделить выражение. Для ряда операций следует не только указать выражение, к которому они относятся, но и наметить переменную, относительно которой выполняется та или иная символьная операция.
Само выражение в таком случае не выделяется, ведь и так ясно, что если маркер ввода выделяет переменную какого-либо выражения, то это выражение уже отмечено наличием в нем выделяемой переменной
Символьные операции разбиты на пять характерных разделов. Это операции с выражениями, операции с переменными, операции с матрицами, операции преобразования, стиль эволюции. Первыми идут наиболее часто используемые операции Они могут выполняться с выражениями, содержащими комплексные числа или имеющими решения в комплексном виде
В данной лабораторной работе мы рассмотрим только операции с матрицами. В дальнейшем будут рассмотрены и другие символьные операции.
Символьный процессор системы Маткад обеспечивает проведение в символьном виде трех наиболее распространенных матричных операций транспонирования и обращения матриц, а также вычисления их детерминанта.
При символьных вычислениях, прежде всего, следует вызвать панель символьных
вычислений нажатием кнопки на математической панели.
После этого появится панель символьных вычислений, показанная на рис.17

Рис.17. Панель символьных вычислений
Для символьных операций над матрицами нам понадобится только предпоследняя строка этого окна, с помощью кнопок которой и производятся транспонирование, обращение матрицы и нахождение ее определителя.
Задача 10. Используя кнопки панели символьных вычислений, провести аналитическое транспонирование и обращение произвольной матрицы, например:
Рис.18. Пример символьного решения матричных задач.
ЛАБОРАТОРНАЯ РАБОТА №4. РЕШЕНИЕ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ В МАТЕМАТИЧЕСКОМ ПАКЕТЕ «Маткад».
Алгебраические уравнения в Маткаде решаются как численными, так и аналитическими методами. В данной лабораторной работе будут рассмотрены оба метода
Численное решение системы линейных алгебраических уравнений .
При численном решении систем линейных уравнений используется специальный вычислительный блок, открываемый служебным словом — директивой Given. Блок имеет следующую структуру:
Задание начальных приближений
Ограничительные условия выражения с функцией find
Урок 13. Обработка статистических данных в Mathcad
В этом и последующих уроках мы будем работать со статистическими данными. Эти данные будем рассматривать как два вектора одинаковой длины, один из которых включает в себя независимые переменные, а второй — зависимые.

Выше находятся три вектора, каждый из которых включает в себя 1000 элементов. Отображены только первые несколько элементов. Чтобы просмотреть другие элементы, следует щелкнуть по трем точкам внизу столбца чисел, чтобы появился ползунок — квадрат на серой линии:

Первый вектор включает в себя независимую переменную. Вектор X содержит действительные числа, Y — нули и единицы — категории, которые служат для обозначения да/нет, орел/решка и т.п. Эти данные сгенерированы в Mathcad. Как это сделано, мы рассмотрим в конце урока.
Категории и действительные числа в статистике рассматриваются по-разному. Однако, в некоторых случаях такое разделение не совсем ясно — данные можно отнести к любой из двух групп.
Данные выше составляют генеральную совокупность из 1000 точек. В какой-то момент мы рассматривает выборку из этой генеральной совокупности. Часто мы хотим получить представление о свойствах генеральной совокупности, изучая выборку.
Описание данных
Рассмотрим сначала действительные числа. В первую очередь, для описания набора данных используются параметры:
(а) среднее арифметическое X_;
(б) среднеквадратическое (стандартное) отклонение S.
Среднее арифметическое показывает, где находится центр распределения, а среднеквадратическое отклонение (сокращенно СКО) — ширину распределения. Иногда используются и другие параметры, такие как медиана и эксцесс. Эти параметры можно найти в меню Функции -> Статистические:
Среднее арифметическое зависимой переменной X:
СКО переменной X:
Функция в Mathcad:
(В статистике среднее арифметическое обычно обозначается буквой с черточкой над ней. В Mathcadтакая черточка используется с другой целью, поэтому для обозначения среднего арифметического мы используем нижнее подчеркивание.)
Теперь рассмотрим выборку — только первые десять элементов. Условимся обозначать генеральную совокупность заглавной буквой, а выборку — маленькой:

Среднее арифметическое и СКО выборки можно использовать оценки этих же величин для генеральной совокупности:
Здесь у нас в выборке участвуют 10 элементов — такое число часто принимается за минимум выборки. Немного лучшую оценку СКО дает величина:
Здесь мы делили на (n-1) вместо n. Встроенная функция Mathcad:
Ниже находятся два графика, которые показывают некоторые характеристики распределения. Первый — это график в декартовых координатах, известный как диаграмма рассеяния. Он показывает точки данных и границы 2?:

Правило двух сигма в статистике гласит, что для нормального распределения 5% данных будут лежать вне границ 2? от среднего арифметического.
Второй график — гистограмма. Она показывает число точек данных, попавших в различные интервалы. Как его построить, мы обсудим в дальнейшем:

Различные наборы данных можно получить, нажав [Ctrl+F5]. Это займет время, поскольку пересчитывается весь документ.
Теперь рассмотрим данные категорий. Предположим, что мы рассматриваем результат подбрасывания монеты: «1» — орел, «0» — решка. Из нашего набора данных мы можем получить вероятность выпадения орла. Следует внимательно применять арифметические операции к данным категорий, но в нашем выборе между «0» и «1» мы можем легко получить долю единиц, найдя среднее арифметическое вектора Y:
Это вероятность выпадения орла. Заметьте, что считать нужно от 0 до (N-1), чтобы учесть N точек.
Для небольшой выборки ее среднее арифметическое может существенно отличаться от среднего совокупности:
Вы можете получать различные наборы данных в выборке каждый раз, нажимая [Ctrl+F5]. Попробуйте сделать это несколько раз. Для «0» и «1» нужна выборка, по крайней мере, из 30 точек, чтобы получить примерное представление о вероятности. Для надежных результатов при рассмотрении категорий нужны большие выборки — часто это тысячи точек.
Случайные числа
Данные выше были получены с использованием генераторов случайных чисел Mathcad. Они находятся в меню Функции -> Все функции -> Случайные числа. Наиболее важные из них — это равномерное и нормальное распределение.
Случайное число между 0 и x можно получить с помощью функции:
Здесь нажатие [Ctrl+F5] также даст новое значение. Чтобы получить набор случайных чисел, нужно задать диапазон:
На диаграмме рассеяния видно, что распределение действительно равномерное:

Проверим это еще раз с помощью гистограммы:
Выходными значениями функции гистограммы являются два вектора-столбца. Столбец «0» содержит центры интервалов, а столбец «1» — число элементов в каждом интервале:
При построении графика используйте тип «Столбцы»:

Получается равномерное распределение, как и ожидалось.
Случайные числа с нормальным распределением генерирует функция rnorm(). Она содержит три параметра: число точек, среднее арифметическое и СКО. Создадим набор большого числа точек:
Построим гистограмму с 30 интервалами:

Такой колоколообразный график соответствует нормальному распределению.
Резюме
- Данные включают в себя набор векторов одинаковой длины. Первый вектор — независимая переменная, второй (третий, четвертый,…) — может быть переменной категорий, или включать в себя действительные числа. Полный набор данных формирует генеральную совокупность. Любая ее часть называется выборкой.
- Поведение данных можно описать с помощью среднего арифметического и среднеквадратического отклонения. (Для категорий можно определить лишь вероятность.) В Mathcad есть функции mean() и stdev() для их вычисления. Чтобы оценить стандартное отклонение генеральной совокупности по выборке, используйте Stdev().
- Обычно одна из двадцати точек выходит за пределы границ, отстоящих по обе стороны от среднего арифметического на 2?. Это можно проверить по диаграмме рассеяния или по гистограмме. Гистограмма формируется с помощью функции histogram(intervals,x), выходом которой является матрица с двумя столбцами: столбец «0» содержит данные для оси Xграфика, столбец «1» — для оси Y. Извлечь эти столбцы по отдельности можно с помощью команды Матрицы и таблицы -> Операции с векторами/матрицами.
- Мы рассмотрели два генератора случайных чисел Mathcad. Функция rnd(3) дает случайное значение с равномерным распределением в промежутке 0x. Функция rnorm(x,X_,S) дает случайное значение с нормальным распределением со средним X_ и СКО S. Генератор случайных чисел дает новые значения каждый раз при пересчете [Ctrl+F5].
Другие интересные материалы
MathCAD — Стр 2

Такие графики задаются нажатием кнопки с изображением графика в полярных координатах. Обозначение переменных не изменяется. На рис. 7 приведено построение фигуры Лисажу в полярных координатах.
Задача 5. Построить самостоятельно фигуру Лисажу.
В Маткад можно строить различные трехмерные графики: поверхности, уровней, столбиковые диаграммы и т. п. Для примера построим график поверхности, описываемой
функцией z = 55x 2 + 25y 2 для 0
1.Прежде всего, нужно определить узлы, в которых будет вычисляться функция. Запишем:
После этой записи функция будет вычисляться в точках с координатами i=0, j=0: i=0, j=1 и т.д.
2.Нужно установить связь аргументов х и у с узлами. Мы запишем
3.Запишем саму функцию z(x, y)= 55x 2 + 25y 2
4.Определим матрицу ординат, по которым будет строиться график: M i , j = z(x i , y j).
5.После этого вызовем график поверхности с панели графиков и поставим в нижнем правом углу М. Затем, выйдя из графика, щелкнем курсором. График будет построен.
На рис .8 показано построение этого графика.
Рис.8. Пространственный график в Маткад.
Введя курсор внутрь графика, и щелкнув мышью, мы снова вызовем трехстраничное окно, в котором можно установить все параметры графика.
На странице Viev (вид) устанавливается тип графика: Display as – показывать в виде (поверхности, линии уровней, столбиковой диаграммы), тип осей Axis (в виде непосредственно осей, в виде плоскостей, отсутствие осей), показ заднего плана (Back

Planes): показывать (Show), заполнять цветом поверхность (Fill Color) и кромку(Edge Color) и угол, под которым показываются оси координат.
В зависимости от выбранного типа графика меняется набор надписей на остальных страницах. Например, для графика Surface Plot (график поверхности) на странице Color and Lines (цвет и линии) нанесены надписи: Shading( затенение).
На странице Axis(оси) нанесены те же, что и для случая плоских графиков надписи, но теперь уже для трех осей: Gird Lines – нанесение сетки координат, Numbered – оцифровка соответствующей оси, Autoscale- автоматическая разметка осей, Shove Markers – показать метки по осям, Autogird — автоматический показ сетки координат,
Numbers of Grids — оцифровка сетки.
Задача 6. Построить график функции, приведенной в тексте, выбрав зеленый цвет поверхности, розовый цвет заднего плана, угол представления 45 градусов и оцифрованные оси.
Построить для той же функции график уровней и столбиковую диаграмму.
Задача 7. Построить график функции z = 3×3 −4y 2 для 0
ЛАБОРАТОРНАЯ РАБОТА №3. ДЕЙСТВИЯ НАД МАТРИЦАМИ В МАТКАД.
Понятие о встроенных функциях Маткад.
Большинство задач в Маткад решаются с помощью так называемых встроенных функций, т.е. с помощью заранее составленных программ решения той или иной задачи.
Каждая такая программа имеет свое имя, по которому она вызывается. Имя можно набирать с клавиатуры, но можно и вызывать с помощью кнопки f(x). Нажав эту кнопку, мы вызовем панель Insert Function (вставить функцию), в которой имеется два поля: Function Category (тип функции) и Function Name (имя функции). Выбрав тип и имя, и нажав кнопку ОК, мы вызовем данную функцию (Рис.1).
Рис.1.Панель вызова функции
Пусть, например, нужно найти синус числа 45. Вызвав панель вставки функции, выберем категорию Trigonometric и название sin, нажмем ОК. На экране появится шаблон со словом sin внутри и скобками. Вставив в скобки число 45, нажмем «=». Получим

sin(45)=0.851. Можно было бы набрать левую часть на клавиатуре и, после нажатия знака =, получить тот же ответ.
Аналогично используются и другие встроенные функции Маткад.
В Маткад массивы могут записываться в виде векторов (одномерные массивы), в виде матриц (двумерные массивы) и в виде таблиц. Мы рассмотрим пока только запись матриц и векторов. Для действий над ними имеется панель Matrix (матрица), показанная на рис. 2.
Рис.2. Панель матриц
Для ввода матриц и векторов нажмем кнопку панели матриц и вызовем этим окно ввода Insetrt Matrix (ввести матрицу), показанное на рис.3.
Рис.3. Окно ввода матриц и векторов.
Рис.4. Шаблон вектора.
При вводе вектора в графе columns (столбцы) следует проставить 1, а в графе rows(строки) проставить размер вектора. Появится шаблон, показанный на рис. 4.
Ниже представлено три пятиэлементных массива-вектора: Два из них – численные, третий – буквенный, четвертый состоит из выражений.
При задании буквенных массивов и массивов – выражений необходимо предварительно присваивать им численные значения (за каждой буквой в компьютере должно стоять число). После задания выражений вектора можно, записав его имя и поставив знак =, получить его значение. Рисунок лишний раз иллюстрирует, что Маткад различает строчные и заглавные буквы.

Над векторами определены показанные на рис.5.. операции сложения и вычитания, транспонирования, умножения по математическим правилам умножения матриц. Знак транспонирования следует вводить с панели Matrix (матрица).
Порядковый номер элемента, который является его адресом, называется индексом. Нижняя граница индексации задается значением системной переменной ORIGIN,
которая может принимать значение 0 или 1.
Рис.5. Запись векторов в Маткад.
Имя массива увязано с именами индексированных переменных, значениями которых являются элементы массива. Для этого достаточно в виде подстрочного индекса указать индекс элемента. Например, если третий из представленных массивов имеет имя V, то его элементами при ORIGIN=0 будут индексированные переменные: v0=0 V1=b ,w3= d, W4= x.
При задании ORIGIN=1, получим: v1 =0, V1=a, w3=c, W4=x3 – x5.
Задача 1. Ввести все векторы рис.5 и произвести над ними все действия, проведенные на рисунке. Матрицы в Маткаде вводятся так же, как и векторы, но число столбцов в них больше единицы. Элементами матрицы могут быть также числа, буквы, выражения. Как и в случае векторов, буквенные элементы и элементы – выражения должны быть предварительно определены численно. На рис.6 показаны различные способы ввода матриц.

Рис.6. Ввод матриц.
Задача 2. Ввести все матрицы, приведенные на рис.6.
Элементы матриц являются индексированными переменными, имена которых совпадают с именами матриц. Для каждой индексированной переменной указываются два индекса: один — для номера строки, другой — для номера столбца. Например, для матрицы W средний элемент обозначается как W1,1 а последний как W2,2. (Индексы набираются через запятую). На рис.7 показано изменение индексации при различных значениях переменной ORIGIN.(Набирается обязательно заглавными буквами).
Рис.7. Роль переменной ORIGIN
В Маткад определены следующие действия над векторами и матрицами:
скалярное и векторное умножение,
Они выполняются с использованием следующих кнопок панели Matrix:
кнопка индексации элементов матрицы,
кнопка обращения матрицы,
кнопка скалярного произведения векторов и матриц
кнопка транспонирования матрицы,
кнопка векторного произведения двух векторов
кнопка сложения векторов
кнопка выделения столбца матрицы кнопка вычисления детерминанта матрицы.
На рис.8 приведены все эти действия над матрицами, приведенными на рис.6.

Задача.3: Произвести над матрицами все действия, показанные на рис.8.
Рис.8. Действия над матрицами
Задача.4: Ввести две произвольные матрицы. Перемножить. Например:
Проверьте на бумаге правильность произведенных выше действий
Рис.9. Пример выполнения задачи 4
Обращение и вычисление определителя возможно только для квадратных матриц.
Задача 5.. Введите произвольную квадратную матрицу, найдите обратную ей и вычислите определитель, используя показанные выше кнопки встроенных операторов.
Рис.10. Пример выполнения задачи 5.

Как известно, умножение матрицы на обратную дает единичную матрицу. Проверим, правильно ли было проведено обращение
Задача 6. Найти скалярное и векторное произведения двух заданных трехэлементных векторов: Проверить на бумаге правильность вычислений.
Рис.11. Пример выполнения задачи 6.
Проверим правильность скалярного умножения, перемножив vxТ и vy . Получили также 36.
При рассмотрении матриц больших размеров удобно выделять их столбцы. Мы будем использовать его в модулях 2 и 3 при решении сложных задач.
Задача 7. Используя кнопку выделения столбцов, выделите столбцы произвольной матрицы, например:
Рис.12. Пример выполнения задачи 7.
В Маткаде имеется большое количество встроенных функций для действий над матрицами и векторами. Рассмотрим некоторые из них.
Вычисление максимального и минимального элементов матрицы или вектора производится с помощью встроенных функций Max(A )и Min(A).
Задача 8 . Вычислить максимальный и минимальный элемент произвольной матрицы, например:
Рис13. Вычисление максимального и минимального элемента матрицы.
Определение количества столбцов и строк в матрице удобно для проверки действий над многомерными матрицами и векторами. Оно производится с помощью

встроенных функций Cols(A)- число столбцов матрицы А и Rows(A)- Число строк матрицы А.
Задача 9. Определить число строк и столбцов в произвольной матрице, например
Рис.13. Пример выполнения задачи 9.
Единичная матрица размером N формируется встроенной функцией Idenfity(N), а след матрицы – встроенной функцией . tr(A):
Рис.14. Формирование единичной матрицы и вычисление следа матрицы.
Графики матричных и векторных зависимостей.
В Маткаде возможно построение графиков по данным, записанным в векторной и матричной форме. На рис.15 показано построение двумерного графика по данным векторов vx и vy, а на рис.16. – построение трехмерного графика по заданным в матрице аргументам и вектору функции.
Рис.15. Построение двумерного графика по векторным данным.
Заданы двумерная матрица аргументов S и вектор значений функции этих аргументов Y.Показано построение графика.

Рис.16.Трехмерный график данных, записанных в векторной форме.
Операции над матрицами в аналитической (символьной) форме.
Системы компьютерной алгебры снабжаются специальным процессором для выполнения аналитических (символьных) вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых производятся аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, разумеется, если такое решение существует в принципе (что бывает далеко не всегда).
Ядро символьного процессора Маткад — несколько упрощенный вариант ядра известной системы символьной математики Maple V фирмы Waterloo Maple Software , у которой MathSoft (разработчик Маткада) приобрела лицензию на его применение, благодаря чему Маткад стал системой символьной математики.
Введение в систему Маткад символьных вычислений придает ей качественно новые возможности. Символьные вычисления выполняются, в конечном счете, столь же просто для пользователя, как, скажем, вычисление квадрата х.
Операции, относящиеся к работе символьного процессора, содержатся в подменю позиции Symbolic (Символика) главного меню.
Чтобы символьные операции выполнялись, процессору необходимо указать, над каким выражением эти операции должны производиться, т е надо выделить выражение. Для ряда операций следует не только указать выражение, к которому они относятся, но и наметить переменную, относительно которой выполняется та или иная символьная операция.
Само выражение в таком случае не выделяется, ведь и так ясно, что если маркер ввода выделяет переменную какого-либо выражения, то это выражение уже отмечено наличием в нем выделяемой переменной
Символьные операции разбиты на пять характерных разделов. Это операции с выражениями, операции с переменными, операции с матрицами, операции преобразования, стиль эволюции. Первыми идут наиболее часто используемые операции Они могут выполняться с выражениями, содержащими комплексные числа или имеющими решения в комплексном виде
В данной лабораторной работе мы рассмотрим только операции с матрицами. В дальнейшем будут рассмотрены и другие символьные операции.
Символьный процессор системы Маткад обеспечивает проведение в символьном виде трех наиболее распространенных матричных операций транспонирования и обращения матриц, а также вычисления их детерминанта.
При символьных вычислениях, прежде всего, следует вызвать панель символьных
вычислений нажатием кнопки на математической панели.
После этого появится панель символьных вычислений, показанная на рис.17

Рис.17. Панель символьных вычислений
Для символьных операций над матрицами нам понадобится только предпоследняя строка этого окна, с помощью кнопок которой и производятся транспонирование, обращение матрицы и нахождение ее определителя.
Задача 10. Используя кнопки панели символьных вычислений, провести аналитическое транспонирование и обращение произвольной матрицы, например:
Рис.18. Пример символьного решения матричных задач.
ЛАБОРАТОРНАЯ РАБОТА №4. РЕШЕНИЕ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ В МАТЕМАТИЧЕСКОМ ПАКЕТЕ «Маткад».
Алгебраические уравнения в Маткаде решаются как численными, так и аналитическими методами. В данной лабораторной работе будут рассмотрены оба метода
Численное решение системы линейных алгебраических уравнений .
При численном решении систем линейных уравнений используется специальный вычислительный блок, открываемый служебным словом — директивой Given. Блок имеет следующую структуру:
Задание начальных приближений
Ограничительные условия выражения с функцией find
MathCAD — это просто! Часть 10. Работа с векторами и матрицами
Снова здравствуйте. Мы с вами успели вполне успешно закончить со школьной алгеброй, и, значит, можем переходить к более сложным вещам — например, к тому разделу математики, который в университетах обычно называют линейной алгеброй. Конечно, раздел этот весьма и весьма обширен, и нечего даже думать о том, чтобы охватить хотя бы большую его часть. Тем не менее, нам с вами, я так думаю, кое-что из него научиться использовать практически вполне по силам — к примеру, мы можем научиться работать в MathCAD’е с векторами и матрицами. Эти два понятия — важнейшие математические абстракции, роль которых трудно переоценить в научно-техническом прогрессе. Ведь именно применение векторов и векторного анализа позволило в свое время Оливеру Хевисайду сократить количество уравнений Максвелла, описывающих электромагнитное поле, с двух десятков до всего лишь четырех. До векторного анализа, я так думаю, мы с вами в свое время еще доберемся, ну, а пока займемся более прозаическими вещами. Какими именно? Думаю, все станет ясно, если вы продолжите читать эту статью.
Немного об элементах матриц
Хотя дальше мы будем иметь дело и с векторами, и с матрицами, я краткости ради буду говорить просто «матрица», подразумевая, что под вектором мы будем иметь в виду частный случай матрицы, а именно ту ее разновидность, которая представляет собой одиночный столбец. Если же вектор будет представлять собой строку, то это будет специально оговорено. Впрочем, думаю, до этого дело вряд ли дойдет. С матрицами, вообще говоря, мы с вами работать уже немного умеем. Ну, не то чтобы прямо так вот работать — по крайней мере, вводить их в MathCAD’е мы уже вводили. Тем не менее, думаю, будет не лишним напомнить, что ввести в рабочую область матрицу можно с помощью кнопки Matrix or Vector, расположенной на панели Matrix, либо с помощью сочетания горячих клавиш Ctrl+M. Впрочем, мы с вами пока не затрагивали один небольшой, но крайне важный момент, а именно как обращаться в вычислениях не к матрице целиком, а к отдельным ее элементам. Сделать это, на самом деле, очень просто. Пусть у нас задана квадратная матрица X размером два на два элемента. Верхний левый элемент будет иметь индексы 0,0; нижний правый, соответственно, будет иметь индексы 1,1. То есть, как видите, элементы матрицы нумеруются с нуля. Это, в общем-то, довольно удобно, однако, если для вас привычнее нумеровать их с единицы, или, скажем, с 1024-х, то можно поменять значение встроенной переменной ORIGIN, введя в самом начале документа MatchCAD в строку (без кавычек). Или, соответственно, «ORIGIN := 1024». Можно поменять значение переменной и в окне опций MathCAD’а, выбрав в меню Tools пункт Worksheet options и на вкладке Built-In Variables поменяв значение переменной ORIGIN на нужное вам.
Так вот, вернемся к нашим элементам матрицы. Чтобы «вынуть» из нее первый элемент, нужно написать следующее: X0, 0. Для того, чтобы записать индексы внизу от имени переменной, которая обозначает матрицу, можно воспользоваться кнопкой Subscript со все той же панели инструментов для матричных и векторных вычислений или с клавиатуры перейти в нижний индекс клавишей «[» (русское «х»). Обратите внимание, что для разделения индексов, обозначающих строку и столбец, используется запятая. Элементы матрицы можно не только извлекать из матрицы, заданной таблично. Вы можете задать несколько элементов с соответствующими индексами по ходу вычисления, а после уже MathCAD самостоятельно сформирует из них матрицу (но только когда вы зададите уже все ее элементы — в противном случае незаданным элементам будут присвоены нулевые значения). Вы можете использовать ранжированные переменные для задания элементов матрицы. Временами это бывает не просто удобно, а очень удобно. Так, к примеру, можно задать для матрицы X следующую формулу, описывающую значения каждого ее элемента i-й строки и j-го столбца: Xi, j := i * j. Перед таким определением элементов матрицы остается только определить диапазон, в котором будут изменяться i и j. Я для примера взял значения i := 0..5 и j := 0..5, но вы, конечно же, можете установить любой другой нужный вам диапазон в зависимости от требований вашей задачи, решаемой с помощью матриц в среде MathCAD.
Операции над матрицами
Конечно, у применения матриц в реальных задачах существует множество интересных и не очень аспектов, однако все они рано или поздно упираются в необходимость проведения с матрицами простых алгебраических операций. Проводить их вручную — задача трудоемкая, и можно потратить время с гораздо большей пользой, переложив рутинную работу на MathCAD. Для начала познакомимся с теми функциями, которые собственно никаких математических операций не выполняют, но при этом являются весьма важными в действиях с матрицами. Эти функции позволяют объединять две матрицы в одну (не складывать матрицы, а просто объединять их элементы) и выделять из матрицы другую матрицу. Первая из функций — augment. Она объединяет две матрицы, имеющие одинаковое число строк, таким образом, что из них образуется одна, в которой элементы этих двух располагаются, что называется, «плечом к плечу». В качестве аргументов этой функции нужны только две объединяемые матрицы. Ее аналог для тех матриц, которые имеют одинаковое число столбцов, и должны быть объединены одна над другой, является функция stack. Ее аргументами тоже должны быть две объединяемые матрицы. Функция же, которая не объединяет, а, напротив, «разрезает» матрицы, имеет название submatrix. Для нее нужно указывать имя матрицы, из которой мы хотим выделить подматрицу, и координаты элементов новой матрицы в старой матрице. То есть для того, чтобы вырезать матрицу 4х4 из верхних левых элементов матрицы размером 5х5, нам нужно вызывать эту функцию со следующими параметрами: submatrix(Y, 0, 4, 0, 4). Здесь Y — это, конечно же, имя матрицы размером 5х5 элементов. Демонстрацию использования всех этих функций применительно к конкретным матрицам можно увидеть на соответствующей иллюстрации к статье.
Теперь, я так думаю, самое время перейти уже к арифметическим операциям над матрицами. Вы увидите, что их использование в MathCAD не потребует от вас никаких специальных знаний в области линейной алгебры — не считая, конечно, общих представлений о том, как работают матричные операции, для понимания того, что может получиться в их итоге. MathCAD хорош для пользователя тем, что позволяет ему работать с векторами и матрицами точно так же, как с обычными скалярами, сиречь переменными, содержащими исключительно и только действительные числа. Попробуйте задать две матрицы (я их назвал aa и bb), а затем применить к ним операцию сложения точно так же, как когда-то применяли ее к обыкновенным числам. Конечно, для того, чтобы матрицы можно было складывать, они должны иметь одинаковые размеры. Точно так же можете попробовать вычесть из одной матрицы другую или перемножить их. Вы увидите, что MathCAD успешно справляется с подобными задачами, не напрягая пользователя излишними вычислениями.
Транспонировать матрицы в MathCAD’е ничуть не сложнее, чем их складывать или перемножать. Вычислять обратные матрицы, впрочем, тоже. Во всех этих задачах помогут соответствующие операторы с Они обозначены на ней теми же значками, что и в учебниках по линейной алгебре, а потому пользователю, хотя бы минимально знакомому с матричным исчислением, все должно быть просто и понятно. Нужно только помнить, что нельзя вычислить обратную матрицу для той матрицы, которая является вырожденной (то есть имеет нулевые или пропорциональные друг другу строки или столбцы). Для того, чтобы не останавливаться излишне подробно на этих простых операциях, просто приведу иллюстрацию, демонстрирующую их практическое использование. Думаю, у читателей не возникнет никаких проблем ни с транспонированием, ни с вычислением обратной матрицы с помощью MathCAD.
Еще одной часто выполняемой операцией является вычисление детерминанта, или определителя матрицы. Думаю, что совсем не огорчу вас известием о том, что в MathCAD и с определителями работать так же просто, как и со всем остальным, связанным с матрицами. За его вычисление отвечает кнопка Determinant, расположенная, конечно же, на панели Matrix. Поскольку детерминант в MathCAD’е, как и вообще в линейной алгебре, обозначается с помощью символов прямых черт, ограничивающих матрицу (или имя переменной, ее обозначающей), то вполне логично, что вставить эти самые прямые черты в текст выражения можно с помощью соответствующей клавиши на клавиатуре: Shift + \. Думаю, этой несложной комбинацией будет пользоваться все же удобнее, чем искать каждый раз нужную кнопку на панели инструментов MathCAD’а.
Внешний вид матриц
Мы с вами, конечно же, далеко еще не закончили свое знакомство с матрицами в MathCAD’е, однако, думаю, на сегодня уже непосредственной математики хватит. В конце статьи я лучше расскажу о том, как можно изменить способ отображения матриц в среде MathCAD — возможно, кому-то из читателей этой статьи эта информация будет полезной и небезынтересной.
Дело в том, что MathCAD может отображать матрицы не только в привычном всем виде чисел, заключенных в скобки, но и в виде таблиц. Если вы используете этот математический пакет для каких-либо статистических расчетов и при этом работаете с большими массивами данных, то, безусловно, такое отображение матриц будет более предпочтительным для вас, чем традиционное. Для изменения способа отображения матриц дважды кликните по нужной матрице и в появившемся окне перейдите на вкладку Display Options. Далее в поле Matrix display style выберите значение Table. Матрица приобретет вид точно такой, как на соответствующей иллюстрации к этой статье.
Внешний вид таблицы можно также настроить далее, кликнув по ней правой кнопкой мыши и выбрав пункт Properties. В появившемся окне можно снять птичку с пункта Show column/row labels, чтобы убрать отображение нумерации строк и столбцов в матрице, представляемой в виде таблицы. На вкладке Data Range можно выбрать диапазон отображаемых строк и столбцов матрицы, что также полезно для матриц, содержащих большое количество элементов.
Ну что ж, на сегодня, думаю, достаточно. Это только начало работы с матрицами — в следующий раз мы поговорим о гораздо более интересных вещах, чем просто сложение, транспонирование и вычисление детерминанта.
Программирование и разработка приложений в Maple (стр. 22 из 135)
• Векторы (vector); в среде Maple-языка вектор представляется в виде 1D-массива, нумерация строк и столбцов которого производится, начиная с единицы. Вектор определяется либо явно через рассмотренную выше array-функцию, например V:= array(1..n), или посредством процедуры vector, имеющей следующие два простых формата:
где Xk — элементы вектора, n — число его элементов и Fn — функция генерации элементов вектора аналогично случаю определения матриц. По тестирующей же функции type(V, ) возвращается значение true, если V-выражение является вектором; при этом, допускается проверка на принадлежность значений его элементов заданной К-области. В противном случае функцией возвращается false-значение. Так как вектор является одним из типов общего понятия массив, то функция type(V, ‘array’) также возвращает true-значение, если V – вектор. Обратное в общем случае неверно, например, в случае списка. По convert(L, ‘vector’)-функции возвращается вектор, если L – соответствующая ему списочная структура.
Следует отметить, что в силу специфики организации базовых структур, на которых основываются векторы, массивы, и матрицы, они не вполне однозначно тестируются пакетными процедурой whattype и функцией type, как иллюстрирует фрагмент ниже:
> v:=vector(3,[]): m:=matrix(3,3,[]): a:= array(1..2,1..3,[]): map(whattype, map(eval, [v,m,a]));
[array, array, array]
[true, true, true], [true, false, false], [false, true, true]
Так, если процедура whattype отождествляет все типы как обобщающий array-тип, то функция type обеспечивает более дифференцированное тестирование, хотя и в этом случае типы array и matrix ею не различаются. Предыдущий фрагмент хорошо иллюстрирует сказанное.
• Основные характеристики матриц и векторов. Прежде всего, среди класса матричных объектов выделим квадратные (square) матрицы, которые будут основным объектом нашего рассмотрения и для работы с которыми Maple-язык располагает довольно широким набором функциональных средств. Поэтому, если не оговаривается противного, то под понятием «матрица» в дальнейшем понимается именно квадратная матрица. Для работы с такого типа матрицами Maple располагает большим набором средств, находящихся в пакетных модулях linalg и LinearAlgebra.
Прежде всего, по функции indices(M) возвращается последовательность 2-элементных списков, определяющих индексное простанство М-матрицы, а по функции entries(M) – последовательность 1-элементных списков, содержащих значения элементов М-матрицы. В случае использования в качестве М-аргумента таблицы функция возвращает соответственно ее входы и выходы. При этом, следует иметь в виду, что в случае матриц обе функции возвращают последовательности списков, имеющих внутреннее взаимно-однозначное соответствие (при отсутствии оного в их выходных порядках), не управляемых пользователем. Вместе с тем, на основе несложной Pind-процедуры [103], в качестве единственного фактического аргумента использующей выражение типа , можно получать (nxp)-размерность произвольной М-матрицы в виде [n, p]списка, как это иллюстрирует следующий весьма простой фрагмент:
18104 16277 223610 284513 543416 634019 467222 815225 285890 649931, M1M1M1132. 111 M1M1M1321. 222 M1M1M1123. 333
[1, 3], [3, 2], [2, 1], [3, 6], [1, 6], [2, 5], [3, 10], [1, 2], [1, 4], [3,3], [1, 7], [1, 9], [3, 7], [2, 9], [1,5], [2,10],
[2, 4], [1, 1], [3, 4], [2, 7], [1, 8], [3, 8], [2, 6], [2, 2], [1, 10], [2, 8], [3, 1], [3, 5], [2, 3], [3, 9]
> entries(M); ⇒ [10], [27], [10], [63], [19], [34], [99], [7], [13], [36], [22], [28], [72], [58], [16],
[64], [28], [4], [45], [46], [25], [81], [40], [16], [31], [52], [18], [54], [22], [90]
> Pind(M), Pind(M1); ⇒ [3, 10], [3, 3] > assign(Kr=matrix(3,3,[[a,e*ln(x),c],[d,e*ln(x),f],[e*ln(x),h,k]])), eval(Kr), Mem1(Kr,e*ln(x));
Во фрагменте иллюстрируется определение М-матрицы на основе matrix-функции с использованием Fn-функции генерации элементов матрицы. Представлено применение Pind-процедуры для определения размерности матриц. Процедура Mem1(M, h) возвращает последовательность, первый элемент которой определяет число вхождений в Mматрицу элементов, заданных вторым h-аргументом функции, а последующие определяют списки-координаты искомых элементов. В нашей Библиотеке [103] представлен целый ряд других полезных процедур для работы с матрицами. Можно определять целый ряд других полезных процедур как на основе представленных, так и других функций Maple-языка, что оставляется читателю в качестве весьма полезного практического упражнения. В реальной работе с пакетом это вполне возможные ситуации.
Как таблица, так и общая функция array( ) допускает 3 необязательных ключевых аргумента: ИФ – индексная функция, размерность, кодируемая в виде диапазонов (..) изменения значений индексов, и НЗ – список начальных значений для определения элементов массива. Два последних из них достаточно просты и неоднократно обсуждались при рассмотрении массивов и таблиц. Несколько детальнее остановимся на индексной функции, имеющей для матриц особое значение, определяя общего уровня их классификацию. В общем случае индексная функция определяет правило присваивания значений элементам массива или таблицы, или их обработки. При отсутствия ИФ-аргумента используется стандартный метод индексации элементов массива (матрицы). Индексная функция может определяться пользовательской процедурой, принцип организации которой здесь не рассматривается, но общий подход был указан выше. Для этих целей может использоваться, например, процедура indexfunc пакетного модуля linalg. Язык Maple располагает пятью основными встроенными ИФ с идентификаторами symmetric, antisymmetric, sparse, diagonal и identity для функций table и array. Мы рассмотрим вкратце данные индексные функции.
Индексная symmetric-функция применима в качестве первого фактического аргумента для определения симметричности элементов матрицы/таблицы относительно ее главной диагонали, т.е. для М-матрицы предполагается определяющее соотношение M[k,j] = M[j, k]. В свою, очередь antisymetric-аргумент определяет М-матрицу с соотношением M[k, j] = -M[j, k], следовательно ∀(k)∀(j)(k=j)(M[k, j]=0). Если же при определении такого типа матрицы были заданы ненулевые начальные значения для ее диагональных элементов, то они получают нулевые значения с выводом соответствующей диагностики. Аргумент diagonal определяет диагональную М-матрицу, для которой справедливо соотношение ∀(k)∀(j)(k≠j)(M[k, j]=0). Посредством sparse-аргумента определяется М-матрица, чьи неопределенные входы получают нулевые значения. Например, по вызову array(sparse, 1..n, 1..p) возвращается нулевая матрица (nxp)-размерности. Наконец, по identity-аргументу возвращается единичная матрица, для которой имеет место соотношение ∀(k)∀(j)[(k=j) → (M[k, j] = 1)] & [(k≠j) → (M[k,j] = 0)]. Следующий пример иллюстрирует получение рассмотренных выше пяти типов матриц:
> MS:=array(symmetric, 1..3, 1..3): MS[1, 1]:=10: MS[1, 2]:=17: MS[1, 3]:=39: MS[2, 2]:=64:
MS[2, 3]:=59: MS[3, 3]:=99: MD:=array(diagonal, 1..3, 1..3): MD[1, 1]:=2: MD[2, 2]:=10:
MD[3, 3]:=32: MAS:= array(antisymmetric, 1..3, 1..3): MAS[1, 2]:=10: MAS[1, 3]:=32:
MAS[2, 3]:=52: MI:= array(identity, 1..3, 1..3): MSp:=array(sparse, 1..3, 1..3): map(evalm,
[MS, MAS, MD, MI, MSp]);
Так как вектор представляет собой (1xn)-матрицу, то к нему применим и целый ряд сугубо матричных функций, например evalm-функция, позволяющая возвращать вычисленные векторные выражения в векторной (списочной) нотации. Более того, все имеющее силу относительно матриц в полной мере (с поправкой на размерность) относится и к векторам. В частности, это относится и к (&*)-оператору матрично/векторного произведения. Длину V-вектора, подобно случаю матриц, можно вычислять, в частности, посредством конструкции вида nops([ (V)]); при этом, нулевое значение возвращается, если элементам V-вектора не присваивалось значений. Следующий простой фрагмент иллюстрирует некоторые способы определения, тестирования и вычисления простых векторных выражений в среде Maple-языка:
> V1:= array(1..9): V2:= array(1..6, [64, 59, 39, 10, 17, 44]): V3:= vector(5, [42, 47, 67, 89, 96]): V4:= vector(5, [64, 59, 39, 17, 10]): Fn:= k -> 3*k^2 + 10*k + 99: V5:= vector(5, Fn):
V6:= vector(6, [V, G, S, Art, Kr, Ar]): map(type, [V1, V2, V3, V4, V5, V6], ‘vector’);
[true, true, true, true, true, true]
> map(nops, [[indices(V6)], [entries(V6)]]); ⇒ [6, 6]
> V:=vector(6, []): map(nops, [[indices(V)], [entries(V)]]); ⇒ [0, 0]
> [type(V4, ‘vector'(integer)), type(V6, ‘vector'(symbol))]; ⇒ [true, true]
> Z:= vector([W, G, S]): M:= array(1..3, 1..3, [[1, 2, 3], [4, 5, 6], [7, 8, 10]]): evalm(M&*Z);
Похожие публикации:
- Где icq хранит историю переписки
- Где найти переводчик в telegram
- Где сохраняются фото с snapchat
- Как активировать wolfram mathematica 11
