Описать структуру модуля решения системы уравнений mathcad

Описать структуру модуля решения системы уравнений mathcad

РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ УРАВНЕНИЙ

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

Система Mathcad обладает широкими возможностями численного решения уравнений и систем уравнений.

Функция root, блоки Given…Find, Given…Minerr

В ходе численного решения обычно выделяют два этапа:

  • отделение корней – определение интервала нахождения каждого корня или определение приблизительного значения корня. В системе Mathcad наиболее наглядным будет отделение корней уравнения графическим способом;
  • уточнение корней – нахождение численного значения корня с указанной точностью.

Точность нахождения корня устанавливается с помощью системной переменной TOL (Convergence Tolerance – Допуск сходимости), которая по умолчанию равна 10 -3 . Чем меньше значение TOL, тем точнее, вообще говоря, находится корень уравнения. Однако оптимальным является TOL = 10 -5 . Переопределить значение TOL можно в окне математических свойств документа Math Options на вкладке Build-In Variables (Встроенные переменные) или присваиванием, например, TOL:=0.0001.

Для решения одного уравнения с одной неизвестной предназначена встроенная функция root, которая в общем виде задается

root(f(x), x, [a, b])

и возвращает значение переменной x, при котором функция f(x) обращается в ноль. Аргументы функции root:

  • f(x) – функция левой части уравнения f(x) = 0;
  • x – переменная, относительно которой требуется решить уравнение;
  • a, b (необязательные) – действительные числа, такие что a -1 слева: A -1 Ax=A -1 b. Учитывая, что A -1 A, вектор-столбец решений системы можно искать в виде

Этот прием используется в Mathcad так:

  1. задается матрица коэффициентов при неизвестных системы A;
  2. задается столбец свободных членов b;
  3. вводится формула для нахождения решения системы X:=A -1 b;
  4. выводится вектор решений системы X=.

Кроме того, пакет Mathcad имеет встроенную функцию

lsolve(A, b),

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

Реализовать широко известный метод Гаусса решения систем линейных уравнений позволяет встроенная функция rref(M), возвращающая ступенчатый вид матрицы M. Если в качестве аргумента взять расширенную матрицу системы, то в результате применения rref получится матрица, на диагонали которой – единицы, а последний столбец представляет собой столбец решений системы.

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

Порядок выполнения лабораторной работы

  1. Загрузить Mathcad Start / All Programs / Mathsoft Apps / Mathcad (Пуск / Все программы / Mathsoft Apps / Mathcad).
  2. Сохранить в личной папке на диске z:\ новый документ с именем ФИО1, лучше использовать латинские буквы. Производить сохранение регулярно в процессе работы (Ctrl + S).
  3. Вставить текстовую область Insert / Text Region (Вставка / Область текста) и ввести в поле документа текст:

Лабораторная работа № 4
Решение уравнений и систем в Mathcad.

  1. В новой текстовой области ввести фамилию, имя, отчество, учебный шифр и номер варианта.
  2. Выполнить задание 1.

Задание 1. Решить уравнение .

Решение.

Решение данного уравнения будем проводить в два этапа: отделение корней уравнения графически, уточнение корней уравнения.

Определим функцию f(x), равную левой части данного уравнения, когда правая равна нулю:

Зададим ранжированную переменную x на некотором диапазоне с мелким шагом, например:

Вставим в документ графическую область. Для этого выберем дважды пиктограмму с изображением графика сначала на панели Math (Математика), затем на палитре графиков Graph или выполним из главного меню последовательность команд Insert / Graph / X-Y Plot (Вставка / График / X-Y Зависимость).

Снизу по оси абсцисс наберем x, а сбоку по оси ординат введем f(x).

Для появления графика щелкнем левой клавишей мыши вне графической области.

Отформатируем график функции f(x). Для этого щелкнем правой клавишей мыши в области графика и выберем в контекстном меню команду Format (Формат). Установим пересечение осей графика (CrossedТолько оси), добавим вспомогательные линии по координатным осям (Grid LinesВспомогательные линии). Отменим при этом автосетку (AutogridАвтосетка) и установим количество линий сетки, равное 10.

Для подтверждения внесенных изменений нажмем последовательно кнопки Apply (Применить) и ОК.

После указанных преобразований график функции f(x) будет выглядеть следующим образом:

Из графика функции f(x) видно, что уравнение имеет три корня, которые приблизительно равны: x1 ≈ -1; x2 ≈ 1; x3 ≈ 2,5.

Этап отделения корней завершен.

Уточним теперь корни уравнения с помощью функции root.

Присвоим начальное приближение переменной x и укажем точность поиска корня:

Уточним заданное приближение к значению корня с помощью функции root:

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

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

