MATLAB 代數(shù)

到目前為止,我們已經(jīng)看到所有示例都可以在MATLAB及其GNU(也稱為Octave)中運(yùn)行。但是,為了求解基本的代數(shù)方程,MATLAB和Octave幾乎沒有什么不同,因此我們將嘗試在單獨的部分中介紹MATLAB和Octave。

我們還將討論代數(shù)表達(dá)式的分解和簡化。

在MATLAB中求解基本代數(shù)方程

solve函數(shù)用于求解代數(shù)方程。最簡單的形式是,solve函數(shù)將用引號引起來的方程式作為參數(shù)。

例如,讓我們求解方程x-5 = 0中的x

solve('x-5=0')

MATLAB將執(zhí)行上述語句并返回以下結(jié)果-

ans =
   5

您也可以將Solve函數(shù)稱為-

y = solve('x-5 = 0')

MATLAB將執(zhí)行上述語句并返回以下結(jié)果-

y =
   5

您甚至可能不包括等式的右側(cè)-

solve('x-5')

MATLAB將執(zhí)行上述語句并返回以下結(jié)果-

ans =
   5

如果方程式包含多個符號,則默認(rèn)情況下MATLAB會假定您正在求解x,但是,solve函數(shù)具有另一種形式-

solve(equation, variable)

在這里,您還可以提及變量。

例如,讓我們求解v的方程v – u – 3t 2 =0。在這種情況下,我們應(yīng)該寫-

solve('v-u-3*t^2=0', 'v')

MATLAB將執(zhí)行上述語句并返回以下結(jié)果-

ans =
   3*t^2 + u

用Octave法求解基本代數(shù)方程

roots函數(shù)用于求解Octave中的代數(shù)方程式,您可以編寫以下示例,如下所示:

例如,讓我們求解方程x-5 = 0中的x

roots([1, -5])

Octave將執(zhí)行以上語句并返回以下結(jié)果-

ans = 5

您也可以將Solve函數(shù)稱為-

y = roots([1, -5])

Octave將執(zhí)行以上語句并返回以下結(jié)果-

y = 5

在MATLAB中求解二次方程

solve函數(shù)還可以求解高階方程。它通常用于求解二次方程。該函數(shù)以數(shù)組形式返回方程式的根。

以下示例解決了二次方程x 2 -7x +12 =0。創(chuàng)建腳本文件并鍵入以下代碼-

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

運(yùn)行文件時,它顯示以下結(jié)果-

The first root is: 
   3
The second root is: 
   4

用Octave法求解二次方程

下面的示例以O(shè)ctave求解二次方程x 2 -7x +12 = 0。創(chuàng)建一個腳本文件并輸入以下代碼-

s = roots([1, -7, 12]);

disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

運(yùn)行文件時,它顯示以下結(jié)果-

The first root is: 
   4
The second root is: 
   3

在MATLAB中求解高階方程

solve函數(shù)還可以求解高階方程。例如,讓我們求解一個三次方程為(x-3)2(x-7)= 0

solve('(x-3)^2*(x-7)=0')

MATLAB將執(zhí)行上述語句并返回以下結(jié)果-

ans =
   3
   3
   7

對于高階方程,根長包含許多項。您可以通過將此類根轉(zhuǎn)換為double來獲得其數(shù)值。以下示例解決了四階方程x 4 ? 7x 3 + 3x 2 ? 5x + 9 = 0。

創(chuàng)建一個腳本文件并輸入以下代碼-

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

%將根轉(zhuǎn)換為double類型
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)));

運(yùn)行文件時,它返回以下結(jié)果-

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

請注意,最后兩個根是復(fù)數(shù)。

在Octave中求解高階方程

以下示例解決了四階方程x 4 ? 7x 3 + 3x 2 ? 5x + 9 = 0。

創(chuàng)建一個腳本文件并輸入以下代碼-

v = [1, -7,  3, -5, 9];
s = roots(v);

%將根轉(zhuǎn)換為double類型
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)));

運(yùn)行文件時,它返回以下結(jié)果-

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中求解方程組

solve函數(shù)還可用于生成涉及多個變量的方程組的解。讓我們舉一個簡單的實例來演示這種用法。

讓我們求解方程式-

5x + 9y = 5

3x – 6y = 4

創(chuàng)建一個腳本文件并輸入以下代碼-

s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y

運(yùn)行文件時,它顯示以下結(jié)果-

ans =
   22/19
ans =
   -5/57

同樣,您可以求解更大的線性系統(tǒng)??紤]以下一組方程式-

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Octave方程組的求解

我們有一些不同的方法來求解n個未知數(shù)中的n個線性方程組。讓我們舉一個簡單的實例來演示這種用法。

讓我們求解方程式-

5x + 9y = 5

3x – 6y = 4

這樣的線性方程組可以寫成單矩陣方程Ax = b,其中A是系數(shù)矩陣,b是包含線性方程右側(cè)的列向量,x是表示解的列向量,如下所示:在下面的程序中顯示-

創(chuàng)建一個腳本文件并輸入以下代碼-

A = [5, 9; 3, -6];
b = [5;4];
A \ b

運(yùn)行文件時,它顯示以下結(jié)果-

ans =

   1.157895
  -0.087719

同樣,您可以解決較大的線性系統(tǒng),如下所示-

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

在MATLAB中展開和收集方程式

expandcollect分別用來展開和收集一個方程。以下示例演示了概念-

當(dāng)使用許多符號函數(shù)時,應(yīng)聲明變量是符號性的。

創(chuàng)建一個腳本文件并輸入以下代碼-

syms x   %符號變量x
syms y   %符號變量y

%擴(kuò)展方程
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))

運(yùn)行文件時,它顯示以下結(jié)果-

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

倍頻程中的展開和收集方程

您需要擁有一個symbolic軟件包,該軟件包分別提供expandcollect函數(shù)來擴(kuò)展和收集方程式。以下示例演示了概念-

當(dāng)使用許多符號函數(shù)時,應(yīng)聲明變量是符號變量,但是Octave定義符號變量的方法不同。注意使用SinCos,它們也在符號包中定義。

創(chuàng)建一個腳本文件并輸入以下代碼-

%首先,加載包,確保它已安裝。
pkg load symbolic

%使symbols模塊可用
symbols

%定義符號變量
x = sym ('x');
y = sym ('y');
z = sym ('z');

%擴(kuò)展方程
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)

運(yùn)行文件時,它顯示以下結(jié)果-

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)

代數(shù)表達(dá)式的因式分解和簡化

factor函數(shù)分解一個表達(dá)式,simplify函數(shù)簡化一個表達(dá)式。以下示例演示了概念-

實例

創(chuàng)建一個腳本文件并輸入以下代碼-

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

運(yùn)行文件時,它顯示以下結(jié)果-

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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清