числовой::

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

Блокноты 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), однако, некоторые подынтервалы не могут содержать корень! Cf. Пример 6.

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

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

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

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

Такие интервалы возвращены непосредственно, если numeric::realroots думает, что они могут содержать корни. Cf. Пример 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, ceil, cos, cosh, cot, coth, csc, csch, dirac, exp, floor, gamma, Im, ln, Re, round, sec, sech, sin, sinh, sqrt, tan, tanh, 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

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

a, B

Вещественные числа или числовые выражения, удовлетворяющие 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 для полиномов каждый интервал изоляции, как гарантируют, будет содержать точно один корень.