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", "_intersect" и "_minus".

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

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

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

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

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

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

Для возвращенных наборов решения можно использовать относящиеся к теории множеств операции, такие как intersect, union и 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

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

a, B

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

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_, R_, Q_ и 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_poly eq должен быть полиномом.

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

IgnoreProperties

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

Real

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

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