решить

Уравнения и системный решатель

Входные параметры вектора символов были удалены. Вместо этого используйте syms, чтобы объявить переменные и входные параметры замены, такие как solve('2*x == 1','x') с solve(2*x == 1,x).

Синтаксис

S = solve(eqn,var)
S = solve(eqn,var,Name,Value)
Y = solve(eqns,vars)
Y = solve(eqns,vars,Name,Value)
[y1,...,yN] = solve(eqns,vars)
[y1,...,yN] = solve(eqns,vars,Name,Value)
[y1,...,yN,parameters,conditions] = solve(eqns,vars,'ReturnConditions',true)

Описание

пример

S = solve(eqn,var) решает уравнение eqn для переменной var. Если вы не задаете var, функция symvar определяет переменную, чтобы решить для. Например, solve(x + 1 == 2, x) решает уравнение x + 1 = 2 для x.

пример

S = solve(eqn,var,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value.

пример

Y = solve(eqns,vars) решает систему уравнений eqns для переменных vars и возвращает структуру, которая содержит решения. Если вы не задаете vars, solve использует symvar, чтобы найти, что переменные решают для. В этом случае, количество переменных, что находки symvar равны количеству уравнений eqns.

пример

Y = solve(eqns,vars,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value.

пример

[y1,...,yN] = solve(eqns,vars) решает систему уравнений eqns для переменных vars. Решения присвоены переменным y1,...,yN. Если вы не задаете переменные, solve использует symvar, чтобы найти, что переменные решают для. В этом случае, количество переменных, что находки symvar равны количеству выходных аргументов N.

[y1,...,yN] = solve(eqns,vars,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value.

пример

[y1,...,yN,parameters,conditions] = solve(eqns,vars,'ReturnConditions',true) возвращает дополнительные аргументы parameters и conditions, которые задают параметры в решении и условиях на решении.

Примеры

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

Используйте оператор ==, чтобы задать уравнение sin(x) == 1 и решить его.

syms x
eqn = sin(x) == 1;
solx = solve(eqn,x)
solx =
pi/2

Найдите полное решение того же уравнения путем определения опции ReturnConditions как true. Задайте выходные переменные для решения, параметров в решении и условий на решении.

[solx, params, conds] = solve(eqn, x, 'ReturnConditions', true)
solx =
pi/2 + 2*pi*k

params =
k

conds =
in(k, 'integer')

pi/2 + 2*pi*k решения содержит параметр k, который допустим при условии in(k, 'integer'). Это условие означает параметр, k должен быть целым числом.

Если solve возвращает пустой объект, то никакие решения не существуют. Если solve возвращает пустой объект с предупреждением, решения могут существовать, но solve не нашел решений.

eqns = [3*x+2, 3*x+1];
solve(eqns, x)
ans =
Empty sym: 0-by-1

Используйте Параметры, и Условия, Возвращенные, решают, чтобы Совершенствовать Решение

Возвратите полное решение уравнения с параметрами и условиями решения путем определения ReturnConditions как true.

Решите sin уравнения (x) = 0. Обеспечьте две дополнительных выходных переменные для выходных аргументов parameters и conditions.

syms x
eqn = sin(x) == 0;
[solx, param, cond] = solve(eqn, x, 'ReturnConditions', true)
solx =
pi*k
param =
k
cond =
in(k, 'integer')

Решение pi*k содержит параметр k и допустим при условии in(k,'integer'). Это условие означает параметр, k должен быть целым числом. k не существует в рабочей области MATLAB® и должен быть получен доступ с помощью param.

Найдите допустимое значение k для 0 < x < 2*pi путем принятия условия, cond, и использования solve, чтобы решить эти условия для k. Замените значением k, найденного в решение для x.

assume(cond)
interval = [solx > 0, solx < 2*pi];
solk = solve(interval, param)
valx = subs(solx, param, solk)
solk =
1
valx =
pi

Допустимым значением k для 0 < x < 2*pi является 1. Это производит значение x = pi.

Также найдите решение для x путем выбора значения k. Проверяйте, удовлетворяет ли выбранное значение условие на k с помощью isAlways.

Проверяйте, удовлетворяет ли k = 4 условие на k.

condk4 = subs(cond, param, 4);
isAlways(condk4)
ans =
  logical
   1

isAlways возвращает логический 1 (true), означая, что 4 является допустимым значением для k. Замените k с 4, чтобы получить решение для x. Используйте vpa, чтобы получить числовое приближение.

valx = subs(solx, param, 4)
vpa(valx)
valx =
4*pi
ans =
12.566370614359172953850573533118

Решите многомерные уравнения и присвойте Выходные параметры переменным

Избегайте неоднозначностей при решении уравнений с символьными параметрами путем определения переменной, для которой вы хотите решить уравнение. Если вы не задаете переменную, solve выбирает переменную с помощью symvar. Во-первых, решите квадратное уравнение, не задавая переменную. solve выбирает x, чтобы возвратить знакомое решение. Затем решите квадратное уравнение для a, чтобы возвратить решение для a.

syms a b c x
eqn = a*x^2 + b*x + c == 0;
sol = solve(eqn)
sola = solve(eqn, a)
sol =
 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
sola =
-(c + b*x)/x^2

При решении больше чем для одной переменной порядок, в котором вы задаете переменные, задает порядок, в котором решатель возвращает решения.

Решите эту систему уравнений и присвойте решения переменных solv и solu путем определения переменных явным образом. Решатель возвращает массив решений для каждой переменной.

syms u v
eqns = [2*u^2 + v^2 == 0, u - v == 1];
vars = [v u];
[solv, solu] = solve(eqns, vars)
solv =
 - (2^(1/2)*1i)/3 - 2/3
   (2^(1/2)*1i)/3 - 2/3
solu =
 1/3 - (2^(1/2)*1i)/3
 (2^(1/2)*1i)/3 + 1/3

Записи с тем же индексом формируют решения системы.

solutions = [solv solu]
solutions =
[ - (2^(1/2)*1i)/3 - 2/3, 1/3 - (2^(1/2)*1i)/3]
[   (2^(1/2)*1i)/3 - 2/3, (2^(1/2)*1i)/3 + 1/3]

Решением системы является v = - (2^(1/2)*1i)/3 - 2/3 и u = 1/3 - (2^(1/2)*1i)/3.

Решите многомерные уравнения и присвойте Выходные параметры структуре

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

Решите систему уравнений, чтобы возвратить решения в массиве структур.

syms u v
eqns = [2*u + v == 0, u - v == 1];
S = solve(eqns, [u v])
S = 
  struct with fields:

    u: [1×1 sym]
    v: [1×1 sym]

Доступ к решениям путем обращения к элементам структуры.

S.u
S.v
ans =
1/3
ans =
-2/3

Используя массив структур позволяет вам удобно заменять решениями в выражения. Функция subs заменяет правильными значениями, независимо от которых переменных вы занимаете место.

Замените решениями в выражения с помощью структуры S.

expr1 = u^2;
subs(expr1, S)
expr2 = 3*v+u;
subs(expr2, S)
ans =
1/9
ans =
-5/3

Возвратите полное решение системы уравнений Используя структуру

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

syms x y
eqns = [sin(x)^2 == cos(y), 2*x == y];
S = solve(eqns, [x y], 'ReturnConditions', true);
S.x
S.y
S.conditions
S.parameters
ans =
 pi*k - asin(3^(1/2)/3)
 asin(3^(1/2)/3) + pi*k
ans =
 2*pi*k - 2*asin(3^(1/2)/3)
 2*asin(3^(1/2)/3) + 2*pi*k
ans =
 in(k, 'integer')
 in(k, 'integer')
ans =
k

Решение формируется элементами того же индекса в S.x, S.y и S.conditions. Любой элемент S.parameters может появиться в любом решении. Например, решением является x = pi*k - asin(3^(1/2)/3) и y = 2*pi*k - 2*asin(3^(1/2)/3), с параметром k при условии in(k, 'integer'). Это условие означает, что k должен быть целым числом для решения быть допустимым. k не существует в рабочем пространстве MATLAB и должен быть получен доступ с S.parameters.

Для первого решения найдите допустимое значение k для 0 < x < pi путем принятия условия S.conditions(1) и использования solve, чтобы решить эти условия для k. Замените значением k, найденного в решение для x.

assume(S.conditions(1))
interval = [S.x(1)>0, S.x(1)<pi];
solk = solve(interval, S.parameters)
solx = subs(S.x(1), S.parameters, solk)
solk =
1
solx =
pi - asin(3^(1/2)/3)

Допустимым значением k для 0 < x < pi является 1. Это производит значение x = pi - asin(3^(1/2)/3).

Также найдите решение для x путем выбора значения k. Проверяйте, удовлетворяет ли выбранное значение условие на k с помощью isAlways.

Проверяйте, удовлетворяет ли k = 4 условие на k.

condk4 = subs(S.conditions(1), S.parameters, 4);
isAlways(condk4)
ans =
  logical
   1

isAlways возвращает логический 1 (true), означающий, что 4 является допустимым значением для k. Замените k с 4, чтобы получить решение для x. Используйте vpa, чтобы получить числовое приближение.

valx = subs(S.x(1), S.parameters, 4)
vpa(valx)
valx =
4*pi - asin(3^(1/2)/3)
ans =
11.950890905688785612783108943994

Численно решите уравнения

Когда solve не может символически решить уравнение, он пытается найти числовое решение с помощью vpasolve. Функция vpasolve возвращает первое найденное решение.

Попытайтесь решить следующее уравнение. solve возвращает числовое решение, потому что он не может найти символьное решение.

syms x
eqn = sin(x) == x^2 - 1;
solve(eqn, x)
Warning: Unable to solve symbolically. Returning a numeric solution using vpasolve. 
> In solve (line 304) 
ans =
-0.63673265080528201088799090383828

Постройте левые и правые стороны уравнения. Заметьте, что уравнение также имеет положительное решение.

fplot([lhs(eqn) rhs(eqn)], [-2 2])

Найдите это решение путем прямого вызова числового решателя vpasolve и определения интервала.

vpasolve(eqn, x, [0 2])
ans =
1.4096240040025962492355939705895

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

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

Решите следующие неравенства. Установите ReturnConditions на true возвращать любые параметры в решении и условиях на решении.

x>0y>0x2+y2+xy<1

syms x y
cond1 = x^2 + y^2 + x*y < 1;
cond2 = x > 0;
cond3 = y > 0;
conds = [cond1 cond2 cond3];

sol = solve(conds, [x y], 'ReturnConditions', true);

sol.x
sol.y
sol.parameters
sol.conditions
ans =
(- 3*v^2 + u)^(1/2)/2 - v/2
ans =
v
ans =
[ u, v]
ans =
4*v^2 < u & u < 4 & 0 < v

Параметры u и v не существуют в рабочем пространстве MATLAB и должны быть получены доступ с помощью sol.parameters.

Проверяйте, удовлетворяют ли значения u = 7/2 и v = 1/2 условие с помощью subs и isAlways.

condWithValues = subs(sol.conditions, sol.parameters, [7/2,1/2]);
isAlways(condWithValues)
ans =
  logical
   1

isAlways возвращает логический 1 (true), указывающий, что эти значения удовлетворяют условие. Замените этими значениями параметров в sol.x и sol.y, чтобы найти решение для x и y.

xSol = subs(sol.x, sol.parameters, [7/2,1/2])
ySol = subs(sol.y, sol.parameters, [7/2,1/2])
xSol =
11^(1/2)/4 - 1/4

ySol =
1/2

Преобразуйте решение в числовую форму при помощи vpa.

vpa(xSol)
vpa(ySol)
ans =
0.57915619758884996227873318416767

ans =
0.5

Возвратите действительные решения

Решите это уравнение. Это имеет пять решений.

syms x
eqn = x^5 == 3125;
solve(eqn, x)
ans =
                                                          5
 - (2^(1/2)*(5 - 5^(1/2))^(1/2)*5i)/4 - (5*5^(1/2))/4 - 5/4
   (2^(1/2)*(5 - 5^(1/2))^(1/2)*5i)/4 - (5*5^(1/2))/4 - 5/4
   (5*5^(1/2))/4 - (2^(1/2)*(5^(1/2) + 5)^(1/2)*5i)/4 - 5/4
   (5*5^(1/2))/4 + (2^(1/2)*(5^(1/2) + 5)^(1/2)*5i)/4 - 5/4

Возвратите только действительные решения путем установки аргумента Real на true. Единственным действительным решением этого уравнения является 5.

solve(eqn, x, 'Real', true)
ans =
5

Возвратите одно решение

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

syms x
eqn = sin(x) + cos(2*x) == 1;
solve(eqn, x)
ans =
        0
     pi/6
 (5*pi)/6

Выберите только одно решение с помощью PrincipalValue.

eqn = sin(x) + cos(2*x) == 1;
solve(eqn, x, 'PrincipalValue', true)
ans =
0

Сократите результат с правилами упрощения

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

syms x
eqn = exp(log(x)*log(3*x)) == 4;
solve(eqn, x)
Warning: Unable to solve symbolically. Returning a numeric solution using vpasolve. 
> In solve (line 304) 
ans =
- 14.009379055223370038369334703094 - 2.9255310052111119036668717988769i

Установите IgnoreAnalyticConstraints на true применять упрощения, которые могут позволить solve находить результат. Для получения дополнительной информации см. Алгоритмы.

S = solve(eqn, x, 'IgnoreAnalyticConstraints', true)
S =
 (3^(1/2)*exp(-(log(256) + log(3)^2)^(1/2)/2))/3
  (3^(1/2)*exp((log(256) + log(3)^2)^(1/2)/2))/3

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

Проигнорируйте предположения на переменных

sym и функции syms позволяют вам установить предположения для символьных переменных.

Примите, что переменная x может иметь только положительные значения.

syms x positive

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

eqn = x^2 + 5*x - 6 == 0;
solve(eqn, x)
ans =
1

Позвольте решения, которые не удовлетворяют предположения установкой IgnoreProperties к true.

solve(eqn, x, 'IgnoreProperties', true)
ans =
 -6
  1

Для дальнейших вычислений очистите предположение, что вы устанавливаете на переменной x путем воссоздания его с помощью syms.

syms x

Численно аппроксимирующие символьные решения, которые содержат root

При решении полиномов solve может возвратить решения, содержащие root. Чтобы численно аппроксимировать эти решения, используйте vpa. Рассмотрите следующее уравнение и решение.

syms x
eqn = x^4 + x^3 + 1 == 0;
s = solve(eqn, x)
s =
 root(z^4 + z^3 + 1, z, 1)
 root(z^4 + z^3 + 1, z, 2)
 root(z^4 + z^3 + 1, z, 3)
 root(z^4 + z^3 + 1, z, 4)

Поскольку нет никаких параметров в этом решении, используйте vpa, чтобы аппроксимировать его численно.

vpa(s)
ans =
     0.5189127943851558447865795886366 - 0.666609844932018579153758800733i
     0.5189127943851558447865795886366 + 0.666609844932018579153758800733i
 - 1.0189127943851558447865795886366 - 0.60256541999859902604398442197193i
 - 1.0189127943851558447865795886366 + 0.60256541999859902604398442197193i

Решите полиномиальные знатные уравнения

Когда вы решаете уравнение полинома высшего порядка, решатель может использовать root, чтобы возвратить результаты. Решите уравнение порядка 3.

syms x a
eqn = x^3 + x^2 + a == 0;
solve(eqn, x)
ans = 

(корень(z3+z2+a,z,1)корень(z3+z2+a,z,2)корень(z3+z2+a,z,3))

Попытайтесь получить явное решение для таких уравнений путем вызова решателя с MaxDegree. Опция задает максимальную степень полиномов, для которых решатель пытается возвратить явные решения. Значением по умолчанию является 2. Увеличивая это значение, можно получить явные решения для полиномов высшего порядка.

Решите те же уравнения для явных решений путем увеличения значения MaxDegree к 3.

S = solve(eqn, x, 'MaxDegree', 3)
S = 

(19σ1+σ1-13-118σ1-σ12-13-319σ1-σ1i2-118σ1-σ12-13+319σ1-σ1i2)где  σ1=a2+1272-1729-a2-1271/3

Входные параметры

свернуть все

Уравнение, чтобы решить, заданный как символьное выражение или символьное уравнение. Оператор отношения == определяет символьные уравнения. Если eqn является символьным выражением (без правой стороны), решатель принимает, что правая сторона 0 и решает уравнение eqn == 0.

Переменная, для которой вы решаете уравнение, заданное как символьная переменная. По умолчанию solve использует переменную, определенную symvar.

Система уравнений, заданная как символьные выражения или символьные уравнения. Если какие-либо элементы eqns являются символьными выражениями (без правой стороны), solve приравнивает элемент к 0.

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

Порядок, в котором вы задаете эти переменные, задает порядок, в котором решатель возвращает решения.

Аргументы в виде пар имя-значение

Пример: 'Real',true указывает, что решатель возвращает действительные решения.

Отметьте для возврата параметров в решении и условиях, при которых решение верно, задано как пара, разделенная запятой, состоящая из 'ReturnConditions' и одно из этих значений.

falseНе возвращайте параметризованные решения. Не возвращайте условия, при которых решение содержит. Функция solve заменяет параметры на соответствующие значения.
trueВозвратите параметры в решении и условиях, при которых решение содержит. Для вызова с одной выходной переменной solve возвращает структуру с полями parameters и conditions. Для нескольких выходных переменных solve присваивает параметры и условия к последним двум выходным переменным. Это поведение означает, что количество выходных переменных должно быть равно количеству переменных, чтобы решить для плюс два.

Пример: [v1, v2, params, conditions] = solve(sin(x) +y == 0,y^2 == 3,'ReturnConditions',true) возвращает параметры в params и условия в conditions.

Правила упрощения применились к выражениям и уравнениям, заданным как пара, разделенная запятой, состоящая из 'IgnoreAnalyticConstraints' и одно из этих значений.

falseИспользуйте строгие правила упрощения.
trueПримените чисто алгебраические упрощения в выражениях и уравнениях. Установка IgnoreAnalyticConstraints к true может дать вам простые решения для уравнений, для которых прямое использование решателя возвращает сложные результаты. В некоторых случаях это также позволяет solve решить уравнения и системы, которые не могут быть решены в противном случае. Установка IgnoreAnalyticConstraints к true может привести к неправильным или неполным результатам.

Отметьте для возврата решений, противоречивых со свойствами переменных, заданных как пара, разделенная запятой, состоящая из 'IgnoreProperties' и одно из этих значений.

falseНе исключайте решения, противоречивые со свойствами переменных.
trueИсключите решения, противоречивые со свойствами переменных.

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

Отметьте для возврата одного решения, заданного как пара, разделенная запятой, состоящая из 'PrincipalValue' и одно из этих значений.

falseВозвратите все решения.
trueВозвратите только одно решение. Если уравнение или система уравнений не имеют решения, решатель возвращает пустой символьный объект.

Отметьте для возврата только действительных решений, заданных как пара, разделенная запятой, состоящая из 'Real' и одно из этих значений.

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

Выходные аргументы

свернуть все

Решения уравнения, возвращенного как символьный массив. Размер символьного массива соответствует количеству решений.

Решения системы уравнений, возвращенной как структура. Количество полей в структуре соответствует количеству независимых переменных в системе. Если ReturnConditions установлен в true, функция solve возвращает два дополнительных поля, которые содержат параметры в решении и условия, при которых решение верно.

Решения системы уравнений, возвращенной как символьные переменные. Количество выходных переменных или символьных массивов должно быть равно количеству независимых переменных в системе. Если вы явным образом задаете независимые переменные vars, то решатель использует тот же порядок возвратить решения. Если вы не задаете vars, независимые переменные видов тулбокса в алфавитном порядке, и затем присваивает решения для этих переменных к выходным переменным.

Параметры в решении, возвращенном как вектор сгенерированных параметров. Этот выходной аргумент только возвращен, если ReturnConditions является true. Если один выходной аргумент обеспечивается, parameters возвращен как поле структуры. Если несколько выходных аргументов обеспечиваются, parameters возвращен как предпоследний выходной аргумент. Сгенерированные параметры не появляются в рабочем пространстве MATLAB. К ним нужно получить доступ с помощью parameters.

Пример: [solx, params, conditions] = solve(sin(x) == 0, 'ReturnConditions', true) возвращает параметр k в аргументе params.

Условия, при которых решения допустимы, возвратились как вектор символьных выражений. Этот выходной аргумент только возвращен, если ReturnConditions является true. Если один выходной аргумент обеспечивается, conditions возвращен как поле структуры. Если несколько выходных аргументов обеспечиваются, conditions возвращен как последний выходной аргумент.

Пример: [solx, params, conditions] = solve(sin(x) == 0, 'ReturnConditions', true) возвращает условие in(k, 'integer') в conditions. Решение в solx допустимо только при этом условии.

Советы

  • Если solve не может найти решение, и ReturnConditions является false, функция solve внутренне вызывает числовой решатель vpasolve, который пытается найти числовое решение. Если solve не может найти решение, и ReturnConditions является true, solve возвращает пустое решение с предупреждением. Если никакие решения не существуют, solve возвращает пустое решение без предупреждения. Для полиномиальных уравнений и систем без символьных параметров, числовой решатель возвращает все решения. Для неполиномиальных уравнений и систем без символьных параметров, числовой решатель возвращает только одно решение (если решение существует).

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

  • Если параметр не появляется ни в каком условии, это означает, что параметр может взять любое комплексное число.

  • Вывод solve может содержать параметры от исходных уравнений в дополнение к параметрам, введенным solve.

  • Параметры, введенные solve, не появляются в рабочем пространстве MATLAB. К ним нужно получить доступ с помощью выходного аргумента, который содержит их. Также, чтобы использовать параметры в рабочем пространстве MATLAB используют syms, чтобы инициализировать параметр. Например, если параметром является k, используйте syms k.

  • Имена переменных parameters и conditions не позволены как входные параметры solve.

  • Синтаксис S = solve(eqn,var,'ReturnConditions',true) возвращает S как структуру вместо символьного массива.

  • Чтобы решить дифференциальные уравнения, используйте функцию dsolve.

  • При решении системы уравнений всегда присваивайте результат выходным аргументам. Выходные аргументы позволяют вам получить доступ к значениям решений системы.

  • MaxDegree только принимает положительные целые числа, меньшие, чем 5 потому что, в целом, нет никаких явных выражений для корней полиномов степеней выше, чем 4.

  • y1,...,yN выходных переменных не задает переменные, для которых solve решает уравнения или системы. Если y1,...,yN является переменными, которые появляются в eqns, то нет никакой гарантии, что solve(eqns) присвоит решения y1,...,yN с помощью правильного порядка. Таким образом, когда вы запускаете [b,a] = solve(eqns), вы можете получить решения для a, присвоенного b и наоборот.

    Чтобы гарантировать порядок возвращенных решений, задайте переменные vars. Например, вызов [b,a] = solve(eqns,b,a) присваивает решения для a к a и решения для b к b.

Алгоритмы

Когда вы используете IgnoreAnalyticConstraints, решатель применяет эти правила к выражениям с обеих сторон уравнения.

  • регистрируйте (a) + журнал (b) = журнал (a · b) для всех значений a и b. В частности, следующее равенство допустимо для всех значений a, b и c:

      ) c = a c · b c.

  • журнал (a b) = b · регистрируйте (a) для всех значений a и b. В частности, следующее равенство допустимо для всех значений a, b и c:

      (a b) c = a b · c.

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

    • журнал (e x) = x

    • asin (sin (x)) = x, acos (cos (x)) = x, atan (загар (x)) = x

    • asinh (sinh (x)) = x, acosh (дубинка (x)) = x, atanh (tanh (x)) = x

    • Wk (x · e x) = x для всех значений k

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

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

Представлено до R2006a