Какие функции применяются для нахождения корней в пакете mathcad

GeekBrains

Какие функции применяются для нахождения корней в пакете mathcad

Простейший способ найти корень уравнения с одним неизвестным в Mathcad обеспечит функция root ( ). Аргументами функции root ( ) являются вид функции определяющей решаемое уравнение и имя переменой, относительно которой ищется решение — root (f(x),x) Если уравнение в Mathcad содержит несколько корней, то функция обеспечивает нахождение единственного корня, ближайшего к заданному начальному значению для искомой переменной. Точность вычислений может быть увеличена или уменьшена посредством задания значения переменной TOL, равной по умолчанию 10-3 и определённой в меню Math, Options (Математика, Опции). Установленное значение TOL также оказывает влияние на точность вычислений.

Численное решение уравнений с одним неизвестным

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

Уравнений с одним неизвестным в Mathcad

Другим способом решения уравнений в Mathcad является применение специального вычислительного блока, начинающегося с ключевого слова given с использованием функций find( ) и minerr ( ).

Блок имеет следующую структуру:

Начальное значение искомой переменной

Выражение с использованием функции find( ) или minerr ( )

Нахождение корней уравнения в Mathcad с использованием блока given…find ( ) в чем – то аналогично использованию функции root ( ). В Mathcad задается начальное значение для искомой переменной, после находится решение, ближайшее к заданному начальному условию. Использовании блока given…minerr ( ) имеет существенные особенности. Решение будет найдено в любом случае, даже при его отсутствии. Дело в том, что ищется не решение системы, а минимальная невязка уравнений. На листинге рассмотрена функция, заведомо не имеющая действительных корней и при использовании блока given…minerr ( ) найдено решение, значение, которое наиболее приближено к оси х, то есть обеспечивает минималь-ную невязку. Значение невязки (ошибки) показывает системная переменная ERR.

Методы нахождения корней полинома в алгоритме пеленгования UCA Root Rare в пакете Mathcad

Коробков, М. А. Методы нахождения корней полинома в алгоритме пеленгования UCA Root Rare в пакете Mathcad / М. А. Коробков. — Текст : непосредственный // Молодой ученый. — 2014. — № 14 (73). — С. 54-56. — URL: https://moluch.ru/archive/73/12348/ (дата обращения: 25.11.2021).

Рассмотрены два метода нахождения корней полинома, получаемого при выполнении алгоритма редукции ранга для пеленгования источников радиоизлучения UCA‑Root‑Rare. Продемонстрированы результаты численного моделирования. Приведён соответствующий листинг программ в пакете Mathcad.

Ключевые слова: UCA‑Root‑Rare, полином, Mathcad, polyroots, roots.

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

Цель работы — используя свойства полинома, получаемого при выполнении алгоритма UCA‑Root‑Rare (Rare‑полином) [1], найти решения Rare‑полинома при помощи встроенных функций пакета Mathcad для произвольной степени полинома.

1.Алгоритм UCA‑Root‑Rare. Вычисление координат ИИ, в данном случае азимута, при помощи алгоритма UCA‑Root‑Rare, выполняется путём нахождения корней следующего полиномиального уравнения:

, (1)

где — определитель матрицы,

(2)

матрица размера ,

(3)

диагональная матрица размера , оператор диагонализации элементов,

. (4)

— это матрица отражений или антидиагональная единичная матрица:

. (5)

Используя (1)‑(3) и (5) матрица для будет иметь следующий вид:

. (6)

Матрица — это матрица собственных векторов, соответствующих подпространству шума корреляционной матрицы данных в пространстве лучей [2].

Исследование уравнения (1) показывает, что степень полинома будет , а следовательно уже для число корней Rare‑полинома будет равным .

2. Встроенные функции пакета Mathcad. Встроенные функции Mathcad в состоянии решить любое алгебраическое уравнение. Для решения уравнения с одним неизвестным можно использовать функции root и polyroots. Mathcad решает уравнения итерационным методом, поэтому перед решением необходимо задать начальное приближение для всех корней [3].

2.А. Функция root.

Функция root используется для решения одного уравнения с одним неизвестным. Обращение к функции: root(f(x)), где — выражение, равное нулю; — аргумент, варьируя который, система ищет значение, обращающее функцию в нуль. Функция и аргумент должны быть скалярами, то есть результат вычисления функции — число, а не вектор или матрица. Функция root использует итерационный метод секущих. Корень уравнения — ближайшее к начальному приближению значение , обращающее функцию в нуль. Если корней несколько, для отыскания каждого корня необходимо задавать свое начальное приближение. Если уравнение не имеет действительных корней, то есть функция нигде не равна нулю, то Mathcad выводит комплексное число [3].

