Как найти корни уравнения численно в маткаде

Численное решение уравнений в MathCAD

Численное решение уравнений в MathCAD

Все задачи, с которыми вам приходилось сталкиваться в школе или изучать в университете, решались символьно. То есть вы тем или иным образом преобразовывали и упрощали выражения, использовали какие-то стандартные формулы и методы, умножали, делили, сокращали — и в результате приходили к какому-то аналитически несложному результату. Так, например, при решении квадратного уравнения вы использовали формулы Виета; пытаясь найти корни кубического уравнения, вы разлагали выражение на линейные множители (или, в крайнем случае, использовали формулу Кардано), для бикубических уравнений прибегали к замене. В общем, для того, чтобы решить даже очень несложное нелинейное уравнение, от вас требовалось знание великого множества разнообразных формул и подходов. Но, увы, как бы вы хорошо ни ориентировались во всех этих методах и подходах, зачастую это мало вам помогало, так как использование большинства из них крайне трудоемко и подходит для решения очень немногих (специально подобранных) уравнений. На практике же, как правило, приходится работать с уравнениями, включающими разнородные функции (что, как правило, автоматически означает невозможность символьного решения) или с очень неудобными коэффициентами. Справиться со многими из них привычным преобразованием или заменами никак не получится. Что же делать?

Естественно, если вам попадется такое «нерешаемое» уравнение, вы попытаетесь просто подобрать корни. Для этого вы будете подставлять какие-то значения переменной (выбор которых, скорее всего, в основном будет определяться вашей интуицией) в надежде на то, что какое-то из них обратит уравнение в нуль. К сожалению, и такой способ весьма малоэффективен на практике: подставив десяток-другой значений, вы почти наверняка предпочтете удовлетвориться мыслью о том, что данное уравнение не имеет решений вовсе, чем продолжать эту чрезвычайно неинтересную работу.

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

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

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

Для численного поиска решений алгебраических уравнений с одним неизвестным в MathCAD существует специальная встроенная функция root (корень). Функция эта может использоваться с различными начальными условиями, при этом реализуются разные численные алгоритмы. Так, если определена только одна точка приближения к корню, поиск решений будет осуществляться так называемым методом секущих. Если же задан интервал, на котором предположительно локализовано решение, то поиск его будет осуществлен с применением метода деления пополам (или метода Больцано).

Если необходимо найти корень некоторого уравнения, причем известен интервал, в котором находится корень, проще всего использовать функцию root с 4 аргументами: root(f(x), x, a, b), где f ( x ) — функция, определяющая уравнение, x — переменная, a и b — границы интервала локализации. Обязательным условием является то, что значения функции на концах интервала должны быть противоположных знаков.

Попробуем протестировать функцию root и для этого найдем корни какого-нибудь уравнения, точное решение которого очевидно. К примеру, возьмем уравнение

все корни которого имеют вид p × N/4 (N=1, 2, . ). Попробуем найти первое положительное решение. Очевидно, что таковым будет x=p /4 (что очень хорошо видно на графике).

Посмотрим, однако, найдет ли этот корень функция root. Интервал локализации определим от 0 до p /3:

MathCAD не подвел на этот раз: решение найдено в точности. Попробуем решить это уравнение с другим интервалом локализации:

