solve

Решите уравнения и неравенства

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Для solve функция в MATLAB®, смотрите solve.

Синтаксис

solve(eq, x, options)
solve(eq, x = a .. b, options)
solve(eq, vars, options)
solve(eq, options)
solve(eqs, x, options)
solve(eqs, vars, options)
solve(eqs, options)
solve(ODE)
solve(REC)

Описание

solve(eq, x) возвращает набор всех сложных решений уравнения или неравенства eq относительно x.

solve(eq, x = a..b) возвращает набор всех решений в закрытом интервале Dom::Interval([a, b]).

solve(eq, vars) решает уравнение для переменных vars.

solve(eqs, x) решает систему eqs для переменной x.

solve(eqs, vars) решает систему eqs из уравнений для переменных vars.

solve функция обеспечивает объединенный интерфейс ко множеству специализированных решателей. Смотрите Выбор Решателя.

Если вы не задаете indeterminates, для которого вы хотите решить уравнение, неравенство или систему, решатель использует набор всего indeterminates. Indeterminates должен быть идентификаторами или индексированными идентификаторами. Вы не можете использовать математические константы, такие как PI, ЭЙЛЕР, и так далее, как indeterminates. Решатель отбрасывает indeterminates, которые появляются только в именах функций или индексах. Смотрите Пример 12.

Если вы задаете список indeterminates, для которого вы хотите решить уравнение, неравенство или систему, решатель сортирует компоненты получившихся векторов решения согласно порядку indeterminates, который вы использовали. Если вы задаете indeterminates как набор, MuPAD® может изменить порядок indeterminates.

solve(eq, vars) эквивалентно solve([eq], vars).

Решатель может возвратить следующие типы наборов:

  • Конечные множества (вводят DOM_SET).

  • Символьные вызовы solve.

  • Нулевые наборы полиномов (вводят RootOf). Решатель возвращает набор этого типа, если это не может решить уравнение явным образом в терминах радикалов. Решатель также может возвратить этот тип набора, когда вы используете MaxDegree опция.

  • Относящиеся к теории множеств выражения, такие как "_union"пересечение, и "_minus".

  • Символьные вызовы solvelib::Union. Эти вызовы представляют объединения по параметрическим системам наборов.

  • , , и (вводят solvelib::BasicSet) наборы.

  • Интервалы (вводят Dom::Interval).

  • Отобразите наборы функций (введите Dom::ImageSet).

  • Кусочные объекты, в которых каждая ветвь задает набор одного из допустимых типов (вводят piecewise).

MuPAD может использовать наборы этих типов, исключая интервалы и основные наборы, чтобы представлять наборы векторов (для решений систем). При решении системы MuPAD также может возвратить решение в форме S n (n - сворачивают декартову степень набора S скаляров). Здесь S является набором любого типа, возвращенного solve.

Для возвращенных наборов решения можно использовать относящиеся к теории множеств операции, такие как intersectобъединение, и minus. Кроме того, можно использовать pointwise-заданные арифметические операции, такие как +, *, и так далее. Чтобы извлечь элементы набора, используйте solvelib::getElement функция. Протестировать ли набор решения, возвращенный solve конечно, используйте функциональный solvelib::isFinite. Смотрите пример 2

Для систем решатель возвращает набор векторов или набор списков уравнений. Чтобы указать, что решатель должен возвратить набор векторов, используйте VectorFormat опция. Смотрите Пример 10.

По умолчанию, solve(eq, x) возвращает только решения, сопоставимые со свойствами x. Проигнорировать свойства x, используйте IgnoreProperties опция. Эта опция полезна, когда вы решаете систему уравнений больше чем для одной переменной. Смотрите Пример 13.

Неравенство a <= b или a < b содержит только, когда обе стороны представляют вещественные числа. В частности, a = b не подразумевает тот a <= b для комплексных чисел.

Можно записать пользовательские области для уравнений специальных типов, и затем перегрузки solve для этих областей. MuPAD использует эту функцию для уравнений повторения и дифференциала. Смотрите ode, ode::solve, и rec страницы справки.

solve функция является символьным решателем. Если вы хотите использовать числовые методы, смотрите numeric::solve страница справки для доступных параметров и примеров.

