实验五 MATLAB符号计算Word文件下载.docx
《实验五 MATLAB符号计算Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验五 MATLAB符号计算Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
通过看MATLAB的帮助可知,sym()的参数可以是字符串或数值类型,无论是哪种类型都会生成符号类型数据。
(2)使用syms创建
symsxyz%注意观察x,y,z都是什么类型的,它们的内容是什么
x,y,z
f1=x^2+2*x+1
f2=exp(y)+exp(z)^2
f3=f1+f2
通过以上实验,知道生成符号表达式的第二种方法:
由符号类型的变量经过运算(加减乘除等)得到。
又如:
x^2+y+sin
(2)'
symsxy
f2=x^2+y+sin
(2)
x=sym('
2'
),y=sym('
f3=x^2+y+sin
(2)
y=sym('
w'
f4=x^2+y+sin
(2)
2、符号矩阵创建
symsa1a2a3a4
A=[a1a2;
a3a4]
A
(1),A(3)
或者
[b1b2;
b3b4]'
c1=sym('
sin(x)'
c2=sym('
x^2'
c3=sym('
3*y+z'
c4=sym('
3'
C=[c1c2;
c3c4]
3、自由变量的确定。
使用findsym确定符号表达式
的自由变量。
4、用常数替换符号变量。
用行向量替换
,使符号对象
转变为行向量。
都为双精度型数值。
5、符号算术运算
(1)符号表达式加和减
(2)符号量相乘、相除
符号量相乘运算和数值量相乘一样,分成矩阵乘和数组乘。
a=sym(5);
b=sym(7);
c1=a*b
c2=a/b
B=sym([345]);
C1=a*B,C2=a\B
symsab
A=[5a;
b3];
B=[2*ab;
2*ba];
C1=A*B,C2=A.*B
C3=A\B,C4=A./B
(3)符号数值任意精度控制和运算
任意精度的VPA运算可以使用命令digits(设定默认的精度)和vpa(对指定对象以新的精度进行计算)来实现。
a=sym('
2*sqrt(5)+pi'
b=sym(2*sqrt(5)+pi)
digits
vpa(a)
digits(15)
c1=vpa(a,56)
c2=vpa(b,56)
注意:
观察c1和c2的数据类型,c1和c2是否相等。
6、符号表达式的操作和转换
1)求反函数和复合函数。
①用finverse函数求
、
的反函数。
②用compose函数求解
的复合函数。
2)符号表达式与多项式的转换。
用函数sym2poly和poly2sym实现符号表达式
与多项式的转换。
clear
symsx
f=x^2+3*x+2
3)符号表达式化简
符号表达式化简主要包括表达式美化(pretty)、合并同类项(collect)、多项式展开(expand)、因式分解(factor)、化简(simple或simplify)等函数。
1合并同类项(collect)。
分别按x的同幂项和e指数同幂项合并表达式:
symsxt;
f=(x^2+x*exp(-t)+1)*(x+exp(-t));
f1=collect(f)
f2=collect(f,’exp(-t)’)
②对显示格式加以美化(pretty)。
针对上例,用格式美化函数可以使显示出的格式更符合数学书写习惯。
pretty(f1)
pretty(f2)
与直接输出的f1和f2对比。
③多项式展开(expand)。
展开(x-1)12成x不同幂次的多项式。
clearall
symsx;
f=(x-1)^12;
pretty(expand(f))
④因式分解(factor)。
将表达式x12–1作因式分解。
symsx;
f=x^12-1;
pretty(factor(f))
⑤化简(simple或simplify)。
将函数
化简。
clearall,symsx;
f=(1/x^3+6/x^2+12/x+8)^(1/3);
g1=simple(f)
g2=simplify(f)
⑥horner函数,给出符号表达式的嵌套形式。
horner(f)
f=(x-1)^3+3*x-1;
horner(f)
7、符号极限、符号积分与微分
(1)求极限函数的调用格式
limit(F,x,a)%返回符号对象F当x→a时的极限
limit(F,a)%返回符号对象F当独立变量*→a时的极限
limit(F)%返回符号对象F当独立变量→0(a=0)时的极限
limit(F,x,a,’right’)%返回符号对象F当x→a时的右极限
limit(F,x,a,’left’)%返回符号对象F当x→a时的左极限
limit(F,x,inf)%返回符号表达式F当x趋于无穷大时的极限
例:
clear;
%说明x为符号变量
limit(sin(1/x),x,0)
symsn;
limit((1+1/n)^n,n,inf)
(2)求积分函数的调用格式
int(F)%求符号对象F关于默认变量的不定积分
int(F,v)%求符号对象F关于指定变量v的不定积分
int(F,a,b)%求符号对象F关于默认变量的从a到b的定积分
int(F,v,a,b)%求符号对象F关于指定变量v的从a到b的定积分
(3)求微分函数的调用格式
diff(F)%求符号对象F关于默认变量的微分
diff(F,v)%求符号对象F关于指定变量v的微分
diff(F,n)%求符号对象F关于默认变量的n次微分,n为自然数1、2、3…
diff(F,v,n)%求符号对象F关于指定变量v的n次微分
已知
求
的微分.
f=sym('
a*x^2+b*x+c'
)%定义函数表达式
f=a*x^2+b*x+c
diff(f)%对默认变量
求一阶微分
ans=2*a*x+b
diff(f,'
a'
)%对符号变量
ans=x^2
2)%对符号变量
求二阶微分
ans=2*a
diff(f,3)%对默认变量
求三阶微分
ans=0
8、符号级数
a)symsum函数
语法:
symsum(s,x,a,b)%计算表达式s的级数和
说明:
x为自变量,x省略则默认为对自由变量求和;
s为符号表达式;
[a,b]为参数x的取值范围。
【例】求级数
和1+x+x2+…+xk+…的和。
symsxk
s1=symsum(1/x^2,1,10)%计算级数的前10项和
s2=symsum(1/k^2,1,inf)%计算级数和
s3=symsum(x^k,'
k'
0,inf)%计算对k为自变量的级数和
b)taylor函数
taylor(F,x,n)%求泰勒级数展开
x为自变量,F为符号表达式;
对F进行泰勒级数展开至n项,参数n省略则默认展开前5项。
【例】求ex的泰勒展开式为:
。
symsx
s1=taylor(exp(x),8)%展开前8项
s2=taylor(exp(x))%默认展开前5项
9、符号积分变换
a)傅里叶(Fourier)变换及其反变换
fourier变换和反变换可以利用积分函数int来实现,也可以直接使用fourier或ifourier函数实现。
1.fourier变换
F=fourier(f,t,w)%求时域函数f(t)的fourier变换F
返回结果F是符号变量w的函数,当参数w省略,默认返回结果为w的函数;
f为t的函数,当参数t省略,默认自由变量为x。
2.fourier反变换
f=ifourier(F)%求频域函数F的fourier反变换f(t)
f=ifourier(F,w,t)
ifourier函数的用法与fourier函数相同。
【例】计算f(t)=
的fourier变换F以及F的fourier反变换。
symstw
F=fourier(1/t,t,w)%fourier变换
f=ifourier(F,t)%fourier反变换
f=ifourier(F)%fourier反变换默认x为自变量
b)拉普拉斯(Laplace)变换及其反变换
1.Laplace变换
F=laplace(f,t,s)%求时域函数f的Laplace变换F
返回结果F为s的函数,当参数s省略,返回结果F默认为'
s'
的函数;
f为t的函数,当参数t省略,默认自由变量为'
t'
【例】求sin(at)和阶跃函数的Laplace变换。
symsats
F1=laplace(sin(a*t),t,s)%求sinat的Laplace变换
F1=
a/(s^2+a^2)
F2=laplace(sym('
Heaviside(t)'
))%求阶跃函数的Laplace变换
F2=
1/s
2.Laplace反变换
f=ilaplace(F,s,t)%求F的Laplace反变换f
【例】求
和1的Laplace反变换。
symssat
f1=ilaplace(1/(s+a),s,t)%求1/s+a的Laplace反变换
f1=
exp(-a*t)
f2=ilaplace(1,s,t)%求1的Laplace反变换是脉冲函数
f2=
Dirac(t)
10、符号方程的求解
(1)常规方程求解函数的调用格式
g=solve(eq)%求方程(或表达式或字串)eq关于默认变量的解
g=solve(eq,var)%求方程(或表达式或字串)eq关于指定变量var的解
g=solve(eq1,eq2,...,eqn,var1,var2,...,varn)%求方程(或表达式或字串)组
eq1,eq2,...,eqn关于指定变量组var1,var2,...,varn的解
(2)常微分方程求解
求解常微分方程的函数是dsolve。
应用此函数可以求得常微分方程(组)的通解,以及给定边界条件(或初始条件)后的特解。
常微分方程求解函数的调用格式:
r=dsolve('
eq1,eq2,...'
'
cond1,cond2,...'
'
v'
eq1'
eq2'
...,'
cond1'
cond2'
)
①以上两式均可给出方程eq1、eq2...对应初始条件cond1、cond2...之下的以v作为
解变量的各微分方程的解。
2常微分方程解的默认变量为t。
3第二式中最多可接受的输入式是12个。
④微分方程的表达方法。
在用MATLAB求解常微分方程时,用大写字母Dy表示微分符号
,用D2y表示
,依次类推。
边界条件以类似于y(a)=b或Dy(a)=b的等式给出。
其中y为因变量,a、b为常数。
如果初始条件给得不够,求出的解则为含有C1、C2等待定常数的通解。
对方程组
进行求解。
解方程组
当
时,求微分方程组的解。
11、符号函数的图形绘制
ezplot(F,[xmin,xmax],fig)%画符号表达式的图形
F是将要画的符号函数;
[xmin,xmax]是绘图的自变量范围,省略时默认值为[-2л,2л];
fig是指定的图形窗口,省略时默认为当前图形窗口。
【例】画出y(x)特解的图形,如图3.2所示。
y=sym('
-1/3*x^3+1/3*x^4'
)
ezplot(y)
ezplot(y,[0,100])%绘制符号函数y在[0,100]中的图形
【例】用ezplot3绘制三维符号表达式曲线。
sin(t)'
);
z=sym('
cos(t)'
ezplot3(x,y,z,[0,10*pi],'
animate'
)%绘制t在[0,10*pi]范围的三维曲线
三、练习:
1.创建符号表达式:
(用三种方式分别创建)
2.创建符号矩阵。
3.已知表达式
,计算当
时
的值;
计算
与
的复合函数,
的逆函数。
4.符号函数
,分别对
进行微分,对
趋向于1求极限,并计算对
的二次、三次微分,用findsym得出符号变量。
5.求极限
6.求定积分
和不定积分
7.求微分方程
在满足
,
的解,并画出图形。
8.求解微分方程组
,其中
9.解微分方程
的通解。
10.利用符号绘图函数绘制图形
,范围为