Matlab符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
例 在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。 命令如下:
x=sym('x'); y=x^3+3*x-2; f=diff(y);
%定义曲线函数 %对曲线求导数
g=f-4; solve(g)
%求方程f-4=0的根,即求曲线何处的导数为4
16
泰勒级数
matlab中提供了将函数展开为幂级数的函数taylor,其调用 格式为:
%求极限
f=(sqrt(x)-sqrt(a)-sqrt(x-a))/sqrt(x*x-a*a);
limit(f,x,a,'right')
%求极限
13
符号函数的微分
MATLAB中的微分函数为: diff(f,x,n)
diff函数求函数f对变量x的n阶导数。参数x的用法同求极限函 数limit,可以缺省,缺省值与limit相同,n的缺省值是1。
Maple软件实现符号计算的。 • maple软件——主要功能是符号运算,
它占据符号软件的主导地位。
4
一. 符号对象
1. 建立符号变量和符号常数 (1)sym函数
sym函数用来建立单个符号量,例如,a=sym('a')建立 符号变量a,此后,用户可以在表达式中使用变量a进 行各种运算。
5
考察符号变量和数值变量的差别
26
例 求微分方程的通解。
命令如下: y=dsolve('Dy-(x^2+y^2)/x^2/2','x') %解(1)。方程的右端
为0时可以不写 y=dsolve('Dy*x^2+2*x*y-exp(x)','x') %解(2) y=dsolve('Dy-x^2/(1+y^2)','y(2)=1','x') %解(3) [x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t') %解方程组(4) [x,y]=dsolve('D2x-y','D2y+x','t') %解方程组(5)
11
5.2 微分运算
• 符号函数的极限 • 符号函数的微分 • 符号泰勒级数展开 limit函数的调用格式为:
limit(f,x,a) f :函数 x:变量 a:逼近值 limit函数的另一种功能是求单边极限,其调用格式为: limit(f,x,a,'right') 或 limit(f,x,a,'left')
27
小结 本节介绍了matlab语言的符号运算 功能,通过学习应该掌握: • 掌握如何创建符号函数 • 掌握符号运算及其应用
28
19
2. 拉普拉斯(Laplace)变换 在MATLAB中,进行拉普拉斯变换的函数是: laplace(fx,x,t) 求函数f(x)的拉普拉斯像函数F(t)。 ilaplace(Fw,t,x) 求拉普拉斯像函数F(t)的原函数f(x)。
例计算y=x2的拉普拉斯变换及其逆变换. 命令如下: x=sym('x');y=x^2; Ft=laplace(y,x,t) %对函数y进行拉普拉斯变换 fx=ilaplace(Ft,t,x) %对函数Ft进行拉普拉斯逆变换
18
5.4 积分变换
1. 傅立叶(Fourier)变换 在MATLAB中,进行傅立叶变换的函数是: fourier(fx,x,t) 求函数f(x)的傅立叶像函数F(t)。 ifourier(Fw,t,x) 求傅立叶像函数F(t)的原函数f(x)。
求函数的傅立叶变换及其逆变换。 命令如下: syms x t; y=abs(x); Ft=fourier(y,x,t) %求y的傅立叶变换 fx=ifourier(Ft,t,x) %求Ft的傅立叶逆变换
函数定义符号变量var1,var2,…,varn等。用这种格式定 义符号变量时,变量间用空格而不要用逗号分隔。
2. 建立符号表达式 建立符号表达式有以下2种方法: (1) 用sym函数建立符号表达式。 (2) 使用已经定义的符号变量组成符号表达式。
8
基本的符号运算
(1). 符号表达式的四则运算 符号表达式的四则运算和其他表达式的运算并无不同,但
在 MATLAB命令窗口,输入命令:
a=sym(‘a’);b=sym(‘b’);c=sym(‘c');d=sym('d'); %定义 4个符号
变量
w=10;x=5;y=-8;z=11;
%定义4个数值变量
A=[a,b;c,d]
%建立符号矩阵A
B=[w,x;y,z]
%建立数值矩阵B
det(A)
%计算符号矩阵A的行列式
taylor(f,n,x,a) 例:求函数在指定点的泰勒展开式。 命令如下: x=sym('x'); f1=(1+x+x^2)/(1-x+x^2); f2=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3); taylor(f1,x,5) %展开到x的4次幂时应选择n=5 taylor(f2,6)
求解符号表达式表示的代数方程eq,求解变量为默认变量。 当方程右端为0时,方程eq中可以不包含右端项和等号,而 仅列出方程左端的表达式。
solve(eq,x):求解符号表达式表示的代数方程eq,求解变量 为x。
23
代数方程组
solve(eq1,eq2,…,eqn,v1,v2,…,vn): 求解符号表达式eq1,eq2,…,eqn组成的代数方程组,求解
20
3. Z变换 对数列f(n)进行z变换的matlab函数是: ztrans(fn,n,z) 求fn的Z变换像函数F(z) iztrans(Fz,z,n) 求Fz的z变换原函数f(n)
例求数列 fn=e-n的Z变换及其逆变换。 命令如下:
syms n z
fn=exp(-n); Fz=ztrans(fn,n,z) f=iztrans(Fz,z,n)
% 计算符号表达式值
A2=sin(pi2/3)
% 计算数值表达式值
A3=sqrt(k1)
% 计算符号表达式值
பைடு நூலகம்A4=sqrt(r1)
% 计算数值表达式值
A5=sqrt(k3+sqrt(k2))
% 计算符号表达式值
A6=sqrt(r3+sqrt(r2))
% 计算数值表达式值
7
(2)syms函数 syms函数的一般调用格式为: syms var1 var2 … varn
%求fn的Z变换 %求Fz的逆Z变换
21
5.5 求解方程
• 代数方程。 • 代数方程组。 • 微分方程和微分方程组。
22
代数方程
代数方程是指未涉及微积分运算的方程,相对比较简单。 在matlab中,求解用符号表达式表示的代数方程可由函数
solve实现,其调用格式为: solve(eq);
det(B)
%计算数值矩阵B的行列式
6
比较符号常数与数值在代数运算时的差别。
在 MATLAB命令窗口,输入命令:
pi1=sym('pi');k1=sym('8');k2=sym('2');k3=sym('3'); % 定义
符号变量
pi2=pi;r1=8;r2=2;r3=3; % 定义数值变量
A1=sin(pi1/3)
25
微分方程组
dsolve在求微分方程组时的调用格式为: dsolve('eqn1','eqn2',…,'eqnN','condition1',…,'conditionN','v
ar1',…,'varN') 函数求解微分方程组eqn1、…、eqnN在初值条件
conditoion1、…、conditionN下的解,若不给出初值条件, 则求方程组的通解,var1、…、varN给出求解变量。
2
5.1 符号运算基础
• 符号对象的创建 • 基本的符号运算
符号运算的基本操作
什么是符号运算? 与数值运算的区别
※ 数值运算中必须先对变量赋值,然后才能参与运算。 ※ 符号运算无须事先对独立变量赋值,运算结果以标准 的符号形式表达。
3
• 特点: 运算对象可以是没赋值的符号变量 可以获得任意精度的解 • Symbolic Math Toolbox——符号运算工具包通过调用
变量分别v1,v2,…,vn。 若不指定求解变量,由默认规则确定。 注意输出方式
24
微分方程
matlab的符号运算工具箱中提供了功能强大的求解常微分方 程的函数dsolve。该函数的调用格式为:
dsolve('eqn1','condition','var') 该函数求解微分方程eqn1在初值条件condition下的特解。参 数var描述方程中的自变量符号,省略时按缺省原则处理,若 没有给出初值条件condition,则求方程的通解。 y=dsolve('Dy=t') y=dsolve('D2y=t') y=dsolve('Dy=t','y(0)=0')
9
(3).因式分解与展开 ➢ collect(f) 对f合并同类项,f是符号表达式或符号矩阵。 ➢ collect(f,v) 对f按变量v合并同类项,f是符号表达式或
符号矩阵。 ➢ expand(f) 对f进行展开,f是符号表达式或符号矩阵。 ➢ factor(f) 对f分解因式,f是符号表达式或符号矩阵。
14
例求函数的(微分)导数。命令如下:
syms a b t x y z;
f=sqrt(1+exp(x));
diff(f)
%未指定求导变量和阶数,按缺省规则处理
f=x*cos(x); diff(f,x,2) diff(f,x,3)
%求f对x的二阶导数 %求f对x的三阶导数
f1=a*cos(t);f2=b*sin(t);
要注意,其运算结果依然是一个符号表达式。
(2).符号表达式的提取分子和分母运算 如果符号表达式是一个有理分式或可以展开为有理分式, 可利用numden函数来提取符号表达式中的分子或分母。 其一般调用格式为:
[n,d]=numden(s) 该函数提取符号表达式s的分子和分母,分别将它们存放 在n与d中。
第5 章 Matlab符号运算
—— matlab 不仅具有数值运算功能,还开发了在matlab 环境下实现符号运算的工具包Symbolic Math Toolbox
符号运算基础 微分运算 积分运算 积分变换 求解方程
1
本章要求
要求理解matlab数值运算与符号运算的不同;学会建立符号 对象并应用相应对象进行各种符号运算以求得解析结果; 重点:符号表达式的运算,符号方程求解。 难点:符号微积分和积分变换。
diff(f2)/diff(f1)
%按参数方程求导公式求y对x的导数
(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3 %求y对x的
二阶导数
f=x*exp(y)/y^2;
diff(f,x)
%z对x的偏导数
diff(f,y)
%z对y的偏导数
f=x^2+y^2+z^2-a^2; zx=-diff(f,x)/diff(f,z) %按隐函数求导公式求z对x的偏导数 zy=-diff(f,y)/diff(f,z) %按隐函数求导公式求z对y的偏导数
17
5.3 积分运算
• 在matlab中,求不定积分的函数是int,其调用格式为: int(f,x) int函数求函数f对变量x的不定积分。参数x可以缺省,缺 省原则与diff函数相同。
• 在matlab中,求定积分的函数也是int,其调用格式为: int(f,x,a,b) int函数求函数f对变量x的不定积分。参数x可以缺省,缺 省原则与diff函数相同。
12
求极限例子
在MATLAB命令窗口,输入命令:
syms a m x;
f=(x^(1/m)-a^(1/m))/(x-a);
limit(f,x,a)
%求极限
f=(sin(a+x)-sin(a-x))/x;
limit(f)
%求极限
limit(f,inf)
%求f函数在x→∞(包括+∞和-∞)处极限
limit(f,x,inf,'left')
(4).符号表达式与数值表达式之间的转换 利用函数sym可以将数值表达式变换成它的符号表达式。 函数eval可以将符号表达式变换成数值表达式。
10
(5). 符号矩阵 transpose(s) 返回s矩阵的转置矩阵。 det(s) 返回s矩阵的行列式值。 colspace(s) 返回s矩阵列空间的基。