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차원 파라미터 플롯을 만듭니다.

  • fpolarplot은 극좌표의 플롯을 만듭니다. (R2024a 이후)

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

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

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

양함수 플롯

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

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

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

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

음함수 플롯

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])

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)

곡면 플롯 만들기

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

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

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

관련 항목