第3章 MATLAB符号计算

合集下载

第三章 MATLAB的符号计算

第三章 MATLAB的符号计算

第三章MATLAB的符号计算MATLAB的数学计算分为数值计算和符号计算,在第二章中我们介绍了数值计算。

符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理,是MATLAB 处理数值功能的自然扩展。

MATLAB具有符号数学工具箱,将符号运算结合到MATLAB的数值运算环境。

符号运算可以实现微积分运算、表达式的化简以及求解代数方程和微分方程等。

3.1 符号表达式的建立在符号运算时,首先要定义基本的符号对象,然后才能进行符号运算。

符号对象是一种数据结构,包括符号常数、符号变量和符号表达式,用来存储代表符号的字符串。

在符号运算时,凡是由符号表达式所生成的对象也都是符号对象。

3.1.1 创建符号常量、变量和表达式符号常量是不含变量的符号表达式,用sym命令来创建符号常量。

语法:sym(‘常量’) %创建符号常量sym(‘arg’ , 参数) %把变量定义为符号对象sym(‘表达式’) %创建符号表达式sym(‘arg1’ , ‘arg2’ ,……,参数) %把变量定义为符号对象sym arg1 arg2 …, 参数%把变量定义为符号对象的简洁形式3.1.2 符号矩阵用sym和syms命令也可以创建符号矩阵。

例如:>>A=sym(‘[a, b ; c, d]’) 与下列相同>>syms a b c d>>A=[a, b ; c, d] 与下列相同>>B=’[a, b; c, d]’>>C=sym(B)3.2 符号表达式的代数运算由于MATLAB采用了重载技术,使得符号运算表达式的运算符和基本函数都与数值计算的几乎完全相同,使得符号运算的编程很方便。

例如:>> syms a b c d >>f=sym(‘2*x^2+3*x+4’)>>A=[a, b; c, d] >>g=sym(‘5*x+6’)>>det(A) >>f+g可以使用digits和vpa命令来实现任意精度的控制。

MATLAB应用第三章-符号计算

MATLAB应用第三章-符号计算
第三章 MATLAB符号计算
3. 1 数据类型 3.2 符号运算
数学运算中除了数值运算外,还有大量抽象运算(计算式中带有符号变 量、表达式的运算)。Matlab就是利用maple软件的符号运算功能来实 现这些符号运算的。 Maple : 通用的数学和工程软件,是世界上最值得信赖、最完整的数学 软件之一,被高等院校、研究机构和公司广泛应用,用户渗透超过97% 的世界主要高校和研究所,超过81%的世界财富五百强企业。 Maple提供世界上最强大的符号计算,无与伦比的数值计算,支持 用户界面开发和网络发布,内置丰富的数学求解库,覆盖几乎所有的数 学分支,所有的操作都是在一个所见即所得的交互式技术文档环境中完 成,完成计算的同时也生成了专业技术文件和演示报告。 Maple不仅仅提供编程工具,更重要的是提供数学知识。Maple是 教授、研究员、科学家、工程师、学生们必备的科学计算工具,从简单 的数字计算到高度复杂的非线性问题,Maple都可以帮助您快速、高效 地解决问题。用户通过Maple产品可以在单一的环境中完成多领域物理 系统建模和仿真、符号计算、数值计算、程序设计、技术文件、报告演 示、算法开发、外部程序连接等功能,满足各个层次用户的需要,从高 中学生到高级研究人员。
格 Eg 3-2 补充。 补充。 2)char函数创建:char(‘string1’,’string2’, …); Eg 3-3 各个字符串不须同大小, 各个字符串不须同大小,该函数自动补充空白 字符。 字符。 Eg 3-4
字符串与单元 1)cellstr将字符数组转换成单元数组。 2)char函数将单元数组转换成字符数组。 数组的转换 字符串的比较 1)strcmp(a,b):比较两个字符串所有字符是
Grand total is 33 elements using 462 bytes

第三章_Matlab符号计算