Полученный результат отличается от первого решения, хотя корень х =0.25 (находится в данном интервале. Все дело в том, что в этом же промежутке находится еще 4 корня, и заранее предсказать, какой именно из них будет выдан в качестве ответа, совершенно невозможно. Поэтому следует ввести еще одно ограничение для применения функции root в рассматриваемой интерпретации: на промежутке должен быть локализован только один корень. В тех случаях, когда определить границы такой локализации невозможно, следует применять функцию root с одной точкой приближения (то есть перейти от метода Больцано к методу секущих). Хотя практически всегда определить нужный промежуток можно и чисто визуально, предварительно задав график. Вообще, строить график всегда желательно, когда вы используете численные методы: это самый надежный способ избежать ошибок и не потерять корни. Другой вопрос, что в случае систем уравнений это может помочь очень мало (так как сделать какие-то более или менее точные выводы по двум пересекающимся поверхностям совершенно невозможно).

Очень важной характеристикой решения является его точность. В MathCAD можно регулировать величину погрешности решения, изменяя значение специальной системной переменной TOL (от английского tolerance — точность). Строго говоря, TOL — это параметр, определяющий условие прекращения итераций. То есть цикл численного алгоритма остановит свою работу и выдаст последнее значение x, если f ( x ) примет значение, меньшее, чем TOL. Изменить величину этой встроенной переменной можно либо при помощи команды Math/Options/Built-in variables/TOL (Математические/Опции/Системные переменные/TOL), либо выполнив соответствующее присваивание непосредственно слева или сверху функции численного решения. Посмотрим, как влияет изменение величины TOL (по умолчанию равной 10 -3 ) на точность поиска корня. Пусть дана следующая функция:

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

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

Для такой невысокой точности результат получился на удивление неплохим (значение функции в точке, определенной как корень, на 3 порядка меньше TOL — условия остановки цикла алгоритма). Но все равно 0.066 — это довольно далеко от настоящего значения корня. А то, что значение f ( x ) в этой точке весьма близко к нулю, совсем неудивительно: это связано с особенностью поведения функции в окрестности 0, где она буквально «скользит» по оси X .

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

Значение корня уже крайне близко к нулю. Попробуем задать высшую точность, возможную в MathCAD (TOL=10 -15 ):

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

Более 30 раз пришлось повторить операцию с этим инструментом, пока наконец кривая перестала сливаться с осью X ! В результате получился следующий график:

Теперь совсем несложно понять причину возникших трудностей: просто кривая в окрестности 0 слишком близко подходит к оси X . А, как вы помните, корень считается найденным, когда значение функции в некоторой точке меньше TOL. В случае же рассматриваемой функции для стандартной точности (10 -3 ) такие точки появятся на относительно большом расстоянии от точки решения. Поэтому результат получается неверным. Но, с другой стороны, утверждать, что решение в рассмотренных выше случаях находилось ошибочное, совершенно некорректно. Ведь по условию в точке корня значение функции должно быть меньше TOL. Для большинства численных методов это основное, а в случае метода бисекции (схожий с ним алгоритм лежит в основе работы функции root с четырьмя аргументами) — единственное условие определения некоторой точки x как корня. Условие же это при всех значениях точности было выполнено, причем TOL и f ( x ) отличались на несколько порядков. Просто, строго говоря, получаемые значения корней следует округлять до порядка, равного порядку продекларированной точности (ведь значение функции не может быть точнее входных данных). Если бы мы это сделали, то во всех случаях, в том числе и при TOL=10 -1 , ответ получился бы верным (хотя, надо признать, в случае TOL=10 -1 это было бы, скорее, счастливое совпадение).

Из всего вышесказанного можно сделать вывод: нахождение корня функцией root совсем не означает его действительного существования. Очень даже возможна такая ситуация, когда кривая функции очень близко подходит к оси Х, но при этом не пересекает ее. Если же установленный уровень точности окажется больше того расстояния, на которое она приближается к оси, то точку, в которой это сближение происходит, MathCAD определит как корень.

Что же делать, чтобы избежать таких ошибок? Во-первых, всегда строить график. В системе MathCAD это делается предельно быстро и просто, а неприятностей позволяет избежать очень многих. Во-вторых, если вы видите, что график как бы скользит по оси Х (очень неясная ситуация: возможно и пересечение в 2-х точках, и касание в одной, и отсутствие общих точек вообще), попробуйте увеличить точность по максимуму: в большинстве случаев этого бывает вполне достаточно. И в-третьих, если сомнения все равно остаются, используйте инструмент ZOOM в области предполагаемого расположения корня. Пожалуй, способ этот самый надежный: ведь увеличение можно производить практически до бесконечности.

Найти решение уравнения в MathCAD можно применяя другую форму встроенной функции root, имеющую только 2 аргумента (имя функции и переменной). При использовании этого варианта выше или правее самой функции root следует задать начальное приближение для x:

Определить величину начального приближения можно либо чисто интуитивно, либо (лучше) построив график.

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

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

Дмитрий Гурский, Юрий Стрельченко, dot@omen.ru

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

Нахождение корней уравнения в MathCad

Дата добавления: 2015-07-23 ; просмотров: 18039 ; Нарушение авторских прав

Цель работы:нахождение корней уравнения в программе MathCad с использованием встроенных функций root,polyroots, символьного решения.

Указания к выполнению лабораторной работы:

IНахождение корней уравнения в программе MathCad с использованием встроенной функции root

1. Запустить программу MathCad .

2. Записать на рабочем листе MathCad вид функции f(х), для которой необходимо найти на заданном интервале корни.

3. Создать цикл из точек интервала, на котором определяются корни, и вычислить в этих точках функцию f(х). Построить график функции f(х) и график функции х0=0 (т.е. ось х).

4. Определить точки пересечения двух кривых f(х) и х0, которые будут приближением к корням уравнения.

4.1. Использовать для определения на графике значений корней в контекстном меню (рис.17, a) опцию Trace (рис. 17,б), установить флажок в окне Track Data Poіnt.

4.2. Подвести курсор мыши к точкам пересечения кривых, координаты точек пересечения кривых, т.е. корни, будут представлены в окнах Х-Value и У- Value, а на графике отобразится вертикальная прямая.

5. Задать для независимой переменной х начальное приближение, которое выбирается как значение точки пересечения кривых f(х) и х0. Обратиться ко встроенной в MathCad функции root(f(x), x) (функция root возвращает значение независимой переменной х, для которой f(х) равняется 0) и найти корень х1.

6. Найти второй (х2) и третий (х3) корни уравнения f(х)=0 (уравнение третьей степени имеет не больше трех действительных корней), задав для них соответственно их начальные значения как координаты точек пересечения кривых f(х) и х0 и использовав функцию root.

Рисунок 17 – Диалоговые окна для определения координат точек пересечения кривых

ІІ Нахождение корней уравнения в программе MathCad с использованием встроенной функции polyroots, которая возвращает вектор, имеющий все корни уравнения, коэффициенты уравнения при этом задаются вектором.

1. Записать на рабочем листе MathCad вид функции f(х), для которой необходимо найти на заданном интервале корни.

2. Записать как вектор v все коэффициенты уравнения, расположить их в порядке увеличения степеней.

3. Найти корни, обратившись ко встроенной функции r:=polyroots(v), результат будет получено относительно трансформированного вектора r T .

4. Для интервала нахождения корня и количества элементов вектора r T создать соответствующие циклы и вычислить значение функции в точках цикла.

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

ІІІ Нахождение корней уравнения в программе MathCad с использованием символьных решений уравнений.

1. Ввести левую часть уравнения.

2. Ввести знак равенства с использованием панели управления Evaluatіon (Выражения) или с помощью нажатия клавиш Ctrl + =.

3. За знаком равенства ввести правую часть уравнения.

4. Выделить переменную, относительно которой решается уравнение.

5. Выбрать команду Symbolіc/Varіable/Solve.

По окончанию решения корни уравнения выводятся в виде вектора.

ІV Найти приближенное решение с использованием функции mіnerr(x1. ).

1. Задать приближение последовательно для первого корня х:=1.

2. Ввести ключевое слово gіven (дано), из которого начинается блок решений.

3. Записать уравнение, используя знак логического равенства между правой и левой частями уравнения.

4. Обратиться к функции mіnerr( x). Корень будет найдено.

Таблица 1.1 – Варианты заданий к лабораторной работе № 1

№ вариантаИнтервал нахождения корнейУравнение
[-1; 3]x 3 -2,92x 2 +1,4355x+0,791=0
[-2; 3]x 3 -2,56x 2 -1,325x+4,395=0
[-3,5; 2,5]x 3 +2,84x 2 -5,606x-14,766=0
[-2,5; 2,5]x 3 +1,41x 2 -5,472x-7,38=0
[-1,6; 1,1]x 3 +0,85x 2 -0,432x+0,044=0
[-1,6; 1,6]x 3 -0,12x 2 -1,478x+0,192=0
[-1,6; 0,8]x 3 +0,77x 2 -0,251x-0,017=0
[-1,4; 1]x 3 +0,88x 2 -0,3999x-0,0376=0
[-1,4; 2,5]x 3 +0,78x 2 -0,827x-0,1467=0
[-2,6; 1,4]x 3 +2,28x 2 -1,9347x-3,90757=0
[-2,6; 3,2]x 3 -0,805x 2 -7x+2,77=0
[-3; 3]x 3 -0,345x 2 -5,569x+3,15=0
[-2; 3,4]x 3 -3,335x 2 -1,679x+8,05=0
[-1; 2,8]x 3 -2,5x 2 +0,0099x+0,517=0
[-1,2; 3]x 3 -3x 2 +0,569x+1,599=0
[-2,5; 2,5]x 3 -2,2x 2 +0,82x+0,23=0
[-1,2; 4,6]x 3 -5x 2 +0,903x+6,77=0
[-1; 7,4]x 3 -7,5x 2 +0,499x+4,12=0
[-1.6; 9]x 3 -7,8x 2 +0,899x+8,1=0
[-3,4; 2]x 3 +2x 2 -4,9x-3,22=0
[-3,4; 1,2]x 3 +3x 2 -0,939x-1,801=0
[-4,6; 3,0]x 3 +5,3x 2 +0,6799x-13,17=0
[-2,4; 8,2]x 3 -6,2x 2 -12,999x+11,1=0
[-3,2; 2,7]x 3 -0,34x 2 -4,339x-0,09=0
[-1; 3]x 3 -1,5x 2 +0,129x+0,07=0
[-1; 3]x 3 -5,5x 2 +2,79x+0,11=0
[-1; 3]x 3 -5,7x 2 -6,219x-2,03=0
[-1; 3]x 3 -3,78x 2 -7,459x-4,13=0
[-1; 3]x 3 -5x 2 -9,9119x+0,01=0
[-1; 3]x 3 -7x 2 -1,339x-7,55=0

Пример

І Для уравнения найти корни на интервале [-1, 1], шаг изменения переменной х равен 0.1.

1 Записать цикл из точек интервала х:=-1, -0.9..1.

2 Записать функции и х0=0.

3 Построить графики для этих функций.

4 Определить на графике точки пересечения кривых и х0=0.

5 Задать как приближение значения точек пересечения х1, х2, х3. В примере х1=-0.9, х2=0.2, х3= 0.7.

6 Вычислить значение корней с помощью формул: root (f(x1),x1), root (f(x2),x2), root (f(x3),x3). Полученные значения корней такие: х1=-0.92, х2=0.21, х3= 0.721 (рис. 18).

Рисунок 18 – Результат нахождения корней с использованием функции root

II Для уравнения найти корни на интервале [-1.1, 7.1] , шаг изменения переменной х равен 0.1.

1. Создать вектор из коэффициентов уравнения, используя панель управления Matrix (Матрица) (рис.19) и задав один столбец и четыре строки для коэффициентов уравнения.

Рисунок 19 – Диалоговое окно для определения вектора из коэффициентов уравнения

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

2. С помощью встроенной функции r:=polyroots(v) найти корни уравнения и представить их в виде вектора r T , транспонированного по отношению к r, то есть преобразованного из столбца в строку.

3. Создать циклы для переменной х и количества найденных корней:

4. Построить графики для функции и определить функцию в точках корней. В точках корней значения функции равны нулю.

5. Определить значения корней на графике (рис. 20).

Рисунок 20 – Результат нахождения корней с использованием функции polyroots

III Для уравнения найти корни с использованием символьных решений уравнений.

1. Записать левую часть уравнения

.

2. Поставить логический знак «=» и в правой части записать 0.

3. Выделить переменную х.

4. Обратиться в главном меню MathCad к команде Symbolic/Variable/ Solve.

Найдены корни уравнения запишутся в виде вектора:

IV Найти приближенное решение вышеприведенного уравнения с использованием функции minerr( x1,…).

1. Задать приближение последовательно для первого корня х:=1.

2. Ввести ключевое слово given (дано), с которого начинается блок решений.

3. Записать уравнение, используя знак логического равенства между правой и левой частью уравнения.

4. Обратиться к функции minerr( x). Корень будет найдено.

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

Контрольные вопросы

1 Какие встроенные функции позволяют находить корни уравнения?

2 Как выполняется символьное нахождение корней уравнений?

Лабораторная работа №3
Действия с матрицами в MathCad

Цель работы:выполнение действий с матрицами в программе MathCad .

Указания к выполнению лабораторной работы:

1. Запустить программу MathCad .

2. Создать матрицы , , , , , из коэффициентов a, b, c, m, k, n в соответствии с вариантом задания.

3. Выполнить действия с матрицами в соответствии с вариантом задания.

4. Найти ранг матрицы А.

5. В символьном виде выполнить транспонирование матрицы В, инвертирование матрицы А.

6. Найти обратную матрицу К. Найти детерминант матрицы А.

Таблица 2.1 – Варианты заданий к лабораторной работе № 2

Номер вариантаЗначение элементов матрицДействия с матрицами
a=1; b=0.5; c=-1; m=2; k=-2.1;n=-0.81) A+A×M; 2) B×C; 3) M 3 ; 4)D+m×K; 5)A×D+D×M; 6)K -2
a=-2; b=1; c=1.5; m=-3; k=-0.1;n=1.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=-1; b=5; c=1.3; m=0.9; k=0.1;n=-0.51) A-M; 2) B-a×C 3) M 2 -B; 4)D-×K; 5)A+7×D; 6)A -2
a=1; b=0.5; c=1; m=0.2; k=0.27 ;n=0.71) A 2 ; 2) B×C+M; 3) n×M 2 ; 4)D-K; 5)A×B-D×C; 6)D -2
a=3; b=2.1; c=0.91; m=1.2; k=1; n=31) A 2 +M; 2) B-M; 3) b×C -3 ; 4)D+3K; 5)A×K-D; 6)M -2
a=4; b=-0.5; c=-1; m=3.2; k=1.1;n=1.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=1; b=2.5; c=0.3; m=1; k=-2.1;n=-0.81) A-M; 2) B-a×C 3) M 2 -B; 4)D-×K; 5)A+7×D; 6)A -2
a=2; b=0.5; c=-1.1; m=2; k=1.9 ;n=-3.81) A 2 ; 2) B×C+M; 3) n×M 2 ; 4)D-K; 5)A×B-D×C; 6)D -2
a=3; b=-2.5; c=4; m=3; k=-2.1;n=0.81) A 2 +M; 2) B-M; 3) b×C -3 ; 4)D+3K; 5)A×K-D; 6)M -2
a=3.1; b=1.5; c=2.1; m=3.2; k=1.1;n=-1.61) A+A×M; 2) B×C; 3) M 3 ; 4)D+m×K; 5)A×D+D×M; 6)K -2
a=-2; b=1; c=1.5; m=-3; k=-0.1;n=1.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=-1; b=5; c=1.3; m=0.9; k=0.1;n=-0.51) A-M; 2) B-a×C 3) M 2 -B; 4)D-×K; 5)A+7×D; 6)A -2
a=1; b=0.5; c=1; m=0.2; k=0.27 ;n=0.71) A 2 ; 2) B×C+M; 3) n×M 2 ; 4)D-K; 5)A×B-D×C; 6)D -2
a=3; b=2.1; c=0.91; m=1.2; k=1; n=31) A 2 +M; 2) B-M; 3) b×C -3 ; 4)D+3K; 5)A×K-D; 6)M -2
a=4; b=-0.5; c=-1; m=3.2; k=1.1;n=1.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=1; b=2.5; c=0.3; m=1; k=-2.1;n=-0.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3