Если вход содержит числа с плавающей запятой, решатель заменяет их аппроксимированными рациональными значениями. Точность этих приближенных значений зависит от переменной окружения DIGITS. Если solve находит решение, MuPAD внутренне вызывает float функция для того решения, и затем возвращает результат. Если символьный решатель возвращает unevaluated, MuPAD вызывает numeric::solve. Смотрите пример 16.

Если числитель содержит учтенный полином с кратностью, больше, чем 1, решатель не проверяет, что несколько поддерживают нули в знаменателе. Смотрите Пример 17.

Взаимодействия среды

solve реагирует на свойства идентификаторов.

Примеры

Пример 1

Решите следующее уравнение. Как правило, для уравнений с конечным числом решений, решатель возвращает набор DOM_SET ввод:

S := solve(x^4 - 5*x^2 + 6*x = 2, x)

Присвойте отдельные решения переменных путем индексации в S:

sol1 := S[1]

Пример 2

Решатель может также возвратить бесконечный дискретный набор решений:

S := solve(sin(x*PI/7) = 0, x)

Чтобы выбрать решения в конкретном конечном интервале, найдите пересечение набора решения с интервалом:

S intersect Dom::Interval(-22, 22)

В качестве альтернативы задайте интервал при вызове решателя. Например, вычислите решения в интервале [-22, 22]:

solve(sin(x*PI/7) = 0, x = -22..22)

delete S:

Пример 3

Используйте solve функция, чтобы решить неравенства. Как правило, набор решения неравенства является интервалом или объединением интервалов:

solve(x^2 > 5, x)

Пример 4

Решите следующее неравенство. Решение включает набор всех комплексных чисел, исключая и:

solve(x^2 <> 7, x)

Пример 5

Решатель может возвратить решение как объединение бесконечного семейства наборов. solvelib::Union функция представляет такие бесконечные объединения в MuPAD:

solve(sin(x)*cos(x) > 1/4, x, Real)

Пример 6

Если уравнение содержит символьные параметры, решатель возвращает кусочное решение. Например, решите квадратное уравнение ax 2 + bx + c = 0:

S := solve(a*x^2 + b*x + c, x)

Теперь оцените решение, принимающее тот a не равно 0:

assume(a <> 0): S

delete S: unassume(a):

Пример 7

По умолчанию решатель пытается найти все возможные решения. Следующее неравенство имеет и действительные и сложные решения. Например, одно из решений. Решатель не может найти представление закрытой формы всех возможных решений:

solve(x + 1/x > 0, x)

С Real опция, решатель вычисляет только действительные решения. Представление закрытой формы всех действительных решений того уравнения является интервалом всех вещественных чисел от 0 до бесконечности:

solve(x + 1/x > 0, x, Real)

Пример 8

Решите это уравнение. По умолчанию решатель возвращает полное, а скорее долго и сложное решение:

solve(x^(7/2) + 1/x^(7/2) = 1, x)

Используя IgnoreAnalyticConstraints, часто можно получать более простые результаты:

solve(x^(7/2) + 1/x^(7/2) = 1, x, IgnoreAnalyticConstraints)

Используя эту опцию, также можно получить неправильные результаты:

solve(arcsin(x) = C, x, IgnoreAnalyticConstraints) assuming C > 10

Всегда проверяйте результаты, полученные с этой опцией:

testeq(arcsin(sin(C)), C)

IgnoreAnalyticConstraints опция также может привести к неполным результатам:

solve(x^(5/2) = 1, x)

solve(x^(5/2) = 1, x, IgnoreAnalyticConstraints)

Пример 9

С IgnoreAnalyticConstraints опция, решатель может умножить обе стороны уравнения по любому выражению, кроме 0. В следующем примере решатель умножает обе стороны уравнения. Решатель не считает особый случай x = y = 0:

solve(1/sqrt(x) = 1/sqrt(y), IgnoreAnalyticConstraints)

Результат не допустим для x = y = 0.

Пример 10

Когда вы решаете систему уравнений, MuPAD пытается представлять решения как набор списков замен:

solve([x^2 + y = 1, x + y^2 = 1], [x, y])

Если вы используете VectorFormat опция, MuPAD возвращает решение как набор векторов:

solve([x^2 + y = 1, x + y^2 = 1], [x, y], VectorFormat)

Правые стороны возвращенных замен могут содержать сгенерированные идентификаторы. В этом случае замена каждым из этих идентификаторов с комплексным числом дает решение системы. Можно получить все решения путем замены сгенерированными идентификаторами со всеми комплексными числами:

