MATLAB之(二)符号运算功能
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ans = [ -6*x-2*x^3-7*x^2, 3/2*x^2+x+1/2*x^3] [ 6+2*x^3+10*x^2+14*x, 1/2*x^3-2*x^2-3/2*x] (2)求逆运算“inv”,行列式运 算“det”,幂运算“^”、求秩运算 “rank”、指数运算“exp”和对 数运算“log” >> inv(a) ans = [ 1/2*x*(x+1)*(x+2), 1/2*x*(x+3)*(x+2)] [ -1/2*x*(x+3)*(x+1), 1/2*(x+3)*(x+1)*(x+2)]
§14.2 符号运算功能
一、符号表达式的生成 1.用单引号设定后输入或赋值 例如,创建符号函数
>> f='log(x)' f= log(x) 2.用ቤተ መጻሕፍቲ ባይዱ令sym(生成符号对象) 例如,创建符号方程
>> eqation=sym('a*x^2+b*x+c=0') eqation = a*x^2+b*x+c=0
又如,求下列微分方 程组的特解
du v dt 也可使用命令 dv w >> dt S=dsolve('Du=v','Dv=w','D dw w-u','u(0)=0,v(0)=0,w(0)=1') u dt 查看解 u (0) 0, v(0) 0, w(0) 1 >> S.u
> In C:\MATLAB6P1\toolbox\s ymbolic\@sym\finverse. m at line 43 ans = (-y+x)^(1/3)
三、符号的矩阵的创立与运算 1.符号矩阵的创立 符号矩阵的创立与和创立数值矩阵的方法相似,只不过要 用到符号定义函数sym。我们可以使用sym函数直接建立 符号矩阵;可以通过建立子矩阵的方法建立符号矩阵;也 可以使用sym函数将数值矩阵转化为符号矩阵。 >> a=sym('[1 1/s+x sin(x);y/x 1+1/y,tan(x+y);3+4,exp(x^2+y^2),log(tanh(y))]') a= [ 1, 1/s+x, sin(x)] [ y/x, 1+1/y, tan(x+y)] [ 3+4, exp(x^2+y^2), log(tanh(y))]
1.复合函数的运算
复合函数运算可通过功能函数compose来实现,其调用 格式为: (1)compose(f,g) 返回当f=f(x)和g=g(y)时的复合 函数f(g(y))。 (2)compose(f,g,z) 返回复合函数以z为自变 量。 (3)compose(f,g,x,z) 返回复合函数f(g(z)), 且使x为f的独立变量。 1/(1+sin(y)^2) 例如 >> compose(f,g,z) >> syms x y z t ans = >> f=1/(1+x^2); 1/(1+sin(z)^2) >> g=sin(y); >> compose(h,g,x,z) >> h=x^t; ans = >> compose(f,g) sin(z)^t ans =
X=fsolve(‘fun’,X0,options,’gradfun’)
例如
x1 0.7 sin x1 0.2 cos x 2 0 x 2 0.7 cos x1 0.2 sin x 2 0
function y=fc(x) y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2)); y(2)=x(2)-0.7*cos(x(1))-0.2*sin(x(2)); y=[y(1),y(2)]; >> x0=[0.5,0.5]; >> fsolve('fc',x0) ans = 0.4442 0.7715
A= [ cos(x*t), sin(x+t)] [ exp(t/x), log(x-t)] >> int(A,t) ans = [ 1/x*sin(x*t), -cos(x+t)] [ exp(t/x)*x, -log(x-t)*(x-t)+x-t] >> int(sqrt(1+y^2),y) ans = 1/2*y*(1+y^2)^(1/2)+1/2*asinh(y) >> int(sqrt(1+y^2),0,1) ans = 1/2*2^(1/2)-1/2*log(2^(1/2)-1) 如,计算二次积分
limit(f,x,a) 计算符号表达式f在x→a时的极限 limit(f) 计算符号表达式f在x→0时的极限 >> syms x t; >> limit((1+2*t*sin(1/x))^(3*x),x,inf) ans = exp(6*t) 2.符号积分 积分函数int函数的调用格式为: int(S,t) 计算符号表达式S对符号变量t的不定积分 int(S,a,b) 计算符号表达式S对默认符号变量从a到 b的不定积分 >> syms x y t; >> A=[cos(x*t),sin(x+t);exp(t/x),log(x-t)]
2.幂级数
(1)用函数symsum求幂级数
n 1
x 2 n 1 的和函数。 2n 1
>> syms x n >> symsum(x^(2*n-1)/(2*n-1),n,1,inf) ans = 1/2*log((1+x)/(1-x)) (2)用taylor将函数展成泰勒级数,其调用格式为: Taylor(f,n) 求函数f的n-1阶麦克劳林级数 Taylor(f,n,x0,x) 求函数f在x0处的以x为变量的n-1阶泰勒 级数。 注:后面3个参数的次序可以任意打乱,在不引起混淆的 情况下均能给出正确结果。
>> linsolve(a,b) ans = [ 473/475] [ 91/95] [ 376/475] >> vpa(ans) ans = [ .99578947368421052631578947368421] [ .95789473684210526315789473684211] [ .79157894736842105263157894736842] 2.符号非线性方程组的求解方法 由函数fsolve实现,其调用格式为 X=fsolve(‘fun’,X0) ,X=fsolve(‘fun’,X0,options)
>> b=[1 2 3 5;7 9 10 11;13 15 17 18]; >> c=sym(b)
c= [ 1, 2, 3, 5] [ 7, 9, 10, 11] [ 13, 15, 17, 18] 2.符号矩阵的运算 符号矩阵的运算与数 值矩阵的运算相同 (1)四则运算: >> a=sym('[1/x 1/(x+1);1/(x+2) 1/(x+3)]'); >> b=sym('[x,1;x+2,0]'); >> a\b
求函数 e x在x0 7处的7 阶泰勒展式 >> syms x,n; >> taylor(exp(-x),x,8,7) ans = exp(-7)-exp(-7)*(x-7)+1/2*exp(-7)*(x-7)^2-1/6*exp(7)*(x-7)^3+1/24*exp(-7)*(x-7)^4-1/120*exp(-7)*(x7)^5+1/720*exp(-7)*(x-7)^6-1/5040*exp(-7)*(x-7)^7 八、符号和数字之间的转换 1.转化为符号变量命令:S=sym(f) >> S1=sym('3.456'),S2=sym(3.456), S3=sym('23f'),s4=sym(['23';'23';'32']) S1 = 3.456 S2 = 432/125
2.反函数的运算 反函数运算可通过功能函数finverse(f)来实现,其调用 格式为: (1)g=finverse(f) 符号函数f的反函数。 (2)g=finverse(f,z) 返回符号函数的自变量为z。
>> f=x^3+y; >> finverse(f,y) ans = -x^3+y >> finverse(f) Warning: finverse(x^3+y) is not unique.
(3)矩阵分解函数:特征值函数“eig”,约当标准型函数 “Jordan”,三角提取函数“diag”、“tril”、“triu” >> [u,v]=eig(b) u= [ (1/2*x+1/2*(x^2+4*x+8)^(1/2))/(x+2), (1/2*x1/2*(x^2+4*x+8)^(1/2))/(x+2)] [ 1, 1] v= [ 1/2*x+1/2*(x^2+4*x+8)^(1/2), 0] [ 0, 1/2*x-1/2*(x^2+4*x+8)^(1/2)] 四、符号微积分 1.符号极限 符号函数的极限是由limit函数来实现,其调用格式如下:
六、符号微分方程求解
常微分方程及微分方程组的符号求解由函数dsolve来实 现,其调用格式为: dsolve(‘equ1’, ‘equ2’,…) 例如,求微分方程 y(t 2 1) 2ty 0满足初始条件
y |x 0 1,y |x 0 3 的特解。
>> dsolve('(t^2+1)*D2y=2*t*Dy','y(0)=1,Dy(0)=3') ans = 1+t^3+3*t x e 又如,求微分方程 y 2 y y 的通解。 x >> dsolve('D2y-2*Dy+y=exp(x)/x','x') ans = -exp(x)*x+log(x)*exp(x)*x+C1*exp(x)+C2*exp(x)*x
S= u: [1x1 sym] v: [1x1 sym] w: [1x1 sym
七、级数 1.常数项级数 级数求和用函数symsum来实现,其调用格式为: symsum(一般项) symsum(一般项,变量) symsum(一般项,变量,起始,终止) 1 例如,求级数 2 的前10项和及无穷和。 n 1 n >> syms n; >> symsum(1/n^2,n,1,10) ans = 1968329/1270080 >> symsum(1/n^2,n,1,inf) ans = 1/6*pi^2
0
1
dy
1 y
( x 2 y 2 )dx
>> int(int((x^2+y^2),x,sqrt(y),1),y,0,1) ans =26/105
3.符号微分 微分diff,其调用格式为 diff(S) 表示对表达式S的微分。 diff(S,’v’) 或diff(S,sym(’v’)) 表示对变量v,求 表达式S的微分。 diff(S,n) 对整数n,对表达式S微分n次。 diff(S,’v’,n) 和diff(S,n,’v’) 都表示对变量v, 求表达式S的微分n次。 >> syms x t; >> diff(sin(x^2)) ans = 2*cos(x^2)*x
设
3z z x ln( xy),求 xy 2
>> syms x y; >> z=x*log(x*y); >> diff(diff(z,'x'),'y',2) ans = -1/y^2
五、符号代数方程求解 1.符号线性方程组的求解方法 可用linsolve和solve得到方程组的精确解。所得到的 精确解可由函数vpa转换成浮点近似数值。 >> a=sym([10 -1 0;-1 10 -2;0 -2 10]); >> b=('[9;7;6]');
3.用命令sym(确定多个符号对象),可用whos检查 存在的空间的各种变量及其所属类型 >> syms x y abcd alfa >> whos Name Size Bytes Class abcd 1x1 132 sym object alfa 1x1 132 sym object eqation 1x1 150 sym object f 1x6 12 char array x 1x1 126 sym object y 1x1 126 sym object Grand total is 34 elements using 678 bytes 二、符号函数的运算
ans = -1/3*3^(1/2)*exp(>> syms u v w t 1/2*t)*sin(1/2*t*3^(1/2))>> S=dsolve('Du=v,Dv=w,Dw-1/3*exp(u','u(0)=0,v(0)=0,w(0)=1') 1/2*t)*cos(1/2*t*3^(1/2))+1/3