English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MATLAB 代数

今までに見たすべての例は、MATLABおよびGNU(Octaveと呼ばれることもあります)で実行できます。しかし、基本的な代数方程式を解くためには、MATLABとOctaveにはほとんど違いがありませんので、MATLABとOctaveをそれぞれの部分で紹介しようとします。

代数表現の分解と簡略化についても議論します。

MATLABで基本的な代数方程式を解く

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

Octaveで基本的な代数方程式を解く方法

roots関数はOctaveの代数方程式を解くために使用されます。以下の例を示します

例えば、方程式x-5 =0のx

roots([1, -5]

Octaveは上記の命令を実行し、以下の結果を返します-

ans = 5

Solve関数も呼び出すことができます-

y = roots([1, -5]

Octaveは上記の命令を実行し、以下の結果を返します-

',' 5

MATLABで二次方程式を解く

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で二次方程式を解く方法

以下の例では、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で高次方程式を解く

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.

请注意,最后两个根是复数。

注意してください、最後の2つの根は複素数です。

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

MATLABで方程式を展開および収集する

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