Upload
eterou
View
2.242
Download
19
Embed Size (px)
DESCRIPTION
CHAPTER 2
Citation preview
23/4/10 第二章 符 号 运 算 1
第二章 符 号 运 算
MATLAB 的数学计算=数值计算+符号计算 其中符号计算是指使用未定义的符号变
量进行运算,而数值计算不允许使用未定义的变量。
23/4/10 第二章 符 号 运 算 2
1. 符号变量、符号表达式和符号方程的生成
使用 sym 函数定义符号变量和符号表达式 使用 syms 函数定义符号变量和符号表达式
23/4/10 第二章 符 号 运 算 3
2 、用 syms 创建符号变量使用 syms 命令创建符号变量和符号表达式语法:
syms(‘arg1’, ‘arg2’, …, 参数 ) % 把字符变量定义为 % 符号变量
syms arg1 arg2 …, 参数 % 把字符变量定义为符号变量的简洁形
% 式
说明: syms 用来创建多个符号变量,这两种方式创建的符号对象是相同的。参数设置和前面的 sym 命令相同,省略时符号表达式直接由各符号变量组成。
23/4/10 第二章 符 号 运 算 4
使用 syms 函数定义符号变量和符号表达式
>> syms a b c x
>> f = a*x^2 + b*x + c
f =
a*x^2 + b*x + c
>> g=f^2+4*f-2
g =
(a*x^2+b*x+c)^2+4*a*x^2+4*b*x+4*c-2
>>
ex0201
23/4/10 第二章 符 号 运 算 5
符号方程的生成>> % 符号方程的生成>> % 使用 sym 函数生成符号方程>> equation1='sin(x)+cos(x)=1'
equation1 =
sin(x)+cos(x)=1
>>
23/4/10 第二章 符 号 运 算 6
2.2 符号形式与数值形式的转换1 、将符号形式转换为数值形式: eval 与 numeric例: a1='2*sqrt(5)+pi'
a1 = 2*sqrt(5)+pi b2=numeric(a2) % 转换为数值变量 b2 = 7.6137
b3=eval(a1)
b3 = 7.6137
23/4/10 第二章 符 号 运 算 7
2.2 符号形式与数值形式的转换2 、数值形式转换为符号形式p=3.1416;
q=sym(p)
执行后屏幕显示: q=3927/1250
numeric(q)
屏幕显示: ans =
3.1416
23/4/10 第二章 符 号 运 算 8
2.2 符号形式与数值形式的转换3 、多项式与系数向量之间的转换
3.1 sym2poly: 将多项式转化为对应的系数向量 例: syms x p; p=x^3-4*x+5; sym2poly(p)执行后屏幕显示: ans= 1 0 -4 5
23/4/10 第二章 符 号 运 算 9
2.2 符号形式与数值形式的转换3 、多项式与系数向量之间的转换3.2 poly2sym: 将向量转化为对应的多项式例 a=[1 0 -4 5]; poly2sym(a)执行后屏幕显示 ans= x^3-4*x+5
23/4/10 第二章 符 号 运 算 10
3. 符号表达式 ( 符号函数 ) 的操作 (1) 符号表达式的四则运算syms x
f=x^3-6*x^2+11*x-6;
g=(x-1)*(x-2)*(x-3);
h=x*(x*(x-6)+11)-6;
f+g-h
执行后输出:ans =
x^3-6*x^2+11*x+(x-1)*(x-2)*(x-3)-x*(x*(x-6)+11)
23/4/10 第二章 符 号 运 算 11
(1) 符号表达式的四则运算 >> syms x y a b >> fun1=sin(x)+cos(y) fun1 =sin(x)+cos(y)>> fun2=a+bfun2 =a+b>> fun1+fun2ans =sin(x)+cos(y)+a+b>>fun1*fun2 ans =(sin(x)+cos(y))*(a+b)
23/4/10 第二章 符 号 运 算 12
(1) 将表达式中的括号进行展开 :expand
(2) 将表达式进行因式分解: factor
(3) 将一般的表达式变换为嵌套的形式: horner
(4) 将表达式按某一个变量的幂进行集项: collect
(5) 化简表达式: simplify
(6) 化简表达式,使之成为书写长度最短的 形式: simple
23/4/10 第二章 符 号 运 算 13
同一个数学函数的符号表达式的可以表示成三种形式,例如以下的 f(x) 就可以分别表示为:
多项式形式的表达方式:f(x)=x^3+6x^2+11x-6
因式形式的表达方式 (factor) :f(x)=(x-1)(x-2)(x-3)
嵌套形式的表达方式 (horner) :f(x)=x(x(x-6)+11)-6
23/4/10 第二章 符 号 运 算 14
集项-合并符号表达式的同类项 >> syms x y
>> collect(x^2*y + y*x - x^2 - 2*x) ans = (y-1)*x^2+(y-2)*x
>> syms x y>> collect(x^2*y + y*x - x^2 - 2*x,y)ans = (x^2+x)*y-x^2-2*x
23/4/10 第二章 符 号 运 算 15
符号多项式的嵌套 (horner )>> syms x >> fun1=2*x^3+2*x^2-32*x+40fun1 =2*x^3+2*x^2-32*x+40>> horner(fun1)ans =40+(-32+(2+2*x)*x)*x>> fun2=x^3-6*x^2+11*x-6 fun2 = x^3-6*x^2+11*x-6>> horner(fun2)ans = -6+(11+(-6+x)*x)*x>>
23/4/10 第二章 符 号 运 算 16
符号表达式的化简 (simplify) >> syms x>> fun1=(1/x+7/x^2+12/x+8)^(1/3)fun1 =(13/x+7/x^2+8)^(1/3)>> sfy1=simplify(fun1)sfy1 =((13*x+7+8*x^2)/x^2)^(1/3)>> sfy2=simple(sfy1)sfy2 =(13/x+7/x^2+8)^(1/3)
23/4/10 第二章 符 号 运 算 17
subs 函数用于替换求值
>> syms x y
f = x^2*y + 5*x*sqrt(y)
f =
x^2*y+5*x*y^(1/2)
>> subs(f, x, 3)
ans =
9*y+15*y^(1/2)
>> subs(f, y, 3)
ans =
3*x^2+5*x*3^(1/2)
>>subs(f,{x,y},{1,1})
ex0202
ex0203
ex0204
23/4/10 第二章 符 号 运 算 18
4 、 反函数的运算 (finverse )
>> syms x y
>> f = x^2+y
f =
x^2+y
>> finverse(f,y)
ans =
-x^2+y
使用格式:1 、 g=finverse(f):f,g 均为单变量 x 的符号函数;2 、 g=finverse(f,t) 返回值 g 的自变量取为 t ;
23/4/10 第二章 符 号 运 算 19
5 复合函数的运算 (compose)
>> syms x y z t u
>> f = 1/(1 + x^2);
>> g = sin(y);
>> h = x^t;
>> p = exp(-y/u) ;
>> compose(f,g)
ans =
1/(1+sin(y)^2)
>> compose(f,g,t)
ans =
1/(1+sin(t)^2)
使用格式:Compose(f,g) % 返回当 f=f(y) 和 g=g(x)时 的复合函数 f(g(x))
Compose(f,g,t) % 返回的复合函数以 t为 自变量,即有 f(g(t))
23/4/10 第二章 符 号 运 算 20
6 函数的极限、导数与积分
( 1 )函数极限 - limit 函数的使用 ( 2 )函数求导 - diff 函数的使用 ( 3 )符号积分- int 函数的使用
23/4/10 第二章 符 号 运 算 21
(1) 符号极限 (limit) 假定符号表达式的极限存在, Symbolic Math Toolbox提供了直
接求表达式极限的函数 limit,函数 limit的基本用法如下表所示。limit函数的用法
表达式 函数格式 说明
limt(f) 对 x求趋近于 0的极限 limt(f,’x’,a) 对 x求趋近于 a的极限,当左右
极限不相等时极限不存在。
limt(f,’x’,a, ‘left’)
对 x求左趋近于 a的极限
limt(f,’x’,a, ‘right’)
对 x求右趋近于 a的极限
f(x)lim0x->
f(x)limax->
f(x)lim-ax->
f(x)limax +->
23/4/10 第二章 符 号 运 算 22
符号极限 (limit)
>> syms x a t h;>> limit(sin(x)/x)ans = 1>> limit((x-2)/(x^2-4),2)ans = 1/4 >> limit((1+2*t/x)^(3*x),x,inf)ans =exp(6*t)
如果左右极限不相等,则极限不存在, matlab 命令窗口中显示 Nan
23/4/10 第二章 符 号 运 算 23
(2) 符号求导
调用格式 :
一阶导数: yx=diff(f,x)
二阶导数: yxx=diff(f,x,2) 或 yxx=diff(yx,x)
三阶导数: yxxx=diff(f,x,3) 或 yxxx=diff(yxx,x)
ex0205
一、一元函数符号求导求导函数: diffdiff(f) % 求 f 对自由变量的一阶微分diff(f,t) % 求 f 对符号变量 t 的一阶微分diff(f,n) % 求 f 对自由变量的 n 阶微分diff(f,t,n) % 求 f 对符号变量 t 的 n 阶微分
23/4/10 第二章 符 号 运 算 24
(2) 符号求导二、二元函数的符号求导syms x y z z=x^4+y^4-cos(2*x+3*y); zx=diff(z,x);zy=diff(z,y); zxx=diff(zx,x);zxy=diff(zx,y); zxyx=diff(zxy,x); zx,zy,zxy,zxyx ex0206
23/4/10 第二章 符 号 运 算 25
3 、符号积分 积分有定积分和不定积分,运用函数 int 可以求得符号表
达式的积分。语法:
int(f,t) % 求符号变量 t 的不定积分int(f,t,a,b) % 求符号变量 t 的积分int(f,t,’m’,’n’) % 求符号变量 t 的积分
说明: t 为符号变量,当 t 省略则为默认自由变量; a 和 b为数值, [a,b] 为积分区间; m 和 n 为符号对象, [m,n]为积分区间;与符号微分相比,符号积分复杂得多。因为函数的积分有时可能不存在,即使存在,也可能限于很多条件, MATLAB 无法顺利得出。当 MATLAB 不能找到积分时,它将给出警告提示并返回该函数的原表达式。
Ex0207-0208
23/4/10 第二章 符 号 运 算 26
7 、符号求和:求和函数: symsum(fn,n,n1,n2)
其中 fn 为求和通项, n 为求和的自变量, n1为起始项, n2 终止项, n2 可为任意有限正整数,也可以取到无穷 ( 即 inf)
Ex0209-10
23/4/10 第二章 符 号 运 算 27
8 、 Taylor 展开把函数 f(x)Taylor 展开的函数: taylor(f,n,x0)
其中 :
f 为被展开的函数表达式n 为展开时指定的项数x0 为指定的展开点
ex0211
23/4/10 第二章 符 号 运 算 28
9 方程求根MATLAB 可以用 solve 命令给出方程的数值解。语法:
solve(‘eq’,x) % 求方程关于指定变量的解solve(‘eq1’, ’eq2’,x1,x2,…) % 求方程组关于指
定变量的解
说明: eq 可以是含等号的符号表达式的方程,也可以是不含等号的符号表达式,但所指的仍是令 eq=0 的方程;当参数 x 省略时,默认为方程中的自由变量;其输出结果为结构数组类型。 另外,只能用 solve 求代数方程与超越方程(含方程
组)的解,而不能用来求微分方程和积分方程的解。
ex0213 - 14 , 02142
23/4/10 第二章 符 号 运 算 29
方程组的求解求三元方程组x2+2x+1=0
x+3z=1
yz=-1
的解
f1=sym(‘x^2+2*x+1=0’);f2=sym(‘x+3*z=1’);f3=sym(‘y*z=-1’);[x,y,z]=solve(f1,f2,f3,’x’,’y’,’z’)
23/4/10 第二章 符 号 运 算 30
10 常微分方程的符号解MATLAB 提供了 dsolve 命令可以用于对符号常微分方程进行求解。语法:
dsolve(‘eq’,’con’,’v’) % 求解微分方程dsolve(‘eq1,eq2…’,’con1,con2…’,’v1,v2…’)
% 求解微分方程组说明:’ eq’ 为常微分方程;’ con’ 是常微分初始条件,可省略;’ v’
为指定自由变量,省略时则默认为 x 或 t 为自由变量;输出结果为结构数组类型。 当 y 是因变量时,微分方程’ eq’ 的表述规定为: y 的一阶导数或表示为 Dy ; y 的 n 阶导数或表示为 Dny 。 微分初始条件 'con' 应写成 'y(a)=b , Dy(c)=d' 的格式;当初始条件
少于微分方程数时,在所得解中将出现任意常数符 C1 , C2…… ,解中任意常数符的数目等于所缺少的初始条件数。
ex0216 - 18
23/4/10 第二章 符 号 运 算 31
11. 图示化符号函数计算器
单变量符号函数计算器 – 输入框的功能 – 控制按钮的功能
泰勒级数逼近计算器
23/4/10 第二章 符 号 运 算 32
( 1 )单变量符号函数计算器 使用 funtool 函数来调用图示化单变量符号函数计算器
23/4/10 第二章 符 号 运 算 33
( 2 )泰勒级数逼近计算器
使用 taylortool 函数来调用图示化泰勒级数逼近计算器
23/4/10 第二章 符 号 运 算 34