Продолжение табл. 2.1

a=2; b=0.5; c=-1.1; m=2; k=1.9 ;n=-3.81) A-M; 2) B-a×C 3) M 2 -B; 4)D-×K; 5)A+7×D; 6)A -2
a=3; b=-2.5; c=4; m=3; k=-2.1;n=0.81) A 2 ; 2) B×C+M; 3) n×M 2 ; 4)D-K; 5)A×B-D×C; 6)D -2
a=3.1; b=1.5; c=2.1; m=3.2; k=1.1;n=-1.61) A 2 +M; 2) B-M; 3) b×C -3 ; 4)D+3K; 5)A×K-D; 6)M -2
a=1; b=0.5; c=-1; m=2; k=-2.1;n=-0.81) A+A×M; 2) B×C; 3) M 3 ; 4)D+m×K; 5)A×D+D×M; 6)K -2
a=-2; b=1; c=1.5; m=-3; k=-0.1;n=1.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=-1; b=5; c=1.3; m=0.9; k=0.1;n=-0.51) A-M; 2) B-a×C 3) M 2 -B; 4)D-×K; 5)A+7×D; 6)A -2
a=1; b=0.5; c=1; m=0.2; k=0.27 ;n=0.71) A 2 ; 2) B×C+M; 3) n×M 2 ; 4)D-K; 5)A×B-D×C; 6)D -2
a=3; b=2.1; c=0.91; m=1.2; k=1; n=31) A 2 +M; 2) B-M; 3) b×C -3 ; 4)D+3K; 5)A×K-D; 6)M -2
a=4; b=-0.5; c=-1; m=3.2; k=1.1;n=1.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=1; b=2.5; c=0.3; m=1; k=-2.1;n=-0.81) A+A×M; 2) B×C; 3) M 3 ; 4)D+m×K; 5)A×D+D×M; 6)K -2
a=2; b=0.5; c=-1.1; m=2; k=1.9 ;n=-3.81) A+B×M; 2) M×C; 3) B 3 ; 4)C+m×K; 5)AB+D×K 6)D -3
a=3; b=-2.5; c=4; m=3; k=-2.1;n=0.81) A-M; 2) B-a×C 3) M 2 -B; 4)D-×K; 5)A+7×D; 6)A -2
a=3.1; b=1.5; c=2.1; m=3.2; k=1.1;n=-1.61) A 2 ; 2) B×C+M; 3) n×M 2 ; 4)D-K; 5)A×B-D×C; 6)D -2
a=-2; b=1; c=1.5; m=-3; k=-0.1;n=1.81) A 2 +M; 2) B-M; 3) b×C -3 ; 4)D+3K; 5)A×K-D; 6)M -2

