Matlab符号函数

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

2
4
6
x
例17、 计算不定积分 eax sin(bx)dx
syms x
int('exp(a*x)*sin(b*x)')
g=simplify(ans)
g=
exp(a*x)*(-b*cos(b*x)+a*sin(b*x))/(a^2+b^2)
diff(g)
f=simplify(ans)
f=
exp(a*x)*sin(b*x)
eax
sin(bx)dx

a2
1
b2
eax[a sin(bx)

b cos(bx)]
例18、绘函数 f ( x) eax sinbx (a = 1, b = 3 )在[0,3.2]上的图形.
并计算 2 e x sin3xdx . 1
syms a b x f=exp(a*x)*sin(b*x) f1=subs(f,a,1),f1=subs(f1,b,3) ezplot(f1,0,3.22)
要将符号表达式中的某一个变量转换为一个数或者另 一个变量时,可用函数subs: subs(A, ‘old’, ‘new’) 用‘new’置换符号表达式A中的’old’ 得到新的符号表达式。
命令eval可计算符号表达式的值
例9. 求符号多项式的值。
>> syms a x >> f=a*x^2+3*x+4; >> subs(f1,x,5) >> f1=subs(f,a,2)
串分界符(‘),变量间用空格而不要用逗号分隔。
符号函数中只有一个符号变量时,默认其为自变量。
例1. 定义两个符号变量x,y,并绘制函数y=exp(-x^2)的图形。
>> syms x y >> y=exp(-x^2) y= exp(-x^2) >> ezplot(y,[-2.5,2.5])
ezplot(f,[a,b]) :二维曲线的绘制命令。 可用来画出函数f在区间[a,b]上的图形。
ans =
0.3333 0.4000 1.4286 0.4000
复杂表达式的化简
>> syms x y z a b c >>
其它常用命令:
f=(x+y)*(a+b^c)^z/(x+a)^2 1、降幂排列:collect(P,x);
f=
2、 展开:expand(P);
(x+y)*(a+b^c)^z/(a+x)^2
15
F1=simplify(int(f1,1,2)) 10
double( F1 ) 5
ans = 0 -3.1806 -5
exp(x) sin(3 x)
0 0.5 1 1.5 2 2.5 3 x
4、 级数求和(symsum命令) 格式:symsum(Sn, v, a, b) 对数列Sn关于自变量v自a至b求和。
例3. 比较一个符号变量和一个数值变量占用空间的不同。
>> clear >> syms A >> x=pi; >> whos Name Size
Bytes Class
A
1x1
x
1x1
126 sym object 8 double array
将数值变量转换为符号变量的常用方法是使用函数sym(A)
例4. 转换数值变量为符号变量
► limit(fx,x,1)
%求fx : x->1的极限
► limit(fx,x,0, 'right') %求fx : x->0的右极限
► limit(fx,x,0, 'left') %求fx : x->0的左极限
► limit(fx,x,inf)
%求fx : x->∞的极限
例12

求极限
lim
1
xy x
2
dx,
t xy dy
0 1 x2
syms x y z
%声明符号变量,注意变量间必须用空格分开
f1=x*y/(1+x^2) ;f2=x+y+z;
%建立符号函数
int(f1)
%对f1关于变量x(默认)求不定积分
int(f1,0, t )
%对f1关于变量x(默认)在[0,t]上求定积分
例16、计算 f = 1/(5+4cos(x)) 关于x的导数
h1 =
>> factor(h2) ans =
3*x^2+4*x-12
(x-1)*(2*x+5)*(x^2+x-7)
h2 = 2*x^4+5*x^3-16*x^2-26*x+35
>> h2=f*g h2 = (2*x^2+3*x-5)*(x^2+x-7)
在符号变量表达式中,通常默认x为自由变量,如果符 号表达式中不出现x,则以最靠近x的字母为自由变量。用函 数findsym()可以确定表达式中的自由变量。findsym(表达 式)可得出表达式中所有的符号变量, findsym(表达式,n) 可以得到表达式中最靠近x的n个变量。
1、 极限运算(limit命令)
格式: limit(fx, v, a) 求函数fx当自变量v→a时的极限。
例11、设
f
(x)

1

1 e 1/
x
时函数的极限。
,求当 x 1, x 0 , x 0 , x
► syms x
%声明符号变量
► fx= 1/(1+exp(-1/x)); %建立符号函数fx
solve(fx, b )
%求方程fx=0关于变量b的符号解
ans = -(a*x^2+c)/x
7、解微分方程
dsolve(eq,‘cond’)
求方程组 x(t) y(t) 0, y(t) 4x(t) 0
满足条件 x(0) y(0) 0 ,x(0) 1, y(0) 2 的特解( 解析解)
h0
sin(x

h) h

