числовой::
Числовое решение уравнений (атрибут плавающий решают),
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
numeric::solve(eqs
, <vars
>,options
) float(holdsolve(eqs
, <vars
>,options
)) float(freezesolve(eqs
, <vars
>,options
))
numeric::solve
вычисляет числовые решения уравнений. Для полиномиальных уравнений возвращены все решения. Для неполиномиальных уравнений возвращено только одно решение, если таковые имеются, если опция AllRealRoots
не используется.
Обратите внимание на то, что только для полиномиальных/рациональных уравнений все решения разыскиваются. Для non-polynomial/non-rational уравнений возвращено только одно решение, если таковые имеются, если опция AllRealRoots
не используется.
Если уравнения содержат немногочленные выражения, в целом не возможно изолировать все корни численно. Думайте об уравнениях, таких как это, имеют бесконечно много действительных решений вокруг источника! Если полный набор всех действительных решений одного non-polynomial/non-rational уравнения в одном неизвестном желаем, можно попробовать опцию AllRealRoots
. При использовании этой опции, эвристика пытается изолировать все действительные решения уравнения. Это, однако, просто heuristical: нет никакой суровости в алгоритме, и не гарантируется, что все решения найдены. Также можно также использовать стандартный numeric::realroots
, чтобы изолировать интервалы, в которых могут существовать решения.
numeric::solve
является простой функцией интерфейса, объединяющей функциональность числовых решателей numeric::fsolve
, numeric::linsolve
, numeric::polyroots
и numeric::polysysroots
. Формат возврата этих стандартных программ изменяется, чтобы сделать его сопоставимым с возвращаемыми значениями символьного решателя solve
.
Можно вызвать специализированные числовые решатели непосредственно. Однако обратите внимание, что возврат вводит характерный для каждого из этих решателей.
numeric::solve
классифицирует уравнения можно следующим образом:
Если eqs
является одним одномерным полиномиальным уравнением, то он непосредственно передается numeric::polyroots
. Cf. Пример 2. Корни возвращены как набор или как Dom::Multiset
, если Multiple
используется.
Если eqs
является многомерным полиномиальным уравнением или списком или набором таких уравнений, то уравнения и соответствующие дополнительные аргументы передаются или numeric::linsolve
или numeric::polysysroots
. Cf. Пример 3. Корни возвращены как набор или как Dom::Multiset
, если Multiple
используется.
Рациональное уравнение или набор или список рациональных уравнений заменяются его числителем (числителями). Такие уравнения обрабатываются как полиномиальные уравнения.
Если eqs
является non-polynomial/non-rational уравнением или набором или списком, содержащим такое уравнение, то уравнения и соответствующие дополнительные аргументы передаются числовому решателю numeric::fsolve
.
Для неполиномиальных уравнений возвращен только один числовой корень, если AllRealRoots
не задан! Cf. Пример 4.
Для неполиномиальных уравнений не должно быть большего количества уравнений, чем неизвестные!
Используя Multiple
для неполиномиальных уравнений приводит к ошибке, если опция AllRealRoots
не задана, также!
Для систем многомерных неполиномиальных уравнений MuPAD® использует поиск Ньютона. Это должно смочь оценить частные производные уравнений относительно переменных, которые будут решены для.
Для одного одномерного уравнения сначала bisectioning схема с квадратичной интерполяцией используется, который не требует никакого дифференцирования уравнения. Если это не успешно, поиск Ньютона запускается, который требует производной включенных функций.
Для удобства также полиномы доменного типа принят DOM_POLY
, везде, где уравнение ожидается.
В отличие от символьного решателя solve
, числовой решатель не реагирует на свойства набора идентификаторов через assume
. Единственное исключение, где numeric::solve
реагирует на свойства идентификаторов, для систем полиномиальных уравнений (только там, где существует больше чем одна переменная).
Чтобы реагировать на свойства идентификаторов, вместо этого вызовите float ( hold( solve )(arguments))
.
Если пользователь не задает indeterminates, который будет решен для, то indeterminates внутренне выбраны numeric::indets
(eqs)
.
Отправные точки, такие как x = a
или поисковые области значений, такие как x = a..b
, заданный в vars
, проигнорированы, если eqs
является полиномиальным уравнением или системой полиномиальных уравнений.
Функция чувствительна к переменной окружения DIGITS
, который определяет числовую рабочую точность.
Следующие три вызова решателя эквивалентны:
eqs := {x^2 = sin(y), y^2 = cos(x)}: numeric::solve(eqs, {x, y}), float(hold(solve)(eqs, {x, y})), float(freeze(solve)(eqs, {x,y}))
delete eqs:
Мы демонстрируем корневой поиск одномерных полиномов:
numeric::solve(x^6 - PI*x^2 = sin(3), x)
Полиномы типа DOM_POLY
могут использоваться в качестве входа:
numeric::solve(poly((x - 1/3)^3, [x]), x)
С Multiple
Dom::Multiset
возвращен, указав на кратность корня:
numeric::solve(x^3 - x^2 + x/3 -1/27, x, Multiple)
Мы демонстрируем корневой поиск полиномиальных систем. Обратите внимание на то, что символьный solve
решателя включен, если система нелинейна. Приняты символьные параметры:
numeric::solve({x^2 + y^2 = 1, x^2 - y^2 = exp(z)}, {x, y})
Мы демонстрируем корневой поиск неполиномиальных уравнений. Без опции AllRealRoots
разыскивается только одно решение:
eq := exp(-x) - 10*x^2: numeric::solve(eq, x)
Поскольку numeric::solve
только вызывает корневое средство поиска numeric::fsolve
, можно также использовать эту стандартную программу непосредственно. Отметьте различный выходной формат:
numeric::fsolve(eq, x)
Входной синтаксис numeric::solve
и numeric::fsolve
является идентичными, т.е. отправными точками, поисковые области значений и опции могут использоваться. Например, другое решение предыдущего уравнения найдено ограниченным поиском на интервале:
numeric::solve(eq, x = -1..0, RestrictedSearch)
Мы используем опцию AllRealRoots
, чтобы изолировать все действительные решения уравнения:
numeric::solve(eq, x, AllRealRoots)
Со следующим вызовом мы ограничиваем поиск отрицательной полуосью:
numeric::solve(eq, x = -infinity..0, AllRealRoots)
Для следующей системы numeric::solve
находит решение с положительным y:
eqs := [exp(x) = 2*y^2, sin(y) = y*x^3]: numeric::solve(eqs, [x, y])
Другое решение с отрицательным y найдено с соответствующей поисковой областью значений:
numeric::solve(eqs, [x = 1, y = -infinity..0])
delete eq, eqs:
|
Уравнение, список, набор, |
|
Неизвестное, список неизвестных или набор неизвестных. Неизвестные могут быть идентификаторами или индексированными идентификаторами. Также уравнения формы |
|
Только, чтобы использоваться, если ПримечаниеОбратите внимание на то, что нет никакой гарантии, что все действительные решения будут найдены. Примечание Арифметика интервала используется, чтобы изолировать поисковые интервалы для решений. Выражения в ПримечаниеУравнение должно подойти для оценки с арифметикой интервала. Смотрите С Это, настоятельно рекомендуют задать поисковый интервал вызовом, таким как Поиск всех действительных решений может быть очень трудоемким! |
|
Только, чтобы использоваться, если Это изменяет тип возврата от |
|
Только, чтобы использоваться, если Это передается |
|
Только, чтобы использоваться, если Это передается |
|
Только, чтобы использоваться, если Это передается |
|
Числовой поиск ограничивается поисковыми областями значений, заданными в Эта опция передается Смотрите |
|
Числовой поиск может возвратить результаты вне поисковых областей значений, заданных в Эта опция передается Смотрите |
|
Только использоваться для неполиномиальных уравнений в сочетании с Это передается |
|
Только использоваться для неполиномиальных уравнений. При использовании этой опции несколько вызовов Это передается |
|
Эта опция только имеет эффект, когда она используется для полиномиальных уравнений в сочетании с ПримечаниеЭта опция имеет эффект, если В таком случае эта опция передается |
Набор числовых решений. С опцией Multiple
набор доменного типа возвращен Dom::Multiset
.