Lsolve в маткаде: 8.1.2. Функция lsolve MathCAD 12 руководство

8.1.2. Функция lsolve MathCAD 12 руководство

RADIOMASTER

Лучшие смартфоны на Android в 2022 году

Серия iPhone от Apple редко чем удивляет. Когда вы получаете новый iPhone, общее впечатление, скорее всего, будет очень похожим на ваше предыдущее устройство. Однако всё совсем не так в лагере владельцев устройств на Android. Существуют телефоны Android всех форм и размеров, не говоря уже о разных ценовых категориях. Другими словами, Android-телефон может подойти многим. Однако поиск лучших телефонов на Android может быть сложной задачей.

1309 0

Документация Схемотехника CAD / CAM Статьи

MathCAD 12 MatLab OrCAD P CAD AutoCAD MathCAD 8 – 11

  • Главная
  • /
  • База знаний
  • /
  • CAD / CAM
  • /
  • org/Breadcrumb”>MathCAD 12
  • Системы линейных уравнений
  • 8.1. Хорошо обусловленные системы с квадратной матрицей
    • 8.1.1. Вычислительный блок Given / Find
    • 8.1.2. Функция lsolve
  • 8.2. Произвольные системы линейных уравнений
    • 8.2.1. Переопределенные системы
    • 8.2.2. Недоопределенные системы
    • 8.2.3. Вырожденные и плохо обусловленные системы
  • 8.3. Матричные разложения
    • 8.3.1. СЛАУ с треугольной матрицей
    • 8.3.2. Разложение Холецкого
    • 8.3.3. LU-разложение
    • 8.3.4. QR-разложение
    • 8.3.5. SVD-(сингулярное) разложение
  • 8.4. Собственные векторы и собственные значения матриц

Альтернативой способу решения СЛАУ, введенному в предыдущем разделе, является применение встроенной функции isolve. Для этого система уравнений должна быть записана в матричной форме Аx=b:

  •  isolve (А, b) — вектор решения системы линейных алгебраических уравнений:
  •  А — матрица коэффициентов системы;
  •  b — вектор правых частей.

ПРИМЕЧАНИЕ

В функции isolve запрограммирован численный метод LU-разложения (см. разд. 8.3.3), основанный на алгоритме последовательных исключений Гаусса. Он состоит в преобразовании матрицы А линейной системы к треугольному виду, т. е. к форме, когда все элементы ниже главной диагонали матрицы являются нулевыми (с/и. разд. 8.3.1). Точнее, исходная СЛАУ Ах=b заменяется эквивалентной системой с другой матрицей А* и другим вектором правых частей b*, но имеющей то же решение, что и исходная система. Очень важно заметить, что результат, выдаваемый методом Гаусса, является точным (конечно, с поправкой на неизбежно присутствующие ошибки численного округления, которые, в случае хорошо обусловленной матрицы А, являются ничтожными). Таким образом, в противоположность применению вычислительного блока Given/Find (в основе которого лежит приближенный итерационный алгоритм), функция isolve не нуждается в присвоении начальных значений вектору x.

Применение функции isolve показано в листинге 8. 4. При этом матрица А может быть определена любым из способов, необязательно явно, как во всех примерах этого раздела. В последней строке листинга осуществляется вычисление нормы невязки, которая оказывается равной нулю. Заметим, что встроенную функцию isolve допускается применять и при символьном решении СЛАУ (листинг 8.5). В последнем случае в уравнениях допускается использовать параметры (т. е. имена переменных, которым не присвоены никакие значения).

Листинг 8.4. Численное решение СЛАУ

Листинг 8.5. Символьное решение СЛАУ (продолжение листинга 8.4)

Нравится

Твитнуть

Теги MathCad САПР

Сюжеты MathCad

Глава 1 Основы работы с системой Mathcad 11

10011 0

Глава 10 Работа с информационными ресурсами Mathcad 11

7012 0

Глава 2 Работа с файлами Mathcad 11

12642 0

Комментарии (0)

Вы должны авторизоваться, чтобы оставлять комментарии.

Вход

О проекте Использование материалов Контакты

Новости Статьи База знаний

Радиомастер
© 2005–2022 radiomaster. ru

При использовании материалов данного сайта прямая и явная ссылка на сайт radiomaster.ru обязательна. 0.2269 s

MathCAD — это просто! Часть 4. Системы линейных алгебраических уравнений