sys:= [x + y + z = 2, x + y^2 + z^2 = 4]:
solve(sys, [x, y, z])

Если вы используете VectorFormat опция, решатель возвращает решение как бесконечное множество векторов в обычном математическом обозначении:

solve(sys, [x, y, z], VectorFormat); delete sys:

Пример 11

Можно задать переменную, для которой вы хотите решить уравнение как список одной записи. В этом случае решатель возвращает решение с помощью выходного формата, обычно используемого в системах:

solve(x = x, x), solve(x = x, [x])

Пример 12

Если вы не задаете indeterminates (переменные, для которых вы хотите решить уравнение), решатель использует набор всего indeterminates, который это может найти в том уравнении:

solve(x^2 = 3)

Решатель не расценивает операторы и индексы как indeterminates. Поэтому решатель не обрабатывает f и y как indeterminates в следующем уравнении:

solve(f(x[y]) = 7)

Пример 13

Если вы устанавливаете предположение на переменной, для которой вы хотите решить уравнение, решатель возвращает только результаты, совместимые с тем предположением. Например, примите тот x представляет действительное положительное число. Затем решите следующее уравнение:

assume(x, Type::Positive): solve(x^4 = 1, x)

Без того предположения решатель возвращает все сложные решения:

unassume(x): solve(x^4 = 1, x)

Пример 14

Чтобы получить кратность корней полинома, используйте Multiple опция. Например, полиномиальный x 3 + 2 x2 + x имеет два корня. Кратность x = - 1 равняется 2. Кратность x = 0 равняется 1:

solve(x^3 + 2*x^2 + x, x, Multiple)

Пример 15

Предположим, вы хотите решить следующую систему уравнений для двух переменных, x и y. Предположим, вы хотите избежать обратных подстановок при решении этой системы. Чтобы отключить обратные подстановки, используйте опцию BackSubstitution = FALSE. Задайте список переменных так, чтобы x появляется справа от y. Теперь решение для переменной y может содержать переменную x:

solve({x^2 + y = 1, x - y = 2}, [y, x], BackSubstitution = FALSE)

solve({x^2 + y = 1, x - y = 2}, {x, y})

Если MuPAD не может выразить результата как набора списков, то BackSubstitution не оказывает влияния:

solve({x^2 + y = 1, x - y = 2}, [y, x], 
BackSubstitution = FALSE, MaxDegree = 1)

Пример 16

Если вход содержит числа с плавающей запятой, MuPAD использует символьный решатель solve, и затем вызывает float функция для полученного решения:

solve(x^3 + 3.0*x + 1, x)

Если символьному решателю не удается решить такое уравнение или систему, MuPAD вызывает числовой решатель numeric::solve:

solve({sin(x) + 1/2*cos(sqrt(2)*y) = 1, cos(x) + sin(y) = 0.1}, {x, y})

Числовой решатель может возвратить неполный набор решений. Для получения дополнительной информации смотрите numeric::solve страница справки.

Пример 17

Если числитель содержит учтенный полином с кратностью, больше, чем 1, решения могут дать нули в знаменателе:

solve((x - 1)^2/(x - 1) = 0, x)

Чтобы устранить эти решения, расширьте числитель:

f := expand((x - 1)^2): solve(f/(x - 1) = 0, x)

Пример 18

Можно использовать solve функция, чтобы решить диофантовые уравнения. Например, решите следующее линейное диофантовое уравнение:

S := solve(30*x + 56*y = 2, [x, y], Domain = Z_)

Пример 19

Можно использовать solve функция, чтобы решить уравнение, данное в форме членств. Например, решите следующее уравнение:

solve(x^2 in Z_, x)

Пример 20

Можно решить уравнение символьными параметрами, таким образом найдя его общее решение. Затем можно оценить решение для каких-то конкретных значений параметров или построить решение относительно значений параметров.

Решите это уравнение:

S := solve(x^5 + a = 1, x, Real)

Постройте результат для значений -10 < a < 10:

plot(S, a = -10..10)

Оцените результат для a = 5 использование оператора | или его функциональная форма evalAt:

S | a = 5

Аппроксимируйте результат значением с плавающей точкой с помощью float:

float(%)

Параметры

eq

Одно уравнение или неравенство типа "_equal", "_less", "_leequal", или "_unequal", или уравнение в форме членства (_in). В качестве альтернативы любое Булево выражение, состоявшее из уравнений или неравенств операторами "_and", "_or", и "_not". Кроме того, решатель принимает арифметическое выражение и рассматривает такое выражение как уравнение без правой стороны. (Внутренне, решатель принимает, что правая сторона равна 0.)

x

Неопределенное, для которого вы решаете уравнение, неравенство системы: идентификатор или индексируемый идентификатор

aB

Арифметические выражения

vars

Непустой набор или список indeterminates, для которого вы решаете уравнение, неравенство или систему

eqs

Набор, список, массив или таблица уравнений, неравенств, арифметических выражений или любой комбинации этих объектов. Решатель рассматривает выражения как уравнения без правой стороны. (Внутренне, решатель принимает, что правая сторона равна 0.)

ODE

Обыкновенное дифференциальное уравнение: объект ode ввод.

REC

Уравнение повторения: объект rec ввод.

Опции

MaxDegree

Опция, заданная как MaxDegree = n

Не используйте явные формулы, которые вовлекают радикалов при решении полиномиальных уравнений степени, больше, чем n. Здесь n положительное целое число. По умолчанию, n = 2.

Эта опция включает и отключает использование явных формул для корней полиномов. Эта опция не влияет на другие методы, такие как факторизация. Для полиномиальных уравнений, данная максимальная степень n относится к факторам полиномов, не к входному полиному.

Когда вы решаете пятую часть - или полиномиальное уравнение высшего порядка, решатель может не мочь возвратить решение явным образом. В общем случае нет никаких явных выражений для корней полиномов степеней выше, чем 4. Установка MaxDegree опция к 4 или более высокое значение не имеет никакого значения.

BackSubstitution

Опция, заданная как BackSubstitution = b

Включите или отключите обратные подстановки при решении алгебраических систем. Значение b должен быть TRUE или FALSE. По умолчанию, b = TRUE.

BackSubstitution только влияет на результаты, возвращенные как наборы списков.

Multiple

При использовании этой опции, solve возвращает набор типа Dom::Multiset, указание на кратность полиномиальных корней.

Решатель игнорирует эту опцию, если вход не является многочленным выражением или уравнением, или если решение имеет RootOf ввод.

VectorFormat

Возвратите набор векторов при решении системы уравнений для списка переменных.

PrincipalValue

При использовании этой опции решатель возвращает только одно решение. Решатель возвращает это решение как набор с одним элементом. Если уравнение не имеет решения, решатель возвращает пустое множество.

Если решатель не может найти решение и не может доказать, что решения не существуют, это отвечает на неразрешенный символьный звонок к solve. Например, если набор решений является кусочно-линейной функцией, и нет никаких элементов, который принадлежит всем случаям, решатель не может найти решение.

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

Domain

Опция, заданная как Domain = d

Возвратите набор всех решений, которые являются элементами d. Здесь d должен представлять подмножество комплексных чисел (например, вещественные числа Dom::Real или целые числа Dom::Integer). В качестве альтернативы d может быть область, по которой можно учесть полиномы (например, d может быть конечное поле). В этом случае можно использовать эту опцию только при решении полиномиальных уравнений. Без этой опции решатель возвращает все решения в наборе комплексных чисел.

Можно решить уравнение или систему по следующим областям:

  • Подмножества набора комплексных чисел C_.

  • Области, по которым можно учесть полиномы. Можно использовать эти области только при решении полиномиальных уравнений.

Подмножество C_ любой вид набора, возвращенного solve. Вместо C_RQ, и Z_, также можно использовать соответствующие области пакета областей Dom::Complex, Dom::Real, Dom::Rational, и Dom::Integer.

Можно перегрузить решатель для пользовательских областей путем добавления domsolve метод к тем областям. Если этот метод не существует, MuPAD использует solve_eq метод, чтобы решить уравнения. solve_eq метод не принимает системы как аргументы. Наконец, если solve_eq метод не существует, MuPAD использует solve_poly метод, чтобы решить полиномы. solve_poly метод принимает только полиномы как первые аргументы. Этот метод расценивает любой первый аргумент solve это не может быть преобразовано в полином как недопустимое.

Синтаксис вызова для domsolve, solve_eq, и solve_poly методами является domsolve(eq, var, options). Здесь var тот же аргумент как в solve, и options таблица опций. Для domsolve метод, eq также то же самое как в solve. Для solve_eq метод, eq должно быть арифметическое выражение. Для solve_polyeq должен быть полином.

Вы не можете решить уравнения и системы больше чем в одной переменной по областям.

IgnoreProperties

Включайте решения, которые не сопоставимы со свойствами переменной x.

Real

Возвратите только решения для который каждое подвыражение eq представляет вещественное число. Кроме того, примите что каждое подвыражение, независимое от x представляет вещественное число.

При использовании этой опции решатель принимает что каждое подвыражение, независимое от x представляет вещественное число. В частности, решатель принимает, что все символьные параметры действительны. Когда вы используете Real, решатель возвращает только решения для который каждое подвыражение eq isreal. Смотрите Пример 7.

Когда вы используете эту опцию, MuPAD ограничивает область каждой функции к вещественным числам. Например, это не поддерживает логарифмы отрицательных чисел. Для всех возвращенных решений x, вход задан по вещественным числам.

Эта опция особенно полезна для решения неравенств. Неравенства содержат только, когда обе стороны представляют действительные значения.

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

IgnoreSpecialCases

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

При использовании этой опции решатель пытается сократить количество ветвей в кусочных объектах. MuPAD находит уравнения и членства в сравнительно маленьких наборах. Во-первых, MuPAD пытается доказать такие уравнения и членства при помощи механизма свойства. Если механизм свойства доказывает уравнение, или членство верно, MuPAD сохраняет тот оператор. В противном случае MuPAD может заменить тот оператор на значение FALSE. Например, если механизм свойства не может доказать, что знаменатель равен нулю, MuPAD рассматривает этот знаменатель как ненулевой. Эта опция может значительно сократить количество кусочных объектов в решении.

IgnoreAnalyticConstraints

Примените чисто алгебраические упрощения в выражениях и уравнениях. При использовании этой опции решатель применяет следующие правила к выражениям с обеих сторон уравнения:

  • ln (a) + ln (b) = ln (ab) для всех значений a и b. В частности:

    для всех значений a, b и c.

  • ln (a b) = bln (a) для всех значений a и b. В частности:

    для всех значений a, b и c.

  • Если f и g являются стандартными математическими функциями и f (g (x)) = x для всех маленьких положительных чисел, f (g (x)) =, x принят, чтобы быть допустимым для всего комплексного x. В частности:

    • .

    • arcsin (sin (x)) = x, arccos (cos (x)) = x, arctan (tan (x)) = x.

    • arcsinh (sinh (x)) = x, arccosh (cosh (x)) = x, arctanh (tanh (x)) = x.

    • для всех значений k.

  • Решатель может умножить обе стороны уравнения по любому выражению кроме 0.

  • Решения полиномиальных уравнений должны быть завершены.

Используя эту опцию, можно получить простые решения для уравнений, для которых прямой вызов решателя возвращает сложные результаты. Обратите внимание на то, что с этой опцией решатель не проверяет правильность и полноту результата. Смотрите Пример 8 и Пример 9.

DontRewriteBySystem

Не преобразовывайте уравнение к эквивалентной системе уравнений. Эта опция уменьшает время выполнения. При использовании этой опции решатель не может решить некоторые уравнения.

Эта опция не позволяет решателю заменять уравнение на эквивалентную систему уравнений. Как правило, MuPAD заменяет уравнение эквивалентной системой уравнений при решении уравнений с вложенными корнями. Решение получившейся системы может быть медленным. Используйте эту опцию, чтобы улучшать производительность решателя. Когда вы используете DontRewriteBySystem, решатель не может решить некоторые уравнения, которые он может решить без этой опции.

NoWarning

Подавите все предупреждающие сообщения.

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

Если x идентификатор, solve(eq, x) возвращает объект, который представляет математический набор (см. раздел “Details”). Если x набор или список, или если вы не используете x, вызов solve возвращает набор списков. Каждый список состоит из уравнений. Левая сторона каждого уравнения является одной из переменных, для которых вы решаете уравнение, неравенство системы. В этом случае, solve также может возвратить выражение формы x in S, где x список переменных и S набор векторов. Когда вы решаете систему, предоставляющую список переменных и VectorFormat опция, решатель возвращает набор векторов.

Перегруженный

eq