第三章_Matlab符号计算
符号运算与数值运算的区别:
① 数值运算中必须先对变量赋值,然后才能参与运算。 ② 符号运算无须事先对独立变量赋值,运算结果以标准的 符号形式表达。
符号运算的特点:
① 运算对象可以是没赋值的符号变量。符号计算定义在符 号变量的基础上,符号表达式计算前必须定义符号变量;
② 符号计算是精确计算,可以获得任意精度的解; • Symbolic Math Toolbox——符号运算工具包通过调用 Maple软件实现符号计算的。 • Maple软件——主要功能是符号运算,它占据符号软件的 主导地位。
第3章 MATLAB符号计算
主讲人:李良群
所谓符号计算是指在运算时,无须事先对变量 赋值,而将所得到结果以标准的符号形式来表示。
Matlab本身并没有符号计算功能, MathWorks 公司于1993年购买了著名的符号数学软件Maple的 使用权,并利用Maple已有的函数库,开发了符号 数学工具箱。
符号量名=sym('符号字符串')
符号字符串可以是常量、变f1='ax^2+bx+c' —— 二次三项式 f2= 'ax^2+bx+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程
符号表达式或符号方程可以赋给符号变量,以后调用 方便;也可以不赋给符号变量直接参与运算 使用符号变(常)量进行代数运算和数值变(常)量 进行的运算是不同的。 例1 考察符号变量和数值变量的差别。 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的行列式 det(B) %计算数值矩阵B的行列式

第3章 MATLAB的符号运算_微分方程求解_符号代数方程

第3章 MATLAB的符号运算_微分方程求解_符号代数方程
例:f=sym('a*x^2+b*2+c')
或syms a b c x
f='a*x^2+b*2+c'
9/46
数组、矩阵与符号矩阵(P51)
m1=sym('[ab bc cd ; de ef fg ; h l j]') m2=sym('[1 12;23 34]') 例:
– >>A=hilb(3) A= 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000
dx dx2
例6:已知函数
f
= x2 sin 2 y 求
df
df ,
d2 f ,
dx dy dxdy
例7:已知函数
f
=
xe y y2