2.А. Функция polyroots

Для нахождения корней полинома можно использовать функцию polyroots(K), которая определяет все корни полинома одновременно. Здесь — вектор коэффициентов полинома, начиная со свободного члена. Нулевые коэффициенты опускать нельзя. Если полином имеет корней (с учетом кратности), то вектор включает в себя коэффициент. Начальное приближение вводить не надо. Следует обратить внимание, что вектор должен содержать от до коэффициентов.

3. Получение оценок. Вэтом разделе рассматриваются оценки, получаемые при решении уравнения (1) при помощи функций polyroots и root.

3.А. Получение решений при помощи функции polyroots.

Как говорилось ранее, функция polyroots работает только с полиномами, степень которых не превышает . Накладываемое функцией polyroots ограничение позволяет применять её для решения уравнения (1) в случае, если параметр размера матрицы не превышает , что будет соответствовать корням. Для применение функции polyroots невозможно, поскольку в этом случае степень Rare‑полинома превышает значение и будет больше . Решения уравнения (1) при помощи функции polyroots показаны на рисунке 1 а), где крестиком обозначены истинные координаты азимута трех источников, кружками обозначены корни уравнения (1), пунктирной линией показана единичная окружность.

Рис. 1. Решения Rare‑полинома при помощи функции: а) polyroots, ; б) root, . Азимут источников излучения , , .

3.А. Получение решений при помощи функции root.

Исследование уравнения (1) показывает, что истинными оценками азимута будут являться только те корни, которые максимально близко расположены к единичной окружности. Следовательно, для поиска корней полинома степени большей, чем можно применить функцию root, ограничив область поиска значениями, лежащими на единичной окружности взяв их с некоторым шагом. Для комплексной плоскости этим значениям будет соответствовать некоторый угол , косинус которого будет соответствовать действительной части числа, а синус мнимой. Ниже приведён листинг программы в пакете Mathcad реализующий поиск корней Rare‑полинома произвольной степени при помощи функции root.

Листинг 1. Нахождение корней Rare‑полинома произвольной степени

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

Листинг 2. Преобразование коэффициентов полинома в выражение

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

Одним из свойств корней Rare‑полинома, является то, что все его корни обладают так называемым свойством взаимной сопряжённости, которое означает, что если — это корень полинома, то также будет корнем полинома [4]. Иными словами, корни симметричны относительно единичной окружности, что можно наблюдать на рисунке 1 а). Для корней вблизи центра окружности, их парные корни находятся за пределами области построения графика, и охватывают окружность с наружи таким же плотным кольцом, как и корни вблизи центра окружности.

Поиск корней по методу, приведённому в листингах 1 и 2, даёт только один корень. Учитывать корень нет необходимости, однако при желании это возможно сделать, просто выполнив операцию для каждого найденного решения.

Следует также обратить внимание, на то, что полученные решения по листингам 1 и 2 получаются несколько искажёнными, а кольцо вблизи центра окружности на рисунке 1 б) имеет деформацию, в отличие от аналогичного кольца на рисунке 1 а). Такое различие может быть вызвано как большой дискретностью шага поиска, так и отличием методов поиска решений функций polyroots иroot.

Заключение. В статье были рассмотрены два варианта нахождения корней полинома, получаемого в результате нахождения определителя в уравнении (1). Приведён соответствующий листинг предлагаемых методов. На численном примере в графическом отображении показаны отличия, между нахождением корней полинома стандартными функциями пакета Mathcad polyroots иroot.

1. Pesavento M., Böhme J. F. Direction of arrival estimation in uniform circular arrays composed of directional elements // Sensor Array and Multichannel Signal Processing Workshop. 2002. No 8. P. 503–507.

2. Marple L. Digital spectral analysis with applications. New Jersey: Prentice-Hall, 1987. P. 492.

3. Макаров Е. Инженерные расчёты в Mathcad 15: Учебный курс — Спб.: Питер, 2011. — 400 с.: ил.

4. Li. H. Y., Xie J. L., He Z. S. A fast DOA estimation algorithm for uniform circular arrays in the presence of unknown mutual coupling // Progress In Electromagnetics Research C, 2011, Vol. 21, 257–271.

Функция root в маткаде

