Какие аргументы функции root не обязательны в mathcad

Zoloto585CPA

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

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

Уравнение с одним неизвестным: функция root

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

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

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

Листинг 5.13. Два варианта уравнения методом секущих:

Как вы можете убедиться (первая строка листинга 5.13), для решения уравнения при помощи функции root (f (x),x,a,b) не требуется задавать начального приближения, а достаточно указать интервал [а,b]. Поиск корня будет осуществлен в промежутке между а и b альтернативным численным методом (Риддера или Брента). Когда root имеет четыре аргумента, следует помнить о двух ее особенностях. Во-первых, внутри интервала не должно находиться более одного корня, иначе будет найден один из них, заранее неизвестно, какой именно. Во-вторых, значения f (а) и f (b) должны иметь разный знак, иначе будет выдано сообщение об ошибке.

В чем же отличие встроенной функции Find от функции root? Оно состоит в том, что для решения одних и тех же задач используются различные численные алгоритмы (градиентные и метод секущих соответственно). В примерах уравнений с одним неизвестным, которые мы рассматривали до сего момента, выбор метода не влиял на окончательный результат, поскольку фигурировавшие в них функции были “хорошими”, т. е. достаточно гладкими для поиска корня одним из градиентных методов, требующих, как известно, вычисления производных. Между тем бывают ситуации, когда применение того или иного метода имеет решающее значение.

Приведем пример простой функции f(x), корни которой удается отыскать только при помощи функции root (листинг 5.14). Она определена в первой строке этого листинга, а ее корень вычислен во второй строке. Из графика, представленного на рис. 5.5, видно, что f (х) имеет особенность в окрестности своего корня, являясь в ней разрывной. В завершающей части листинга 5.14 предпринимается попытка отыскать нулевое значение f (х) посредством вычислительного блока Given/Find, которая оказывается неудачной.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.

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

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

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

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

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

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

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

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

image002.jpg

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

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

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

image007.jpg

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

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

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

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

image015.jpg

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

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

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

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

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

image022.jpg

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

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

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

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

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

image025.jpg

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

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

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

image028.jpg

7+1. Odesolve

Наша самая первая задача о движении моторной лодки туда и обратно (см. рис. 1 и 2) имеет существенное допущение: скорость лодки считается постоянной. Но это условие выполнить практически невозможно, т. к. лодка по прибытии в один конец пути должна сбросить скорость, развернуться и пуститься в обратный путь. Смоделировать снижение скорости лодки перед ее разворотом нам поможет функция Odesolve, предназначенная для решения (solve) обыкновенных (o – ordinary) дифференциальных (d) уравнений (e – equation) и их систем. Если при численном решении алгебраических уравнений и их систем мы получаем числа, подстановка которых в уравнения превращает их в тождества, то при решении дифференциальных уравнений и их систем мы получаем функции, подстановка которых превращает исходные дифференциальные уравнения в тождества. Заметим, что функция Odesolve в группе «Решение уравнений» стала восьмой (7 + 1 – см. выше) только в среде Mathcad Prime. В Mathcad 15 в группе «Решение уравнений» ее нет.

Итак, задача 4. На моторной лодке, движущейся со скоростью v, заглушили мотор. Спрашивается, как будут меняться скорость лодки и пройденный ею путь? Задача предельно упрощена – на лодку действует сила трения, пропорциональная квадрату скорости лодки (см. рис. 14, 15, 16 и 17, где этот квадрат фигурировал). На рисунке 18 показано решение и графическое отображение этой задачи с помощью функции Odesolve.

image018_32.jpg

Рис. 18. Решение задачи об остановки лодки

Коэффициент пропорциональности, записанный в уравнении на рис. 18 (масса лодки, помноженная на ускорение – на первую производную скорости по времени), состоит из двух частей, связанных с трением о воздух надводной части лодки и трением о воду ее подводной части. Эти коэффициенты пропорциональны плотности ρ среды (воздуха или воды) и площади поперечного сечения надводной и подводной частей лодки S.

Задачу об остановке моторной лодки мы решили численно: функция Odesolve не ищет аналитического решения уравнения. Она формирует таблицу значений искомых функций v (скорость лодки) и x (пройденный путь), по которым интерполяцией создается непрерывная функция, по которой мы построили графики (см. рис. 18).

В среде Mathcad нет средств аналитического (символьного) решения дифференциальных уравнений. Но их можно поискать и найти в Интернете. На рисунке 19 показано такое решение – логарифмическая функция. Оно нашлось, поскольку исходное уравнение было достаточно простым. Но если с нашей задачи начать снимать ограничения, позволяющие упростить уравнение, то символьного решения уже не будет, и нам придется возвращаться к численным методам – к функции Odesolve. Так, например, при торможении лодки площадь поперечного сечения ее надводной части уменьшается, а подводной части растет[6]. Коэффициенты kвозд и kводы (см. блок исходных данных на рис. 18) также зависят от скорости и характера движения лодки: они одни при ламинарном («гладком») обтекании тела и другие при турбулентном движении, когда за лодкой клубятся вихри воды и воздуха. У воды и воздуха разная вязкость, что тоже нужно учитывать при математическом моделировании движении лодки. Этим занимается очень интересная наука под названием гидрогазодинамика…