Пример

Выполнить действия с матрицами, создав их из заданных коэффициентов a=1, b=2, c= 3, m=4, k=5, n=6. Матрицы имеют следующий вид:

1. Создать матрицы.

1.1. Выбрать панель управления Matrіx (Матрица).

1.2. Определить число строк и столбцов для каждой матрицы (рис.21).

Рисунок 21 — Диалоговое окно для определения размера матрицы

1.3. Матрицы в примере имеют такие размеры: А — (3´3), В — (3´2), С(2´2), М(1´2), К(3´3).

1.4. Заполнить матрицы соответствующими параметрами (рис. 29).

2 Выполнить следующие действия с матрицами:

1) А+n·K; 2)A·B; 3) A 2 ; 4) A·D; 5)D·M; 6) D-1.

3 Найти ранг матрицы А (ранг матрицы -наибольший порядок минора этой матрицы, который отличный от нуля): rank(A).

4 В символьном виде выполнить транспонирование матрицы В, т.е. заменить местами строки и столбцы матрицы В.

4.1 Выделить матрицу В.

4.2 Обратиться в главном меню к команде Symbolіc / Matrіx/Transpose (рис. 28).

5 В символьном виде выполнить инвертирование матрицы А (т.е. найти матрицу, которая будет обратной к матрице А) .

