numeric::realroots

Изолированные интервалы, содержащие действительные корни одномерной функции

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

numeric::realroots(f(x), <x = a .. b>, <eps>, <Merge = c>)

Описание

numeric::realroots(f(x), x = a..b) поиски действительных корней f (x) в интервале. Это возвращает список подынтервалов, в которых могут существовать действительные корни f (x). Гарантируется, что нет никаких действительных корней в интервале, лежащем вне объединения возвращенных подынтервалов.

С Merge = FALSE, все интервалы возвращены numeric::realroots имейте длину b i - a i <eps со значением по умолчанию eps = 0.01. Абсолютная точность корневой изоляции может быть переопределена с помощью дополнительного параметра eps.

Примечание

Интервалы возвращены numeric::realroots задайте подмножество этого, может содержать действительные корни. Для многочленных выражений f (x), каждый из подынтервалов возвращенных numeric::realroots как гарантируют, будет содержать точно один корень. Для немногочленных выражений f (x), однако, некоторые подынтервалы не могут содержать корень! См. Пример 6.

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

Символьные параметры в f (x) не позволены: float(f(x)) должен оценить к числу с плавающей точкой для всего x от интервала.

Интервалы Бога формы x = -infinity..b не усовершенствованы если b ≤ - 105.

Интервалы Бога формы x = a..infinity не усовершенствованы если a105.

Такие интервалы возвращены непосредственно если numeric::realroots думает, что они могут содержать корни. См. Пример 5.

f (x) может содержать сложные выражения. Только поисковый параметр x принят, чтобы быть действительным. Для сложных выражений f(x), интервалы возвращены, где и действительное и мнимая часть выражения исчезают одновременно.

Примечание

Выражение f(x) должно подойти для арифметики интервала. In particular, MuPAD® должен смочь оценить f(a...b). Обратите внимание на то, что не все функции MuPAD поддерживают этот вид арифметики.

В настоящее время следующие специальные функции поддерживают арифметику интервала: abs, arccos, arccosh, arccoth, arccot, arccsc, arccsch, arcsec, arcsech, arcsin, arcsinh, arctan, arctanh, arg\betaпотолокпотому чтодубинкараскладушкаcothcsccsch, diracexpпол\Gamma\Im, ln, Reвокругсекундаsech, sinsinhsqrttantanh, trunc. Действительные корни могут искаться любое выражение, которое создается из этих функций с помощью стандартных арифметических операций +, -, *, /, ^.

Значением по умолчанию является eps = 0.01. Определяемые пользователем цели точности должны удовлетворить.

Взаимодействия среды

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

Примеры

Пример 1

Следующее выражение имеет целочисленные нули. Решения в заданном интервале аппроксимированы к точности по умолчанию 0.01:

numeric::realroots(sin(PI*x), x = -2..sqrt(2))

Следующее уравнение решено с абсолютной точностью 7 цифр:

numeric::realroots(x*sin(x) = exp(-x), x = -1..1, 10^(-7))

Пример 2

Следующее выражение не имеет действительного корня:

numeric::realroots(exp(x) + x^2, x = -100..100)

Пример 3

Мы демонстрируем опцию Merge. Если арифметика интервала не может изолировать корни к желаемой точности eps (значение по умолчанию 0.01), то смежные интервалы производятся, каждая длина, меньшая, чем eps. Это происходит в следующем примере:

numeric::realroots(ln(x^2 -2*x + 2) = 0, x = -10..10,
                   Merge = FALSE)

С Merge = TRUE, эти интервалы объединены к одному большему интервалу. Начиная с Merge = TRUE настройка по умолчанию для неполиномиальных функций, она достаточна, чтобы не использовать опцию Merge = FALSE:

numeric::realroots(ln(x^2 -2*x + 2) = 0, x = -10..10)

Пример 4

Следующее выражение имеет бесконечно много решений с n = 1, 2, … в поисковом интервале [0, 1]:

numeric::realroots(sin(PI/x), x = 0..1, 0.1, Merge = FALSE)

Исключение Merge = FALSE, смежные интервалы объединены к большим интервалам. Первый из следующих интервалов содержит бесконечно много корней:

numeric::realroots(sin(PI/x), x = 0..1, 0.1)

Пример 5

Если никакой поисковый интервал не задан, целая действительная линия рассматривается:

