1. 符號(hào)定義
1.1 sym函數(shù)介紹
1.1.1 定義單個(gè)符號(hào)
sym
函數(shù)能夠定義單個(gè)的符號(hào)變量,如下所示:
a = sym('a')
運(yùn)行后的顯示為:
a =
a
1.1.2 定義多個(gè)符號(hào)
當(dāng)需要定義多個(gè)變量時(shí),則可以在后面寫上需要變量的行數(shù)與列數(shù),其可以生成多行多列的變量矩陣。
A = sym('a',[2 4])
打印出的結(jié)果如下
A =
[ a1_1, a1_2, a1_3, a1_4]
[ a2_1, a2_2, a2_3, a2_4]
當(dāng)想調(diào)用對(duì)應(yīng)的符號(hào)時(shí)用矩陣元素的索引即可
f = A(1,3) * 8
f =
8*a1_3
sym
還支持自定義生成的變量的形式,
A = sym('a_%d_%d',[2 4])
生成的符號(hào)就是a_1_1
的形式。
1.1.3 保留真實(shí)數(shù)據(jù)
使用sym
函數(shù)能夠?qū)?shù)據(jù)的值進(jìn)行精確的保留,不必要擔(dān)心計(jì)算機(jī)計(jì)算的誤差等問題。
例如,當(dāng)計(jì)算
1
123467
?
3
4
\frac{1}{123467} * \frac{3}{4}
1234671??43? 時(shí),我們想要的是準(zhǔn)確的分?jǐn)?shù)形式,但是直接輸入的話會(huì)導(dǎo)致答案成為浮點(diǎn)形式,這時(shí)使用 sym
函數(shù)就能避免這種情況。
直接輸入如下:
answer = 1 / 1234567 * (3 / 4)
輸出為
answer =
6.0750e-07
使用sym
函數(shù)轉(zhuǎn)換后:
answer2 = 1 / sym(1234567) * (3 / 4)
輸出為
answer2 =
3/4938268
該答案為分式形式的準(zhǔn)確解。
注意:在使用sym
函數(shù)進(jìn)行精度保留時(shí),不能將其寫為sym(1/1234567)
,寫成這種形式時(shí)會(huì)優(yōu)先計(jì)算1/1234567再將其轉(zhuǎn)為分式,精度已經(jīng)得到了損失。
1.2 syms函數(shù)介紹
1.2.1 定義不同變量
syms
函數(shù)能夠很快的定義多個(gè)不同的變量,變量之間只需要使用空格隔開就行,形式如下:
syms a b c d
使用whos
命令查看所有變量為
Name?????Size?????Bytes Class?????Attributes
a?????????????1x1????????????8??sym
b?????????????1x1????????????8??sym
c?????????????1x1????????????8??sym
d?????????????1x1????????????8??sym
1.2.2 定義多行符號(hào)
syms
同樣可以定義多行多列的數(shù)據(jù)類型,形式如下
syms a [4 3]
以上代碼定義了一個(gè)4*3的符號(hào),等價(jià)于a=sym('a', [4 3])
,符號(hào)全部存儲(chǔ)在a當(dāng)中,需要使用時(shí)只需要使用諸如a(1,3)
的索引即可。
2. 代換符號(hào)
使用符號(hào)定義了一個(gè)符號(hào)函數(shù)后,往往需要將符號(hào)函數(shù)中的一些符號(hào)代換成其他符號(hào)或者數(shù)值類型,這種情況下一般使用 subs
函數(shù)。
2.1 代換表達(dá)式中的符號(hào)
subs
函數(shù)的一般形式如下
subs(S, old, new)
其參數(shù)的含義是在符號(hào)表達(dá)式 S
中,利用 new
中的符號(hào)或數(shù)值替換 old
中的符號(hào)。
其示例如下
syms a b c x y
f = a * x^2 + b * y + c;%原表達(dá)式
syms m
f1 = subs(f, [x y], [sin(x) log(y)]) %符號(hào)替換符號(hào)
f2 = subs(f, [a b], [2 3]) %數(shù)值替換符號(hào)
f3 = subs(f, a, 1: 4) %多數(shù)值替換符號(hào)
輸出如下:
f1 =
a*sin(x)^2 + c + b*log(y)
f2 =
2*x^2 + c + 3*y
f3 =
[ x^2 + c + b*y, 2*x^2 + c + b*y, 3*x^2 + c + b*y, 4*x^2 + c + b*y]
2.2 控制替換后的精度
使用數(shù)值對(duì)表達(dá)式進(jìn)行了替換后,往往需要對(duì)精度做一定的控制與保證,這個(gè)時(shí)候就需要使用vpa
函數(shù)了。
控制精度的方法有兩種,一是用 digits
函數(shù)+ vpa
函數(shù),一種是直接用 vpa
函數(shù)。
方式一: digits
+vpa
digits
函數(shù)規(guī)定了精度的保留位數(shù) ,默認(rèn)是32位,vpa
函數(shù)對(duì)數(shù)值進(jìn)行計(jì)算。如digits(10)
代表精度保留為有效數(shù)字10位,digits
函數(shù)使用后必須要配合vpa
函數(shù)使用。
例
計(jì)算
π
?
e
2
\pi * e^2
π?e2 的值,保留50位有效數(shù)字。
digits(50); %保留50位精度
y = str2sym('pi * exp(2)'); %將字符串轉(zhuǎn)為sym形式
vpa(y)
輸出如下:
ans =
23.213404357363387236150345896006882480062932649056
有效數(shù)字位數(shù)為50位。
方式二: vpa
vpa
函數(shù)有還有一種格式如下
vpa(E, D)
其中 E
為傳入的要計(jì)算的值, D
為要保留的精度。
例
計(jì)算
f
(
x
)
=
c
o
s
1
+
s
i
n
1
f(x) = cos1+sin1
f(x)=cos1+sin1 的值,保留50位有效數(shù)字。
syms x
f(x) = cos(x) + sin(x);
y = vpa(f(1), 50)
上述代碼計(jì)算 f ( 1 ) f(1) f(1) 的值,設(shè)定精度為50,結(jié)果為
y =
1.3817732906760362240534389290732756033548734814163
3. 其他函數(shù)
3.1 因式分解
符號(hào)表達(dá)式中使用 factor
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行因式分解,調(diào)用格式如下
factor(E)
其中 E
為符號(hào)表達(dá)式.
例
化簡(jiǎn)
f
=
x
3
+
x
2
?
x
?
1
f=x^3+x^2 - x - 1
f=x3+x2?x?1
syms x
f = x^3 + x^2 - x - 1;
f1 = factor(f)
輸出為
f1 =
[ x - 1, x + 1, x + 1]
3.2 展開表達(dá)式
使用 expand
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行展開,調(diào)用格式如下
expand(E)
其中 E
為符號(hào)表達(dá)式.
例
展開函數(shù)
f
=
(
x
+
y
)
4
f=(x + y)^4
f=(x+y)4
syms x y
f= (x + y)^4;
f1 = expand(f)
輸出為
f1 =
x^4 + 4*x^3*y + 6*x^2*y^2 + 4*x*y^3 + y^4
3.3 合并同類項(xiàng)
使用 collect
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行展開,其調(diào)用格式有兩種
collect(E)
將符號(hào)表達(dá)式 E
中各sym
變量前的系數(shù)進(jìn)行合并。
collect(E, v)
將符號(hào)表達(dá)式 E
中的 v
的同冪項(xiàng)系數(shù)進(jìn)行合并。
例
將函數(shù)
f
=
?
a
x
e
?
c
x
+
b
e
?
c
x
f=-axe^{-cx} + be^{-cx}
f=?axe?cx+be?cx的同類項(xiàng)進(jìn)行合并。
注意,該題下如果不指定合并的項(xiàng)數(shù),那么其將不會(huì)進(jìn)行合并,因?yàn)闆]有除了數(shù)值外相同的sym
項(xiàng),比如下面的代碼
syms a b c x
f = -a * x * exp(-c * x) + b * exp(-c * x)
f1 = collect(f)
輸出為
f1 =
(-a*exp(-c*x))*x + b*exp(-c*x)
不能說沒有變化,只能說變了不如沒變。
該題要想合并必須指定合并的項(xiàng),
syms a b c x
f = -a * x * exp(-c * x) + b * exp(-c * x)
f1 = collect(f,exp(-c*x))
輸出為
f1 =
(b - a*x)*exp(-c*x)
3.4 化簡(jiǎn)
使用 simplify
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行化簡(jiǎn),調(diào)用格式如下
simplify(E)
其中 E
為符號(hào)表達(dá)式.
例
化簡(jiǎn)函數(shù)
e
1
=
c
o
s
2
x
+
s
i
n
2
x
e_1= cos^2x + sin^2x
e1?=cos2x+sin2x 和
e
2
=
e
c
?
l
n
(
a
+
b
)
e_2= e^{c * ln(a + b)}
e2?=ec?ln(a+b)
syms x a b c;
e10 = sin(x)^2 + cos(x) ^2;
e1 = simplify(e10);
e20 = exp(c * log(a+ b));
e2 = simplify(e20);
輸出為
e1 =
1
e2 =
(a + b)^c
除此之外,也可用simple
函數(shù)進(jìn)行化簡(jiǎn),simple
會(huì)對(duì)符號(hào)表達(dá)式進(jìn)行不同的嘗試,并返回長度最短的形式。其調(diào)用格式如下:
[R,HOW] = simple(E)
其中 E
為符號(hào)表達(dá)式, R
為化簡(jiǎn)結(jié)果,HOW
為化簡(jiǎn)方法。
3.5 通分
使用 numden
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行通分,調(diào)用格式如下
[N,D] = numden(E)
其中 E
為符號(hào)表達(dá)式, N
為通分后的分子,D
為通分后的分母。
例
對(duì)函數(shù)
f
=
x
k
y
+
y
p
x
f = \frac{x}{ky} + \frac{y}{px}
f=kyx?+pxy? 進(jìn)行通分。
syms k p x y
f = x / ( k * y) + y / ( p * x);
[n, d] = numden(f);
f1 = n / d;
輸出為
f1 =
(p*x^2 + k*y^2)/(k*p*x*y)
3.6 嵌套分解
使用 horner
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行嵌套類型的分解,調(diào)用格式如下
horner(E)
其中 E
為符號(hào)表達(dá)式。
例
將
f
=
?
a
x
4
+
b
x
3
?
c
x
2
+
x
+
d
f = -ax^4+bx^3-cx^2+x+d
f=?ax4+bx3?cx2+x+d 轉(zhuǎn)為嵌套形式的表達(dá)式。
syms a b c d x
f = -a * x^4 + b * x^3 - c * x^2 + x + d;
f1 = horner(f)
輸出為
f1 =
d - x*(x*(c - x*(b - a*x)) - 1)
3.7 求反函數(shù)
使用 finverse
函數(shù)對(duì)符號(hào)表達(dá)式進(jìn)行嵌套類型的分解,調(diào)用格式如下
g = finverse(E, v)
其中 E
為符號(hào)表達(dá)式, v
為指定的自變量,單變量為 x
時(shí) v
可以省略。
例
求函數(shù)
f
=
a
x
+
b
f = ax+b
f=ax+b 的反函數(shù)。
syms x y a b
y = a * x + b;
g = finverse(y)
輸出為
g =
-(b - x)/a
3.8 復(fù)合函數(shù)
使用 compose
函數(shù)對(duì)兩個(gè)符號(hào)表達(dá)式進(jìn)行復(fù)合求解,調(diào)用格式如下
compose(f, g)
當(dāng) f = f ( x ) f = f(x) f=f(x)以及 g = g ( y ) g = g(y) g=g(y)時(shí),返回復(fù)合函數(shù) f ( g ( y ) ) f(g(y)) f(g(y)) 。
compose(f, g, z)
當(dāng) f = f ( x ) f = f(x) f=f(x)以及 g = g ( y ) g = g(y) g=g(y)時(shí),返回復(fù)合函數(shù) f ( g ( z ) ) f(g(z)) f(g(z)) 。文章來源:http://www.zghlxwxcb.cn/news/detail-491734.html
compose(f, g, t, u ,z)
當(dāng) f = f ( t ) f = f(t) f=f(t)以及 g = g ( u ) g = g(u) g=g(u)時(shí),返回復(fù)合函數(shù) f ( g ( z ) ) f(g(z)) f(g(z)) 。文章來源地址http://www.zghlxwxcb.cn/news/detail-491734.html
到了這里,關(guān)于MATLAB 符號(hào)表達(dá)式與運(yùn)算全面詳細(xì)講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!