5.1 Выделить матрицу A.

5.2 Обратиться в главном меню к команде Symbolіc/Matrіx/Іnvert (рис.28).

6 В символьном виде найти обратную матрицу К.

6.1 Выделить матрицу К.

6.2 Обратиться в главном меню к команде Symbolіc / Matrіx/Іnvert (рис.28).

7 В символьном виде найти детерминант (определитель) матрицы А.

7.1 Выделить матрицу A.

7.2 Обратиться в главном меню к команде Symbolіc/Matrіx/Determіnant (рис.22).

Рисунок 22 – Меню Symbolic для работы с матрицами в символьном виде

Рисунок 23 – Результаты вычисления матриц

Контрольные вопросы

1 Як можно создать матрицу и вектор?

2 Какие действия выполняются с матрицами?

3 Как определяются элементы матрицы?

Лабораторная работа №4
Нахождение решений системы линейных уравнений в MathCad

Цель работы:нахождение решений системы линейных уравнений в программе MathCad .

Указания к выполнению лабораторной работы:

I Найти решение системы линейных уравнений с использованием функции soln.

1 Запустить программу MathCad.

2 Создать матрицу А из коэффициентов при неизвестных.

3 Создать вектор b из свободных членов.

4 Обратиться к встроенной программе решения линейных уравнений soln и записать soln1:=А -1 ×b.

5 Получить решение линейного уравнения у векторному виде

.

IIНайти решение системы линейных уравнений с использованием так званого «блоку решений».

1 Задать начальные значения переменным, которые есть в уравнении.

2 Ввести ключевое слово given (дано), с которого начинается блок решений.

3 Записать уравнение, используя знак логического равенства между правой и левой частью уравнения из панели управления Evaluation (Выражения).

4 Ввести ключевое слово find (найти), которым заканчивается блок решений.

IIIНайти решение вышеприведенной системы уравнений с использованием функции lsolve.

1Создать матрицу А из коэффициентов при неизвестных.

2 Создать вектор b из свободных членов.

4 Обратиться к встроенной программе решения линейных уравнений lsolve и записать lsolve(А,b).

5 Получить результат решения линейного уравнения в векторном виде

.

IVНайти приближенное решение с использованием функции minerr(x1,…).

1 Задать приближение последовательно для значений переменной х1, х2,… хn.

2 Ввести ключевое слово given (дано), с которого начинается блок решений.

3 Записать систему уравнений, используя знак логического равенства между правой и левой частями каждого уравнения.

4 Обратиться к функции minerr( x1,x2. ). Значения неизвестных будут найдены.