Итак, мы с вами продолжаем изучать MathCAD — самую дружелюбную к пользователю математическую среду из существующих в настоящее время. Пока мы занимались тем, что изучали способы решения уравнений — трансцендентных и алгебраических, и теперь вы знаете, как их решать с помощью MathCAD’а в общем виде или численно. Как вы могли убедиться из материала третьей части, численное решение уравнений — не такая простая задача, как может показаться с первого взгляда, однако и не такая сложная, если построить график уравнения. Но просто уравнения — это, согласитесь, довольно скучно, потому что в жизни, как правило, уравнения по одиночке не встречаются. Поэтому сегодня мы перейдем к более сложной, а значит, и более интересной, теме — попробуем решать системы уравнений.

Я сказал “попробуем”? Простите, пожалуйста — я, наверное, оговорился. Конечно, не попробуем, а научимся — потому что благодаря MathCAD’у можно быть уверенным в том, что подобные попытки увенчаются успехом. Готовы? Ну что же, тогда вперед.

Решение систем с помощью функции lsolve

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

Для обозначения систем линейных алгебраических уравнений у математиков есть своя аббревиатура — СЛАУ. Ее используют намного чаще, чем полное название, что, в общем-то, вполне естественно — эта аббревиатура и произносима легко, и не перекрывается с другими математическими аббревиатурами.

Так что и мы с вами тоже будем ее применять. СЛАУ называется система уравнений следующего вида:
k11x1 + k12x2 + … + k1nxn + l1 = 0
k12x1 + k22x2 + … + k2nxn + l2 = 0

kn1x1 + kn2x2 + … + knnxn + ln = 0

Здесь kij и li — какие-то числовые константы, называемые, соответственно, коэффициентами и свободными членами уравнений, а xj — переменные. Такие уравнения обычно записывают также с помощью матриц:
KX + L = 0

Здесь K — матрица (kij), составленная из коэффициентов при переменных величинах, где i — номер строки матрицы, а j — номер столбца. X и L — это, соответственно, векторы, составленные из переменных и свободных членов. Собственно, при решении СЛАУ с помощью MathCAD мы будем записывать СЛАУ именно в таком виде, потому что решение СЛАУ в MathCAD реализовано именно с помощью матричных методов. Возможно, вы что-нибудь слышали о методах решения СЛАУ Гаусса и Крамера, но даже если и нет, ничего страшного в этом нет — MathCAD тем и удобен, что с его помощью можно решать уравнения, не задумываясь над тем, каким именно алгоритмом пользуется математическая система при их решении.

Итак, для начала давайте посмотрим, каким именно образом в MathCAD’е нужно задавать матрицы. Для этого на панели инструментов Matrix нажмите кнопку Matrix or Vector, а в появившемся окне задайте количество столбцов и строк в матрице. Мы с вами попробуем решать для начала СЛАУ из четырех уравнений, и, соответственно, нам нужна будет матрица размером четыре на четыре элемента. Только, поскольку мы будем присваивать значение, записанное в этой матрице, переменной, обозначающей матрицу коэффициентов, то сначала лучше записать “K_:=”, а потом уже вставлять матрицу. Обратите внимание на то, что мы будем обозначать матрицу не просто буквой К, а еще добавлять подчеркивание. Делается это специально для того, чтобы не переобозначать встроенные переменные среды MathCAD. Аналогичным образом теперь нужно задать вектор свободных членов — только его размер уже будет не 4х4, а 1х4. Для решения СЛАУ после того, как мы ввели коэффициенты (вы можете ввести их произвольно, а можете

воспользоваться теми, которые приведены на скриншоте — с ними цифры в ответе получаются довольно ровными и красивыми), нужно для решения СЛАУ использовать функцию lsolve. У нее есть два параметра: первый — это матрица коэффициентов уравнений, а второй — вектор свободных членов. То есть для получения результата нам нужно написать:
lsolve(K_, L_) =

Ну, а после знака равенства MathCAD нам уже нарисует результат.

С помощью функции lsolve можно получать и аналитические решения СЛАУ. Давайте попробуем заменить одно из чисел в матрице коэффициентов на букву — например, “а”. Функция lsolve сразу выдаст ошибку, но не нужно этого пугаться — нужно просто заменить знак равенства на стрелку (ее можно найти на панели инструментов Symbolic или же записать комбинацией клавиш Ctrl + .). Дело в том, что знак “равно” в MathCAD’е используется для численных вычислений, а стрелка — для символьных, то есть при решении систем уравнений в общем виде нужно применять именно стрелку.

Решение с помощью solve

