MATLAB-代数
これまでのところ、すべての例が MATLAB とその GNU (代わりに Octave と呼ばれる) で機能することを確認しました。ただし、基本的な代数方程式を解く場合、MATLAB と Octave はほとんど変わらないため、MATLAB と Octave については別のセクションで説明します。
また、代数式の因数分解と単純化についても説明します。
MATLAB で基本的な代数方程式を解く
解決 関数は、代数方程式を解くために使用されます。最も単純な形式では、solve 関数は引用符で囲まれた式を引数として受け取ります。
たとえば、式 x-5 =0 の x について解いてみましょう
solve('x-5=0')
MATLAB は上記のステートメントを実行し、次の結果を返します −
ans = 5
解決関数を次のように呼び出すこともできます-
y = solve('x-5 = 0')
MATLAB は上記のステートメントを実行し、次の結果を返します −
y = 5
式の右辺を含めなくてもかまいません −
solve('x-5')
MATLAB は上記のステートメントを実行し、次の結果を返します −
ans = 5
方程式に複数の記号が含まれる場合、MATLAB はデフォルトで x について解いていると想定しますが、解法関数には別の形式があります −
solve(equation, variable)
ここで、変数について言及することもできます。
たとえば、方程式 v – u – 3t 2 を解いてみましょう。 =0、v に対して。この場合、-
と書く必要があります。solve('v-u-3*t^2=0', 'v')
MATLAB は上記のステートメントを実行し、次の結果を返します −
ans = 3*t^2 + u
オクターブで基本的な代数方程式を解く
ルーツ 関数は Octave で代数方程式を解くために使用され、上記の例は次のように記述できます −
たとえば、式 x-5 =0 の x について解いてみましょう
ライブデモroots([1, -5])
Octave は上記のステートメントを実行し、次の結果を返します −
ans = 5
解決関数を次のように呼び出すこともできます-
ライブデモy = roots([1, -5])
Octave は上記のステートメントを実行し、次の結果を返します −
y = 5
MATLAB で二次方程式を解く
解決 関数は高次方程式を解くこともできます。二次方程式を解くのによく使われます。この関数は、方程式の根を配列で返します。
次の例では、二次方程式 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
オクターブで二次方程式を解く
次の例では、二次方程式 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
MATLAB で高次方程式を解く
解決 関数は高次方程式を解くこともできます。たとえば、3 次方程式を (x-3) 2 として解いてみましょう。 (x-7) =0
solve('(x-3)^2*(x-7)=0')
MATLAB は上記のステートメントを実行し、次の結果を返します −
ans = 3 3 7
高次方程式の場合、根は多くの項を含んで長くなります。このような根の数値は、double に変換することで取得できます。次の例では、4 次方程式 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)); % converting the roots to double type disp('Numeric value of first root'), disp(double(s(1))); disp('Numeric value of second root'), disp(double(s(2))); disp('Numeric value of third root'), disp(double(s(3))); disp('Numeric value of fourth root'), 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 Numeric value of first root 6.6304 Numeric value of second root 1.0598 Numeric value of third root -0.3451 - 1.0778i Numeric value of fourth root -0.3451 + 1.0778i
最後の 2 つの根は複素数であることに注意してください。
オクターブで高次方程式を解く
次の例では、4 次方程式 x 4 を解きます。 − 7x 3 + 3x 2 − 5x + 9 =0.
スクリプト ファイルを作成し、次のコードを入力します −
ライブデモv = [1, -7, 3, -5, 9]; s = roots(v); % converting the roots to double type disp('Numeric value of first root'), disp(double(s(1))); disp('Numeric value of second root'), disp(double(s(2))); disp('Numeric value of third root'), disp(double(s(3))); disp('Numeric value of fourth root'), disp(double(s(4)));
ファイルを実行すると、次の結果が返されます-
Numeric value of first root 6.6304 Numeric value of second root -0.34509 + 1.07784i Numeric value of third root -0.34509 - 1.07784i Numeric value of fourth root 1.0598
MATLAB で方程式系を解く
解決 関数は、複数の変数を含む連立方程式の解を生成するためにも使用できます。この使用法を示すために、簡単な例を挙げてみましょう。
方程式を解いてみましょう−
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
MATLAB での方程式の展開と収集
エキスパンド そしてコレクト 関数は、それぞれ方程式を展開および収集します。次の例は、概念を示しています −
多くのシンボリック関数を扱うときは、変数がシンボリックであることを宣言する必要があります。
スクリプト ファイルを作成し、次のコードを入力します −
syms x %symbolic variable x syms y %symbolic variable x % expanding equations expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(sin(2*x)) expand(cos(x+y)) % collecting equations 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 を提供するパッケージ そしてコレクト 方程式をそれぞれ展開および収集する関数。次の例は、概念を示しています −
多くのシンボリック関数を扱うときは、変数がシンボリックであることを宣言する必要がありますが、Octave はシンボリック変数を定義する別の方法を持っています。 罪の使用に注意してください とCos 、シンボリック パッケージでも定義されています。
スクリプト ファイルを作成し、次のコードを入力します −
% first of all load the package, make sure its installed. pkg load symbolic % make symbols module available symbols % define symbolic variables x = sym ('x'); y = sym ('y'); z = sym ('z'); % expanding equations expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(Sin(2*x)) expand(Cos(x+y)) % collecting equations 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)
代数式の因数分解と単純化
要因 関数は式を因数分解し、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
MATLAB