Рассмотрим одно алгебраическое уравнение с одним неизвестным х.

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

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

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

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

Листинг 8.1. Поиск корня нелинейного алгебраического уравнения

Рис. 8.1. Графическое решение уравнения sin(x)=0

График функции f (x)=sin(x) и положение найденного корня показаны на рис. 8.1. Обратите внимание, что, хотя уравнение имеет бесконечное количество корней xn=npi (n=0,±1,±2. ), Mathcad находит (с заданной точностью) только один из них, х0, лежащий наиболее близко к х=0.5. Если задать другое начальное значение, например х=3, то решением будет другой корень уравнения х1=pi и т. д. Таким образом, для поиска корня средствами Mathcad требуется его предварительная локализация. Это связано с особенностями выбранного численного метода, который называется методом секущих и состоит в следующем (рис. 8.2):

  • Начальное приближение принимается за 0-е приближение к корню: х0=х.
  • Выбирается шаг h=TOLх и определяется первое приближение к корню x1=x0+h. Если х=0, то принимается h=TOL.
  • Через эти две точки проводится секущая — прямая линия, которая пересекает ось х в некоторой точке х2. Эта точка принимается за второе приближение.
  • Новая секущая проводится через первую и вторую точки, тем самым определяя третье приближение, и т. д.
  • Если на каком-либо шаге оказывается, что уравнение выполнено, т. е. |If (x) | 2 +i=0, имеющее два чисто мнимых корня, решается два раза с разными начальными значениями. При задании начального значения 0.5 (первая строка листинга) численный метод отыскивает первый корень (отрицательную мнимую единицу -i), а при начальном значении -0.5 (третья строка листинга) находится и второй корень (i).

Листинг 8.3. Поиск мнимого корня

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

Остается добавить, что f (х) может быть функцией не только х, а любого количества аргументов. Именно поэтому в самой функции root необходимо определить, относительно какого из аргументов следует решить уравнение. Эта возможность проиллюстрирована листингом 8.4 на примере функции двух переменных f (х,у)=х 2 -y 2 +3. В нем сначала решается уравнение f(x,0)=0 относительно переменной х, а потом — другое уравнение f (1,у) =0 относительно переменной у.

Листинг 8.4. Поиск корня уравнения, заданного функцией двух переменных

В первой строке листинга определяется функция f (x,y), во второй и третьей — значения, для которых будет производиться решение уравнения по у и х, соответственно. В четвертой строке решено уравнение f (x,0)=0, а в последней —уравнение f (1,y)=0. Не забывайте при численном решении уравнений относительно одной из переменных предварительно определить значения остальных переменных. Иначе попытка вычислить уравнения приведет к появлению ошибки "This variable or function is not defined above", в данном случае говорящей о том, что другая переменная ранее не определена. Конечно, можно указать значение других переменных непосредственно внутри функции root, беспрепятственно удалив, например, вторую и третью строки листинга 8.4 и введя его последние строки в виде root(f (x,0) ,х)= и root(f (1,у) ,у)=, соответственно.

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

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

Вычисление корней численными методами включает два основных этапа:

· уточнение корней до заданной точности.

Рассмотрим эти два этапа подробно.

Отделение корней нелинейного уравнения

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

Пример. Дано алгебраическое уравнение

Определить интервалы локализации корней этого уравнения.

Пример. Дано алгебраическое уравнение

Определить интервалы локализации корней этого уравнения.

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

Уточнение корней нелинейного уравнения

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

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

GeekBrains

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

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

Функция root с двумя аргументами требует задания (до обращения к функции) переменной начального значения корня из интервала локализации.

Пример 8.1.5. Используя функцию root , вычислить изменения корня нелинейного уравнения при изменении коэффициента а от 1 до 10 с шагом 1.

Функция polyroots . Для вычисления всех корней алгебраического уравнения порядка (не выше 5) рекомендуется использовать функцию polyroots . Обращение к этой функции имеет вид polyroots (v) , где v – вектор, состоящий из n +1 проекций, равных коэффициентам алгебраического уравнения, т.е. . Эта функция не требует проведения процедуры локализации корней.

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

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

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

Ограничения содержат равенства или неравенства, которым должен удовлетворять искомый корень.

Функция Find уточняет корень уравнения, вызов этой функции имеет вид Find ( x ), где x – переменная, по которой уточняется корень. Если корня уравнения на заданном интервале не существует, то следует вызвать функцию Minerr ( x ), которая возвращает приближенное значение корня.