ff ,
xy
见example3_12
23/46
df
例8:已知导函数
= ax 求原函数
dx
b
例9:已知导函数 f (x) = x2 求 f (x)dx a
例10:计算重积分I = 2 d a r2 sin dr ?
– 例:>>rho=1+sqrt(5)/2; >>sym(rho,’d’); ans= 2.1180339887498949025257388711907
11/46
符号对象转换为数值对象的函数double(), vpa() 1、double()
这种格式的功能是将符号常量转换为双精度数值 2、vpa()
创建符号对象与函数命令(P50)
1、函数命令sym()格式 格式1 s=sym(a)(a代表一个数字值、数值矩阵、数值表达式 格式2 s=sym(‘a’)(a代表一个字符串)

第3章 MATLAB符号计算

第3章 MATLAB符号计算

>>f1=sym('1/(s^2+3*s+2)'),[n1,d1]=numden(f1) >>f2=sym('1/s^2+3*s+2') ,[n2,d2]=numden(f2)
4
1
2
3.4 符号极限、微积分和级数求和
3.4.11101 0001 0100 1011 符号极限 0011 0010 1010
%对x求趋近于0的极限
%左趋近于0
>>limit(f,'x',0,'right')
%右趋近于0
4
1Байду номын сангаас
2
例:求
lim
x 0
ln(1 2 x) sin 3x

0011 0010 1010 1101 0001 0100 1011
>>syms x;F=log(1+2*x)/sin(3*x);limit(F,x,0)
subs(s) %用给定值替换符号表达式s中的所有 变量 subs(s,new) %用new替换符号表达式s中的自 由变量 subs(s,old,new) %用new替换符号表达式s中的 old变量 >>f=sym('(x+y)^2+3*(x+y)+5'),x=5;f1=subs(f) >>f2=subs(f,'x+y','s') >> f4=subs(f,'x','z')
compose(f,g) %求f(x)和g(y)的复合函数f(g(y))

第三章MATLAB语言符号运算PPT课件

第三章MATLAB语言符号运算PPT课件

3.1.1 符号对象的创建
例:
>> x=sym('x') >> y=sym('y')
>> syms x y
>> z=x*x+y*y z= x^2+y^2 >> a=5;b=3;c=a*a+b*b c=
34
3.1.1 符号对象的创建
2. 符号常量的创建 不含变量的符号叫符号常量。符号常量的定义 也使用函数sym()。
3.1.1 符号对象的创建
➢syms函数调用格式:
函数sym一次只能定义一个符号变量,使用不 方便。MATLAB提供了另一个函数syms,一 次可以定义多个符号变量。syms函数的一般 调用格式为: syms 符号变量名1 符号变量名2 … 符号变量 名n 用这种格式定义符号变量时不要在变量名上加 字符串分界符(‘),变量间用空格而不要用逗号 分隔。
例:
>> a=sym(1/5) a= 1/5
3.1.1 符号对象的创建
3. 符号表达式的创建
符号表达式为含有符号对象(符号常量、符号变量)的 表达式,其创建方法如下: 1.利用函数sym()直接创建 sym(A):其中A为字符串的表达式,必须被单引号引用。 2.利用符号对象创建 符号表达式也可以通过创建的符号对象来实现,当把已 定义的符号变量或者符号常量连接为表达式,即可完成 符号表达式的创建。
※ 数值运算中必须先对变量赋值,然后才能参 与运算。
※ 符号运算无须事先对独立变量赋值,运算结 果以标准的符号形式表达。
3.1.1 符号对象的创建
在MATLAB中的符号计算主要是对符号对象进 行操作的,在使用符号计算功能前,首先需要创 建符号对象。本节主要介绍符号对象的创建,其 中常用的符号对象主要包括符号常量和变量、符 号表达式、符号矩阵。

实验三 MATLAB符号计算

实验三 MATLAB符号计算
都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵 时,是分别作用于矩阵的每一个元素。 由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运 算。MATLAB还有一些专用于符号矩阵的函数,这些函数作用于 单个的数据无意义。例如 transpose(s):返回s矩阵的转置矩阵。 determ(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、 tril、
expr1 =
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 = x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
expand使用指令 y=0.14-(1.2e+002)*(-2.4005*(0.445-x)^7+4.2505*(0.445x)^6-2.2336*(0.445-x)^5+0.4993*(0.445-x)^40.0514*(0.445-x)^3+0.0025*(0.445-x)^2);
符号矩阵的生成
符号矩阵可通过函数sym来生成。符号矩阵中的元素是任何不带等号的符 号表达式,各符号表达式的长度可以不相同;符号矩阵中,以空格或逗号 分隔的元素指定的是不同列的元素而分号分隔的元素指定的是不同行的元 素。 例:
syms x; A=sym(‘[cos(x),sin(x),x;-x+1 x^2+x+1 tan(x)]’) A= [ cos(x), sin(x), x] [ -x+1, x^2+x+1, tan(x)] >> size(A) %求符号矩阵的大小 ans = 2 3 > a=[1 2 3 4;4 5 6 7]; >> b=sym(a) b= [ 1, 2, 3, 4] [ 4, 5, 6, 7]

第三章 MATLAB符号运算

第三章 MATLAB符号运算

第3章 MATLAB符号计算符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。

MATLAB具有符号数学工具箱(Symbolic Math Toolbox),将符号运算结合到MATLAB的数值运算环境。

符号数学工具箱是建立在Maple软件基础上的。

3.1 符号表达式的建立3.1.1 创建符号变量和表达式Symbolic Math Toolbox规定在进行符号计算时,首先要定义基本的符号对象然后才能进行符号运算。

创建符号变量和符号表达式可以使用sym和syms命令。

1. 使用sym命令创建符号变量和表达式语法:sym(‘变量’,参数) %把变量定义为符号对象2.使用syms命令创建符号变量和符号表达式语法:syms(‘arg1’, ‘arg2’, …,参数) %把字符变量定义为符号变量syms arg1 arg2 …,参数%把字符变量定义为符号变量的简洁形式说明:syms用来创建多个符号变量,这两种方式创建的符号对象是相同的。

参数设置和前面的sym命令相同,省略时符号表达式直接由各符号变量组成。

说明:参数用来设置限定符号变量的数学特性,可以选择为’positive’、’real’和’unreal’,’positive’表示为“正、实”符号变量,’real’表示为“实”符号变量,’unreal’表示为“非实”符号变量。

如果不限定则参数可省略。

【例3.1】创建符号变量,用参数设置其特性。

>> syms x y real %创建实数符号变量>> z=x+i*y; %创建z为复数符号变量>>real(z) %复数z的实部是实数xans =x【例3.2】创建符号表达式。

>> f1=sym('a*x^2+b*x+c')f1 =a*x^2+b*x+c【例3.3】使用syms命令创建符号变量和符号表达式。

>> syms a b c x %创建多个符号变量>>f2=a*x^2+b*x+c %创建符号表达式f2 =a*x^2+b*x+c3.1.2符号表达式的代数运算符号运算与数值运算的区别主要有以下几点:▪传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的8位浮点表示法,因此每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

f1=a*cos(t);f2=b*sin(t); diff(f2)/diff(f1) %按参数方程求导公式求y对 x的导数 (diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3 %求y对x的二阶导数 f=x^2+y^2+z^2-a^2; zx=-diff(f,x)/diff(f,z) zy=-diff(f,y)/diff(f,z) %按隐函数求导公式求z 对x的偏导数 %按隐函数求导公式求z 对y的偏导数
1、学会符号变量和符号表达式的定义; 2、能够使用符号运算解决一般的微积 分和方程求解问题。
3.1 符号计算基础 3.2 符号导数及应用 3.3 符号积分
3.4 级数 3.5 代数方程符号求解 3.6 常微分方程符号求解 3.7 作业
3.1 符号计算基础
3.1.1 符号对象
1、建立符号变量和符号常数 (1)sym函数:
2. 符号矩阵运算
1)transpose(S): 返回S矩阵的转置矩阵; 2) determ(S): 返回S矩阵的行列式值; 3) colspace(S): 返回S矩阵列空间的基; 4) [Q,D]=eigensys(S): Q返回S矩阵的特征 向量,D返回S矩阵的特征值。
3.1.3 符号表达式中变量的确定 1)MATLAB中的符号可以表示符号变量和符号常 数; 2) findsym可以帮助用户查找一个符号表达式 中的符号变量。 调用格式:findsym(S, MATLAB按离字符'x'最近原则确定缺省变量。
2. 建立符号表达式
例3.3用两种方法建立符号表达式。
方法1: U=sym(‘3*x^2+5*y+2*x*y+3’) 方法2: syms x y; %建立符号变量x、y V=3*x^2+5*y+2*x*y+3 %定义符号表达式V 2*U-V+3 %求符号表达式的值 %定义符号表 达式U
例3.4建立x,y的一般二元函数。 在MATLAB命令窗口,输入命令: syms x y; f=sym('f(x,y)');
例3.7 对符号矩阵A的每个元素分解因式。
syms a b x y; A=[2*a^2*b^3*x^24*a*b^4*x^3+10*a*b^3*x^4,3*x*y5*x^2;4,a^3-b^3]; factor(A) %对A的每个元素分解因式 Ans= ?
例3.8 计算表达式S的值。
syms x y; s=(-7*x^2-8*y^2)*(-x^2+3*y^2); expand(s) %对s展开 collect(s,x) %对s按变量x合并同类项 factor(ans) % 对ans分解因式
3.2.2 符号函数求导及其应用 1)diff(f):求f对预设独立变量的一次微分值; 2)diff(f,t):求f对独立变量t的一次微分值; 3)diff(f,n):求f对预设独立变量的n次微分值; 4)diff(f,t,n):求f对独立变量t的n次微分值。
注意:
微分函数diff也可以作用于符号矩阵,其结果是 对矩阵的每个元素进行微分运算。
%求fn的Z变换 %求Fz的逆Z变换
3.4 级数
3.4.1 级数的符号求和 symsum (s,v,a,b) : %自变量v在[a,b]之间取值 时,对通项s求和。 例3.20 分别求级数1+1/2+1/3+…+1/k+…和级数 1/2+1/(2×3)+1/(3×4)+…+1/(k(k+1))+…之和。
3. Z变换 1)ztrans(fn,n,z) 求fn的Z变换像函数F(z) 2)iztrans(Fz,z,n) 求Fz的z变换原函数f(n) 例3.19求数列 fn=e-n的Z变换及其逆变换。 syms n z fn=exp(-n); Fz=ztrans(fn,n,z) f=iztrans(Fz,z,n)
3、默认自变量情况
原则:MATLAB按照数学常规决定谁是自变量。
1)除了i和j之外,字母位置最接近x的小写字母; 2)式子中没有上述字母,x被视为默认自变量。 例3.5:默认自变量情况 a*x^2+b*x+c 1/(4+cos(t)) 4*x/y 2*a+b 2*I+4*j %默认自变量为x %默认自变量为t %默认自变量为x %默认自变量为b %默认自变量为x
(2)int(f,’t’) 返回f对独立变量t的积分值; (3)int(f,a,b) 返回f对预设独立变量的积分值, 积分区间为[a,b],a和b为数值式; (4)int(f,’t’,a,b) 返回f对独立变量t的积分值, 积分区间为[a,b],a和b为数值式; (5)int(f,’m’,’n’) 返回f对预设变量的积分值, 积分区间为[m,n],m和n为符号式;
例3.12在曲线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
3.3 符号积分
3.3.1不定积分
(1)int(f) 返回f对预设独立变量的积分值;
(2)数值积分 先建立一个函数文件fx.m: function fx=fx(x) fx=3+0.3*x; 再在MATLAB命令窗口,输入命令: m=quad('fx',0,10,1e-3)
3.3.3积分变换 1. 傅立叶(Fourier)变换
1)fourier(fx,x,t) 求函数f(x)的傅立叶像函数F(t); 2)ifourier(Fw,t,x) 求傅立叶像函数F(t)的原函数 f(x); 例3.17求函数的傅立叶变换及其逆变换。 syms x t; y=abs(x); Ft=fourier(y,x,t) %求y的傅立叶变换 fx=ifourier(Ft,t,x) %求Ft的傅立叶逆变换
例3.11 求函数的导数。 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的三阶导数
f=x*exp(y)/y^2; diff(f,x) %z对x的偏导数 diff(f,y) %z对y的偏导数
(2)因式分解与展开 1)factor(S) :%对S分解因式,S是符号表达式 或符号矩阵; 2) expand(S) : %对S进行展开,S是符号表达 式或符号矩阵; 3) collect(S) :%对S合并同类项,S是符号表 达式或符号矩阵; 4) collect(S,v) : %对S按变量v合并同类项,S 是符号表达式或符号矩阵。
% 定义符号变量 % 定义数值变量 % 计算符号表达式值
% 计算数值表达式值
sqrt(k1)
sqrt(r1)
% 计算符号表达式值
% 计算数值表达式值
% 计算符号表达式值 % 计算数值表达式值
sqrt(k3+sqrt(k2))
sqrt(r3+sqrt(r2))
(2)syms函数
1) 调用格式:
syms var1 var2 … varn 说明:定义符号变量var1,var2,…,varn; !注意: 不要在变量名上加字符分界符('),变量间用 空格而不要用逗号分隔。
例3.13 求不定积分 x=sym('x'); f=(3-x^2)^3; int(f) %求不定积分 f=sqrt(x^3+x^4); int(f) %求不定积分 g=simple(ans) %调用simple函数对结果化简
3.3.2 符号函数的定积分
例3.14 求定积分
x=sym('x');t=sym('t'); int(abs(1-x),1,2) %求定积分 f=1/(1+x^2); int(f,-inf,inf) %求定积分 int(4*t*x,x,2,sin(t)) %求定积分 f=x^3/(x-1)^100; I=int(f,2,3) %用符号积分的方法求定积分 double(I) %将上述符号结果转换为数值
%定义4个符号变量 %定义4个数值变量 %建立符号矩阵A %建立数值矩阵B %计算符号矩阵A的行列式 %计算数值矩阵B的行列式
A=[a,b;c,d]
B=[w,x;y,z] det(A) det(B)
例3.2比较符号常数与数值在代数运算时的差别。 在 MATLAB命令窗口,输入命令: pi1=sym('pi');k1=sym('8'); k2=sym('2');k3=sym('3'); pi2=pi;r1=8;r2=2;r3=3; sin(pi1/3) sin(pi2/3)
例3.15 求椭球的体积 syms a b c z; f=pi*a*b*(c^2-z^2)/c^2; V=int(f,z,-c,c) V= 4/3*pi*a*b*c
例3.16 轴的长度为10米,若该轴的线性密度计 算公式是f(x)=3+0.3x千克/米(其中x为距轴的端 点距离),求轴的质量。
(1)符号函数积分 syms x; f=3+0.3*x; m=int(f,0,10)
例3.10 求极限。
>>limit(1/x,x,0) %求limit(1/x),x趋于0 >>limit(1/x,x,0,’left’) %求limit(1/x),x左趋于0 >>limit(1/x,x,0,’right’) %求limit(1/x),x右趋于0 特例: 若求函数cos(x)的导数,按照导数定义有 >>syms t x >>limit((cos(x+t)-cos(x))/t,t,0) Ans= ?
相关文档
最新文档