《MATLAB仿真与应用》
实验报告二
第二章符号对象的创建及符号计算
一、实验目的
1.理解符号对象和数值对象之间的差别,以及他们之间的互相转换
2.了解符号运算和数值运算的特点、区别以及优缺点。
3.掌握符号对象的基本操作和运算,以及符号运算的基本应用。
二、实验内容
1、最接近的有理表示 sym()
2、绝对准确的符号数值表示sym(‘’)
3、把已有符号表达式化成最简形式simple(y)
4、求矩阵的行列式值 det(A)
逆 inv(A)
特征根 eig(A)
5、求矩阵的大小(行列) SizeMn=Size(Mn)
6、获得矩阵的类别 CMn=class(Mn)
7、判断每种矩阵的类别,若返回1,则判断正确 isa(Mn,‘double’)
8、观察内存变量的类别和其他属性 whos
9、列出独立自由变量 findsym()
10、无穷 inf
11、求导数 df=diff(f)
12、二阶导数 dfdt2=diff(f,t,2)
13、二阶混合导数dfdxdt=(diff(f,x),t)
14、不定积分 int(f)
15、定义0时刻起跳的单位阶跃函数 ut=sym(‘Heaviside(t)’)
16、傅里叶变换 UT=fourier(ut)
17、傅里叶逆变换 Ut=ifourier(UT,w,t)
18、求方程解 S=deslove()D一阶;D2二阶;D3三阶
三、思考练习题
1.观察一个数(在此用@记述)在以下四条不同指令作用下的异同:
a=@
b=sym(@)
c=sym(@,’d’)
d=sym(‘@’)
在此,@分别代表具体数值 7/3,pi/3,pi*3^(1/3);而异同通过vpa(abs(a-d)), Vpa(abs(b-d),vpa(abs(c-d))等来观察。
a=7/3;
b=sym(7/3);
c=sym(7/3,'d');
>> d=sym('7/3');
>> vpa(abs(a-d))
ans =
0.0
>> vpa(abs(b-d))
ans =
0.0
>> vpa(abs(c-d))
ans =
0.00000000000000014802973661668756666666667788716
2.说出以下三条指令产生的结果各属于那种数据类型,是“双精度”对象,还是“符号”对象?
3/7+0.1,sym(3/7+0.1),vpa(sym(3/7+0.1)
Mn=3/7+0.1;
>> Mc=sym(3/7+0.1);
Ms=vpa(sym(3/7+0.1));
>> whos Mn Mc Ms
Name Size Bytes Class Attributes
Mc 1x1 8 sym
Mn 1x1 8 double
Ms 1x1 8 sym
Mn为双精度 Mc Ms为符号
3.在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是独立自由变量。sym(‘sin(w*t)’),sym(‘a*exp(-X)’),sym(‘z*exp(j*theta)’)
>> findsym(sym('sin(w*t)'),1) >> findsym(sym('a*exp(-x)'),1)
>> findsym(sym('z*exp(j*theta)'),1) ans=
w
ans=
a
ans=
z
4. 计算二重积分
??+211222)(x dydx y x 。
syms x y
>> F2=int(int(x^2+y^2,y,1,x^2),x,1,2) F2 =
1006/105
5、在[0,2π]区间,画出y(x)=
?x 0sin dt t
t 曲线,并计算y(4,5)。 syms t x,f=sin(t)/t;
>> y=int(f,t,0,x);
>> y5=subs(y,x,sym('4.5'))
y5 =
1.6541404143792439835039224868515
>> ezplot(y,[0,2*pi])
四、实践中遇到的问题及解决方法
1.使用simple时有警告。
把simple改为simplify
2、错误使用sym/det
矩阵输入错误
3、意外的MATLAB运算符
矩阵输入错误
4、不清楚如何绘制图线
使用函数ezplot(y,[0,2*pi])