Main Content

기호 계산 수행하기

기호 표현식 미분하기

Symbolic Math Toolbox™를 사용하면 다음을 구할 수 있습니다.

  • 단일 변수 표현식의 도함수

  • 편도함수

  • 2계 이상의 도함수

  • 혼합 도함수

기호를 사용한 도함수 계산에 대한 자세한 내용은 미분 항목을 참조하십시오.

변수가 하나인 표현식

기호 표현식을 미분하려면 diff 명령을 사용하십시오. 다음 예제는 기호 표현식의 1계 도함수를 계산하는 방법을 보여줍니다.

syms x
f = sin(x)^2;
diff(f)
ans =
2*cos(x)*sin(x)

편도함수

다변수 표현식의 경우 미분 변수를 지정할 수 있습니다. 변수를 지정하지 않으면 MATLAB®은 알파벳상에서 문자 x에 가까운 정도를 판단해 디폴트 변수를 선택합니다.

syms x y
f = sin(x)^2 + cos(y)^2;
diff(f)
ans =
2*cos(x)*sin(x)

MATLAB에서 디폴트 변수를 선택할 때 적용하는 전체 규칙은 디폴트 기호 변수 찾기 항목을 참조하십시오.

변수 y에 대해 기호 표현식 f를 미분하려면 다음을 입력하십시오.

syms x y
f = sin(x)^2 + cos(y)^2;
diff(f, y)
ans =
-2*cos(y)*sin(y)

2계 편도함수 및 혼합 도함수

변수 y에 대해 기호 표현식 f의 2계 도함수를 계산하려면 다음을 입력하십시오.

syms x y
f = sin(x)^2 + cos(y)^2;
diff(f, y, 2)
ans =
2*sin(y)^2 - 2*cos(y)^2

diff(diff(f, y))와 같이 두 번 미분하면 동일한 결과를 얻을 수 있습니다. 혼합 도함수를 계산하려면 2개의 미분 명령을 사용하십시오. 예를 들어, 다음과 같이 입력합니다.

syms x y
f = sin(x)^2 + cos(y)^2;
diff(diff(f, y), x)
ans =
0

기호 표현식 적분하기

다음과 같은 기호 적분을 수행할 수 있습니다.

  • 부정적분 및 정적분

  • 다변수 표현식의 적분

실수 및 복소수 파라미터를 사용한 적분을 포함한 int 명령에 대한 자세한 내용은 적분 항목을 참조하십시오.

단일 변수 표현식의 부정적분

기호 표현식을 적분한다고 가정해 보겠습니다. 첫 번째 단계는 기호 표현식을 만드는 것입니다.

syms x
f = sin(x)^2;

부정적분을 구하려면 다음을 입력하십시오.

int(f)
ans =
x/2 - sin(2*x)/4

다변수 표현식의 부정적분

표현식에서 여러 개의 기호 변수를 사용하는 경우 적분 변수를 지정할 수 있습니다. 변수를 지정하지 않으면 MATLAB은 알파벳상에서 문자 x에 가까운 정도를 판단해 디폴트 변수를 선택합니다.

syms x y n
f = x^n + y^n;
int(f)
ans =
x*y^n + (x*x^n)/(n + 1)

MATLAB에서 디폴트 변수를 선택할 때 적용하는 전체 규칙은 디폴트 기호 변수 찾기 항목을 참조하십시오.

또한 y에 대해 표현식 f = x^n + y^n을 적분할 수 있습니다.

syms x y n
f = x^n + y^n;
int(f, y)
ans =
x^n*y + (y*y^n)/(n + 1)

적분 변수가 n이면 다음을 입력하십시오.

syms x y n
f = x^n + y^n;
int(f, n)
ans =
x^n/log(x) + y^n/log(y)

정적분

정적분을 구하려면 적분의 한계를 int 함수의 마지막 두 인수로 전달하십시오.

syms x y n
f = x^n + y^n;
int(f, 1, 10)
ans =
piecewise(n == -1, log(10) + 9/y, n ~= -1,...
 (10*10^n - 1)/(n + 1) + 9*y^n)

MATLAB에서 적분의 닫힌 형식을 구할 수 없는 경우

int 함수가 적분을 계산할 수 없는 경우 계산되지 않은 적분을 반환합니다.

syms x
int(sin(sinh(x)))
ans =
int(sin(sinh(x)), x)

방정식 풀기

다음과 같이 다양한 유형의 기호 방정식을 풀 수 있습니다.

  • 하나의 기호 변수가 있는 대수 방정식

  • 여러 개의 기호 변수가 있는 대수 방정식

  • 연립대수방정식

미분 방정식을 포함한 기호 방정식 계산에 대한 자세한 내용은 방정식 풀이 항목을 참조하십시오.

하나의 기호 변수가 있는 대수 방정식 풀기

방정식을 정의하려면 두 개의 등호(==)를 사용하십시오. 그런 다음 solve 함수를 호출하여 방정식을 풀 수 있습니다. 예를 들어, 다음 방정식을 풀어 보겠습니다.