Задание 2. Решить уравнение .

Решение.

Напечатаем левую часть уравнения, не приравнивая выражение к 0, и выделим синим курсором переменную x:

Выберем из главного меню Symbolics / Polynomial Coefficients (Символика / Коэффициенты полинома). Появившийся вектор коэффициентов полинома выделим целиком синим курсором и вырежем в буфер обмена, используя кнопку Вырезать на панели инструментов Formatting (Форматирование) или комбинацию клавиш Ctrl + X.

Напечатаем v := и вставим вектор из буфера обмена, используя кнопку Вставить на панели инструментов или комбинацию клавиш Ctrl + V.

Для получения результата напечатаем polyroots(v) =:

Задание 3. Решить систему линейных уравнений Сделать проверку.

Решение.

1-й способ. Использование блока Given … Find.

Зададим всем неизвестным, входящим в систему уравнений, произвольные начальные приближения, например:

Напечатаем слово Given. Установим визир ниже и наберем уравнения системы, каждое в своем блоке. Используем при этом логический знак равенства (Ctrl + =).

После ввода уравнений системы напечатаем X := Find(x, y, z) и получим решение системы в виде вектора, состоящего из трех элементов:

Сделаем проверку, подставив полученные значения неизвестных в уравнения системы, например, следующим образом

После набора знака «=» в каждой строке должен быть получен результат, равный или приблизительно равный правой части системы. В данном примере системная переменная ORIGIN = 1.

2-й способ. Использование блока Given…Minerr.

Порядок решения системы этим способом аналогичен порядку использования блока Given … Find и представлен ниже вместе с проверкой:

3-й способ. Решение системы линейных уравнений матричным способом.

Создадим матрицу А, состоящую из коэффициентов при неизвестных системы. Для этого напечатаем A := , вызовем окно создания массивов (Ctrl + M). Число строк (Rows) и столбцов (Columns) матрицы данной системы равно 3. Заполним пустые места шаблона матрицы коэффициентами при неизвестных системы, как показано ниже:

Зададим вектор b свободных членов системы. Сначала напечатаем b :=, затем вставим шаблон матрицы(Ctrl + M), где количество строк (Rows) равно 3, а количество столбцов (Columns) равно 1. Заполним его:

Решим систему матричным способом по формуле

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

Для проверки правильности решения системы, полученного матричным способом, достаточно вычислить произведение A·X, которое должно совпасть с вектором-столбцом свободных членов b:

Что такое given в mathcad

Решение уравнений

При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый служебным словом — директивой Given — и имеющий следующую структуру:

Выражения с функцией Find()

Find(vl, v2, …, vn) — возвращает значение одной или ряда переменных для точного решения;

Знак равенства в уравнениях вызывается с математической панели БУЛЕВО(Boolean) или с клавиатуры клавишами «CTRL http://www.intuit.ru/2010/edi» >

Как и в предыдущем случае, сначала необходимо провести локализацию корней – задание начальной точки, от которой будет происходить поиск решения. Решение ищется методом итераций и при наличии нескольких корней, очевидно, будет найдено лишь ближайшее решение, если оно существует. Блок Given…Find(.) можно использовать и для решения уравнений одним неизвестным.

Пример 4.4

Решить систему уравнений >=0\choose y-x^2-1=0>»>.

Осуществляется решение системы нелинейных уравнений при помощи блока Given…Find(.) (Рис.4.3).

  • Локализация корней: задаем систему уравнений, строим график.
  • По графику определяем три корня.
  • Задаем последовательно разные начальные значения корней.

>»>

,

>-y=0″>

0.354 \\ 1.125 \end

,

>-y=0″>

-2.631 \cdot 10^ \\ 1 \end

,

>-y1=0″>

17.015 \\ 290.506 \end

Поиск корней при помощи блока Given Minerr()

Функция Minerr использует тот же самый алгоритм, что и функция Find. Различие состоит в следующем. Функция Find ищет решение с заданной точностью и, если в результате поиска не может быть получено дальнейшее уточнение текущего приближения к решению, то она возвращает сообщение об ошибке. Функция Minerr возвращает это приближение. Системная переменная ERR дает величину ошибки.

Minerr (vl, v2, …, vn ) возвращает значения ряда переменных для приближенного решения.

Minerr() пытается найти максимальное приближение даже к несуществующему решению путем минимизации среднеквадратичной погрешности решения. При использовании функции Minerr обязательно предусматривать проверку решений. Полезно как можно точнее указывать начальные приближения к решению.

Пример 4.5

Решить систему уравнений «>.

