matlab radsimp,[转载]MATLAB学习笔记(八)
符號運算
符號運算分為以下幾類:
符號表達式和符號矩陣的操作整體定義為
符號微積分
符號線性方程
符號微分方程
A、符號變量、符號表達式和符號方程的分解
一、 生成符號變量要使用sym和syms:
使用sym函數可以定義符號表達式,此時有兩種定義方法:
1、使用sym函數將表達式中的每一個變量定義為符號變量;
2、使用sym函數將表達式整體定義為符號變量(但并沒有將式子中的變量也定義為符號變量);
方式一的應用舉例:
>> 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
方式二的應用舉例:
>>
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函數定義符號變量和符號表達式
Syms函數的功能比sym函數的功能更為強大,它可以一次創建多個符號變量;而且,使用的格式很簡單:(即將sym函數進行系統化,對變量進行統一的轉化)
Syms var1 var2 var3
………
應用實例:
>> 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
三、符號方程的生成
方程與函數的區別在于一個有數字和變量組成的表達式,而方程則是由函數和等號組成的等式;
應用實例:
>> %符號方程的生成
>> %使用是sym函數生成符號方程
>>
fch=sym('sin(x)+cos(x)=1')
fch =
cos(x) + sin(x) =
1
B、符號變量的基本操作
一、findsym函數用于尋找符號變量
Fundsym函數用于尋找一個變量表達式中存在的符號變量,
實例應用:
>> 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
二、任意精度的符號表達式
MATLAB提高了digits和vpaliang函數來實現任意精度的符號運算
(1)、digits函數設定所使用的精度
單獨使用digits命令將在‘命令’窗口中顯示當前設定的精度值;
Digits(D)命令用于設定數值的精確度為D;
D=digits命令也是用于“命令”窗口中返回當前設定的數值精度;
(2)、vpa函數進行可控精度運算
R=vpa(s)命令用于將顯示符號表達式s在當前精度D下的值,其中D是使用digits函數設定的精度值
Vpa(S,D)命令用于顯示s值在當前精度D下的值;
應用實例:
>> 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
三、數值型變量與符號型變量的轉換形式
對于任意數值型變量t,使用sym函數可以將其轉換為4種形式的符號變量,分別為有理數形式:sym(t)或、sym(t,‘r’)
、浮點型sym(t,‘f’)
、指數型sym(t,‘e’)
、數值精度形式sym(t,‘d’)
應用實例:
>> t=0.01
t
=
0.0100
>> sym(t)
%有理數形式
ans =
1/100
>>
sym(t,'r')
%有理數形式
ans =
1/100
>>
sym(t,'f')
%浮點型形式
ans =
5764607523034235/576460752303423488
>>
sym(t,'e') %指數型形式
ans =
eps/1067 +
1/100
>>
sym(t,'d')
%數值精度形式
ans =
0.01000000000000000020816681711721685132943093776702880859375
使用如上所述的方法可以將數值型矩陣轉換符號型矩陣,注意此時只能將其轉換為有理數形式;
>> 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)
%將矩陣中的每一個元素轉換為有理數形式
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、符號表達式的操作
操作共包括:四則運算、合并同類型、多項式分解和簡化
一、四則運算:
符號表達式的四則運算與通常的算術運算式一樣,可以進行四則運算:
實例應用:
>> 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))
二、合并同類項
在MATlab中,使用collect函數來合并同類項,其使用格式如下:
Collect(S,V)命令用于將符號矩陣S中所有同類項合并,并以v為符號變量輸出;
Collect(s)命令使用findsym函數規定的默認變量代替上式中的V;
應用實例:
>> syms x y
>>
collect(x^2*y+y*x-x^2-2*x)%此處默認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函數進行多項式的因式分解
應用實例:
>> 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
四、符號多項式的簡化
在MATLAB 7語言中,使用simplify函數和simple函數進行符號表達式的簡化;
A、simplify函數的使用:
Simplify(S)命令將符號表達式S中的每一個元素進行簡化,缺點是:即使多次使用simplify函數也不一定得道最簡形式
用simple函數進行表達式簡化得到的結果要比simplify函數得到的結果更加簡化和合理,使用格式如下:
Simple(S)命令用于多種代數簡化方法對符號表達式S進行簡化,并顯示其中最簡化的結果;
[R,how]=simple(S)命令在返回最簡單的結果的同時,返回一個描述簡化方法的字符串how
應用實例:
>> 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函數用于替換求值
使用subs函數可以將符號表達式中的字符型變量用數值型變量替換,格式如下:
Subs(s)命令用于將符號表達式中的所有符號變量用調用函數中的值或是MATLAB 7工作區間的值代替;
Subs(s,new)命令將符號表達式s中的自由符號變量用數值型變量或表達式new替換;
Subs(s,old,new)命令將符號變量s中的符號變量old用數值型變量或表達式new替換
應用實例:
>> 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) %符號表達式f中系統默認的符號變量
ans
=
x
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的matlab radsimp,[转载]MATLAB学习笔记(八)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java xml dom getelem
- 下一篇: matlab实验符号计算答案,实验五ma