logo search
mathcad

Решение линейной системы уравнений

Если Вы используете Mathcad PLUS, Вы сможете использовать функцию lsolve для решения линейной системы уравнений. Рисунок 17 показывает пример. Обратите внимание, что M не может быть ни вырожденной, ни почти вырожденной для использования с lsolve. Матрица называется вырожденной, если её детерминант равен нулю. Матрица почти вырождена, если у неё большое число обусловленности. Можно использовать одну из функций, описанных на странице 204, чтобы найти число обусловленности матрицы.

Имя функции

Возвращается...

   lsolve (M, v)

Вектор решения  x такой, что M x=v.

Если Вы не используете Mathcad PLUS, Вы всё-таки можете решать систему линейных уравнений, используя обращение матрицы, как показано в нижнем правом углу Рисунка 9.

Рисунок 17: Использование lsolve для решения системы из двух уравнений с двумя неизвестными.

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

Оператор векторизации предписывает Mathcad выполнить одну и ту же операцию над каждым элементом вектора или матрицы.

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

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

Как применять оператор векторизации к выражению

Вот как применить оператор векторизации к выражению подобному М N:

Как оператор векторизации изменяет смысл выражения.

Оператор векторизации изменяет смысл операторов и функций, к которым применяется. Оператор векторизации предписывает Mathcad применять операторы и функции в их скалярном значении к каждому элементу массива поочередно.

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

Эти свойства оператора векторизации позволяют использовать скалярные операторы и функции с массивами. В настоящем руководстве это называется “векторизацией” выражения. Например, предположим, что нужно применять формулу корней квадратного уравнения к трем векторам, содержащим коэффициенты a, b и c. Рисунок 18 показывает обычное использование этой формулы. Рисунок 19 показывает, как использовать её, когда a, b и c — векторы.

Рисунок 18: Формула корней квадратного уравнения.

Рисунок 19: Формула корней квадратного уравнения в применении к векторам.

Оператор векторизации появляется как стрелка над формулой корней квадратного уравнения на Рисунке 19. Его использование существенно в этом вычислении. Без него Mathcad интерпретировал бы a c как скалярное произведение векторов, а также пометил бы квадратный корень вектора как недопустимое выражение. Но с оператором векторизации и a c, и квадратный корень вычисляются поэлементно.

Ниже приведены свойства оператора векторизации:

Можно использовать векторы и матрицы, чтобы определить сразу несколько переменных. Это делается размещением массива имен переменных слева от := и соответствующего массива значений справа. Mathcad присваивает значения, стоящие справа, к соответствующим именам слева. Левая сторона одновременного определения — вектор или матрица, чьи элементы являются либо именами простых переменных, либо переменных с индексом. Правая сторона должна быть выражением, принимающим значение массива с тем же самым числом строк и столбцов, что и левая сторона.

Рисунок 20: Одновременные определения.

Mathcad присваивает каждой переменной слева значение выражения из соответствующей позиции справа. Рисунок 20 показывает два таких  определения.

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

Аргументы в определении функции не обязаны быть скалярными переменными. Они могут также быть векторами или матрицами. Функции могут также возвращать значения, которые являются скалярами, векторами или матрицами. Рисунок 21 показывает некоторые примеры функций, имеющих аргументами массивы, и функций, которые возвращают массивы. Обратите внимание, что, если функция ожидает вектор или матрицу в качестве аргумента, она не будет работать для скалярного аргумента. В примере из Рисунка 21 попытка вычислить extent(3) приведёт к сообщению об ошибке “требуется массив”.

Рисунок 21: Функции пользователя, связанные с векторами и матрицами.

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

Элемент массива не обязан быть скаляром. Возможно сделать массивом сам элемент массива — это позволяет создавать массивы из массивов.

Эти массивы ведут себя во многом схоже с массивами, чьи элементы — скаляры. Однако имеются некоторые различия:

Следующие разделы проясняют эти различия.