matlab radsimp,[转载]MATLAB学习笔记(八)
符號運(yùn)算
符號運(yùn)算分為以下幾類:
符號表達(dá)式和符號矩陣的操作整體定義為
符號微積分
符號線性方程
符號微分方程
A、符號變量、符號表達(dá)式和符號方程的分解
一、 生成符號變量要使用sym和syms:
使用sym函數(shù)可以定義符號表達(dá)式,此時(shí)有兩種定義方法:
1、使用sym函數(shù)將表達(dá)式中的每一個(gè)變量定義為符號變量;
2、使用sym函數(shù)將表達(dá)式整體定義為符號變量(但并沒有將式子中的變量也定義為符號變量);
方式一的應(yīng)用舉例:
>> a=sym('a');
>>
b=sym('b');
>>
c=sym('c');
>>
x=sym('x');
>> f=a*x^2+b*c+c
f
=
a*x^2 + c +
b*c
方式二的應(yīng)用舉例:
>>
f=sym('a*x^2+b*c+c')
f
=
a*x^2 + c +
b*c
>>
g=f^2+4*f-2
g
=
4*c + 4*b*c + 4*a*x^2
+ (a*x^2 + c + b*c)^2 - 2
一、使用syms函數(shù)定義符號變量和符號表達(dá)式
Syms函數(shù)的功能比sym函數(shù)的功能更為強(qiáng)大,它可以一次創(chuàng)建多個(gè)符號變量;而且,使用的格式很簡單:(即將sym函數(shù)進(jìn)行系統(tǒng)化,對變量進(jìn)行統(tǒng)一的轉(zhuǎn)化)
Syms var1 var2 var3
………
應(yīng)用實(shí)例:
>> syms a b c x
>>
f=sym('a*x^2+b*x+c')
f
=
a*x^2 + b*x +
c
>>
g=f^2+4*f-2
g
=
4*c + 4*b*x + 4*a*x^2
+ (a*x^2 + b*x + c)^2 - 2
三、符號方程的生成
方程與函數(shù)的區(qū)別在于一個(gè)有數(shù)字和變量組成的表達(dá)式,而方程則是由函數(shù)和等號組成的等式;
應(yīng)用實(shí)例:
>> %符號方程的生成
>> %使用是sym函數(shù)生成符號方程
>>
fch=sym('sin(x)+cos(x)=1')
fch =
cos(x) + sin(x) =
1
B、符號變量的基本操作
一、findsym函數(shù)用于尋找符號變量
Fundsym函數(shù)用于尋找一個(gè)變量表達(dá)式中存在的符號變量,
實(shí)例應(yīng)用:
>> syms x n
>> f=sym('x^n')
f
=
x^n
>>
syms a b t
>> g=sym('a*t+b')
g
=
b
+ a*t
>>
findsym(f)
ans
=
n,x
>> findsym(g)
ans
=
a,b,t
二、任意精度的符號表達(dá)式
MATLAB提高了digits和vpaliang函數(shù)來實(shí)現(xiàn)任意精度的符號運(yùn)算
(1)、digits函數(shù)設(shè)定所使用的精度
單獨(dú)使用digits命令將在‘命令’窗口中顯示當(dāng)前設(shè)定的精度值;
Digits(D)命令用于設(shè)定數(shù)值的精確度為D;
D=digits命令也是用于“命令”窗口中返回當(dāng)前設(shè)定的數(shù)值精度;
(2)、vpa函數(shù)進(jìn)行可控精度運(yùn)算
R=vpa(s)命令用于將顯示符號表達(dá)式s在當(dāng)前精度D下的值,其中D是使用digits函數(shù)設(shè)定的精度值
Vpa(S,D)命令用于顯示s值在當(dāng)前精度D下的值;
應(yīng)用實(shí)例:
>> digits
Digits = 32
>>
a=vpa(pi)
a
=
3.1415926535897931159979634685442
>>
b=vpa(pi,100)
b
=
3.141592653589793115997963468544185161590576171875
>>
digits(100)
>> b=vpa(pi,100)
b
=
3.141592653589793115997963468544185161590576171875
三、數(shù)值型變量與符號型變量的轉(zhuǎn)換形式
對于任意數(shù)值型變量t,使用sym函數(shù)可以將其轉(zhuǎn)換為4種形式的符號變量,分別為有理數(shù)形式:sym(t)或、sym(t,‘r’)
、浮點(diǎn)型sym(t,‘f’)
、指數(shù)型sym(t,‘e’)
、數(shù)值精度形式sym(t,‘d’)
應(yīng)用實(shí)例:
>> t=0.01
t
=
0.0100
>> sym(t)
%有理數(shù)形式
ans =
1/100
>>
sym(t,'r')
%有理數(shù)形式
ans =
1/100
>>
sym(t,'f')
%浮點(diǎn)型形式
ans =
5764607523034235/576460752303423488
>>
sym(t,'e') %指數(shù)型形式
ans =
eps/1067 +
1/100
>>
sym(t,'d')
%數(shù)值精度形式
ans =
0.01000000000000000020816681711721685132943093776702880859375
使用如上所述的方法可以將數(shù)值型矩陣轉(zhuǎn)換符號型矩陣,注意此時(shí)只能將其轉(zhuǎn)換為有理數(shù)形式;
>> A=hilb(4)
A
=
1.0000
0.5000
0.3333
0.2500
0.5000
0.3333
0.2500
0.2000
0.3333
0.2500
0.2000
0.1667
0.2500
0.2000
0.1667
0.1429
>> A=sym(A)
%將矩陣中的每一個(gè)元素轉(zhuǎn)換為有理數(shù)形式
A
=
[ 1,
1/2, 1/3, 1/4]
[ 1/2,
1/3, 1/4, 1/5]
[ 1/3,
1/4, 1/5, 1/6]
[ 1/4,
1/5, 1/6, 1/7]
C、符號表達(dá)式的操作
操作共包括:四則運(yùn)算、合并同類型、多項(xiàng)式分解和簡化
一、四則運(yùn)算:
符號表達(dá)式的四則運(yùn)算與通常的算術(shù)運(yùn)算式一樣,可以進(jìn)行四則運(yùn)算:
實(shí)例應(yīng)用:
>> syms x y a b
>>
fun1=sin(x)+cos(x)
fun1 =
cos(x) +
sin(x)
>> fun2=a+b
fun2
=
a
+ b
>>
fun1+fun2
ans =
a
+ b + cos(x) + sin(x)
>>
fun1*fun2
ans =
(a
+ b)*(cos(x) + sin(x))
二、合并同類項(xiàng)
在MATlab中,使用collect函數(shù)來合并同類項(xiàng),其使用格式如下:
Collect(S,V)命令用于將符號矩陣S中所有同類項(xiàng)合并,并以v為符號變量輸出;
Collect(s)命令使用findsym函數(shù)規(guī)定的默認(rèn)變量代替上式中的V;
應(yīng)用實(shí)例:
>> syms x y
>>
collect(x^2*y+y*x-x^2-2*x)%此處默認(rèn)x為符號變量
ans =
(y
- 1)*x^2 + (y - 2)*x
>>
collect(x^2*y+y*x-x^2-2*x,y)%此處修改為以y為符號變量
ans =
(x^2 + x)*y - x^2 -
2*x
>>
f=-1/4*x*exp(-2*x)+3/16*exp(-2*x);
>> collect(f)
ans =
(-1/(4*exp(2*x)))*x +
3/(16*exp(2*x))
使用horner函數(shù)進(jìn)行多項(xiàng)式的因式分解
應(yīng)用實(shí)例:
>> syms x
>>
fun1=3*x^3+5*x^2-14*x-26
fun1 =
3*x^3 + 5*x^2 - 14*x -
26
>>
horner(fun1)
ans = x*(x*(3*x + 5) -
14) - 26
四、符號多項(xiàng)式的簡化
在MATLAB 7語言中,使用simplify函數(shù)和simple函數(shù)進(jìn)行符號表達(dá)式的簡化;
A、simplify函數(shù)的使用:
Simplify(S)命令將符號表達(dá)式S中的每一個(gè)元素進(jìn)行簡化,缺點(diǎn)是:即使多次使用simplify函數(shù)也不一定得道最簡形式
用simple函數(shù)進(jìn)行表達(dá)式簡化得到的結(jié)果要比simplify函數(shù)得到的結(jié)果更加簡化和合理,使用格式如下:
Simple(S)命令用于多種代數(shù)簡化方法對符號表達(dá)式S進(jìn)行簡化,并顯示其中最簡化的結(jié)果;
[R,how]=simple(S)命令在返回最簡單的結(jié)果的同時(shí),返回一個(gè)描述簡化方法的字符串how
應(yīng)用實(shí)例:
>> syms x
>>
fun1=(1/x+5/x^2+9/x+2)^(1/4)
fun1 =
(10/x + 5/x^2 +
2)^(1/4)
>>
sfy1=simplify(fun1)
sfy1 =
((10*x + 5)/x^2 +
2)^(1/4)
>>
sfy2=simplify(sfy1)
sfy2 =
((10*x + 5)/x^2 +
2)^(1/4)
>>
simplify(sin(x)^2+cos(x)^2)
ans =
1
>>
s=2*cos(x)^2-sin(x)^2;
>> simple(s)
simplify:
2
- 3*sin(x)^2
radsimp:
2*cos(x)^2 -
sin(x)^2
simplify(100):
3*cos(x)^2 -
1
combine(sincos):
(3*cos(2*x))/2 +
1/2
combine(sinhcosh):
2*cos(x)^2 -
sin(x)^2
combine(ln):
2*cos(x)^2 -
sin(x)^2
factor:
2*cos(x)^2 -
sin(x)^2
expand:
2*cos(x)^2 -
sin(x)^2
combine:
2*cos(x)^2 -
sin(x)^2
rewrite(exp):
2*((1/exp(x*i))/2 +
exp(x*i)/2)^2 - (1/2*i*exp(i*x) - 1/2*i*exp(-i*x))^2
rewrite(sincos):
2*cos(x)^2 -
sin(x)^2
rewrite(sinhcosh):
2*cosh(-x*i)^2 +
sinh(-x*i)^2
rewrite(tan):
(2*(tan(x/2)^2 -
1)^2)/(tan(x/2)^2 + 1)^2 - (4*tan(x/2)^2)/(tan(x/2)^2 +
1)^2
mwcos2sin:
2
- 3*sin(x)^2
collect(x):
2*cos(x)^2 -
sin(x)^2
ans =
2
- 3*sin(x)^2
>>
[r,how]=simple(s)
r
=
2
- 3*sin(x)^2
how =
simplify
C、subs函數(shù)用于替換求值
使用subs函數(shù)可以將符號表達(dá)式中的字符型變量用數(shù)值型變量替換,格式如下:
Subs(s)命令用于將符號表達(dá)式中的所有符號變量用調(diào)用函數(shù)中的值或是MATLAB 7工作區(qū)間的值代替;
Subs(s,new)命令將符號表達(dá)式s中的自由符號變量用數(shù)值型變量或表達(dá)式new替換;
Subs(s,old,new)命令將符號變量s中的符號變量old用數(shù)值型變量或表達(dá)式new替換
應(yīng)用實(shí)例:
>> syms x y
>>
f=x^2*y+3*x*sqrt(y)
f
=
x^2*y +
3*x*y^(1/2)
>>
subs(f,x,5)
ans =
25*y +
15*y^(1/2)
>>
subs(f)
ans =
x^2*y +
3*x*y^(1/2)
>>
subs(f,y,5)
ans =
5*x^2 +
3*5^(1/2)*x
>> findsym(f,1) %符號表達(dá)式f中系統(tǒng)默認(rèn)的符號變量
ans
=
x
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的matlab radsimp,[转载]MATLAB学习笔记(八)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java xml dom getelem
- 下一篇: matlab实验符号计算答案,实验五ma