числовой::Изолированные интервалы, содержащие действительные корни одномерной функции
Блокноты 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 не усовершенствованы если a ≥ 105.
Такие интервалы возвращены непосредственно, если 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, который определяет числовую рабочую точность.
Следующее выражение имеет целочисленные нули. Решения в заданном интервале аппроксимированы к точности по умолчанию 0.01:
numeric::realroots(sin(PI*x), x = -2..sqrt(2))
![]()
Следующее уравнение решено с абсолютной точностью 7 цифр:
numeric::realroots(x*sin(x) = exp(-x), x = -1..1, 10^(-7))
![]()
Следующее выражение не имеет действительного корня:
numeric::realroots(exp(x) + x^2, x = -100..100)
![]()
Мы демонстрируем опцию 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)
![]()
Следующее выражение имеет бесконечно много решений
с 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)
![]()
Если никакой поисковый интервал не задан, целая действительная строка рассматривается:
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))![]()
Следующее уравнение не имеет никакого корня близко к 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))![]()
|
Выражение в одном неопределенном |
| |
|
Вещественные числа или числовые выражения, удовлетворяющие a <b. Также |
|
(Маленькое) положительное действительное численное значение, задающее цель точности. Значение по умолчанию 0.01. |
|
Опция, заданная как
Настройкой по умолчанию является
С С Настройкой по умолчанию является |
Список [[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 для полиномов каждый интервал изоляции, как гарантируют, будет содержать точно один корень.