numeric::solve

Числовое решение уравнений (атрибут плавающий решают),

Блокноты 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. См. Пример 2. Корни возвращены как набор или как Dom::Multiset если Multiple используется.

  • Если eqs многомерное полиномиальное уравнение или список или набор таких уравнений, затем уравнения и соответствующие дополнительные аргументы передаются любому numeric::linsolve или numeric::polysysroots. См. Пример 3. Корни возвращены как набор или как Dom::Multiset если Multiple используется.

  • Рациональное уравнение или набор или список рациональных уравнений заменяются его числителем (числителями). Такие уравнения обрабатываются как полиномиальные уравнения.

  • Если eqs non-polynomial/non-rational уравнение или набор или список, содержащий такое уравнение, затем уравнения и соответствующие дополнительные аргументы передаются числовому решателю numeric::fsolve.

    Примечание

    Для неполиномиальных уравнений только один числовой корень возвращен, если AllRealRoots задан! См. Пример 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, который определяет числовую рабочую точность.

Примеры

Пример 1

Следующие три вызова решателя эквивалентны:

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:

Пример 2

Мы демонстрируем корневой поиск одномерных полиномов:

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)

Пример 3

Мы демонстрируем корневой поиск полиномиальных систем. Обратите внимание на то, что символьный решатель solve включен, если система нелинейна. Приняты символьные параметры:

numeric::solve({x^2 + y^2 = 1, x^2 - y^2 = exp(z)}, {x, y})

Пример 4

Мы демонстрируем корневой поиск неполиномиальных уравнений. Без опции 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)

Пример 5

Для следующей системы, 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:

Параметры

eqs

Уравнение, список, набор, array, или matrix (Cat::Matrix) из уравнений. Также арифметические выражения приняты и интерпретированы как однородные уравнения.

vars

Неизвестное, список неизвестных или набор неизвестных. Неизвестные могут быть идентификаторами или индексированными идентификаторами. Также уравнения формы x=a или x=a..b приняты везде, где неизвестный x ожидается. Таким образом, начальные точки и поисковые области значений заданы для числового поиска. Они должны быть числовыми; приняты бесконечные поисковые области значений.

Опции

AllRealRoots

Только использоваться если eqs одно уравнение в одном неизвестном. При использовании этой опции, эвристика используется, чтобы найти все действительные решения уравнения.

Примечание

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

Примечание

Арифметика интервала используется, чтобы изолировать поисковые интервалы для решений. Выражения в eqs должно подойти для такой арифметики. Внутренне, процедура numeric::realroots называется. Смотрите страницу справки numeric::realroots для ограничений на выражения в eqs.

Примечание

Уравнение должно подойти для оценки с арифметикой интервала. Смотрите numeric::realroots для ограничений на выражения в уравнении.

С AllRealRoots, только дополнительные опции Multiple и NoWarning окажите влияние. Все другие опции, такие как UnrestrictedSearch и т.д. проигнорированы.

Это, настоятельно рекомендуют задать поисковый интервал вызовом, таким как numeric::solve(f(x), x = a..b, AllRealRoots). В этом случае, только действительные решения между a и b разыскиваются.

Поиск всех действительных решений может быть очень трудоемким!

Multiple

Только использоваться если eqs полиномиальное уравнение или система полиномиальных уравнений или в сочетании с опцией AllRealRoots. При использовании этой опции возвращена информация о кратности вырожденных полиномиальных корней.

Это изменяет тип возврата от DOM_SET к Dom::Multiset.

FixedPrecision

Только использоваться если eqs один одномерный полином. Это запускает быстрый числовой поиск с фиксированной внутренней точностью.

Это передается numeric::polyroots, который использует числовой поиск с фиксированной внутренней точностью. Это быстро, но вырожденные корни могут быть возвращены с ограниченной точностью. Смотрите страницу справки numeric::polyroots для деталей.

SquareFree

Только использоваться если eqs один одномерный полином. Символьная квадратная свободная факторизация применяется, прежде чем числовой поиск запускается.

Это передается numeric::polyroots, который предварительно обрабатывает полином символьной квадратной свободной факторизацией. Смотрите страницу справки numeric::polyroots для деталей.

Factor

Только использоваться если eqs один одномерный полином. Символьная факторизация применяется, прежде чем числовой поиск запускается.

Это передается numeric::polyroots, который предварительно обрабатывает полином символьной факторизацией. Смотрите страницу справки numeric::polyroots для деталей.

RestrictedSearch

Числовой поиск ограничивается поисковыми диапазонами, указанными в vars.

Эта опция передается numeric::fsolve, который использует соответствующую поисковую стратегию при поиске корней в поисковом диапазоне, указанном в vars. Это должно использоваться только в сочетании с поисковой областью значений и только для неполиномиальных уравнений.

Смотрите numeric::fsolve для деталей.

UnrestrictedSearch

Числовой поиск может возвратить результаты вне поисковых диапазонов, указанных в vars.

Эта опция передается numeric::fsolve, который использует соответствующую поисковую стратегию при поиске корней в поисковом диапазоне, указанном в vars. Это должно быть использование только в сочетании с поисковыми областями значений и только для неполиномиальных уравнений.

Смотрите numeric::fsolve для деталей.

MultiSolutions

Только использоваться в неполиномиальных уравнениях в сочетании с RestrictedSearch. Могут быть возвращены несколько корней.

Это передается numeric::fsolve, который возвращает последовательность всех корней, найденных во внутреннем поиске. Смотрите страницу справки numeric::fsolve для деталей.

Random

Только использоваться в неполиномиальных уравнениях. При использовании этой опции, несколькими вызовами numeric::solve может привести к различным решениям уравнения (уравнений).

Это передается numeric::fsolve который переключается на случайную поисковую стратегию. Смотрите страницу справки numeric::fsolve для деталей.

NoWarning

Эта опция только оказывает влияние, когда она используется в полиномиальных уравнениях в сочетании с AllRealRoots. Когда вы используете AllRealRoots, предупреждения выданы, если арифметика интервала указывает на технические трудности, такие как серьезная переоценка (например, при обнаружении с несколькими корнями). При использовании этой опции подавлены предупреждения.

Примечание

Эта опция оказывает влияние если eqs многомерная полиномиальная система или одномерный полином символьным параметром.

В таком случае эта опция передается numeric::polysysroots.

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

Набор числовых решений. С опцией Multiple, набор доменного типа Dom::Multiset возвращен.