Таблица 3.1 – Варианты заданий к лабораторной работе № 3

№ вариантаКоэффициенты при неизвестныхСвободные члени
a11 а21 а31 а41а12 а22 а23 а24а13 а23 а33 а34а14 а24 а34 а44в1 в2 в3 в4
0,12-0,430,140,64-0,17
-0,070,34-0,720,320,62
1,18-0,08-0,250,431,12
1,170,53-0,84-0,531,15
0,12-0,430,140,64-0,17
-0,070,34-0,720,320,62
1,18-0,08-0,250,431,12
1,170,53-0,84-0,531,15
3,75,69,5
3,3631,11,5
7,934,26,34,4
42,73,76,2
1,31,62,2
4,46,72,5
2,80,7367,8
3,4
5,31,65,53,3
4,16,43,9
2,13,32,044,9
3,1
0,2
8,35,3
2,66,14,1
0,933,8
34,7
3,6
3,44,2
44,7
5,10,2
3,45,34
2,76,7
3,3
2,51,3
5,20,78
6,114,2
6,783,76
2,3
3,42,5
0,2
1,25
3,38,2
1,2
1,3
5,9
6,6
3,32,1
4,8
0,4
0,2
1,31,52,223,2
3,45,551,3
3,32,26,77
4,93,66,88
0,4
0,3
3,37,65,5
5,4
9,2
3,2
0,44
0,67
3,355,3
4,226,73,5
2,83,82,9
2,343,44
5,23
13,46,335,12,113,33
4,666,13,335,440,11
2,222,556,334,44
2,983,786,113,33

Пример

I Найти решение системы уравнений с использованием функции soln

1 Создать матрицу А

А:= .

2 Создать вектор b

b:= .

3 Найти решение системы, используя функцию soln

.

4 Результат решения

II Найти решение вышеприведенной системы уравнений с использованием так званого «блоку решений»

1 Задать начальные значения переменным, которые присутствуют в уравнении

2 Ввести ключевое слово given (дано), с которого начинается блок решений.

3 Записать уравнение, используя знак логического равенства между правой и левой частями уравнения из панели управления Evaluation (Выражения).

4 Ввести ключевое слово find (найти), которым заканчивается блок решений.

5 Результат решения

IIIНайти решение вышеприведенной системы уравнений с использованием функции lsolve.

1 Создать матрицу А

.

2 Создать вектор b

.

3 Найти решение системы, используя функцию lsolve:

IVНайти решение вышеприведенной системы уравнений с использованием функции minerr (x,у,z).

1 Задать начальные условия для неизвестных, например, x=1,у=1,z=1.

2 Ввести ключевое слово given (дано), с которого начинается блок решений.

3 Записать уравнения, используя знак логического равенства между правой и левой частью уравнения из панели.

4 Обратиться к функции minerr (x,у,z). Решение системы уравнений будет найдено.

Контрольные вопросы

1 Какие встроенные функции позволяют найти решение системы линейных уравнений?

2 В каком виде представляются результаты решения системы линейных уравнений?

Лабораторная работа №5
Нахождение решений системы нелинейных уравнений в MathCad

Цель работы: нахождение решений системы нелинейных уравнений в программе MathCad .

Указания к выполнению лабораторной работы:

І Найти решение системы нелинейных уравнений с использованием так называемого «блока решений».

1 Задать начальные значения переменным, которые есть в уравнении.

2 Ввести ключевое слово gіven (дано), из которого начинается блок решений.

3 Записать уравнение, используя знак логического равенства между правой и левой частями уравнения из панели управления.

4 Ввести ключевое слово fіnd (найти), которым заканчивается блок решений.

ІІ. Найти приближенное решение с использованием функции mіnerr(x1. ).

1 Задать приближение последовательно для значений переменной х1, х2. хn.

2 Ввести ключевое слово gіven (дано), из которого начинается блок решений.

3 Записать систему уравнений, используя знак логического равенства между правой и левой частями каждого уравнения.

4 Обратиться к функции mіnerr( x1,x2. ). Значение неизвестных будет найдено.

Таблица 4.1 – Варианты задания к лабораторной работе №4

№ вариантаСистема уравнений№ вариантаСистема уравнений

Пример

Найти решение системы нелинейных уравнений с использованием так называемого «блока решений».

1 Задать начальные значения переменным, которые есть в уравнении

2 Ввести ключевое слово given (дано), с которого начинается блок решений.

3 Записать уравнения, используя знак логического равенства между правой и левой частью уравнения из панели управления

4 Ввести ключевое слово find (найти), которым заканчивается блок решений.

5 Результат решения

IIНайти приближенное решение с использованием функции minerr(x1,…).

1 Задать приближения последовательно для значений переменной х=1, y=1.

2 Ввести ключевое слово given (дано), с которого начинается блок решений.

3 Записать систему уравнений, используя знак логического равенства между правой и лево частью каждого уравнения.

4 Обратится к функции minerr( x,y.). Значение неизвестных будет найдено.

.

Контрольные вопросы

1 Какие встроенные функции позволяют найти решение системы нелинейных уравнений?

2 В каком виде представляются результаты решения системы нелинейных уравнений?

3 Нужно ли задавать начальные приближения при решении системы нелинейных уравнений?

Лабораторная работа № 6
Символьные действия математического анализа в MathCad

