ch2例题Word文件下载.docx
《ch2例题Word文件下载.docx》由会员分享,可在线阅读,更多相关《ch2例题Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
result_2=solve(Eq,z)
result_2=
1/2/u*(-v+(v^2-4*u*w)^(1/2))
1/2/u*(-v-(v^2-4*u*w)^(1/2))
【例2.1-3】对独立自由符号变量的自动辨认。
symsabxXY
k=sym('
3'
);
%符号常数
z=sym('
c*sqrt(delta)+y*sin(theta)'
%直接定义符号表达式
EXPR=a*z*X+(b*x^2+k)*Y;
findsym(EXPR)
X,Y,a,b,c,delta,theta,x,y
k不是“自由”的,z不是独立的,所以都不被该指令认作自由变量。
(3)
findsym(EXPR,1)
x
(4)
findsym(EXPR,2),findsym(EXPR,3)
x,y
x,y,theta
【例2.1-4】findsym确定自由变量是对整个矩阵进行的。
symsabtuvxy
A=[a+b*x,sin(t)+u;
x*exp(-t),log(y)+v]
findsym(A,1)
A=
[a+b*x,sin(t)+u]
[x*exp(-t),log(y)+v]
【例2.1-5】数据对象及其识别指令的使用。
clear
a=1;
b=2;
c=3;
d=4;
Mn=[a,b;
c,d]
Mc='
[a,b;
c,d]'
Ms=sym(Mc)
Mn=
12
34
Mc=
c,d]
Ms=
[a,b]
[c,d]
SizeMn=size(Mn)
SizeMc=size(Mc)
SizeMs=size(Ms)
SizeMn=
22
SizeMc=
19
SizeMs=
22
CMn=class(Mn)
CMc=class(Mc)
CMs=class(Ms)
CMn=
CMc=
char
CMs=
sym
isa(Mn,'
double'
)
isa(Mc,'
char'
isa(Ms,'
sym'
)
1
1
(5)
whosMnMcMs
NameSizeBytesClassAttributes
Mc1x918char
Mn2x232double
Ms2x2312sym
【例2.2-1】digits,vpa指令的使用。
digits
p0=sym('
(1+sqrt(5))/2'
pr=sym((1+sqrt(5))/2)
%
pd=sym((1+sqrt(5))/2,'
d'
)
e32r=vpa(abs(p0-pr))
e16=vpa(abs(p0-pd),16)
e32d=vpa(abs(p0-pd))
Digits=32
p0=
(1+sqrt(5))/2
pr=
7286977268806824*2^(-52)
pd=
1.6180339887498949025257388711907
e32r=
.543211520368251e-16
e16=
0.
e32d=
.543211520368251e-16
【例2.2-2】简化。
symsx
f=(1/x^3+6/x^2+12/x+8)^(1/3);
g1=simple(f)
g2=simple(g1)
g1=
(2*x+1)/x
g2=
2+1/x
【例2.2-3】对符号矩阵进行特征向量分解。
clearall
symsabcdW
[V,D]=eig([ab;
cd])
[RVD,W]=subexpr([V;
D],W)
V=
[-(1/2*d-1/2*a-1/2*(d^2-2*a*d+a^2+4*b*c)^(1/2))/c,-(1/2*d-1/2*a+1/2*(d^2-2*a*d+a^2+4*b*c)^(1/2))/c]
[1,1]
D=
[1/2*d+1/2*a+1/2*(d^2-2*a*d+a^2+4*b*c)^(1/2),0]
[0,1/2*d+1/2*a-1/2*(d^2-2*a*d+a^2+4*b*c)^(1/2)]
RVD=
[-(1/2*d-1/2*a-1/2*W)/c,-(1/2*d-1/2*a+1/2*W)/c]
[1/2*d+1/2*a+1/2*W,0]
[0,1/2*d+1/2*a-1/2*W]
W=
(d^2-2*a*d+a^2+4*b*c)^(1/2)
数学背景:
设A为n阶方阵,若存在数λ和非零的n维列向量x,使得Ax=λx或(A-λI)x=0,则称数λ为矩阵A的特征值,称x为矩阵A对应于特征值λ的特征向量.
【例2.2-4】用简单算例演示subs的置换规则。
(1)产生符号函数
symsax;
f=a*sin(x)+5
f=
a*sin(x)+5
(2)符号表达式置换
f1=subs(f,'
sin(x)'
sym('
y'
))%<
2>
class(f1)
f1=
a*y+5
(3)a被双精度数字置换,x被符号数字置换
f2=subs(f,{a,x},{2,sym('
pi/3'
)})%<
3>
class(f2)
f2=
3^(1/2)+5
(4)a,x均被双精度数值取代
f3=subs(f,{a,x},{2,pi/3})%<
4>
class(f3)
f3=
6.7321
double
(5)x被数值数组取代
f4=subs(subs(f,a,2),x,0:
pi/6:
pi)%<
5>
class(f4)
f4=
5.00006.00006.73217.00006.73216.00005.0000
(6)a,x被同样大小的数值数组取代,这时执行的是数组乘
f5=subs(f,{a,x},{0:
6,0:
pi})%<
6>
class(f5)
f5=
5.00005.50006.73218.00008.46417.50005.0000
表达式能和符号变量同时包含在old中被置换,如
subs(f,{a,sin(x)},{2,sym('
)})
2*y+5
【例2.3-1】试求。
symsxk
Lim_f=limit((1-1/x)^(k*x),x,inf)
Lim_f=
exp(-k)
【例2.3-2】求求,,。
symsatx;
f=[a,t^3;
t*cos(x),log(x)];
df=diff(f)%求矩阵f对x的导数
dfdt2=diff(f,t,2)%求矩阵f对t的二阶导数
dfdxdt=diff(diff(f,x),t)%求二阶混合导数
df=
[0,0]
[-t*sin(x),1/x]
dfdt2=
[0,6*t]
dfdxdt=
[-sin(x),0]
结论:
求导运算是对矩阵元素逐个进行的
【例2.3-3】求的Jacobian矩阵。
symsx1x2;
f=[x1*exp(x2);
x2;
cos(x1)*sin(x2)];
v=[x1x2];
fjac=jacobian(f,v)
fjac=
[exp(x2),x1*exp(x2)]
[0,1]
[-sin(x1)*sin(x2),cos(x1)*cos(x2)]
【例2.3-4】,求,。
需要分区间求导
(1)对于x≥0,据导数定义求导
symsdpositive
f_p=sin(x);
%x≥0时,f(x)改写而成
df_p=limit((subs(f_p,x,x+d)-f_p)/d,d,0)%求x>
0区间的导数<
df_p0=limit((subs(f_p,x,d)-subs(f_p,x,0))/d,d,0)%x=0+的右导数<
df_p=
cos(x)
df_p0=
1
(2)对于x≤0,据导数定义求导
f_n=sin(-x);
%x≤0时,f(x)改写而成
df_n=limit((f_n-subs(f_n,x,x-d))/d,d,0)%求x<
0区间的导数<
7>
df_n0=limit((subs(f_n,x,0)-subs(f_n,x,-d))/d,d,0)%x=0-的左导数<
8>
df_n=
-cos(x)
df_n0=
-1
(3)直接利用diff求导
f=sin(abs(x));
dfdx=diff(f,x) %只能得到x≠0时的导函数
dfdx=
cos(abs(x))*abs(1,x)%abs(1,x)表示abs(x)的一阶导数,只在x≠0时有值,等价于sign(x).用abs(1,sym('
x'
))可观察
(4)图形观察
xn=-3/2*pi:
pi/50:
0;
xp=0:
3/2*pi;
xnp=[xn,xp(2:
end)];
holdon
plot(xnp,subs(f,x,xnp),'
k'
'
LineWidth'
2.5)%<
13>
plot(xn,subs(df_n,x,xn),'
--r'
2.5)
plot(xp,subs(df_p,x,xp),'
:
r'
2.5)
legend(char(f),char(df_n),char(df_p),'
Location'
N