sin
x
.
► syms x h
%声明符号变量
► fx= (sin(x+h)-sin(x))/h
► limit(fx,h,0)
%求fx : h->0的极限
ans=
cosx
lim
x 2
x2 x2 4
syms x; limit((x-2)/(x^2-4),2) ans= 1/4
>> A=[1/3,1/4;1/5,1/7]; %定义一个表示二阶矩阵的数值变量
>> B=sym(A)
% 使用函数转换
B=
[ 1/3, 1/4] [ 1/5, 1/7]
将符号变量转换为数值变量的方法是使用函数double()或 numeric(). 例5. 定义一个分数为符号数,并将符号数转换为数值数。
► syms a k ► symsum(1/k,1,inf)
%求级数
1 1 1 1 23 k
► symsum(1/(k*(k+1)),1,inf)
%求级数
1 1 1 1 2 2 3 k (k 1)
► symsum(a*1/3^k,k,0,inf)
%求级数
例2.
ezplot(‘x^2/3+y^2/4-1’,[-5,5,-8,8])
画出椭圆 x2 y2 1 的图形,图形区域 (x, y) [5,5][8,8] 。 34
符号变量与数值变量的区别
符号运算和数值运算的主要区别之一,是在参与运算时, 符号运算可以在没有提前赋值的情况下合法地出现在表达式中, 而数值变量在参与运算时,必须提前赋值。此外,符号 运算可获得任意精度的解,但同时也需要耗费较多的资源。
syms x y; eq='D2x+y=0,D2y-4*x=0'; [x,y]=dsolve(eq,'x(0)=0,Dx(0)=1,y(0)=0,Dy(0)=2')
diff(f)
对缺省变量求微分
diff(f,v) 对指定变量v求微分
int(f) int(f,v) int(f,v,a,b)
quad(f,v,a,b)
对f表达式的缺省变量求积分 对f表达式的v变量求积分 对f表达式的v变量在(a,b)区间 求定积分 对f表达式的v变量在(a,b)区间 求数值积分
a

a 3

a 32

a 3k

n
S1 k 1 2 n k 1
n
S2 k 2 1 22 n2 k 1
syms k n S=symsum(k,k,1,n);S1=simple(S)
S1 =1/2*n*(n+1)
S=symsum(k^2,k,1,n);S2=simple(S) S2 =1/6*n*(n+1)*(2*n+1)
进行代数运算时和数值常量进行的运算不同。
(2) syms函数 函数sym一次只能定义一个符号变量,使用不方便。
MATLAB提供了另一个函数syms,一次可以定义多个 符号变量。syms函数的一般调用格式为:
syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符
例8:定义一个符号表达式,并从中确定符号变量。
>> clear >> syms a b c x >> f1=a*x^2+b*x+c; >> findsym(f1)
>> findsym(f1,1) ans = x
ans = a, b, c, x
>> findsym(f1,2) ans = x,c
符号表达式中变量替换
ans = f1 =
69 2*x^2+3*x+4
>> a=2;x=5;eval(f) ans =
69
将符号矩阵转化为数值矩阵 调用格式:double(A) numeric(A)
例10. A=sym([1/3,2/5;10/7,2/5])
A=
[ 1/3, 2/5] [ 10/7, 2/5]
>> numeric(A)
% 展开式前8项
将函数 f (x)
1
展开为7次麦克劳林多 项式.
5 4 cos(x)
?
6、 方程求根(solve命令)
syms x a b c %声明符号变量,注意变量间必须用空格分开
fx=a*x^2+b*x+c %建立符号函数
solve(fx)
%求方程fx=0的符号解
ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
1/(5+4 cos(x)) 1
syms x f=1/(5+4*cos(x)) ezplot(f) f1=diff(f,x,1) ezplot(f1) int(f1)
0.8 0.6 0.4 0.2
-6
-4
-2
0
2
4
6
x 4/(5+4 cos(x))2 sin(x)
1
0.5
0
-0.5
-1
-6
-4
-2
0
3、重叠: horner(P);
>> pretty(f)
4、 因式分解: factor(P);
( x y)(a bc )z (x a)2
5、 化简: simplify(P)
微积分基本运算
limit(f,x,a) 求f表达式在x->a时的极限
limit(f,x,a,’right(left)’) 求单侧极限
MATLAB中的符号运算
建立符号变量和符号常量
MATLAB提供了两个建立符号对象的函数: sym, syms
(1) sym函数 sym函数用来建立单个符号变量,一般调用格式为: 符号变量名=sym('符号字符串')
该函数可以建立一个符号变量,符号字符串可以是常量、 变量、函数或表达式。
应用sym函数还可以定义符号常量,使用符号常量
例6:求f=1/sin(x)的反函数.
>> f=sym('1/sin()');
>> syms x; f=1/sin(x);
>> finverse(f)
>> finverse(f)
ans =
ans =
asin(1/x)
asin(1/x)
例7:符号多项式运算
>> syms x >> f=2*x^2+3*x-5;g=x^2+x-7; >> h1 = f+g,h2 = expand(f*g)
2 、求导运算(diff命令) 格式: diff(fx, v,n)
求函数fx关于自变量v的n阶导数。N缺省时,为一阶导数
例13、设
f
(x)

1

1 e 1/
x
,求f
`(x).
3 、积分运算(int命令)
格式: int(fx, v, a, b) 求函数fx当自变量从a到b的积分。
例15、求

>> clear >> x=sym('1/3'); >> double(x)
ans =
0.3333
符号表达式的创建
含有符号对象的表达式称为符号表达式。建立符 号表达式有以下方法:
f=sym('表达式')
例如: f=sym('a*x^2+b*x+c')
或:
syms 符号变量1 符号变量2 …
f=表达式
5、 泰勒展开(taylor命令)
格式: taylor(fx, v, n, v0) 求fx关于自变量v在v0处泰勒展开前n项。
syms x fy=1/(1+x+x^2) f=taylor(fy) % 求fx对自变量x(默认)在x=0点(默认)泰
% 勒展开前6项(默认) f=taylor(fy,8,1) % 求fx对自变量x(默认)在x=1点泰勒
相关文档
最新文档