Цель работы:определение неопределенных и определенных интегралов и производных в программе MathCad с использованием символьных операций.

Указания к выполнению лабораторной работы:

1 Запустить программу MathCad.

2 Записать на рабочем листе в соответствии с номером варианта формулы для определения неопределенных интегралов, определенных интегралов, производных первого порядка. От производных первого порядка определить производные второго, третьего порядков.

3 Применить последовательно к каждой функции команды меню Symbolic/Simplify, отметив последовательно каждую из функций.

Таблица 5.1 – Варианты задания к лабораторной работе №5

Номер вариантаНеопределенные интегралыОпределенные интегралыПроизводные

Продолжение табл. 5.1

Продолжение табл. 5.1

Примеры

1 Найти неопределенный интеграл .

Результат :

2 Найти определенный интеграл .

Результат .

3 Найти производные первого порядка .

Результат .

4 Найти производные высокого порядка .

Результат

Контрольные вопросы

1 Как найти в символьном виде определенные и неопределенные интегралы?

2 Можно ли применять символьные операции к интегралам по области, к трехмерным интегралам, к контурным интегралам?

3 Можно ли в символьному виде найти производные высоких порядков?

|следующая лекция ==>
Задание 3.|Лабораторная работа № 1

Не нашли то, что искали? Google вам в помощь!

Электронная библиотека

Задача ставится следующим образом:

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

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

Отыскание корней численными методами связано с несколькими задачами:

Ø Исследование существования корней в принципе, определение их количества и примерного расположения;

Ø Отыскание корней с заданной погрешностью

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

Решение одного уравнения с одним неизвестным

Рассмотрим алгебраическое уравнение f(x)=0 с одним неизвестным х, например, sin(x)=0.

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

Мнемоника команды выглядит следующим образом:

root (f(x), x) или root (f(x), x, a, b),

где f(х) – скалярная функция, определяющая уравнение; х – скалярная переменная, относительно которой решается уравнение; а, b – границы интервала, внутри которого происходит поиск корня.

Первый тип функции root требует дополнительного задания начального значе

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

Приведем пример решения очень простого уравнения sin(x)=0, корни которого известны заранее (рис. 38).

Обратите внимание, что, хотя уравнение имеет бесконечное количество корней MathCAD находит (с заданной точностью) только один из них, х0, лежащий наиболее близко к х = 0,5. Если задать другое начальное значение, например х = 3, то решением будет другой корень уравнения х1 = π и т.д. Таким образом, для поиска корня средствами MathCAD требуется его предварительная локализация. Это связано с особенностями выбранного численного метода, который называется методом секущих.

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

Рис. 7.1. Функция Minerr

Примечание: Для решения уравнения с одним неизвестным применимы и градиентные методы, относящиеся в MathCAD к системам уравнений.

Иногда удобнее задавать не начальное приближение к корню, а интервал [а, b], внутри которого корень заведомо находится. В этом случае следует использовать функцию root с четырьмя аргументами, а присваивать начальное значение х не нуж

но. Поиск корня будет осуществлен в промежутке между а и b альтернативным численным методом (Риддера или Брента). Явный вид функции f(x) может быть определен непосредственно в теле функции root (рис. 39).

Когда root имеет четыре аргумента, следует помнить о двух ее особенностях:

Ø внутри интервала [а, b] не должно находиться более одного корня, иначе будет найден один из них, заранее неизвестно, какой именно;

Ø значения f(а) и f(b) должны иметь разный знак, иначе будет выдано сообщение об ошибке.

Если уравнение не имеет действительных корней, но имеет мнимые, то их также можно найти. Например, уравнение х 2 +1=0, имеющее два чисто мнимых корня, решается два раза с разными начальными значениями (рис. 40).

При задании начального значения 0,5 численный метод отыскивает первый корень (отрицательную мнимую единицу –i), а при начальном значении –0,5 находится и второй корень i.

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

Нахождение корней полинома

Если функция f(x) является полиномом, то все его корни можно определить, использую встроенную функцию polyroots(v), где v – вектор, составленный из коэффициентов полинома.

Поскольку полином n-й степени имеет ровно n корней (некоторые из них могут быть кратными), вектор v должен состоять из n+1 элемента. Результатом действия функции polyroots является вектор, составленный из n корней рассматриваемого полинома. При этом нет надобности вводить какое-либо начальное приближение, как для функции root.

Например, найдем корни полинома четвертой степени f(x)=х 4 -6х 3 +12х 2 -10х+3 с

помощью функции polyroots (рис. 41).

Рис. 7.2. Функция Polyroots

Запишем коэффициенты рассматриваемого в примере полинома в виде вектора. Первым в векторе должен идти свободный член полинома, вторым – коэффициент при х 1 и т.д. Соответственно, последним n+1 элементом вектора должен быть коэффициент при старшей степени x N .

Совет: Иногда исходный полином имеется не в развернутом виде, а, например, как произведение нескольких полиномов. В этом случае определить все его коэффициенты можно, выделив его и выбрав в меню Symbolics (Символика) пункт Expand (Разложить). В результате символьный процессор MathCAD сам преобразует полином в нужную форму, пользователю надо будет только корректно ввести ее в аргументы функции polyroots.

