числовой::

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

Блокноты 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, который определяет числовую рабочую точность.

Примеры

Пример 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.