Для выбора алгоритма уточнения корня необходимо щелкнуть правой кнопкой мыши на имени функции Find ( x ) и в появившемся контекстном меню (см. рисунок) выбрать подходящий алгоритм.

Аналогично можно задать алгоритм решения и для функции Minerr ( x ).

Использование численных методов в функциях Find ( x ), Minerr ( x ) требует перед блоком Given задать начальные значения переменным, по которым осуществляется поиск корней уравнения.

Пример. Используя блок Given , вычислите корень уравнения в интервале отделения .

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

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

· алгебраические системы уравнений;

· трансцендентные системы уравнений.

Среди алгебраических систем уравнений особое место занимают системы линейных алгебраических уравнений (СЛАУ).

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

Системой линейных алгебраических уравнений (СЛАУ) называется система вида:

В матричном виде систему можно записать как

где – матрица размерности , – вектор с проекциями.

Для вычисления решения СЛАУ следует использовать функцию lsolve , обращение к которой имеет вид: lsolve (А, b ), где А – матрица системы, – вектор правой части.

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

MathCAD дает возможность находить решение системы уравнений численными методами, при этом максимальное число уравнений в MathCAD 2001 i доведено до 200.

Для решения системы уравнений необходимо выполнить следующие этапы.

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

Пример. Дана система уравнений:

Определить начальные приближения для решений этой системы.

Видно, что система имеет два решения: для первого решения в качестве начального приближения может быть принята точка (-2, 2), а для второго решения – точка (5, 20). ¨

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

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

Следующие выражения недопустимы внутри блока решения:

· ограничения со знаком ¹ ;

· дискретная переменная или выражения, содержащие дискретную переменную в любой форме;

· блоки решения уравнений не могут быть вложены друг в друга, каждый блок может иметь только одно ключевое слово Given и имя функции Find (или Minerr ).

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

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

Тема 6. Решение уравнений и систем Краткие теоретические сведения

Для алгебраических уравнений вида f(x)=0 решение в MathCad находится с помощью функции root.

Общий вид функции следующий:

f(х) – функция, описывающая левую часть выражения вида f(x)=0,

х – имя переменной, относительно которой решается уравнение.

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

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

Если после многих итераций Mathcad не находит подходящего приближения, то появится сообщение «отсутствует сходимость».

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

уравнение не имеет корней;

корни уравнения расположены далеко от начального приближения;

выражение f(x) имеет разрывы между начальным приближением и корнем;

выражение имеет комплексный корень, но начальное приближение было вещественным и наоборот.

Для изменения точности, с которой функция root ищет корень, нужно изменить значение системной переменной TOL. Например, просле задания в документе оператора TOL:=0.00001 точность вычисления корня станет равной 0.00001.

Для нахождения корней полиномиального уравнения вида

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

где v – вектор коэффициентов полинома длины n+1, n – степень полинома. Вектор v формируется следующим образом: в первый его элемент заносится значение коэффициента полинома при х 0 , т.е. v , во второй элемент — значение коэффициента полинома при х 1 , т.е. v1 и т.д. Таким образом, вектор заполняется коэффициентами перед степенями полинома справа налево.

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

На рисунке 2.6.1 приведены примеры вычисления корней уравнений с помощью функций root и polyroots.

MathCAD дает возможность решать системы уравнений и неравенств.

Наиболее распространенным методом решения уравнений в Mathcad является блочный метод. Для решения системы этим методом необходимо выполнить следующее:

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

б) задать ключевое слово Given, которое указывает, что далее следует система уравнений;

в) ввести уравнения и неравенства в любом порядке (использовать кнопку логического равенства на панели знаков логических операций для набора знака «=» в уравнении);

г) ввести любое выражение, которое включает функцию Find.

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

После набора решающего блока Mathcad возвращает точное решение уравнения или системы уравнений.

Обратиться к функции Find можно несколькими способами:

x := Find(x1, x2,…) – формируется переменная или вектор, содержащий вычисленные значения корней.

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

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

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

Примеры решения систем уравнений с помощью решающего блока приведены на рисунке 2.6.2.

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

Матричный метод решения системы линейных уравнений реализован в функции lsolve. Общий вид функции:

где а – матрица коэффициентов перед неизвестными, b – вектор свободных членов.

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

методом Крамера, матричным и блочным методами. Сравнить полученные результаты. Начальные значения корней при использовании блочного метода принять равными 1.

Пример 6.2. Вычислить множество корней полиномиального уравнения с использованием функцииpolyroots.

GeekBrains

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

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