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位有效数字;
function y=f(x)
y=x+cos(x)-sin(x)
x=pi-1;
>> y=f(x);
y =
0.7598
>> y1=vpa(y,1)
y1 =
.8
>> y2=vpa(y,2)
y2 =
.76
>> y3=vpa(y,10)
y3 =
.7598193629
>> y4=vpa(y,20)
y4 =
.75981936291375673509
>> y5=vpa(y,50)
y5 =
.75981936291375673508952104384661652147769927978516
二、设为符号变量,,,试进行如下运算。
(1),
(2),
(3)对进行因式分解,
(4)求的反函数。
>> syms f g x;
f=x^4+2*x^2+1;
g=x^3+6*x^2+3*x+5;
h=f+g
i=f*g
expand(i)
factor(f)
h =
x^4+8*x^2+6+x^3+3*x
i =
(x^4+2*x^2+1)*(x^3+6*x^2+3*x+5)
ans =
x^7+6*x^6+5*x^5+17*x^4+7*x^3+16*x^2+3*x+5
ans =
(x^2+1)^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')
>> syms x y
>> 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')
syms x y
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
四、简化
>> syms x;
f=(1/x^3+6/x^2+12/x+8)^(1/3);
y1=simplify( f )
y1 =
((2*x+1)^3/x^3)^(1/3)
五、设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); %将数值常量转换为符号常量
有误差
x1=factor(a)
x1 =
(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)
x2=factor(b)
x2 =
(2)^11*(7)*(7324703)*(117570121)
isequal(x1,x2)
ans =
0
六、替换函数subs的使用。
(1)试指出下面程序中的f1、f2、f3、f4、f5的值。
syms a x;
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})
>> syms a x;
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 =
5.0000 6.0000 6.7321 7.0000 6.7321 6.0000 5.0000
f5 =
5.0000 5.5000 6.7321 8.0000 8.4641 7.5000 5.0000
(2)试指出下面替换的结果,并说明理由。
>> syms x y; f=2*x+y;
>> subs(f,{x,y},{x+y,x-y})
>> syms x y;
f=2*x+y;
subs(f,{x,y},{x+y,x-y})
ans =
5*x-3*y
理由:替换过程中先用x+y替换x,得到2x+3y,再用x-y替换y,得到5x-3y.
七、 创建符号变量有几种方法?
答:
MATLAB提供了两种创建符号变量和表达式的函数: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)f=3*x^2+5*x+2
表示在给定x时,将3*x^2+5*x+2的数值运算结果赋值给变量f,如果没有给定x则指示错误信息。
(2)f='3*x^2+5*x+2'
表示将字符串'3*x^2+5*x+2'赋值给字符变量f,没有任何计算含义,因此也不对字符串中的内容做任何分析。
(3)x=sym('x')
f=3*x^2+5*x+2
表示x是一个符号变量,因此算式f=3*x^2+5*x+2就具有了符号函数的意义,f也自然成为符号变量了。
九、 用符号计算验证三角等式:
sin(j1)cos(j2)-cos(j1)sin(j2) =sin(j1-j2)
>> syms phi1 phi2;
y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2))
y =
sin(phi1-phi2)
十、 因式分解:
>> syms x;
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符号计算在级数求和以及泰勒级数中的应用。
实验要求:给出程序和实验结果。
实验内容与结果:
一、求在上的定积分;
>> syms x;
int(sin(x)+x,0,8)
ans =
-cos(8)+33
二、求符号表达式的5次微分;
>> syms x
f=sin(x)+x^5;
df=diff(f,5)
df =
cos(x)+120
三、计算 和
>> syms x h n;
L=limit((log(x+h)-log(x))/h,h,0)
M=limit((1-x/n)^n,n,inf)
L =
1/x
M =
exp(-x)
四、1计算级数 及其前100项的部分和;
>> syms n; f=1/n^2;
S=symsum(f,n,1,inf)
S100=symsum(f,n,1,100)
S =
1/6*pi^2
S100 =
1589508694133037873112297928517553859702383498543709859889432834803818131090369901/972186144434381030589657976672623144161975583995746241782720354705517986165248000
2计算函数级数
>> syms n x; f=x/n^2;
S=symsum(f,n,1,inf)
S =
1/6*x*pi^2
五、(1)设求复合函数 f(g(z));
(2)设求复合函数 f(g(z))。
(1)
>> syms x y z u t;
f=x^2/(1+u);
g=cos(y+2*t);
compose(f,g,y)
ans =
cos(y+2*t)^2/(1+u)
(2)
>> syms x y z u t;
f=x^2/(1+u);
g=cos(y+2*t);
compose(f,g,t)
ans =
cos(3*t)^2/(1+u)
六、计算sin(t)在t=0处的taylor级数、Fourier变换和Laplace变换。
>> syms t s;
y=sin(t)
f=taylor(y,5,x,0)
ut=heaviside(t)
UT=fourier(ut)
MS=laplace(y,t,s)
y =
sin(t)
f =
t-1/6*t^3
ut =
heaviside(t)
UT =
pi*dirac(w)-i/w
MS =
1/(s^2+1)
七、计算的和。
>> syms x y;
z=y*x^2+3*y^2*x+2*y^3;
a=diff(z,y)
b=diff(a,x)
a =
x^2+6*y*x+6*y^2
b =
2*x+6*y
八、 因式分解:
>> syms x;
f=x^4-5*x^3+5*x^2+5*x-6;
factor(f)
ans =
(x-1)*(x-2)*(x-3)*(x+1)
九 符号函数绘图法绘制函数x=sin(3t)cos(t),y=sin(3t)sin(t)的图形,t的变化范围为[0,2p]。
>> syms t
ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t),[0,pi])
十、 ,用符号微分求df/dx。
>> syms a x;
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)]
实验三 MATLAB7.0符号方程(组)求解和符号矩阵计算
实验目的:
1. 掌握MATLAB7.0符号代数方程和符号代数方程组求解;
2. 掌握MATLAB7.0符号符号微分方程和符号微分方程组求解;
3. 掌握MATLAB7.0符号矩阵计算。
实验要求:给出程序和实验结果。
实验题目与结果:
一、使用sym函数生成如下符号矩阵,,
,试对这两个符号矩阵分别进行如下操作。
(1)
(2)
(3)求的行列式
(4)求的逆
(5)求的秩
(6)求
>> syms x;
a=sym('[1/x,1/(x+1);1/(x+2),1/(x+3)]')
b=sym('[x,1;x+2,0]');
a-b;
a*b
det(a)
rank(a)
inv(b)
a^3
a =
[ 1/x, 1/(x+1)]
[ 1/(x+2), 1/(x+3)]
ans =
[ 1+1/(x+1)*(x+2), 1/x]
[ 1/(x+2)*x+1/(x+3)*(x+2), 1/(x+2)]
ans =
2/x/(x+3)/(x+1)/(x+2)
ans =
2
ans =
[ 0, 1/(x+2)]
[ 1, -1/(x+2)*x]
ans =
[ 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');
disp('s.x')
disp(s.x)
disp('s.y')
disp(s.y)
s.x
.52652262191818418730769280519209
s.y
.50791971903684924497183722688768
三、已知,求该方程的解。
>> Y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=1');
sy=simple(Y)
expand(sy)
sy =
exp(-t)*(2*sin(t)+cos(t))
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(j1)cos(j2)-cos(j1)sin(j2) =sin(j1-j2)
>> syms phi1 phi2;
y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2))
y =
sin(phi1-phi2)
六、 求矩阵的行列式值、逆和特征根。
>> syms a11 a12 a21 a22;
A=[a11,a12;a21,a22]
AD=det(A)
AI=inv(A)
AE=eig(A)
A =
[ a11, a12]
[ a21, a22]
AD =
a11*a22-a12*a21
AI =
[ a22/(a11*a22-a12*a21), -a12/(a11*a22-a12*a21)]
[ -a21/(a11*a22-a12*a21), a11/(a11*a22-a12*a21)]
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。
>> syms a x;
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)的图形。
>> syms t
ezpolar(sin(3*t)*cos(t))
九、求代数方程组关于x,y的解。
>> S=solve('a*x^2+b*y+c=0','b*x+c=0','x','y');
disp('S.x=') , disp(S.x)
disp('S.y=') , disp(S.y)
S.x=
-c/b
S.y=
-c*(a*c+b^2)/b^3
十、求解微分方程(组)
1、
>> syms a x y
dsolve('Dy=a*x','x')
ans =
1/2*a*x^2+C1
2、
>> syms f t
dsolve('Df=f+sin(t)')
ans =
-1/2*cos(t)-1/2*sin(t)+exp(t)*C1
3、
>> syms y
dsolve('(Dy)^2+y^2=1')
ans =
1
-1
sin(t-C1)
-sin(t-C1)
4、
>> syms x y;
>> dsolve('Dy=a*y','y(0)=b','x')
ans =
b*exp(a*x)
5、
>> syms a x y;
>> dsolve('D2y=-a^2*y','y(0)=1,Dy(pi/a)=0','x')
ans =
cos(a*x)
6、
>> syms x y t;
>> dsolve('Dx=y','Dy=-x','x','y','t')
ans =
x: [1x1 sym]
y: [1x1 sym]
7、
>> y=dsolve('(Dy)^2+y^2=1','y(0)=0','x')
sy=simple(y)
y =
sin(x)
-sin(x)
sy =
sin(x)
-sin(x)