В общем-то, решать такую систему можно было бы и используя уже знакомый нам с вами оператор solve. Для этого достаточно записать уравнения в виде матрицы, а затем применить к ней оператор solve точно так же, как если бы мы с вами решали не целую систему, а всего лишь одно- единственное уравнение. “Записать уравнения в виде матрицы” в данном случае означает не запись матричного уравнения KX + L = 0, а просто запись в каждой строке одностолбцовой матрицы (т.е. вектор-столбца) одного уравнения из системы. Напомню на всякий случай, что оператор solve находится на панели Symbolic, а для записи знака равенства нужно использовать не просто клавишу “=”, а ее комбинацию с клавишей Ctrl. Еще хочу добавить, что в данном случае, как, впрочем, и во многих других, которые мы с вами уже обговорили, это может вполне успешно использоваться для получения не только символьных, но и для численных решений.

Решение СЛАУ с помощью solve поначалу кажется не таким уж привлекательным, однако, по сути, оно ничем не отличается от использования функции lsolve. Например, если вы замените какой-нибудь из числовых коэффициентов в одном из уравнений на букву, чтобы получить аналитическое решение, solve справится с этим точно так же быстро и хорошо, как и функция lsolve. Так что, в общем-то, выбор при решении СЛАУ в пользу функции lsolve или в пользу оператора solve — дело скорее вкуса, причем вкуса в плане записи самой системы уравнений, а не оператора или функции, у которых, в общем-то, даже названия очень и очень похожи. Пожалуй, один из немногих случаев, когда все же предпочтительнее использовать именно оператор solve — это когда уравнений у нас больше, чем неизвестных, содержащихся в них. В этом случае матрица системы будет выглядеть не так, как хотелось бы, а вот с solve все будет нормально. Даже если решение найти не удастся, solve любезно об этом сообщит. Аналогичным образом можно попытаться решить СЛАУ и в том случае, когда соотношение между уравнениями и неизвестными, напротив, не в пользу уравнений (правда, как говорится, не с разгромным счетом, а то решение заведомо найти не удастся). Но даже в случае, когда мы пытаемся решить систему с тремя уравнениями и четырьмя неизвестными, оставив после solve только две из них, у нас это далеко не всегда может получиться — в этом вы можете убедиться воочию.

Численное решение СЛАУ

Что ж, давайте теперь посмотрим, как решать СЛАУ с использованием численных методов их решения. Это тоже вовсе не так сложно, как может с самого начала показаться, поскольку MathCAD имеет в своем арсенале ряд средств и на этот случай. Как и в случае с одиночными уравнениями, сначала нужно задать начальное приближение (на то оно и начальное, чтобы задавать его сначала). Только, поскольку переменная у нас теперь не одна, а их несколько, то и начальное приближение необходимо будет задать для каждой из них. В тех случаях, когда переменных в СЛАУ много, это будет совсем не просто. После того, как вы задали начальные приближения для каждой из нужных переменных, запишите сами уравнения — только сделайте это так, чтобы их и начальные приближения разделяло специальное слово “Given” (оно, конечно же, в рабочей области MathCAD’а должно быть записано безо всяких кавычек). После того, как вы записали начальные приближения, слово “Given” и сами уравнения, можно смело воспользоваться функцией find, которая найдет точные значения решений системы. Поскольку в СЛАУ каждая из переменных в итоге будет иметь только одно значение, над подбором максимально точного начального приближения можно особо и не страдать — в конечном итоге в случае СЛАУ оно скорее просто формальность, нежели реальная необходимость, и, как вы сами имели возможность убедиться, есть методы, которые прекрасно решают СЛАУ и без него.

Теперь, когда вы знаете уже столько разных способов решения СЛАУ, вполне логично было бы задаться вопросом: а какой из них лучше при прочих равных условиях? В литературе, как правило, рекомендуется использовать функции lsolve или find, дающие точность до 15 знаков после запятой — однако на самом деле, учитывая тот факт, что такая точность бывает нужна не так уж часто, данным советом можно пренебречь, потому что точность решения системы намного больше зависит от нее самой, нежели от используемого метода ее решения в MathCAD’е. Так что используйте пока что смело тот, который показался вам наиболее удобным, а о погрешностях при решении СЛАУ мы с вами еще поговорим, но только, пожалуй, немного попозже.

SF, [email protected]

Компьютерная газета. Статья была опубликована в номере 16 за 2008 год в рубрике soft

Символьное решение уравнений » MathCadHelp.com » Номер 1 в назначениях MathCad