Решаем при помощи блока Given…Find(.) (Рис.4.4).

  • Локализация корней: задаем систему уравнений, строим график.
  • Графики имеют точку касания. Функция . Find( ) не решает систему.
  • Функция Minerr() дает приближенное решение. Системная переменная ERR=0.37. Это ошибка определения корня. Проверка показывает максимальную ошибку 0.33.

,

Система не решается:

,

1.082 \\ -9.169 \end

,

Решение уравнений с помощью функции Find(x)

Функция Find (Найти) работает в ключевой связке с ключевым словом Given (Дано). Конструкция Given — Find использует расчетную методику, основанную на поиске корня вблизи точки начального приближения, заданной пользователем.

Если задано уравнение f(x) = 0, то его можно решить следующим образом с помощью блока Given — Find:

— задать начальное приближение

— ввести служебное слово

  • — записать уравнение, используя знак боулево равно
  • — написать функцию find с неизвестной переменной в качестве параметра

В результате после знака равно выведется найденный корень.

Если существует несколько корней, то их можно найти, меняя начальное приближение х0 на близкое к искомому корню.

В Mathcad можно писать программы двух видов

  • 1)в виде скриптов(последовательность команд)
  • 2)в виде настоящих программ с входными и выходными параметрами.

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

Mathcad был задуман и первоначально написан Алленом Раздовом из Массачусетского технологического института (MIT).

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

Работа осуществляется в пределах рабочего листа, на котором уравнения и выражения отображаются графически, в противовес текстовой записи в языках программирования. При создании документов-приложений используется принцип WYSIWYG (What You See Is What You Get — «что видишь, то и получаешь»).

Несмотря на то, что эта программа в основном ориентирована на пользователей-непрограммистов, Mathcad также используется в сложных проектах, чтобы визуализировать результаты математического моделирования, путем использования распределённых вычислений и традиционных языков программирования. Также Mathcad часто используется в крупных инженерных проектах, где большое значение имеет трассируемость и соответствие стандартам.

Mathcad достаточно удобно использовать для обучения, вычислений и инженерных расчетов. Открытая архитектура приложения в сочетании с поддержкой технологий .NET и XML позволяют легко интегрировать Mathcad практически в любые ИТ-структуры и инженерные приложения. Есть возможность создания электронных книг (e-Book).

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

Вычислительный блок Given/Odesolve

Вычислительный блок для решения одного ОДУ, реализующий численный метод Рунге-Кутты, состоит из трех частей:

  • Given — ключевое слово;
  • ОДУ и начальное условие, записанное с помощью логических операторов, причем начальное условие должно быть в форме у (t1) = b;
  • odesoive(t, t1) — встроенная функция для решения ОДУ относительно переменной t на интервале (t0,t1).

Допустимо, и даже часто предпочтительнее, задание функции Odesolve (t, t1, step) с тремя параметрами, где step— внутренний параметр численного метода, определяющий количество шагов, в которых метод Рунге — Купы, будет рассчитывать решение дифференциального уравнения. Чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его поиск. Помните, что подбором этого параметра можно заметно (в несколько раз) ускорить расчеты без существенного ухудшения их точности.

Пример решения задачи Коши для ОДУ первого порядка у’ =у-у 2 посредством вычислительного блока приведен в листинге 11.1.

Листинг 11.1. Решение задачи Коши для ОДУ первого порядка

Не забывайте о том, что вставлять логические операторы следует при помощи панели инструментов Boolean (Булевы операторы). При вводе с клавиатуры помните, что логическому знаку равенства соответствует сочетание клавиш + . Символ производной можно ввести как средствами панели Calculus (Вычисления), как это сделано в листинге 11.1, так и в виде штриха, набрав его с помощью сочетания клавиш + (соответствующий пример будет приведен ниже в листинге 11.3.) Выбирайте тот или иной способ представления производной из соображений наглядности представления результатов — на ход расчетов он не влияет.

Пользователь имеет возможность выбирать между двумя модификациями численного метода Рунге-Кутты. Для смены метода необходимо нажатием правой кнопки мыши на области функции odesolve вызвать контекстное меню и выбрать в нем один из двух пунктов: Fixed (Фиксированный шаг) или Adaptive (Адаптивный). По умолчанию применяется первый из них, т. е. метод Рунге — Кутты с фиксированным шагом. Подробнее о различии этих методов сказано в разд. 11.3.

1. Электромагнитная волна (в религиозной терминологии релятивизма — «свет») имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например,

200 тыс км/с в стекле и

3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью «Температура эфира и красные смещения»), разную скорость для разных частот (см. статью «О скорости ЭМ-волн»)

2. В релятивизме «свет» есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский «свет» — это волнение ничего в ничем. У него нет среды-носителя колебаний.

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

4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те «подтверждающие теорию Эйнштейна факты», которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.

Описать структуру модуля решения системы уравнений mathcad