numeric::realroots(x^3 = exp(x))

Кроме двух конечных интервалов, numeric::realroots говорит нам, что может быть корень близко к бесконечности (но что нет положительно никакого корня близко к - бесконечность). Аналитически, ясно, что подынтервал не может содержать корень, поскольку становится намного быстрее, чем x 3, когда x переходит к бесконечности. Если конечный верхний предел для поискового интервала задан, этот факт обнаруживается:

numeric::realroots(x^3 = exp(x), x = -infinity .. 10^100)

Мы изолируем два конечных корня более тесно путем определения цели точности:

numeric::realroots(x^3 = exp(x), x = -infinity .. 10^100,
                   10^(-DIGITS))

Пример 6

Следующее уравнение не имеет никакого корня близко к 0. Однако арифметика интервала не производит реалистические значения для маленьких интервалов, содержащих x = 0, таким образом, интервал изоляции приблизительно 0 возвращены:

numeric::realroots(sin(PI*x)/x = 0, x = -1..1.2)

Подобное явление происходит с в районе x = 0. Интервал изоляции приблизительно 0 возвращены, несмотря на то, что никакое решение не существует там:

numeric::realroots(x^x*cos(PI*x) = tan(x), x = 0..1)

Это не может быть исправлено путем увеличения цели точности:

numeric::realroots(x^x*cos(PI*x) = tan(x), x = 0..1,
                   10^(-DIGITS))

Параметры

f(x)

Выражение в одном неопределенном x или список, набор, array, или matrix (Cat::Matrix) из выражений. В качестве альтернативы уравнения в форме f1(x) = f2(x) эквивалентный выражениям f1(x) - f2(x).

x

Идентификатор или индексируемый идентификатор

aB

Вещественные числа или числовые выражения, удовлетворяющие a <b. Также - infinity и infinity может использоваться.

eps

(Маленькое) положительное действительное численное значение, задающее цель точности. Значение по умолчанию 0.01.

Опции

Merge

Опция, заданная как Merge = b

b может быть TRUE или FALSE. С Merge = FALSE, numeric::realroots возвращает подынтервалы длины, не больше, чем eps. С Merge = TRUE, numeric::realroots объединяет смежные подынтервалы к большим интервалам, т.е. подынтервалам длины, больше, чем eps может быть возвращен.

Настройкой по умолчанию является Merge = FALSE для полиномиальных функций f (x). В противном случае это - Merge = TRUE.

numeric::realroots изолирует интервалы, которые могут содержать корни. Внутренне, все эти интервалы удовлетворяют b i - a i <eps, где eps является целью точности.

С Merge = FALSE, эти интервалы возвращены.

С Merge = TRUE, смежные интервалы с b i = a i + 1 объединены к большим интервалам. Смотрите Пример 3 и Пример 4.

Настройкой по умолчанию является Merge = FALSE для полиномиальных функций. В противном случае это - Merge = TRUE.

Возвращаемые значения

Список [[a 1, b 1], [a 2, b 2], …] непересекающихся интервалов с плавающей точкой, которые могут содержать корни f (x). Пустой список возвращен, если никакой корень не существует в поисковом интервале [a, b].

Алгоритмы

Позвольте X быть подмножеством вещественных чисел. Арифметика интервала производит набор F (X), таким образом, что набор значений изображений содержится в F (X). Область MuPAD DOM_INTERVAL упрощает этот вид арифметики. Стандартный numeric::realroots вычисляет для различных подынтервалов. Если F не содержит нуль, то этот подынтервал устраняется из поискового интервала. В противном случае подынтервал возвращен как кандидат на содержание нулей f (x). Однако нельзя прийти к заключению, что F действительно содержит по крайней мере один нуль, поскольку F обычно больше, чем истинный набор изображений ('переоценка').

Для полиномов f (x), стандартный polylib::realroots называется. Его результаты пересечены с поисковым интервалом. Никакая арифметика интервала не используется в многочленных выражениях. Для полиномиальных уравнений, каждый интервал изоляции, возвращенный numeric::realroots как гарантируют, будет содержать по крайней мере один корень если Merge = TRUE задан. С настройкой по умолчанию Merge = FALSE для полиномов каждый интервал изоляции, как гарантируют, будет содержать точно один корень.