image019_34.jpg

Рис. 19. Символьное решение дифференциального уравнения

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

Школьнику, студенту, инженеру или ученому необходимо (а в ряде случаев и достаточно) освоить «великолепную семерку Mathcad», особенности численных, графических и аналитических методов решения задач, чтобы успешно решать на компьютере свои учебные или профессиональные задачи.

Очков математики и математические пакеты // Открытое образование, №2, 2013. С. 23-34 (http://twt. mpei. ac. ru/ochkov/Mathcad-15/OchkovMath-pdf. pdf)

[1]Первое действие: как долго лодка была бы в пути, если б вода в реке была неподвижна – 2*10 км/12 км/ч = 1 час 40 минут; второе действие… Читатель, докончи это решение сам и сравни с теми, которые приведены ниже. Мы по действиям такие задачи решали когда-то в 5 классе школы. Но не всякая задача может быть решена по действиям. Поэтому и была придумана алгебра. Эту задачу тоже сходу нельзя решить пошагово. В древние времена, пока не было формулы корней квадратного уравнения, не всякое квадратное уравнение могли решить, причем решения были очень хитроумными.

[2] На этом и некоторых других рисунках будут показаны инструменты Mathcad Prime и Mathcad 15 для решения описываемых задач.

[3] А такими «нефизическими» формулами заполнены все учебники и задачники по математике. И это очень плохо. Хорошо тогда, когда за формулой скрывается какая-нибудь физическая реальность.

[4] Навстречу друг другу по одноколейной дороге одновременно вышли два поезда. И не столкнулись. Почему? Ответ: не судьба! 😉

[5] Мы имеем в виду знаменитое «Золотое сечение», т. е. такое деление отрезка на две неравные части, при котором длина отрезка так относится к длине большей части, как длина большей части относится к длине меньшей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Zoloto585CPA

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

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

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

4.1. Численное решение нелинейных уравнений

Относительно небольшое количество задач решения уравнений можно решить аналитически. Аналитическое решение предполагает точное определение корней либо нахождение алгоритма, по которому корни всегда могут быть найдены. На практике часто приходится искать решение при помощи численных методов [1, 11]. Уравнения решаются численными методами с заданной погрешностью. В MathCAD погрешность задается системной константой TOL . Как правило, отыскание корней алгебраического уравнения (или системы уравнений) численными методами связано с двумя задачами:

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

Для численного решения уравнений в MathCAD существуют встроенные функции[1, 10], в которых реализованы алгоритмы известных численных методов: итерационный метод секущих ; различные градиентные методы и другие. Почти все встроенные функции предполагают, что корни уже приблизительно локализованы.

Использование функции root()

Рассмотрим решение простейших уравнений вида F(x)=0 . Решить уравнение – значит найти все его корни, т.е. такие числа, при подстановке которых в исходное уравнение получим верное равенство. Если функция нескольких аргументов F(x, у, ..)=0. , все остальные значения должны быть заданы для искомого x . Для локализации корней (исследования их количества и примерного расположения) полезно построить график функции и определить все точки пересечения графика функции с осью OX.

Функция root () вычисляет значение переменной, при котором F(x, у, ..)=0 . Если уравнение имеет несколько корней, функцию надо вызывать соответствующее число раз. Вычисления реализуются итерационным методом. Данный метод заключается в постепенном приближении к искомому корню с некоторой точностью от начального значения переменной. Точность вычислений задаётся системной переменной TOL , определённой в меню Tools/ Worksheet Options .. По умолчанию равной 0.001.

root(F(x, у, . ), x, [a, b]) возвращает с заданной точностью значение переменной, x , лежащей между a и b при котором функция равна нулю. Значения F() для a и b должны быть разных знаков. Третий аргумент не обязателен. Выбор решения определяется выбором начального значения переменной

Пример 4.1

Решить уравнение 5y^2\ln<(y+4)>-3\ln<(3y+2)>=0

  • Зададим функцию f(y)=5y^2\ln<(y+4)>-3\ln<(3y+2)>
  • Найдем начальные значения корней. Для этого построим график функции. Подберем масштаб для наилучшего визуального наблюдения точек пересечения графика с осью OX.
  • Точки пересечения графика с осью OX лежат в интервалах (-1; 0) и (0; 1)
  • Определили начальные приближения корней. Используем функцию root()
  • Можно провести проверку,

f(y):=5y^2\ln<(y+4)>-3\ln<(3y+2)>

y:=-1

y1:=root(f(y),y)

y1:=-0.274

Проверка: f(y1):=9.548 \cdot 10^<-15>

y:=1

y1:=root(f(y),y)

y1:=0.746

Проверка: f(y):=3.219

Листинг решения примера 4.1

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

Пример 4.2

Решить уравнение F1(z,y)=z^3-9z^2+20z+yz+2y^3-15y=0для y=2.

Осуществляется решение уравнения при помощи функции root, для нескольких последовательных начальных значений корней. Результат выдается в виде табулированных значений – таблицы.

  • Задаем уравнение F1().
  • Строим график.
  • Всегда существует вероятность "просмотреть" корень, расположенный между узлами сканирования. Начальное значение корня z0 вводим как табулированную переменную в визуальной области корней, определенной по графику.
  • Строим функцию U(z0) как решение через root() — значение корня уравнения F1(z0,y)=0. То есть определяется разный корень в зависимости от начального значения z0.

y:=2

F1(z,y):=z^3-9z^2+20z+yz+2y^3-15y

Начальное значение корня z :

z0:=-2,0..8

u(z0):=root(F1(z0,y),z0)

u(z0):=\begin<array><|c|ccccc|>\hline 1 \\ \hline 1 \\ \hline 2.5858 \\ \hline 1 \\ \hline 5.4142 \\ \hline 5.4142\\ \hline \end<array>

F1(1,y):=0

F1(2.5858,y)=-6.0831 \cdot 10^<-5>

F1(5.4142,y)=-1.6933 \cdot 10^<-4>

 Листинг решения примера 4.2

Функция поиска корней полинома polyroots()

Для поиска корней обычного полинома р(х) степени n MathCAD содержит очень удобную функцию:

polyroots(V) возвращает вектор корней многочлена (полинома) степени n, коэффициенты которого находятся в векторе V, имеющем длину равную n+1.

Пример 4.3

Решить уравнение x^5-2x^4-3x^3-x^2-4x=-21.

Осуществляется решение уравнения при помощи функции polyroots() (Рис.4.3).

  • Задаем вектор, элементы которого – коэффициенты полинома, начиная со свободного члена.
  • Используем функцию polyroots().
  • Решение представляется в виде матрицы, включающей все корни, в том числе и комплексные.

f(x):=(x^5-2x^4-3x^3-x^2-4x+21)

f(x)\large<=>0

V:=\begin<array><|c|ccccc|>\hline 21 \\ \hline -4 \\ \hline -1 \\ \hline -3 \\ \hline -2 \\ \hline 1\\ \hline \end<array>

x:=polyroots(V)

x:=\begin<array><|c|ccccc|>\hline -1.835 \\ \hline -0.334+1.557i \\ \hline -0.334-1.557i \\ \hline 1.503 \\ \hline 3 \\ \hline \end<array>

f(x):=\begin<array><|c|ccccc|>\hline -3.289 \cdot 10^ <-10>\\ \hline -3.289 \cdot 10^ <-10>\\ \hline -3.289 \cdot 10^<-10>-1.421i \cdot 10^ <-14>\\ \hline -3.289 \cdot 10^ <-10>\\ \hline -3.289 \cdot 10^ <-10>\\ \hline \end<array>

4.1.4. Встроенные функции Mathcad для поиска корней уравнений

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

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

Пример 4.Найти корень уравнения x 3  e x = 0.

x:=3 – начальное значение переменной;

y:= root(x 3  e x , x);

y = 1.857 – корень уравнения.

Рис. 17. Графическая схема алгоритма метода итераций

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

Точность поиска значения определяется встроенной переменной TOL (точность), значение которой можно изменять с помощью пункта меню Математика Параметры

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

Подобное сообщение появляется в следующих случаях:

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

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

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

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

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

4.1.4.2. Функция until. Функция until(x, z) позволяет остановить вычисления при выполнении определенного условия: ее первый аргумент должен включать в себя дискретную переменную. Mathcad будет выполнять вычисления для последовательных значений дискретного аргумента до тех пор, пока первый аргумент until не станет отрицательным. Когда это случается, Mathcad останавливает вычисления.

Функция until(x,z) возвращает z до тех пор, пока значение x положительно (х  переменная, принимающая дискретные значения).

Для определения индекса последнего элемента в векторе х служит функция last(x).

Функция until полезна в итерационных процессах с определенным условием сходимости.

Пример 5. Определить корень уравнения методом итерации с использованием функции until.

f(x) := ln(x)  x + 1.8  исходное уравнение;

f1(x) := ln(x) + 1.8  уравнение вида (х);

x0 := 2  начальное приближение (определяется по графику);

e := 0.001 заданная точность;

n := 100 предположительное число итераций;

x1 := f1(x0)  определения первого приближения по методу итерации ;

i := last(x)  определение числа итераций, за которое сходится итерационный процесс;

Чтобы записать индекс для индексированной переменной (например, x1) нужно воспользоваться соответствующей кнопкой на панели инструментов Матрица (рис. 18, а): на рис. 18, б  кнопками «Матрица или вектор», «Нижний индекс», «Обращение», «Определитель» соответственно; на рис. 18, в  «Век-торизация», «Выделить столбец», «Транспонирование».

Рис. 18. Панель инструментов Матрица

Рис. 19. Решение уравнения методом Ньютона

Пример, приведенный на рис. 19, демонстрирует выполнения задания в системе Mathcad. Для решения используется функция until, одновременно выполняется проверка итерационного процесса на сходимость. Вычисления продолжаются до тех пор, пока выполняется условие xi –xi-1 . Использование функции last позволяет определить размер массива вычисленных значений до момента остановки вычислений.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Zoloto585CPA

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

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