syms x
solve(x^3 - 6*x^2 == 6 - 11*x)
ans =
 1
 2
 3

방정식의 우변을 지정하지 않으면 solve 함수는 우변이 0이라고 가정합니다.

syms x
solve(x^3 - 6*x^2 + 11*x - 6)
ans =
 1
 2
 3

여러 개의 기호 변수가 있는 대수 방정식 풀기

방정식에 여러 개의 기호 변수가 있는 경우 어떤 변수에 대해 이 방정식을 풀어야 하는지를 지정할 수 있습니다. 예를 들어, y에 대해 이 다변수 방정식을 풀면 다음과 같습니다.

syms x y
solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)
ans =
    1
  2*x
 -3*x

아무런 변수도 지정하지 않으면 알파벳상에서 x 변수에 가장 근접한 변수에 대한 방정식의 해가 구해집니다. MATLAB에서 디폴트 변수를 선택할 때 적용하는 전체 규칙은 디폴트 기호 변수 찾기 항목을 참조하십시오.

연립대수방정식 풀기

연립방정식도 풀 수 있습니다. 예를 들어, 다음과 같이 입력합니다.

syms x y z
[x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)
x =
 0
 2
 
y =
 0
 2
 
z =
 0
 8

기호 표현식 단순화하기

Symbolic Math Toolbox는 사용자가 기호 표현식의 출력값을 조작하도록 해주는 일련의 단순화 함수를 제공합니다. 예를 들어, 다음과 같은 황금비 다항식 phi를 실행하면

phi = (1 + sqrt(sym(5)))/2;
f = phi^2 - phi - 1

다음 결과가 반환됩니다.

