Как решаются системы линейных алгебраических уравнений в среде mathcad

Корпорация "Центр"

Как решаются системы линейных алгебраических уравнений в среде mathcad

Вы здесь: Всё о Mathcad Всё о Mathcad Численные вычисления Решение системы уравнений в Mathcad

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

Первоначально рассмотрим СЛАУ в Mathcad. Для их решения может использоваться блок given …find() или специальная функция lsolve(). Применение блока given …find() предопределяет необходимость задания начальных значений искомых переменных. Далее после ключевого слова given описывается СЛАУ и с помощью find() находится решение. Следует указать, что в том случае, когда СЛАУ в Mathcad имеет бесконечное множество решений блок given …find() дает конкретный результат, что несомненно следует отнести к недостаткам. В случае отсутствия решения будет выдано сообщение “Matrix is singular. Cannot compute its inversу – Матрица сингулярная. Нельзя вычислить эту инверсию”.

Применение функции lsolve( ) позволяет избежать этого недостатка. Функция lsolve(M,b) имеет два аргумента. M – матрица коэффициентов при неизвестных, b – вектор свободных членов. На листинге приведен пример решения СЛАУ.

Пример решения СЛАУ:

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

Для решения системы нелинейных уравнений используются два блока: given…find() и given…minerr (). Так как система нелинейных уравнений может иметь несколько решений, то полученные результаты зависят от начальных значений искомых переменных. В обоих случаях получаются приближенные решения, для которых рекомендуется делать проверку. Обычно в Mathcad требуется, чтобы количество уравнений было равно количеству искомых переменных, но в некоторых случаях, когда с точки зрения классической математики может быть получено точное решение и при меньшем количестве уравнений, данное условие может быть нарушено. На листинге представлены примеры использования блоков given…find() и given…minerr () для решения систем нелинейных уравнений.

Как решаются системы линейных алгебраических уравнений в среде mathcad

Примеры решения систем линейных алгебраических уравнений

Больщинство рассмотренных численных методов решения систем линейных алгебраических уравнений предаолагвет, что исходная система преобразована к стандартному виду: выделены матрица коэффициентов при неизвестных А и вектор свободных членов В.

1. Тогда в матричной форме вычисление вектора корней Х выполняется умножением обратной матрицы А на вектор В:

X = A –1 B

В Mathcad решение задачи может отличаться способами задания матриц А и В:

если порядок системы не выше 10, то исходные матрицы допустимо задать непосредственно в документе (Mathcad даже 11 версии не позволяет сформировать в документе матрицу, содержащую более 100 элементов, в версии 14 этих ограничений нет);

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

2. Алгоритм правила Крамера для решения системы из n уравнений может быть легко запрограммирован с помощью единственного оператора цикла по индексу столбцов матрицы A коэффициентов при неизвестных:

  • в копии S матрирцы коэффициентов A заменим последовательно 1.. n столбцы на вектор B;
  • очередной корень находим делением определителей измененной матрицы S и матрицы A:

3. Не следует забывать о возможности получить приближенное решение системы с помощью функции Find. В этом случае преобразование системы к стандартному виду не требуется, уравнения записываются практически в исходном виде в блоке Given с символом "Равно" ( Ctrl/= ). В приводимом примере показано, что корни будут получены в той последовательности, как они указаны в списке параметров функции Find.

Решение системы линейных алгебраических уравнений с помощью функции lsolve

Mathcad обладает специальными средствами решения линейных уравнений, а именно, в его состав входит функция lsolve.

Корпорация "Центр"

Функция lsolve предназначена для решения линейной системы уравнений, которая в матричном виде записывается следующим образом

где A-матрица коэффициентов системы уравнений,

b- вектор свободных членов системы уравнений,

х-вектор неизвестных величин.

Предположим, что надо решить следующую систему уравнений

Для этой системы уравнений матрица коэффициентов A будет иметь следующий вид

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

Вектор свободных членов системы уравнений b будет иметь следующий вид

Вектор неизвестных величин x будет иметь следующий вид.

Решение линейной системы уравнений в Mathcad’e с помощью функции lsolve выглядит следующим образом х:=lsolve(A,b). Функция имеет два аргумента: первый аргумент A-матрица коэффициентов системы уравнений, второй аргумент b- вектор свободных членов системы уравнений. Функция lsolve возвращает вектор решений системы линейных уравнений.

Сценарий решения в Mathcad’e задачи расчёта электрической цепи с помощью функции lsolve может выглядеть следующим образом

Решение системы линейных алгебраических уравнений с помощью блока Given/Find.

Решить систему линейных уравнений можно с помощью блока Given/Find. Так как в этом случае используется итерационный метод расчёта, то в начале надо задать приближённое значение решения.

В блоке Given при записи уравнения знак равенства надо брать из панели Boolean.

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

Приведём иной сценарий для решения той же задачи. Здесь используются переменные без индексов.

Корпорация "Центр"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *