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
реагирует на свойства идентификаторов.
Решите следующее уравнение. Как правило, для уравнений с конечным числом решений, решатель возвращает набор DOM_SET
ввод:
S := solve(x^4 - 5*x^2 + 6*x = 2, x)
Присвойте отдельные решения переменных путем индексации в S
:
sol1 := S[1]
Решатель может также возвратить бесконечный дискретный набор решений:
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:
Используйте solve
функция, чтобы решить неравенства. Как правило, набор решения неравенства является интервалом или объединением интервалов:
solve(x^2 > 5, x)
Решите следующее неравенство. Решение включает набор всех комплексных чисел, исключая и:
solve(x^2 <> 7, x)
Решатель может возвратить решение как объединение бесконечного семейства наборов. solvelib::Union
функция представляет такие бесконечные объединения в MuPAD:
solve(sin(x)*cos(x) > 1/4, x, Real)
Если уравнение содержит символьные параметры, решатель возвращает кусочное решение. Например, решите квадратное уравнение ax 2 + bx + c = 0:
S := solve(a*x^2 + b*x + c, x)
Теперь оцените решение, принимающее тот a
не равно 0:
assume(a <> 0): S
delete S: unassume(a):
По умолчанию решатель пытается найти все возможные решения. Следующее неравенство имеет и действительные и сложные решения. Например, одно из решений. Решатель не может найти представление закрытой формы всех возможных решений:
solve(x + 1/x > 0, x)
С Real
опция, решатель вычисляет только действительные решения. Представление закрытой формы всех действительных решений того уравнения является интервалом всех вещественных чисел от 0 до бесконечности:
solve(x + 1/x > 0, x, Real)
Решите это уравнение. По умолчанию решатель возвращает полное, а скорее долго и сложное решение:
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)
С IgnoreAnalyticConstraints
опция, решатель может умножить обе стороны уравнения по любому выражению, кроме 0
. В следующем примере решатель умножает обе стороны уравнения. Решатель не считает особый случай x = y = 0
:
solve(1/sqrt(x) = 1/sqrt(y), IgnoreAnalyticConstraints)
Результат не допустим для x = y = 0
.
Когда вы решаете систему уравнений, 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:
Можно задать переменную, для которой вы хотите решить уравнение как список одной записи. В этом случае решатель возвращает решение с помощью выходного формата, обычно используемого в системах:
solve(x = x, x), solve(x = x, [x])
Если вы не задаете indeterminates (переменные, для которых вы хотите решить уравнение), решатель использует набор всего indeterminates, который это может найти в том уравнении:
solve(x^2 = 3)
Решатель не расценивает операторы и индексы как indeterminates. Поэтому решатель не обрабатывает f
и y
как indeterminates в следующем уравнении:
solve(f(x[y]) = 7)
Если вы устанавливаете предположение на переменной, для которой вы хотите решить уравнение, решатель возвращает только результаты, совместимые с тем предположением. Например, примите тот x
представляет действительное положительное число. Затем решите следующее уравнение:
assume(x, Type::Positive): solve(x^4 = 1, x)
Без того предположения решатель возвращает все сложные решения:
unassume(x): solve(x^4 = 1, x)
Чтобы получить кратность корней полинома, используйте Multiple
опция. Например, полиномиальный x 3 + 2 x2 + x имеет два корня. Кратность x = - 1 равняется 2. Кратность x = 0 равняется 1:
solve(x^3 + 2*x^2 + x, x, Multiple)
Предположим, вы хотите решить следующую систему уравнений для двух переменных, 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)
Если вход содержит числа с плавающей запятой, 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
страница справки.
Если числитель содержит учтенный полином с кратностью, больше, чем 1, решения могут дать нули в знаменателе:
solve((x - 1)^2/(x - 1) = 0, x)
Чтобы устранить эти решения, расширьте числитель:
f := expand((x - 1)^2): solve(f/(x - 1) = 0, x)
Можно использовать solve
функция, чтобы решить диофантовые уравнения. Например, решите следующее линейное диофантовое уравнение:
S := solve(30*x + 56*y = 2, [x, y], Domain = Z_)
Можно использовать solve
функция, чтобы решить уравнение, данное в форме членств. Например, решите следующее уравнение:
solve(x^2 in Z_, x)
Можно решить уравнение символьными параметрами, таким образом найдя его общее решение. Затем можно оценить решение для каких-то конкретных значений параметров или построить решение относительно значений параметров.
Решите это уравнение:
S := solve(x^5 + a = 1, x, Real)
Постройте результат для значений -10 < a < 10
:
plot(S, a = -10..10)
Оцените результат для a = 5
использование оператора |
или его функциональная форма evalAt
:
S | a = 5
Аппроксимируйте результат значением с плавающей точкой с помощью float
:
float(%)
|
Одно уравнение или неравенство типа |
|
Неопределенное, для которого вы решаете уравнение, неравенство системы: идентификатор или индексируемый идентификатор |
| |
|
Непустой набор или список indeterminates, для которого вы решаете уравнение, неравенство или систему |
|
Набор, список, массив или таблица уравнений, неравенств, арифметических выражений или любой комбинации этих объектов. Решатель рассматривает выражения как уравнения без правой стороны. (Внутренне, решатель принимает, что правая сторона равна 0.) |
|
Обыкновенное дифференциальное уравнение: объект |
|
Уравнение повторения: объект |
|
Опция, заданная как Не используйте явные формулы, которые вовлекают радикалов при решении полиномиальных уравнений степени, больше, чем Эта опция включает и отключает использование явных формул для корней полиномов. Эта опция не влияет на другие методы, такие как факторизация. Для полиномиальных уравнений, данная максимальная степень Когда вы решаете пятую часть - или полиномиальное уравнение высшего порядка, решатель может не мочь возвратить решение явным образом. В общем случае нет никаких явных выражений для корней полиномов степеней выше, чем 4. Установка |
|
Опция, заданная как Включите или отключите обратные подстановки при решении алгебраических систем. Значение
|
|
При использовании этой опции, Решатель игнорирует эту опцию, если вход не является многочленным выражением или уравнением, или если решение имеет |
|
Возвратите набор векторов при решении системы уравнений для списка переменных. |
|
При использовании этой опции решатель возвращает только одно решение. Решатель возвращает это решение как набор с одним элементом. Если уравнение не имеет решения, решатель возвращает пустое множество. Если решатель не может найти решение и не может доказать, что решения не существуют, это отвечает на неразрешенный символьный звонок к Также можно использовать эту опцию, чтобы решить уравнения больше чем для одной переменной. В этом случае решатель возвращает набор, который содержит один список. Эта вложенная структура представляет вектор решения. |
|
Опция, заданная как Возвратите набор всех решений, которые являются элементами Можно решить уравнение или систему по следующим областям:
Подмножество Можно перегрузить решатель для пользовательских областей путем добавления Синтаксис вызова для Вы не можете решить уравнения и системы больше чем в одной переменной по областям. |
|
Включайте решения, которые не сопоставимы со свойствами переменной |
|
Возвратите только решения для который каждое подвыражение При использовании этой опции решатель принимает что каждое подвыражение, независимое от Когда вы используете эту опцию, MuPAD ограничивает область каждой функции к вещественным числам. Например, это не поддерживает логарифмы отрицательных чисел. Для всех возвращенных решений Эта опция особенно полезна для решения неравенств. Неравенства содержат только, когда обе стороны представляют действительные значения. Эта опция не воздействует на некоторые системы. |
|
Если решение требует анализа случая, игнорируйте регистры, для которых один или несколько параметров в уравнении, как предполагается, являются элементом сравнительно маленького набора (например, с этой опцией, MuPAD может проигнорировать членство в фиксированном конечном множестве или наборе целых чисел). При использовании этой опции решатель пытается сократить количество ветвей в кусочных объектах. MuPAD находит уравнения и членства в сравнительно маленьких наборах. Во-первых, MuPAD пытается доказать такие уравнения и членства при помощи механизма свойства. Если механизм свойства доказывает уравнение, или членство верно, MuPAD сохраняет тот оператор. В противном случае MuPAD может заменить тот оператор на значение |
|
Примените чисто алгебраические упрощения в выражениях и уравнениях. При использовании этой опции решатель применяет следующие правила к выражениям с обеих сторон уравнения:
Используя эту опцию, можно получить простые решения для уравнений, для которых прямой вызов решателя возвращает сложные результаты. Обратите внимание на то, что с этой опцией решатель не проверяет правильность и полноту результата. Смотрите Пример 8 и Пример 9. |
|
Не преобразовывайте уравнение к эквивалентной системе уравнений. Эта опция уменьшает время выполнения. При использовании этой опции решатель не может решить некоторые уравнения. Эта опция не позволяет решателю заменять уравнение на эквивалентную систему уравнений. Как правило, MuPAD заменяет уравнение эквивалентной системой уравнений при решении уравнений с вложенными корнями. Решение получившейся системы может быть медленным. Используйте эту опцию, чтобы улучшать производительность решателя. Когда вы используете |
|
Подавите все предупреждающие сообщения. |
Если x
идентификатор, solve(eq, x)
возвращает объект, который представляет математический набор (см. раздел “Details”). Если x
набор или список, или если вы не используете x
, вызов solve
возвращает набор списков. Каждый список состоит из уравнений. Левая сторона каждого уравнения является одной из переменных, для которых вы решаете уравнение, неравенство системы. В этом случае, solve
также может возвратить выражение формы x in S
, где x
список переменных и S
набор векторов. Когда вы решаете систему, предоставляющую список переменных и VectorFormat
опция, решатель возвращает набор векторов.
eq