Matlab70符号计算 上机实验.docx
《Matlab70符号计算 上机实验.docx》由会员分享,可在线阅读,更多相关《Matlab70符号计算 上机实验.docx(23页珍藏版)》请在冰豆网上搜索。
![Matlab70符号计算 上机实验.docx](https://file1.bdocx.com/fileroot1/2022-12/16/fc0e53af-9af8-48cd-bcdc-e80bbc71bea4/fc0e53af-9af8-48cd-bcdc-e80bbc71bea41.gif)
Matlab70符号计算上机实验
Matlab7.0符号计算
实验报告
⒈目的
本实验旨在向学生介绍一种解决专业问题的快速有效且具有强大功能的科学与工程计算软件。
通过本实验,应使学生掌握的内容是:
MATLAB7.0符号对象的创建和使用,MATLAB7.0任意精度的计算,MATLAB7.0符号表达式的化简和替换,MATLAB7.0符号矩阵计算,MATLAB7.0符号微积分,MATLAB7.0积分变换,MATLAB7.0符号代数方程和符号微分方程求解。
该实验主要为上机实验,要求学生按要求上机实现相关的程序的设计,自己动手编写程序并验证程序的正确性。
⒉实验任务分解
通过一些实例初步掌握MATLAB7.0的基本符号计算功能和应用。
实验任务可分解为:
MATLAB7.0符号计算的基础,MATLAB7.0符号计算在高等数学中的应用,MATLAB7.0符号方程(组)求解和符号矩阵计算。
⒊实验环境介绍
实验一MATLAB7.0符号计算的基础
实验目的:
1.掌握MATLAB7.0符号对象的创建和使用;
2.掌握MATLAB7.0任意精度的计算;
3.掌握MATLAB7.0符号表达式的化简和替换。
实验要求:
给出程序和实验结果。
实验题目与结果:
一、计算符号表达式
在
处的值,并将结果设置为以下五种精度,即分别为小数点之后1位、2位、10位、20位、50位有效数字;
>>symsx;
x=pi-1
f=x+cos(x)-sin(x);
vpa(f,1)
vpa(f,2)
vpa(f,10)
vpa(f,20)
vpa(f,50)
x=
2.1416
ans=
.8
ans=
.76
ans=
.7598193629
ans=
.75981936291375673509
ans=
.75981936291375673508952104384661652147769927978516
二、设
为符号变量,
,
,试进行如下运算。
(1)
,
(2)
,
(3)对
进行因式分解,
(4)求
的反函数。
>>symsx;
f1=x^4+2*x^2+1;
f2=x^3+6*x^2+3*x+5;
f1+f2
f1*f2
factor(f1)
finverse(f2)
ans=
x^4+8*x^2+6+x^3+3*x
ans=
(x^4+2*x^2+1)*(x^3+6*x^2+3*x+5)
ans=
(x^2+1)^2
Warning:
finverse(x^3+6*x^2+3*x+5)isnotunique.
>Insym.finverseat43
ans=
1/2*(-60+4*x+4*(117-30*x+x^2)^(1/2))^(1/3)+6/(-60+4*x+4*(117-30*x+x^2)^(1/2))^(1/3)-2
三、指出下面各条语句的输出结果
>>f=sym('2*u');
>>subs(f,'u',2)
>>f2=subs(f,'u','u+2')
>>a=3;
>>subs(f2,'u',a+2)
>>subs(f2,'u','a+2')
>>symsxy
>>f3=subs(f,'u',x+y)
>>subs(f3,[x,y],[1,2])
>>subs(f3,[x,y],[x+y,x+y])
>>f=sym('2*u');
subs(f,'u',2)
f2=subs(f,'u','u+2')
a=3;
subs(f2,'u',a+2)
subs(f2,'u','a+2')
symsxy
f3=subs(f,'u',x+y)
subs(f3,[x,y],[1,2])
subs(f3,[x,y],[x+y,x+y])
ans=
4
f2=
2*(u+2)
ans=
14
ans=
2*((a+2)+2)
f3=
2*x+2*y
ans=
6
ans=
6*x+4*y
四、简化
>>symsx;
f1=[x^(-3)+6*x^(-2)+12*x^(-1)+8]^(1/3);
simple(f1)
simplify:
((2*x+1)^3/x^3)^(1/3)
radsimp:
(2*x+1)/x
combine(trig):
((1+6*x+12*x^2+8*x^3)/x^3)^(1/3)
factor:
((2*x+1)^3/x^3)^(1/3)
expand:
(1/x^3+6/x^2+12/x+8)^(1/3)
combine:
(1/x^3+6/x^2+12/x+8)^(1/3)
convert(exp):
(1/x^3+6/x^2+12/x+8)^(1/3)
convert(sincos):
(1/x^3+6/x^2+12/x+8)^(1/3)
convert(tan):
(1/x^3+6/x^2+12/x+8)^(1/3)
collect(x):
(1/x^3+6/x^2+12/x+8)^(1/3)
mwcos2sin:
(1/x^3+6/x^2+12/x+8)^(1/3)
ans=
(2*x+1)/x
五、设a、b定义如下,试上机输出factor(a)和factor(b)的结果,并指出哪个结果才是12345678901234567890的因式分解,为什么?
a=sym('12345678901234567890')
b=sym(12345678901234567890)
y1=factor(a)
y2=factor(b)
y1=
(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)
y2=
(2)^11*(7)*(7324703)*(117570121)
第一种正确
>>a=sym('12345678901234567890');
b=sym(12345678901234567890);
y1=factor(a)
y2=factor(b)
y1=
(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)
y2=
(2)^11*(7)*(7324703)*(117570121)
六、替换函数subs的使用。
(1)试指出下面程序中的f1、f2、f3、f4、f5的值。
symsax;
f=a*sin(x)+5;
f1=subs(f,'sin(x)',sym('y'))
f2=subs(f,{a,x},{2,sym(pi/3)})
f3=subs(f,{a,x},{2,pi/3})
f4=subs(subs(f,a,2),x,0:
pi/6:
pi)
f5=subs(f,{a,x},{0:
6,0:
pi/6:
pi})
>>symsax;
f=a*sin(x)+5;
f1=subs(f,'sin(x)',sym('y'))
f2=subs(f,{a,x},{2,sym(pi/3)})
f3=subs(f,{a,x},{2,pi/3})
f4=subs(subs(f,a,2),x,0:
pi/6:
pi)
f5=subs(f,{a,x},{0:
6,0:
pi/6:
pi})
f1=
a*y+5
f2=
3^(1/2)+5
f3=
6.7321
f4=
Columns1through4
5.00006.00006.73217.0000
Columns5through7
6.73216.00005.0000
f5=
Columns1through4
5.00005.50006.73218.0000
Columns5through7
8.46417.50005.0000
(2)试指出下面替换的结果,并说明理由。
>>symsxy;f=2*x+y;
>>subs(f,{x,y},{x+y,x-y})
>>symsxy;f=2*x+y;
subs(f,{x,y},{x+y,x-y})
ans=
5*x-3*y
因为R=subs(S,Old,New)表示用新符号变量New代替原来的符号表达式S中的变量Old。
七、创建符号变量有几种方法?
答:
两种
Sym()
Syms
八、下面三种表示方法有什么不同的含义?
(1)f=3*x^2+5*x+2
(2)f='3*x^2+5*x+2'
(3)x=sym('x')
f=3*x^2+5*x+2
答:
(1)定义了x后将3*x^2+5*x+2的数值运算结果赋值给f
(2)表示将字符串‘3*x^2+5*x+2’赋值给f
(3)表示x是符号变量,f=3*x^2+5*x+2是符号函数,所以f也是符号变量
九、用符号计算验证三角等式:
sin
(1)cos
(2)-cos
(1)sin
(2)=sin(1-2)
>>symsphi1phi2;
y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2))
y=
-sin(-phi1+phi2)
十、因式分解:
>>symsx;
f=x^4-5*x^3+5*x^2+5*x-6;
factor(f)
ans=
(x-1)*(x-2)*(x-3)*(x+1)
实验二MATLAB7.0符号计算在高等数学中的应用
实验目的:
1.掌握MATLAB7.0符号计算在极限中的应用;
2.掌握MATLAB7.0符号计算在微分、积分中的应用;
3.掌握MATLAB7.0符号计算在级数求和以及泰勒级数中的应用。
实验要求:
给出程序和实验结果。
实验内容与结果:
一、求
在
上的定积分;
>>symsx;
f=sin(x)+x;
R=int(f,x,0,8)
R=
-cos(8)+33
二、求符号表达式
的5次微分;
>>symsx;
f=sin(x)+x^5;
diff(f,'x',5)
ans=
cos(x)+120
三、计算和
lnx表示成log(x)
lgx表示成log10(x)
>>symsxhn;
L=[log(x+h)-log(x)]/h;
M=(1-x/n)^n;
limit(L,h,0)
limit(M,n,inf)
ans=
1/x
ans=
exp(-x)
四、1计算级数
及其前100项的部分和;
>>symsn;
S=1/n^2;
s1=symsum(S,1,inf)
s2=symsum(S,1,100)
s1=
1/6*pi^2
s2=
158********330378*********28517553859702383498543709859889432834803818131090369901/972186144434381030589657976672623144161975583995746241782720354705517986165248000
2计算函数级数
>>symsnx;
S=x/n^2;
s1=symsum(S,n,1,inf)
s1=
1/6*x*pi^2
五、
(1)设
求复合函数f(g(z));
(2)设
求复合函数f(g(z))。
(1)
>>symsuytxz;
f1=x^2/1+u;
f2=cos(y+2*t);
compose(f1,f2,x,y,z)
ans=
cos(z+2*t)^2+u
(2)
>>symsuytxz;
f1=x^2/1+u;
f2=cos(y+2*t);
compose(f1,f2,u,t,z)
ans=
x^2+cos(y+2*z)
六、计算sin(t)在t=0处的taylor级数、Fourier变换和Laplace变换。
>>symstws;
f=sin(t);
s1=taylor(f)
fw=fourier(f,t,w)
fs=laplace(f,t,s)
s1=
t-1/6*t^3+1/120*t^5
fw=
i*pi*(dirac(w+1)-dirac(w-1))
fs=
1/(s^2+1)
七、计算
的
和
。
>>symsxy;
z=y*x+3*y^2*x+2*y^3;
a=diff(z,y)
b=diff(a,x)
a=
x+6*y*x+6*y^2
b=
1+6*y
八、因式分解:
>>symsx;
f=x^4-5*x^3+5*x^2+5*x-6;
R=factor(f)
R=
(x-1)*(x-2)*(x-3)*(x+1)
九符号函数绘图法绘制函数x=sin(3t)cos(t),y=sin(3t)sin(t)的图形,t的变化范围为[0,2]。
>>symst;
x=sin(3*t)*cos(t);
y=sin(3*t)*sin(t);
ezplot(x,y,[0,2*pi])
十、
,用符号微分求df/dx。
>>symsax;
f=[a,x^2,1/x;exp(a*x),log(x),sin(x)];
diff(f,x)
ans=
[0,2*x,-1/x^2]
[a*exp(a*x),1/x,cos(x)]
实验三MATLAB7.0符号方程(组)求解和符号矩阵计算
实验目的:
1.掌握MATLAB7.0符号代数方程和符号代数方程组求解;
2.掌握MATLAB7.0符号符号微分方程和符号微分方程组求解;
3.掌握MATLAB7.0符号矩阵计算。
实验要求:
给出程序和实验结果。
实验题目与结果:
一、使用sym函数生成如下符号矩阵,
,
,试对这两个符号矩阵分别进行如下操作。
(1)
(2)
(3)求
的行列式
(4)求
的逆
(5)求
的秩
(6)求
>>symsx;
a=sym('[1/x,1/(x+1);1/(x+2),1/(x+3)]');
b=sym('[x,1;x+2,0]');
s1=a-b
s2=a*b
s3=det(a)
s4=inv(b)
s5=rank(a)
s6=a^3
s1=
[1/x-x,1/(x+1)-1]
[1/(x+2)-x-2,1/(x+3)]
s2=
[1+1/(x+1)*(x+2),1/x]
[1/(x+2)*x+1/(x+3)*(x+2),1/(x+2)]
s3=
2/x/(x+3)/(x+1)/(x+2)
s4=
[0,1/(x+2)]
[1,-1/(x+2)*x]
s5=
2
s6=
[1/x*(1/x^2+1/(x+1)/(x+2))+1/(x+1)*(1/(x+2)/x+1/(x+3)/(x+2)),1/x*(1/x/(x+1)+1/(x+1)/(x+3))+1/(x+1)*(1/(x+1)/(x+2)+1/(x+3)^2)]
[1/(x+2)*(1/x^2+1/(x+1)/(x+2))+1/(x+3)*(1/(x+2)/x+1/(x+3)/(x+2)),1/(x+2)*(1/x/(x+1)+1/(x+1)/(x+3))+1/(x+3)*(1/(x+1)/(x+2)+1/(x+3)^2)]
二、求解非线性方程组
>>S=solve('x-0.7*sin(x)-0.2*cos(y)=0','y-0.7*cos(x)-0.2*sin(y)=0','x','y')
S.x
S.y
S=
x:
[1x1sym]
y:
[1x1sym]
ans=
.44415725748356642278916008786253
ans=
.77152736448567154642848671505449
三、已知
,求该方程的解。
>>a=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=1');
>>sy=simple(a)
sy=
exp(-t)*(2*sin(t)+cos(t))
>>expand(sy)
ans=
2/exp(t)*sin(t)+1/exp(t)*cos(t)
四、用符号函数法求解方程at2+b*t+c=0。
>>r=solve('a*t^2+b*t+c=0','t')
r=
1/2/a*(-b+(b^2-4*a*c)^(1/2))
1/2/a*(-b-(b^2-4*a*c)^(1/2))
五、用符号计算验证三角等式:
sin
(1)cos
(2)-cos
(1)sin
(2)=sin(1-2)
symsphi1phi2;
y=simple(sin(p1)*cos(p2)-cos(p1)*sin(p2))
y=
-sin(-p1+p2)
>>z=sin(p1-p2)
z=
-sin(-p1+p2)
六、求矩阵
的行列式值、逆和特征根。
symsa11a12a21a22;
A=[a11,a12;a21,a22]
A=
[a11,a12]
[a21,a22]
>>AD=det(A)
AD=
a11*a22-a12*a21
AI=inv(A)
AI=
[a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)]
[-a21/(a11*a22-a12*a21),a11/(a11*a22-a12*a21)]
AE=eig(A)
AE=
1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)
1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)
七、
,用符号微分求df/dx。
symsax;
f=[a,x^2,1/x;exp(a*x),log(x),sin(x)];
df=diff(f)
df=
[0,2*x,-1/x^2]
[a*exp(a*x),1/x,cos(x)]
八、绘制极坐标下sin(3*t)*cos(t)的图形。
symst;
ezpolar(sin(3*t)*cos(t))
九、求代数方程组
关于x,y的解。
>>symsxy;
>>S=solve('a*x^2+b*y+c=0','b*x+c=0','x','y');
>>disp('S.x')
S.x
>>disp(S.x)
-c/b
>>disp('S.y')
S.y
>>disp(S.y)
-c*(a*c+b^2)/b^3
十、求解微分方程(组)
1、
>>symsxy;
>>dsolve('Dy-a*x=0','x')
ans=
1/2*a*x^2+C1
2、
>>symsft;
>>dsolve('Df-f-sin(t)=0','t')
ans=
-1/2*cos(t)-1/2*sin(t)+exp(t)*C1
3、
>>symsxy;
>>dsolve('Dy^2+y^2-1=0','x')
ans=
1
-1
sin(x-C1)
-sin(x-C1)
4、
>>symsxy;
>>dsolve('Dy=a*y','y(0)=b','x')
ans=
b*exp(a*x)
5、
>>symsaxy;
>>dsolve('D2y=-a^2*y','y(0)=1,Dy(pi/a)=0','x')
ans=
cos(a*x)
6、
>>symsxyt;
>>dsolve('Dx=y','Dy=-x','x','y','t')
ans=
x:
[1x1sym]
y:
[1x1sym]
7、
symsxy;
dsolve('Dy^2+y^2=1','y(0)=0','x')
ans=
sin(x)
-sin(x)