Далее показано действие функции polyroots. Обратите внимание, что численный метод вместо двух из трех действительных единичных корней (иными словами, кратного корня 1) выдает два мнимых числа. Однако малая мнимая часть этих корней находится в пределах погрешности, определяемой константой TOL, и не должна вводить пользователей в заблуждение. Просто нужно помнить, что корни полинома могут быть комплексными, и ошибка вычислений может сказываться как на действительной, так и на комплексной части искомого корня.

Для функции polyroots можно выбрать один из двух численных методов – метод полиномов Лаггера (он установлен по умолчанию) или метод парной матрицы.

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

Рассмотрим систему уравнений вида

В матричной форме СЛАУ записывается в эквивалентном виде:

где А – матрица коэффициентов СЛАУ размерности n×n; x – вектор неизвестных; В – вектор правых частей уравнений.

СЛАУ имеет единственное решение, если матрица А является невырожденной, т. е. ее определитель не равен нулю. С вычислительной точки зрения, решение СЛАУ не представляет трудностей, если матрица А не очень велика.

В MathCAD СЛАУ можно решить как в более наглядной форме (1), так и в более удобной для записи форме (2). Для первого способа следует использовать вычислительный блок Given/Find, а для второго – встроенную функцию решения системы линейных уравнений lsolve. Мнемоника написания команды следующая:

где А – матрица коэффициентов системы; В – вектор правых частей.

Применение функции lsolve показано на рис. 42.

В некоторых случаях, для большей наглядности представления СЛАУ, его можно решить точно так же, как систему нелинейных уравнений. Не забывайте, что при численном решении всем неизвестным требуется присвоить начальные значения (это сделано в первой строке листинга) (рис. 43). Они могут быть произвольными, так как решение СЛАУ с невырожденной матрицей единственно.

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

Рис. 7.4. Решение системы

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

Здесь fi(x1, … , xm) – некоторые скалярные функции от скалярных переменных x1, x2, …, хm и, возможно, от еще каких-либо переменных. Уравнений может быть как больше, так и меньше числа переменных. Заметим, что систему можно формально переписать в виде f(x)=0, где х – вектор, составленный из переменных x1, x2, …, хm; f(x) – соответствующая векторная функция.

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

1) Given – ключевое слово;

2) Система, записанная логическими операторами в виде равенств и, возможно, неравенств;

3) Find (х1, …, хm) – встроенная функция для решения системы относительно переменных х1, …, хm.

Вставлять логические операторы следует, пользуясь панелью инструментов Boolean (Булевы операторы). Если вы предпочитаете ввод с клавиатуры помните, что логический знак равенства вводится сочетанием клавиш + . Блок Given/Find используется для поиска решения итерационные методы, поэтому, как и для функции root, требуется задать начальные значения для всех х1, …, хm. Сделать это необходимо до ключевого слова Given. Значение функции Find есть вектор, составленный из решения по каждой переменной. Таким образом, число элементов вектора

Find равно числу аргументов.

В листинге (рис 44) приведен пример решения системы двух уравнений.

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

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

Рис. 7.6. Точность

В листинге найдено только одно из двух решений – находящееся в правой нижней части графика (рис. 45). Чтобы отыскать и второе решение, следует повторить вычисления, изменив начальные значения так, чтоб они лежали ближе к другой точке пересечения графиков, например, х=–1, y=–1.

Пока мы рассмотрели пример системы из двух уравнений и таким же числом

неизвестных, что встречается наиболее часто. Но число уравнений и неизвестных может и не совпадать. Более того, в вычислительный блок можно добавить дополнительные условия в виде неравенств. Например, введение ограничения на поиск только отрицательных значений х (рис. 46).

Рис. 7.7. Ограничение на поиск

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

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

Примечание: Вычислительный блок использует константу CTOL в качестве погрешности выполнения уравнений, введенных после ключевого слова Given. Другая константа TOL определяет условие прекращения итераций численным алгоритмом. Значение CTOL может быть задано пользователем, так же как и TOL, например, CTOL:=0,01. По умолчанию принято, что CTOL=TOL=0,001, но по желанию можно переопределить их.

Рис. 7.8. Переопределение

Вычислительным блоком с функцией Find можно найти и корень уравнения с одним неизвестным. Действие Find в этом случае совершенно аналогично уже рас

смотренным в данном разделе примерам. Задача поиска корня рассматривается как решение системы, состоящей из одного уравнения. Единственным отличием будет скалярный, а не векторный тип числа возвращаемого функцией Find (рис 47).

Символьное решение уравнений

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

Как видно, вместо знака равенства после функции Find в листингах (рис. 48) следует знак символьных вычислений, который можно ввести с панели Symbolic, или, нажав клавиши + .

Рис. 7.9. Пример вычисления

Не забывайте, что сами уравнения должны иметь вид логических выражений, т.е. знаки равенства нужно вводить с помощью панели Booleans (Булевы операторы). Обратите внимание, что во втором листинге вычислены как два первых действительных корня, которые мы уже находили численным методом, так и два других мнимых корня. Эти два последних корня чисто мнимые, так как множитель

Срочно?
Закажи у профессионала, через форму заявки
8 (800) 100-77-13 с 7.00 до 22.00


источники:

http://life-prog.ru/2_59715_nahozhdenie-korney-uravneniya-v-mathcad.html

http://libraryno.ru/7-reshenie-uravneniy-v-srede-mathcad-prog_sr_z_2013/