English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
지금까지 모든 예제가 MATLAB 및 GNU(Octave로도 알려짐)에서 실행됨을 보았습니다. 그러나 기본 대수 방정식을 풀기 위해 MATLAB과 Octave는 거의 다를 바 없으며, 따라서 MATLAB과 Octave를 별도의 부분에서 소개하려고 시도하겠습니다.
또한 대수 표현식의 분해와 간소화에 대해 논의할 것입니다.
solve함수는 대수 방정식을求解하는 데 사용됩니다. 가장 간단한 형태는 solve 함수가 인자로 괄호로 묶인 방정식을 사용하는 것입니다
예를 들어, 다음과 같은 방정식을求解해 보겠습니다x-5 = '0'에서의 x
solve('x-5= '0')
MATLAB은 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
ans = 5
Solve 함수를 호출할 수도 있습니다-
y = solve('x-5 = '0')
MATLAB은 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
y = 5
규칙적으로는 등식의 오른쪽 부분을 포함하지 않을 수도 있습니다-
solve('x-5)
MATLAB은 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
ans = 5
방정식이 여러 상징을 포함하고 있을 경우, 기본적으로 MATLAB은 x를求解하고 있다고 가정하지만, solve 함수는 다른 형식도 있습니다-
solve(equation, variable)
여기서, 변수에 대해 언급할 수도 있습니다
예를 들어, v의 방정식 v – u – 3t 2 = '0'. 이 경우, 다음과 같이 작성해야 합니다-
solve('v-u-3*t^2= '0', 'v')
MATLAB은 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
ans = 3*t^2 + u
roots함수는 Octave에서의 대수 방정식을求解하는 데 사용됩니다. 다음과 같은 예제를 작성할 수 있습니다:
예를 들어, 다음과 같은 방정식을求解해 보겠습니다x-5 = '0'에서의 x
roots([1, -5]
Octave는 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
ans = 5
Solve 함수를 호출할 수도 있습니다-
y = roots([1, -5]
Octave는 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
y = 5
solve함수는 고차 방정식을求解할 수 있습니다. 일반적으로 이차 방정식을求解에 사용됩니다. 함수는 루트를 배열 형태로 반환합니다
다음 예제는 이차 방정식 x 2 -7x +12 = '0'. 스크립트 파일을 생성하고 다음 코드를 입력하세요-
eq = 'x^2 -7*x + 12 = '0'; s = solve(eq); disp('The first root is: '), disp(s(1)); disp('The second root is: '), disp(s(2));
파일을 실행할 때, 다음 결과를 표시합니다-
The first root is: 3 The second root is: 4
다음 예제는 Octave로 푸는 이차 방정식 x 2 -7x +12 = '0'. 스크립트 파일을 생성하고 다음 코드를 입력하세요-
s = roots([1, -7, 12]); disp('The first root is: '), disp(s(1)); disp('The second root is: '), disp(s(2));
파일을 실행할 때, 다음 결과를 표시합니다-
The first root is: 4 The second root is: 3
solve함수는 고차 방정식을求解할 수 있습니다. 예를 들어, 다음과 같은 삼차 방정식을求解해 보겠습니다(x-3)2(x-7)= 0
solve('(x-3)^2*(x-7)=0'
MATLAB은 위의 문장을 실행하고 다음과 같은 결과를 반환합니다-
ans = 3 3 7
고차 방정식에서는 루트는 많은 항을 포함합니다. 이러한 루트를 double로 변환하여 수치를 얻을 수 있습니다. 다음 예제는 x 4 − 7x 3 + 3x 2 − 5x + 9 = 0.
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = '0'; s = solve(eq); disp('The first root is: '), disp(s(1)); disp('The second root is: '), disp(s(2)); disp('The third root is: '), disp(s(3)); disp('The fourth root is: '), disp(s(4)); % 루트를 double 타입으로 변환 disp('첫 번째 루트의 수치 값'), disp(double(s(1*/) disp('두 번째 루트의 수치 값'), disp(double(s(2*/) disp('셋 번째 루트의 수치 값'), disp(double(s(3*/) disp('네 번째 루트의 수치 값'), disp(double(s(4*/)
파일을 실행할 때, 다음과 같은 결과를 반환합니다-
The first root is: 6.630396332390718431485053218985 The second root is: 1.0597804633025896291682772499885 The third root is: - 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i The fourth root is: - 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i 첫 번째 루트의 수치 값 6.6304 두 번째 루트의 수치 값 1.0598 셋 번째 루트의 수치 값 -0.3451 - 1.0778i 네 번째 루트의 수치 값 -0.3451 + 1.0778i
주의하세요, 마지막 두 루트는 복소수입니다.
다음 예제에서는 네 차원 방정식 x 4 − 7x 3 + 3x 2 − 5x + 9 = 0.
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
v = [1, -7, 3, -5, 9]; s = roots(v); % 루트를 double 타입으로 변환 disp('첫 번째 루트의 수치 값'), disp(double(s(1*/) disp('두 번째 루트의 수치 값'), disp(double(s(2*/) disp('셋 번째 루트의 수치 값'), disp(double(s(3*/) disp('네 번째 루트의 수치 값'), disp(double(s(4*/)
파일을 실행할 때, 다음과 같은 결과를 반환합니다-
첫 번째 루트의 수치 값 6.6304 두 번째 루트의 수치 값 -0.34509 + 1.07784i 셋 번째 루트의 수치 값 -0.34509 - 1.07784i 네 번째 루트의 수치 값 1.0598
solve함수는 여러 변수를 포함하는 방정식 집합의 해를 생성할 수 있습니다. 이러한 사용법을 설명하기 위해 간단한 예제를 들어보겠습니다
이제 방정식을 해결해 보겠습니다-
5x + 9y = 5
3x – 6y = 4
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
s = solve('5*x + 9*y = 5','3*x - 6*y = 4'); s.x s.y
파일을 실행할 때, 다음 결과를 표시합니다-
ans = 22/19 ans = -5/57
동일하게, 더 큰 선형 시스템을 해결할 수 있습니다. 다음과 같은 방정식 집합을 고려해 보겠습니다-
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
n개의未知수에 대한 n개의 선형 방정식 집합을 해결하는 여러 가지 방법이 있습니다. 이러한 사용법을 설명하기 위해 간단한 예제를 들어보겠습니다
이제 방정식을 해결해 보겠습니다-
5x + 9y = 5
3x – 6y = 4
이러한 선형 방정식 집합은 단일 행렬 방정식 Ax = b로 작성될 수 있습니다. 여기서 A는 계수 행렬이며, b는 선형 방정식 우측의 열 벡터를 포함하고, x는 해를 나타내는 열 벡터입니다. 다음과 같이 다음 프로그램에서 표시됩니다-
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
A = [5, 9; 3, -6]; b = [5;4]; A \ b
파일을 실행할 때, 다음 결과를 표시합니다-
ans = 1.157895 -0.087719
동일하게, 더 큰 선형 시스템을 해결할 수 있습니다. 다음과 같이 표시됩니다-
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
expand과collect하나의 방정식을 확장하고 수집하는 데 사용됩니다. 다음 예제에서 개념을 설명합니다-
많은 상징 함수를 사용할 때는 변수가 상징적이다는 것을 선언해야 합니다.
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
syms x % 상징 변수 x syms y % 상징 변수 y %수식 확장 expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(sin(2*x)) expand(cos(x+y)) %수식 수집 collect(x^3 *(x-7)) collect(x^4*(x-3)*(x-5))
파일을 실행할 때, 다음 결과를 표시합니다-
ans = x^2 + 4*x - 45 ans = x^4 + x^3 - 43*x^2 + 23*x + 210 ans = 2*cos(x)*sin(x) ans = cos(x)*cos(y) - sin(x)*sin(y) ans = x^4 - 7*x^3 ans = x^6 - 8*x^5 + 15*x^4
귀하가 소유해야 할시뮬레이션소프트웨어 패키지, 이 패키지는 각각 제공합니다expand과collect함수를 사용하여 수식을 확장하고 수집합니다. 다음 예제는 개념을 보여줍니다-
기호 함수를 많이 사용할 때, 변수가 기호 변수인지를 선언해야 합니다. Octave에서 기호 변수를 정의하는 방법은 다릅니다. 주의하여 사용해야 합니다Sin과Cos그들은 기호 패키지에서도 정의되어 있습니다.
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
%먼저, 패키지를 로드하고 설치되었는지 확인합니다. pkg load symbolic %symbols 모듈 사용 가능 symbols %기호 변수 정의 x = sym ('x'); y = sym ('y'); z = sym ('z'); %수식 확장 expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(Sin(2*x)) expand(Cos(x+y)) %수식 수집 collect(x^3 *(x-7), z) collect(x^4*(x-3)*(x-5), z)
파일을 실행할 때, 다음 결과를 표시합니다-
ans = -45.0+x^2+(4.0)*x ans = 210.0+x^4-(43.0)*x^2+x^3+(23.0)*x ans = sin((2.0)*x) ans = cos(y+x) ans = x^(3.0)*(-7.0+x) ans = (-3.0+x)*x^(4.0)*(-5.0+x)
factor함수는 표현식을 분해합니다simplify함수는 표현식을 간소화합니다. 다음 예제는 개념을 보여줍니다-
스크립트 파일을 생성하고 다음 코드를 입력하십시오-
syms x syms y factor(x^3 - y^3) factor([x^2-y^2,x^3+y^3] simplify((x^4-16)/(x^2-4))
파일을 실행할 때, 다음 결과를 표시합니다-
ans = (x - y)*(x^2 + x*y + y^2) ans = [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)] ans = x^2 + 4