English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
今までに見たすべての例は、MATLABおよびGNU(Octaveと呼ばれることもあります)で実行できます。しかし、基本的な代数方程式を解くためには、MATLABとOctaveにはほとんど違いがありませんので、MATLABとOctaveをそれぞれの部分で紹介しようとします。
代数表現の分解と簡略化についても議論します。
MATLABで方程式群を解く関数は代数方程式を解くために使用されます。最も簡単な形式では、solve関数は引号で囲まれた方程式を引数として使用します
例えば、方程式x-5 =0のx
solve('x-5=0')
MATLABは上記の命令を実行し、以下の結果を返します-
ans = 5
Solve関数も呼び出すことができます-
y = solve('x-5 = 0')
MATLABは上記の命令を実行し、以下の結果を返します-
',' 5
等式の右側を含めなくてもいいかもしれません-
solve('x-5)
MATLABは上記の命令を実行し、以下の結果を返します-
ans = 5
方程式が複数の符号を含む場合、MATLABはデフォルトでxを解いていると仮定しますが、solve関数には別の形式もあります-
solve(equation, variable)
ここでは、変数についても言及できます
例えば、vの方程式v – u – 3t 2 =0の場合、以下のように書くべきです-
solve('v-u-3*^2=0', 'v')
MATLABは上記の命令を実行し、以下の結果を返します-
ans = 3*^2 + u
roots関数はOctaveの代数方程式を解くために使用されます。以下の例を示します
例えば、方程式x-5 =0のx
roots([1, -5]
Octaveは上記の命令を実行し、以下の結果を返します-
ans = 5
Solve関数も呼び出すことができます-
y = roots([1, -5]
Octaveは上記の命令を実行し、以下の結果を返します-
',' 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
以下の例では、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
MATLABで方程式群を解く関数は高次方程式も解きます。例えば、三次方程式(x-3)2(x-7)= 0
solve('(x-3)^2*(x-7)=0'
MATLABは上記の命令を実行し、以下の結果を返します-
ans = 3 3 7
高次方程の根は多くの項を含みます。このような根をdoubleに変換することで、その数値を取得できます。以下の例では、四階方程式x 4 以下の例では、四次方程式x 7x 3 + 3x 2 以下の例では、四次方程式x 5x + 9 −
スクリプトファイルを作成し以下のコードを入力します-
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)); s = roots(v); % 根をdouble型に変換1disp('四次根の数値'), disp(double(s( disp('一次根の数値'), disp(double(s(2disp('四次根の数値'), disp(double(s( disp('二次根の数値'), disp(double(s(3disp('四次根の数値'), disp(double(s( disp('三次根の数値'), disp(double(s(4disp('四次根の数値'), disp(double(s(
);-
The first root is: 6.630396332390718431485053218985 The second root is: 1.0597804633025896291682772499885 The third root is: - 三次根の数値34508839784665403032666523448675 - 1.0778362954630176596831109269793*0. The fourth root is: - 三次根の数値34508839784665403032666523448675 + 1.0778362954630176596831109269793*0. プログラムを実行すると、以下の結果が返されます 6.6304 一次根の数値 1.0598 二次根の数値 -三次根の数値3451 - 1.07780. i -三次根の数値3451 + 1.07780.
请注意,最后两个根是复数。
Octaveで高次方程式を解く 4 以下の例では、四次方程式x 7x 3 + 3x 2 以下の例では、四次方程式x 5x + 9 −
スクリプトファイルを作成し以下のコードを入力します-
= 0。1, -7, 3, -5, 9]; v = [ s = roots(v); % 根をdouble型に変換1disp('四次根の数値'), disp(double(s( disp('一次根の数値'), disp(double(s(2disp('四次根の数値'), disp(double(s( disp('二次根の数値'), disp(double(s(3disp('四次根の数値'), disp(double(s( disp('三次根の数値'), disp(double(s(4disp('四次根の数値'), disp(double(s(
);-
プログラムを実行すると、以下の結果が返されます 6.6304 一次根の数値 -三次根の数値34509 + 1.077840. 二次根の数値 -三次根の数値34509 - 1.077840. i 1.0598
MATLABで方程式群を解くsolve
方程式を解く方法があります。n個の未知数のn個の線形方程式群を解く方法を簡単な例で示します-
5x + 9y = 5
3x – 6y = 4
スクリプトファイルを作成し以下のコードを入力します-
この関数は、複数の変数を含む方程式群の解を生成するために使用できます。以下の例でこの用法を示します5*x + 9*',' 5s = solve('3*x - 6*',' 4y = '); s.x
ファイルを実行すると、以下の結果が表示されます-
ans = 22/19 ans = -5/57
s.y-
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Octaveの方程式群の解
方程式を解く方法があります。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