Глава 4. Решение уравнений

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

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

1. Начальные приближения для всех переменных.

2. Ключевое слово Given (Дано).

3. Система уравнений (при записи уравнений надо использовать жирный знак равенства– клавиши Ctrl +=, так как это не знак присвоения значения, а оператор отношения).

4. Ограничения на поиск решения в виде неравенств, если они есть.

5. Выражение, содержащее функцию find , с неизвестными в качестве параметров.

Результат расчета – вектор решения системы. Вычислительный блок позволяет решать системы, содержащие от 1 до 200 уравнений.

Mathcad допускает использование двусторонних неравенств типа a ≤ x ≤ b . Операторы ≤ и ≥ выбираются на математической панели.

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

На рис. 4.9 показана проверка решения системы трех уравнений путем подстановки корней в уравнения , точка Z — точка пересечения трех поверхностей, координаты которой являются решением системы, обращающим все уравнения в тождества.

начальное приближение

Given

проверка

Рис. 4. 9 Решение системы уравнений с помощью функции Find

При обычном ускоренном построении графика поверхности значения аргументов выбираются Mathcad автоматически в диапазоне от –5 до 5, что в нашем примере приводит к делению на ноль и невозможности построения графика. Пределы значений координат можно изменить. Для этого дважды щелкните мышью в поле графика и в открывшемся контекстном меню выберите страницу Quick Plot Data , на которой введите необходимые пределы для изменения переменных. Функция find реализует градиентные численные методы и предлагает на выбор три метода. Щелкните правой кнопкой мыши на названии функции find . В открывшемся контекстном меню и его подменю выберите нужный метод:

– Linear (Линейный метод) – метод касательной;

– Nonlinear (Нелинейный метод);

– Quadratic (Квадратичный метод).

Нелинейных методов три:

1) Conjiugate Gradient (Метод сопряженных градиентов);

2) Quasi – Newton (Квази – ньютоновский метод);

3) Levenberg – Marquart (Метод Левенберга).

Кроме выбора самого метода, нажав кнопку Advanced Options (Дополнительные параметры), можно выбрать:

1) оценку производной конечными разностями ( Derivate Estimation ):

– Forward (Вперед) – правая двухточечная схема;

– Central (Центральная) – трехточечная симметричная схема;

2) оценку переменной ( Variable Estimation ):

– Tangent (Касательная) – касательная – прямая линия,

– Quadratic (Квадратичная) – касательная – парабола;

3) проверку линейности:

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

К выбору метода расчета стоит обращаться, если вы хорошо разбираетесь в численных методах, и тогда, когда Mathcad не может найти решение. В большинстве же случаев лучше доверить выбор метода Mathcad , отметив пункт AutoSelect (Автоматический выбор).

Градиентные методы, реализованные функцией find , требуют многократного вычисления производных. При работе с достаточно гладкими функциями они обеспечивают быстрый и надежный поиск корня.

Для поиска корня негладких функций одного переменной лучше использовать функцию root , реализующую метод секущих.

Как и функция root , функция find может использоваться в функциях пользователя для нахождения корней системы уравнений при переменных значениях параметров, перечисленных в названии функции пользователя ( рис. 4.10 и 4.11). Для системы уравнений решение выводится в виде массива, каждый столбец которого соответствует вектору решения для одной переменной.

начальные приближения

Given

один из параметров делаем константой, другой варьируем

для графика

для таблицы

Рис. 4. 10 Решение системы уравнений с переменными параметрами

Меняем оба параметра a и b

Диапазон изменения координат a и b задан на странице

Quick Plot Data окна форматирования

Рис. 4. 11 поверхность решений системы уравнений

Mathcad позволяет решать системы уравнений не только в скалярной, но и в матричной форме, при этом начальные условия и ограничения задаются в виде векторов (рис. 4.12).

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

А*Х=В путем обращения матрицы А

Блок решения Given — find

начальное приближение

Given

Функция root с матрицами работать не может

Рис. 4. 12 Решение системы уравнений в матричном виде

Решение систем уравнение в символьном виде возможно с помощью функции find . Функция root в ранних версиях (до Mathcad 11 включительно) допускала символьное решение уравнений. В Mathcad 12,13,14 символьное решение уравнений с помощью функции root запрещено.

Блоки решения уравнений не могут быть вложены друг в друга. Каждый блок может иметь только одно ключевое слово Given и одно имя find . Внутри блока решения нельзя использовать оператор присваивания х:=1, а нужно использовать знак логического равенства =(жирный знак равенства).


источники:

http://programka.com.ua/rukovodstvo/peregovory/chto-takoe-given-v-mathcad

http://www.math.mrsu.ru/text/courses/mcad/4.4.htm