f =
(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2

이 답을 단순화할 수 있습니다. 다음을 입력하면

simplify(f)

답이 매우 간단해집니다.

ans =
0

기호 단순화를 사용하는 것이 항상 간단하지는 않습니다. 기호 표현식의 가장 단순한 표현이라는 의미를 명확하게 정의할 수 없기 때문에 보편적인 단순화 함수란 존재하지 않습니다. 동일한 수학 표현식이라도 문제가 다르면 다른 형식이 필요합니다. 특정 문제를 해결하는 데 어떤 형식이 더 효과적인지 알고 있다면 적절한 단순화 함수를 선택할 수 있습니다.

예를 들어, 다항식의 차수를 보려고 하거나 기호적으로 다항식을 미분 또는 적분하려면 모든 괄호를 곱하고 동류항을 모두 더하는 표준 다항식 형식을 사용하십시오. 표준 형식으로 다항식을 재작성하려면 expand 함수를 사용하십시오.

syms x
f = (x ^2- 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2 - x + 1);
expand(f)
ans =
x^10 - 1

factor 단순화 함수는 다항식의 근을 보여줍니다. 유리수 범위에서 다항식을 인수분해할 수 없는 경우 factor 함수의 출력값은 표준 다항식 형식이 됩니다. 예를 들어, 3차 다항식을 인수분해하려면 다음을 입력하십시오.

syms x
g = x^3 + 6*x^2 + 11*x + 6;
factor(g)
ans =
[ x + 3, x + 2, x + 1]

다항식의 중첩(호너) 표현은 수치적 계산에 가장 효율적입니다.

syms x
h = x^5 + x^4 + x^3 + x^2 + x;
horner(h)
ans =
x*(x*(x*(x*(x + 1) + 1) + 1) + 1)

Symbolic Math Toolbox 단순화 함수 목록은 Choose Function to Rearrange Expression 항목을 참조하십시오.

기호 표현식에서의 대입

기호 변수에 숫자 대입하기

subs 함수를 사용하여 기호 변수에 숫자형 값을 대입할 수 있습니다. 예를 들어, 점 x = 1/3에서의 기호 표현식 f를 계산합니다.

syms x
f = 2*x^2 - 3*x + 1;
subs(f, 1/3)
ans =
2/9

subs 함수는 원래 표현식 f를 변경하지 않습니다.

f
f =
2*x^2 - 3*x + 1

다변량 표현식에서 대입하기

표현식에 둘 이상의 변수가 있는 경우 어떤 변수에 대입할지를 지정할 수 있습니다. 예를 들어, 다음 기호 표현식에서 값 x = 3을 대입하려면

syms x y
f = x^2*y + 5*x*sqrt(y);

다음 명령을 입력하십시오.

subs(f, x, 3)
ans =
9*y + 15*y^(1/2)

하나의 기호 변수에 또 다른 기호 변수 대입하기

하나의 기호 변수에 또 다른 기호 변수를 대입할 수도 있습니다. 예를 들어, 변수 y를 변수 x로 바꾸려면 다음을 입력하십시오.

subs(f, y, x)
ans =
x^3 + 5*x^(3/2)

행렬을 다항식에 대입하기

행렬을 숫자형 계수가 있는 기호 다항식에 대입할 수도 있습니다. 행렬을 다항식에 대입하는 방법에는 두 가지가 있습니다. 요소별로 대입하는 방법과 행렬 곱셈 규칙에 따라 대입하는 방법이 그것입니다.

요소별 대입.  각 요소별로 행렬을 대입하려면 subs 명령을 사용하십시오.

syms x
f = x^3 - 15*x^2 - 24*x + 350;
A = [1 2 3; 4 5 6];
subs(f,A)
ans =
[ 312, 250,  170]
[  78, -20, -118]

직사각 행렬 또는 정사각 행렬에 대해 요소별 대입을 수행할 수 있습니다.

전체 행렬 대입.  표준 행렬 곱셈 규칙을 사용하여 하나의 행렬 전체를 다항식에 대입하려면 행렬이 정사각 행렬이어야 합니다. 예를 들어, 마방진 A를 다항식 f에 대입할 수 있습니다.

  1. 다항식을 만듭니다.

    syms x
    f = x^3 - 15*x^2 - 24*x + 350;
  2. 마방진 행렬을 만듭니다.

    A = magic(3)
    A =
         8     1     6
         3     5     7
         4     9     2
  3. 다항식 f의 숫자형 계수를 포함하는 행 벡터를 구합니다.

    b = sym2poly(f)
    b =
         1   -15   -24   350
  4. 마방진 행렬 A를 다항식 f에 대입합니다. 행렬 A는 다항식에 나오는 모든 x를 대체합니다. 상수와 단위 행렬 eye(3)을 곱한 값은 f의 상수항을 대체합니다.

    A^3 - 15*A^2 - 24*A + 350*eye(3)
    ans =
       -10     0     0
         0   -10     0
         0     0   -10

    polyvalm 명령을 사용하면 동일한 결과를 쉽게 얻을 수 있습니다.

    polyvalm(b,A)
    ans =
       -10     0     0
         0   -10     0
         0     0   -10

기호 행렬의 요소에 대입하기

기호 행렬의 요소들에 대입하려고 하는 경우에도 subs 명령을 사용할 수 있습니다. 기호 순환 행렬 A의 요소 중 일부를 대체한다고 가정해 보겠습니다.

syms a b c
A = [a b c; c a b; b c a]
A =
[ a, b, c]
[ c, a, b]
[ b, c, a]

A의 (2, 1) 요소를 beta로 대체하고 행렬 전체에서 변수 b를 변수 alpha로 대체하려면 다음을 입력하십시오.

alpha = sym('alpha');
beta = sym('beta');
A(2,1) = beta;
A = subs(A,b,alpha)

결과는 다음과 같은 행렬로 나타납니다.

A =
[     a, alpha,     c]
[  beta,     a, alpha]
[ alpha,     c,     a]

자세한 내용은 기호 행렬의 요소에 대입하기 항목을 참조하십시오.

기호 함수 플로팅하기

Symbolic Math Toolbox는 다음과 같은 플로팅 함수를 제공합니다.

  • fplot은 카테시안 좌표에서 기호 표현식, 기호 방정식 또는 기호 함수의 2차원 플롯을 만듭니다.

  • fplot3은 3차원 파라미터 플롯을 만듭니다.

  • ezpolar는 극좌표의 플롯을 만듭니다.

  • fsurf는 곡면 플롯을 만듭니다.

  • fcontour는 등고선 플롯을 만듭니다.

  • fmesh는 메시 플롯을 만듭니다.

양함수 플롯

fplot을 사용하여 2차원 선 플롯을 만듭니다. 표현식 x3-6x2+11x-6을 플로팅합니다.

syms x
f = x^3 - 6*x^2 + 11*x - 6;
fplot(f)

Figure contains an axes object. The axes object contains an object of type functionline.

x축과 y축에 레이블을 추가합니다. texlabel(f)를 사용하여 제목을 생성합니다. grid on을 사용하여 그리드를 표시합니다. 자세한 내용은 차트에 제목 및 축 레이블 추가하기 항목을 참조하십시오.

xlabel('x')
ylabel('y')
title(texlabel(f))
grid on

Figure contains an axes object. The axes object with title 1 1 blank x blank - blank 6 blank x Squared baseline blank + blank x Cubed baseline blank - blank 6 contains an object of type functionline.

음함수 플롯

fimplicit를 사용하여 방정식 및 음함수를 플로팅합니다.

-1<x<1 구간에 대해 방정식 (x2+y2)4=(x2-y2)2를 플로팅합니다.

syms x y
eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;
fimplicit(eqn, [-1 1])

Figure contains an axes object. The axes object contains an object of type implicitfunctionline.

3차원 플롯

fplot3을 사용하여 3차원 파라미터 선을 플로팅합니다.

다음과 같이 파라미터 선을 플로팅합니다.

x=t2sin(10t)y=t2cos(10t)z=t.

syms t
fplot3(t^2*sin(10*t), t^2*cos(10*t), t)

Figure contains an axes object. The axes object contains an object of type parameterizedfunctionline.

곡면 플롯 만들기

fsurf를 사용하여 3차원 곡면을 만듭니다.

포물면 z=x2+y2을 플로팅합니다.

syms x y
fsurf(x^2 + y^2)

Figure contains an axes object. The axes object contains an object of type functionsurface.

관련 항목