이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

solve

방정식 및 연립방정식 솔버

문자형 벡터 입력은 제거되었습니다. 대신 syms를 사용하여 변수를 선언하고 solve('2*x == 1','x')와 같은 입력값을 solve(2*x == 1,x)로 바꾸십시오.

설명

예제

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를 지정하지 않으면 solvesymvar을 사용하여 방정식을 풀 변수를 찾습니다. 이 경우 symvar이 구하는 변수의 수는 방정식 eqns의 수와 같습니다.

예제

Y = solve(eqns,vars,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용합니다.

예제

[y1,...,yN] = solve(eqns,vars)는 연립방정식 eqns를 변수 vars에 대해 풉니다. 해는 변수 y1,...,yN에 할당됩니다. 변수를 지정하지 않으면 solvesymvar을 사용하여 방정식을 풀 변수를 찾습니다. 이 경우 symvar이 구하는 변수의 수는 출력 인수 N의 수와 같습니다.

[y1,...,yN] = solve(eqns,vars,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용합니다.

예제

[y1,...,yN,parameters,conditions] = solve(eqns,vars,'ReturnConditions',true)는 해의 파라미터와 해의 조건을 지정하는 추가 인수 parametersconditions를 반환합니다.

예제

방정식 풀기

== 연산자를 사용하여 방정식 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에는 in(k, 'integer') 조건에서 유효한 파라미터 k가 포함되어 있습니다. 이 조건은 파라미터 k가 정수여야 함을 의미합니다.

solve가 빈 객체를 반환하면 해가 존재하지 않는 것입니다. solve가 경고와 함께 빈 객체를 반환하면 해가 존재할 수 있지만 solve가 해를 구하지 못한 것입니다.

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

solve에서 반환된 파라미터와 조건을 사용하여 해를 세분화하기

ReturnConditionstrue로 지정하여 해의 파라미터와 조건이 포함된 방정식의 완전해를 반환합니다.

방정식 sin(x) = 0을 풉니다. 출력 인수 parametersconditions에 대한 출력 변수 2개를 추가로 제공합니다.

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을 사용하여 액세스해야 합니다.

0 < x < 2*pi에 대해 유효한 값 k를 구합니다. 조건 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

0 < x < 2*pi에 대해 유효한 값 k1입니다. 이렇게 하면 값 x = pi가 생성됩니다.

또는 k의 값을 선택하여 x에 대한 해를 구합니다. isAlways를 사용하여 선택한 값이 k에 대한 조건을 충족하는지 확인합니다.

k = 4k에 대한 조건을 충족하는지 확인합니다.

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

isAlways는 논리값 1(true)을 반환합니다. 즉, 4k에 대해 유효한 값입니다. k4를 대입하여 x에 대한 해를 구합니다. vpa를 사용하여 수치 근삿값을 구합니다.

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

다변량 방정식을 풀고 변수에 출력 할당하기

기호 파라미터를 사용하여 방정식을 풀 때 어떤 변수에 대해 방정식을 풀지 지정하여 모호성을 방지하십시오. 변수를 지정하지 않으면 solvesymvar을 사용하여 변수를 선택합니다. 먼저 변수를 지정하지 않고 2차 방정식을 풀어보겠습니다. solve는 x를 선택하여 익숙한 해를 반환합니다. 그런 다음 이 2차 방정식을 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

방정식을 둘 이상의 변수에 대해 풀 때는 사용자가 변수를 지정하는 순서에 따라 솔버가 해를 반환하는 순서가 정의됩니다.

아래의 연립방정식을 풀고 변수를 명시적으로 지정하여 변수 solvsolu에 해를 할당합니다. 솔버는 각 변수에 대해 해 배열을 반환합니다.

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/3u = 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

연립방정식의 완전해를 구조체를 사용해서 반환하기

ReturnConditionstrue로 지정하여 연립방정식의 완전해를 해의 파라미터, 조건과 함께 반환합니다.

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.yS.conditions와 동일한 인덱스의 요소로 구성됩니다. S.parameters의 요소는 어떤 해에도 나타날 수 있습니다. 예를 들어, 해가 x = pi*k - asin(3^(1/2)/3)y = 2*pi*k - 2*asin(3^(1/2)/3)이고, 조건 in(k, 'integer')에서 파라미터가 k라고 가정합니다. 이 조건은 해가 유효하기 위해서는 k가 정수여야 함을 의미합니다. k는 MATLAB 작업 공간에 없으므로 S.parameters로 액세스해야 합니다.

첫 번째 해를 구하기 위해 0 < x < pi에 대해 유효한 값 k를 구합니다. 조건 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)

0 < x < pi에 대해 유효한 값 k1입니다. 이렇게 하면 값 x = pi - asin(3^(1/2)/3)이 생성됩니다.

또는 k의 값을 선택하여 x에 대한 해를 구합니다. isAlways를 사용하여 선택한 값이 k에 대한 조건을 충족하는지 확인합니다.

k = 4k에 대한 조건을 충족하는지 확인합니다.

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

isAlways는 논리값 1(true)을 반환합니다. 즉, 4k에 대해 유효한 값입니다. k4를 대입하여 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는 부등식을 풀어 부등식을 충족하는 해를 구할 수 있습니다.

아래의 부등식을 풉니다. 해의 파라미터와 해의 조건을 반환하려면 ReturnConditionstrue로 설정하십시오.

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

uv 파라미터는 MATLAB 작업 공간에 없으므로 sol.parameters를 사용하여 액세스해야 합니다.

subsisAlways를 사용하여 값 u = 7/2v = 1/2이 조건을 충족하는지 확인합니다.

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

isAlways는 이러한 값이 조건을 충족한다는 것을 나타내는 논리값 1(true)을 반환합니다. 이러한 파라미터 값을 sol.xsol.y로 대입하여 xy에 대한 해를 구합니다.

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

실수 해 반환하기

아래의 방정식을 풉니다. 이 방정식에는 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

인수 Realtrue로 설정하여 실수 해만 반환합니다. 이 방정식의 유일한 실수 해는 5입니다.

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

한 개의 해 반환하기

아래의 방정식을 풉니다. 솔버는 주기적 해의 무한 집합을 반환하는 대신 가장 실용적이라고 생각하는 3개의 해를 선택합니다.

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

solve가 결과를 구할 수 있도록 IgnoreAnalyticConstraintstrue로 설정하여 단순화를 적용합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

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가 해를 구할 수 있는 단순화를 적용합니다. 이렇게 적용된 단순화가 항상 유효한 것은 아닙니다. 따라서 이 방식으로 구한 해는 부정확하거나 완전하지 않을 수 있으며 검증이 필요합니다.

변수에 대한 가정 무시하기

symsyms 함수를 사용하면 기호 변수에 대한 가정을 설정할 수 있습니다.

변수 x는 양수 값만 가질 수 있다고 가정합니다.

syms x positive

방정식이나 연립방정식을 가정이 설정된 변수에 대해 풀면 가정에 부합하는 해만 반환됩니다. x에 대해 아래의 방정식을 풉니다.

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

IgnorePropertiestrue로 설정하여 가정을 충족하지 않는 해를 허용합니다.

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

추후 계산을 위해 syms를 사용하여 변수 x를 다시 생성해서 이 변수에 설정된 가정을 지웁니다.

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 = 

(root(z3+z2+a,z,1)root(z3+z2+a,z,2)root(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)where  σ1=a2+1272-1729-a2-1271/3

입력 인수

모두 축소

풀어야 할 방정식으로, 기호 표현식 또는 기호 방정식으로 지정됩니다. 관계 연산자 ==를 사용해서 기호 방정식을 정의합니다. eqn이 우변이 없는 기호 표현식인 경우, 솔버는 우변을 0으로 간주하고 방정식 eqn == 0을 풉니다.

방정식을 풀 변수로, 기호 변수로 지정됩니다. 기본적으로 solvesymvar에서 결정된 변수를 사용합니다.

연립방정식으로, 기호 표현식 또는 기호 방정식으로 지정됩니다. eqns에 우변이 없는 기호 표현식인 요소가 있으면 solve는 그 요소를 0과 같다고 놓고 등식을 풉니다.

방정식 또는 연립방정식을 풀 변수로, 기호 변수로 지정됩니다. 기본적으로 solvesymvar에서 결정된 변수를 사용합니다.

사용자가 지정한 변수의 순서에 따라 솔버가 해를 반환하는 순서가 정의됩니다.

이름-값 쌍의 인수

예: 'Real',true로 지정하면 솔버가 실수 해를 반환합니다.

해의 파라미터와 해가 성립할 때의 조건을 반환하는 플래그로, 'ReturnConditions'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

false파라미터화된 해를 반환하지 않습니다. 해가 성립하는 조건을 반환하지 않습니다. solve 함수가 파라미터를 적절한 값으로 바꿉니다.
true해의 파라미터와 해가 성립하는 조건을 반환합니다. 하나의 출력 변수를 가지는 호출이면 solveparametersconditions 필드가 있는 구조체를 반환합니다. 출력 변수가 여러 개이면 solve는 파라미터와 조건을 마지막 두 출력 변수에 할당합니다. 이 동작은 출력 변수의 개수가 해를 구할 변수의 개수에 2개를 더한 수와 같아야 함을 의미합니다.

예: [v1, v2, params, conditions] = solve(sin(x) +y == 0,y^2 == 3,'ReturnConditions',true)는 파라미터를 params에 반환하고 조건을 conditions에 반환합니다.

표현식 및 방정식에 적용된 단순화 규칙으로, 'IgnoreAnalyticConstraints'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

false엄격한 단순화 규칙을 사용합니다.
true표현식과 방정식에 순수 대수적 단순화를 적용합니다. IgnoreAnalyticConstraintstrue로 설정하면 솔버를 직접 사용했을 때 복잡한 결과를 반환하는 방정식에 대해 간단한 해를 제공할 수 있습니다. 경우에 따라 solve에서 풀 수 없는 방정식과 연립방정식을 풀 수 있게 해줍니다. IgnoreAnalyticConstraintstrue로 설정하면 잘못되거나 완전하지 않은 결과가 반환될 수 있습니다.

변수의 속성에 위배되는 해를 반환하기 위한 플래그로, 'IgnoreProperties'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

false변수의 속성에 위배되는 해를 제외하지 않습니다.
true변수의 속성에 위배되는 해를 제외합니다.

솔버가 양함수 공식을 사용할 다항 방정식의 최대 차수로, 5보다 작은 양의 정수로 지정됩니다. 지정된 값보다 큰 차수의 다항 방정식을 풀 때 솔버는 근호가 있는 양함수 공식을 사용하지 않습니다.

하나의 해를 반환하기 위한 플래그로, 'PrincipalValue'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

false모든 해를 반환합니다.
true하나의 해만 반환합니다. 방정식이나 연립방정식에 해가 없는 경우, 솔버는 빈 기호 객체를 반환합니다.

실수 해만 반환하기 위한 플래그로, 'Real'과 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

false모든 해를 반환합니다.
true원래 방정식의 모든 하위 표현식이 실수를 나타내는 해만 반환합니다. 또한 방정식의 모든 기호 파라미터가 실수를 나타내는 것으로 가정합니다.

출력 인수

모두 축소

방정식의 해로, 기호 배열로 반환됩니다. 기호 배열의 크기는 해의 수에 상응합니다.

연립방정식의 해로, 구조체로 반환됩니다. 구조체의 필드 수는 연립방정식의 독립 변수 수에 상응합니다. ReturnConditionstrue로 설정하면 solve 함수는 두 개의 필드, 즉 해의 파라미터가 포함된 필드와 해가 성립할 때의 조건이 포함된 필드를 추가로 반환합니다.

연립방정식의 해로, 기호 변수로 반환됩니다. 출력 변수 또는 기호 배열의 수는 연립방정식의 독립 변수 수와 같아야 합니다. 명시적으로 독립 변수 vars를 지정한 경우 솔버는 이 변수와 동일한 순서로 해를 반환합니다. vars를 지정하지 않으면 독립 변수가 사전순으로 정렬되고 이들 변수에 대한 해가 출력 변수에 할당됩니다.

해의 파라미터로, 생성된 파라미터로 구성된 벡터로 반환됩니다. 이 출력 인수는 ReturnConditionstrue인 경우에만 반환됩니다. 한 개의 출력 인수가 제공된 경우 parameters는 구조체의 필드로 반환됩니다. 여러 개의 출력 인수가 제공된 경우 parameters는 끝에서 두 번째 출력 인수로 반환됩니다. 생성된 파라미터는 MATLAB 작업 공간에 나타나지 않습니다. 생성된 파라미터에 액세스하려면 parameters를 사용해야 합니다.

예: [solx, params, conditions] = solve(sin(x) == 0, 'ReturnConditions', true)는 파라미터 k를 인수 params에 반환합니다.

해가 유효할 때의 조건으로, 기호 표현식로 구성된 벡터로 반환됩니다. 이 출력 인수는 ReturnConditionstrue인 경우에만 반환됩니다. 한 개의 출력 인수가 제공된 경우 conditions는 구조체의 필드로 반환됩니다. 여러 개의 출력 인수가 제공된 경우 conditions는 마지막 출력 인수로 반환됩니다.

예: [solx, params, conditions] = solve(sin(x) == 0, 'ReturnConditions', true)는 조건 in(k, 'integer')conditions에 반환합니다. solx의 해는 이 조건에서만 유효합니다.

  • solve 함수가 해를 구할 수 없고 ReturnConditionsfalse이면 solve는 수치 해를 구하는 수치 솔버 vpasolve를 내부적으로 호출합니다. solve가 해를 구할 수 없고 ReturnConditionstrue이면 solve는 경고와 함께 비어 있는 해를 반환합니다. 해가 존재하지 않으면 solve는 경고 없이 비어 있는 해를 반환합니다. 기호 파라미터가 없는 다항 방정식과 연립방정식인 경우 수치 솔버는 모든 해를 반환합니다. 기호 파라미터가 없는 비다항 방정식과 연립방정식인 경우 수치 솔버는 하나의 해만 반환합니다(해가 있는 경우).

  • 해에 파라미터가 포함되어 있고 ReturnConditionstrue이면 solve는 해의 파라미터와 해를 성립하게 하는 조건을 반환합니다. ReturnConditionsfalse이면 solve 함수는 파라미터의 값을 선택하고 그에 대응하는 결과를 반환하거나, 특정 값을 선택하지 않고 파라미터화된 해를 반환합니다. 후자의 경우 solve는 반환된 해에 파라미터 값이 있다는 경고도 함께 표시합니다.

  • 파라미터가 어떤 조건에서도 나타나지 않으면 파라미터가 복소수 값을 받을 수 있음을 의미합니다.

  • solve의 출력에는 solve에서 도출된 파라미터 외에도 입력 방정식의 파라미터가 포함될 수 있습니다.

  • solve에서 도출된 파라미터는 MATLAB 작업 공간에 표시되지 않습니다. 이러한 파라미터는 해당 파라미터를 포함하는 출력 인수를 사용하여 액세스해야 합니다. MATLAB 작업 공간에서 파라미터를 사용하려면 syms를 사용하여 파라미터를 초기화하십시오. 예를 들어, 파라미터가 k이면 syms k를 사용하십시오.

  • 변수 이름 parametersconditionssolve에 대한 입력값으로 사용할 수 없습니다.

  • S = solve(eqn,var,'ReturnConditions',true) 구문은 S를 기호 배열이 아니라 구조체로 반환합니다.

  • 미분 방정식을 풀려면 dsolve 함수를 사용하십시오.

  • 연립방정식을 풀 때는 항상 결과를 출력 인수에 할당합니다. 출력 인수를 사용하면 방정식 해의 값에 액세스할 수 있습니다.

  • MaxDegree는 5보다 작은 양의 정수만 허용합니다. 그 이유는 일반적으로 4보다 높은 차수의 다항식에서는 근에 대한 양함수 표현식이 없기 때문입니다.

  • 출력 변수 y1,...,yNsolve에서 방정식이나 연립방정식을 풀 때 사용할 변수를 지정하지 않습니다. y1,...,yNeqns에 들어있는 변수인 경우 solve(eqns)가 해를 y1,...,yN에 올바른 순서로 할당한다는 보장은 없습니다. 따라서 [b,a] = solve(eqns)를 실행하면 a에 대한 해가 b에 할당되거나 그 반대로 할당될 수 있습니다.

    해가 올바른 순서로 반환되도록 하려면 변수 vars를 지정하십시오. 예를 들어, 호출 [b,a] = solve(eqns,b,a)a에 대한 해를 a에 할당하고 b에 대한 해를 b에 할당합니다.

알고리즘

IgnoreAnalyticConstraints를 사용하면 솔버가 방정식 양변의 표현식에 다음 규칙을 적용합니다.

  • a 및 b의 모든 값에 대해 log(a) + log(b) = log(a·b). 특히 다음 등식은 a, b 및 c의 모든 값에 대해 유효합니다.

      (a·b)c = ac·bc.

  • a 및 b의 모든 값에 대해 log(ab) = b·log(a). 특히 다음 등식은 a, b 및 c의 모든 값에 대해 유효합니다.

      (ab)c = ab·c.

  • f 및 g가 표준 수학 함수이고 작은 양수에 대해 f(g(x)) = x이면, 모든 복소수 값 x에 대해 f(g(x)) = x가 유효하다고 가정합니다. 구체적으로 살펴보면,

    • log(ex) = x

    • asin(sin(x)) = x, acos(cos(x)) = x, atan(tan(x)) = x

    • asinh(sinh(x)) = x, acosh(cosh(x)) = x, atanh(tanh(x)) = x

    • k의 모든 값에 대해 Wk(x·ex) = x

  • 솔버는 방정식의 양변에 0을 제외한 모든 표현식을 곱할 수 있습니다.

  • 다항 방정식의 해는 완전해여야 합니다.

R2006a 이전에 개발됨