В этом разделе обсуждается, как использовать ключевые слова или команды меню из символического меню для символьного решения уравнения для переменной, поиска символических корней выражения и решения система уравнений символически. Большинство примеров в этом разделе демонстрируют «живое» решение с использованием ключевых слов-символов, но вы можете применять команды из меню «Символы» к выражениям в каждом конкретном случае, если хотите. Имейте в виду, что, в отличие от выражений с измененными ключевыми словами, выражения, измененные с помощью команд из меню «Символика», не обновляются автоматически, как описано в разделе «Использование меню «Символика»» на странице 360.

Решать уравнения символически намного сложнее, чем решать их численно. Вы можете обнаружить, что символьный решатель не дает решения. Это может произойти по разным причинам, описанным в разделе “Ограничения обработки символов” .

Решение уравнения для переменной

Чтобы символически решить уравнение для переменной, используйте ключевое словоsolve:

• Введите уравнение. Убедитесь, что вы используете [Ctrl]= для создания знака равенства.
• Нажмите [Ctrl] [Shift 1 • (удерживая нажатыми клавиши управления и Shift, введите точку). Mathcad отображает местозаполнитель слева от стрелки «→»
• В заполнителе введите решить, затем запятую и переменную, для которой нужно решить.
• Нажмите [Enter], чтобы увидеть результат.

Mathcad найдет переменную и вставит результат справа от «→». Обратите внимание: если переменная была возведена в квадрат в исходном уравнении, при решении вы можете получить два ответа. Mathcad отображает их в векторе. На рис. 17-17 показан пример.

Другой способ найти переменную — ввести уравнение, щелкнуть переменную, для которой нужно решить уравнение, и выбрать “Переменная⇒Решить” в меню “Символика”.

Примеры решения уравнений, решения неравенств и поиска корней

Вы также можете решить неравенство, введенное с помощью символов <, >, ≤ и ≥. Решения неравенств будут отображаться в терминах логических выражений Mathcad. Если существует несколько решений, Mathcad помещает их в вектор. Логическое выражение Mathcad, такое как x < 2, имеет значение 1, если оно истинно, и 0, если оно ложно. Таким образом, решение «x меньше 2 и больше -2» будет представлено выражением (x < 2) . (-2 < х).

Поиск корней выражения

Вы можете использовать ключевое слово решения, чтобы найти корни выражения способом, аналогичным решению уравнения с переменной:

• Введите выражение.
• Нажмите [Ctrl] [Shift 1 • (удерживая нажатыми клавиши управления и Shift, введите точку). Mathcad отображает заполнитель слева от стрелки «→».
• В заполнителе введите решить, поставьте запятую и переменную, для которой нужно найти решение.
• Нажмите [Enter], чтобы увидеть результат.

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

Символьное решение системы уравнений: ключевое слово «решить»

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

• Нажмите [Ctrl] M, чтобы создать вектор, состоящий из n строк и 1 столбца.
• Заполните каждый заполнитель вектора одним из n уравнений, составляющих систему. Убедитесь, что вы используете [Ctrl]= для создания знака равенства.
• Нажмите [Ctrl] [Shift 1 • (удерживая нажатыми клавиши управления и Shift, введите точку). Mathcad отображает заполнитель слева от стрелки «→».
• В заполнителе введите решить, а затем запятую.
• Нажмите [Ctrl] M, чтобы создать вектор, состоящий из n строк и 1 столбца.
• Нажмите [Enter], чтобы увидеть результат.

Mathcad отображает n решений системы уравнений справа от стрелки.

Символьное решение системы уравнений: Блок решения

Другой способ символьного решения системы уравнений — использовать блок решения, аналогичный блокам численного решения, описанным в разделе «Решение уравнений».

• Введите слово «Дано». Это говорит Mathcad, что далее следует система уравнений. Вы можете набирать Given любым сочетанием прописных и строчных букв и любым шрифтом. Просто убедитесь, что вы не вводите его в текстовой области или абзаце.
• Теперь введите уравнения в любом порядке после слова «Дано». Убедитесь, что вы нажимаете [Ctrl]=, чтобы ввести “=”.
• Введите функцию поиска в соответствии с вашей системой уравнений. Эта функция описана в разделе «Системы уравнений». Аргументы функции – это переменные, для которых вы решаете.
• Нажмите [Ctrl]. (клавиша управления, за которой следует точка). Mathcad отображает символический знак равенства.
• Щелкните за пределами функции поиска.

Mathcad отображает решения системы уравнений справа от стрелки. Если функция поиска имеет один аргумент, Mathcad возвращает один результат. Если функция поиска имеет более одного аргумента, Mathcad возвращает вектор результатов. Например, Find(x, y) возвращает
вектор, содержащий выражения для x и y, которые решают систему уравнений. Обратите внимание: если ваша система является переопределенной линейной системой, функция поиска не вернет решение. Используйте функцию Minerr вместо Find. Minerr вернет ответ, который минимизирует ошибки в ограничениях.

Большинство рекомендаций по блокам решения, описанных в разделе «Решение уравнений», относятся к символьному решению систем уравнений. Основное отличие состоит в том, что при символическом решении уравнений вам не нужно вводить приблизительные значения для решений.

На рис. 17-18 показан пример блока решения, используемого для символического решения системы уравнений. Дополнительные сведения о блоках решения см. в разделе «Решение уравнений».

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

11.10: Решение линейных уравнений с помощью Mathcad

  1. Последнее обновление
  2. Сохранить как PDF
  • Идентификатор страницы
    135018
    • Франк Риу
    • Колледж Святого Бенедикта/Университет Святого Иоанна

    Численные методы : Система уравнений решается численно с помощью блока решения «Дано/Найти». Mathcad требует начальных значений для каждой переменной числового метода.

    Исходные значения: x :=1 y :=1 z :=1

    Дано: \(5 \cdot x + 2 \cdot y + z = 36\) \(x + 7 \cdot y + 3 \cdot z = 63\) \(2 \cdot x + 3 \cdot y + 8 \cdotz = 81\)

    Найти (x, y, z) = \( \begin{pmatrix}
    3. 6\\
    5.4\\
    7.2
    \end{pmatrix}\)

    Можно использовать другие блоки решения Give/Find.

    Дано \(\begin{pmatrix}
    5 \cdot x + 2 \cdot y + z = 36\\
    x + 7 \cdot y + 3 \cdot z = 63\\
    2 \cdot x + 3 \cdot у + 8 \cdot z = 81
    \end{pmatrix}
    = \begin{pmatrix}
    36\\
    63\\
    81
    \end{pmatrix}\) Найти(x, y, z) = \( \begin{pmatrix}
    3.6\ \
    5.4\\
    7.2
    \end{pmatrix}\)

    Дано \(\begin{pmatrix}
    5 & 2 & 1\\
    1 & 7 & 3\\
    2 & 3 & 8
    \end{pmatrix} \cdot \begin{pmatrix}
    x\\
    y \\
    z
    \end{pmatrix} = \begin{pmatrix}
    36\\
    63\\
    81
    \end{pmatrix}\) Find(x, y, z) = \( \begin{pmatrix}
    3.6\\
    5.4\\
    7.2
    \end{pmatrix}\)

    Матричные методы : Уравнения также можно решать с помощью матричной алгебры, как показано ниже. В матричной форме уравнения записываются как MX = C. Вектор решения находится путем умножения матрицы на обратную M.

    M:= \(\begin{pmatrix}
    5 & 2 & 1\\
    1 & 7 & 3\\
    2 & 3 & 8
    \end{pmatrix}\) C:= \(\begin{pmatrix }
    36\\
    63\\
    81
    \end{pmatrix}\) X := M -1 \(\cdot\) C X = \(\begin{pmatrix}
    3.6\\
    5.4\\
    7.2
    \end{pmatrix}\)

    Подтвердить, что решение найдено:

    M \( \cdot\) X = \( \begin{pmatrix}
    36\\
    63\\
    81
    \end{pmatrix}\)

    Альтернативное решение матрицы с помощью команды lsolve.

    X := lsolve(M,C) X = \( \begin{pmatrix}
    3.6\\
    5.4\\
    7.2
    \end{pmatrix}\) M \( \cdot\) X = \( \begin {пматрица}
    36\\
    63\\
    81
    \end{pmatrix}\)

    Метод символов в реальном времени : Для использования метода символов в реальном времени в этом документе Mathcad требуются рекурсивные определения, четкие предыдущие значения x, y и z. В этом не было бы необходимости, если бы x, y и z не были определены ранее.

    х := х у := у z := z

    \(\begin{pmatrix}
    5 \cdot x + 2 \cdot y + z = 36\\
    x + 7 \cdot y + 3 \cdot z = 63\\
    2 \cdot x + 3 \cdot y + 8 \cdot z = 81
    \end{pmatrix}
    решить, \begin{pmatrix}
    x\\
    y\\
    z
    \end{pmatrix} \rightarrow \begin{pmatrix}
    \frac{18}{5} & \frac{ 27}{5} & \frac{36}{5}
    \end{pmatrix} = \begin{pmatrix}
    3.

    Оставить комментарий