当前位置:文档之家› 第四章 MATLAB 的符号运算功能

第四章 MATLAB 的符号运算功能


(3)同类项合并命令collect
格式1:collect(A,v) A是一个符号矩阵,v是符号变量或符号表达 式。此命令将A的元素整理为以v为变量(其余 符号变量均作为常量)按降幂排列的多项式。 格式2:collect(A) 格式2同格式1,只是按MATLAB的默认符号 变量进行同类项和并。 注意:MATLAB默认符号变量的规则为:对 除i,j外的小写英文字母进行搜索,x为首选 符号变量,其余字母的选取原则是靠x近者优 13 先,在x后者优先,即x,y,w,z,v…
24
4.4 符号代数方程求解
1. 线性方程组的符号求解 求解线性代数方程组函数linsolve 格式:x=linsolve(A,b) 求解符号线性方程组Ax=b,使x=sym(A)\sym(b) 例4.15 求线性方程组AX=b的解,其中 A='[a11,a12;a21,a22]';b='[b1;b2]'; 输入并运行命令 X=linsolve(A,b),结果为 X= [ -(-a22*b1+b2*a12)/(-a21*a12+a11*a22) ] [ (-a21*b1+a11*b2)/(-a21*a12+a11*a22) ]
x=solve('x+x*exp(x)-10','x')
%当方程的一端为0时,可仅标出方程另一 端的符号表达式 x =1.6335061701558463841931651789789
29
例4.17 符号非线性方程组求解的例子
(1) 求解非线性方程组:
1 1 3 28 x3 y 1 1 4 x y
14
4.3 符号微积分
1.符号表达式极限的求解命令limit 格式1: limit(F,x,a) 计算符号表达式F在x→a时的极限 格式2: limit(F,a) 计算符号表达式F在默认变量→a时的极限 格式3: limit(F) 计算符号表达式F在a=0时的极限 格式4:limit(F,x,a,'right')或limit(F,x,a,'left') 指定取极限的方向
2.符号矩阵的简化 MATLAB的符号工具箱提供了符号矩阵 的因式分解、展开、合并、简化及通分 等操作命令。
10
(1) 因式分解命令factor
格式:factor(A) 当A是一个符号矩阵时,此命令将该矩阵的每 一个元素进行因式分解;当A是一个整数时, 此命令返回该整数的所有素数因数。 例4.6 syms x y z u; a=[x^3-1,y^4-1;z^5-2,u^2-2*u+1]; b=factor(a) b=[(x-1)*(x^2+x+1), (y-1)*(y+1)*(y^2+1)] [ z^5-2, (u-1)*^2] 例4.7 factor(12345678) ans = 2 3 3 47 14593 11
20
3 符号表达式积分命令int 格式1: int(S) 计算符号表达式S对默认变量的不定积分 格式2: int(S,v) 计算符号表达式S对符号变量v的不定积分 格式3: int(S,a,b) 计算符号表达式S对默认变量从a到b的定积分 格式4: int(S,v,a,b) 计算符号表达式S对符号变量v从a到b的定积分
syms x t; %定义符号变量x,t G=(1+2*t/x)^(3*x); %定义符号表达式G limit(G,x,inf) %计算符号表达式G在x→∞时的极限(x可省 略) ans = exp(6*t)
17
例4.12 求极限
sin x lim x 0 x
syms x; %定义符号变量x F=sin(x)/x; %定义符号表达式F limit(F) %计算符号表达式F在x→0时的极限 ans=1
解: 输入并运行如下的程序: x=solve('2*sin(3*x-pi/4)=1') x=5/36*pi 注意:在求解周期函数方程时,有无穷多的 解。在这种情况下,solve对解的搜索范围限 制在接近于零的有限范围。
28
(3) 求解非线性方程
x xe 10 0
x
解: 输入并运行如下的程序:
19
例4.13 符号表达式微分命令 diff 的例子
syms x y; F= [sin(x^2),cos(y^3) ]; diff(F) ans= [ 2*cos(x^2)*x, 0] diff(F,y) ans = [ 0, -3*sin(y^3)*y^2] diff(F,3) ans = [-8*cos(x^2)*x^3-12*sin(x^2)*x, 0] diff(F,y,3) ans=[0,27*sin(y^3)*y^654*cos(y^3)*y^3-6*sin(y^3)]
25
2. 非线性方程组的符号求解 求解非线性代数方程组函数solve 格式1:solve(S) 对符号方程S的默认变量求解 格式2:solve(S,v) 对符号方程S的指定变量v求解 格式3:[x1, …,xn]=solve(S1, …Sn) 对n个符号方程S1,…,Sn的默认变量求解并 赋值给x1, …,xn 格式4:[x1, …,xn]=solve(S1, …Sn,v1, …,vn) 对 n 个 符 号 方 程 S1, …Sn 的 指 定 变 量 v1, …,vn求解并赋值给x1, …,xn
4
利用sym命令也可以先定义符号变量,然后再 由符号变量定义符号矩阵
定义一个符号变量x可用命令sym('x') 同 时 定 义 多 个 符 号 变 量 x,y,z,…, 可 用 命 令 syms x y z …
例4.2 命令 syms s x y z %定义符号变量s,x,y,z b=[1/s,sin(x),x^2;1,exp(y),log(z)] 运行结果为 b =[ 1/s, sin(x), x^2] [ 1, exp(y), log(z)]
1
第四章 MATLAB符号运算
4.1 符号计算基础
4.2 符号矩阵的运算
4.3 符号微积分
4.4 符号代数方程求解 4.5 符号函数的二维图形
2
4.1 符号计算基础
1. 符号对象 符号表达式是代表数字、函数、算子和变量 的MATLAB字符串,或字符串数组。不要求 变量有预先确定的值。 符号方程式是含有等号的符号表达式。 符号矩阵是数组,其元素是符号表达式。
同类项合并命令collect的例子 例4.9 syms x y; %定义符号变量x,y A=x^2*y+y*x-x^2-2*x; %定义符号表达式A collect(A,x) %关于x合并同类项 ans= (y-1)*x^2+(y-2)*x collect(A,y) %关于y合并同类项 ans =(x^2+x)*y-x^2-2*x f =-1/4*x*exp(-2*x)+3/16*exp(-2*x); collect(f,exp(-2*x)) %关于表达式exp(-2*x)同类项合并 ans= (-1/4*x+3/16)*exp(-2*x)
26
例4.16 符号非线性方程求解的例子
(1) 求解非线性方程
2 4x 2 2 1 x2 x 4 x2
解: 输入并运行如下的程序: x=solve('1/(x+2)+4*x/(x^2-4)=1+2/(x-2)') x=1
27
(2) 求解非线性方程 2 sin(3t ) 1 4
8
例4.5 符号矩阵的数值转换的例子
syms x y z;
F=[sin(x),cos(y),exp(z)];
G=subs(F,[pi/2,pi/4,2],[x y z]) G = 1.0000 0.7071 7.3891
9
4.2 符号矩阵的运算 1.基本运算 符号矩阵的基本运算与数值矩阵的基本 运算完全相同。
22
(2) 求定积分

2 0costLeabharlann tsin t2
4txdx
输入并运行如下程序: syms x t; s3=int(cos(t),0,pi/2) s3 = 1 s4=int(4*t*x,x,2,sin(t)) s4 = 2*t*(sin(t)^2-4)
23
注意
正如从研究微分学所了解的,积分比微分复 杂得多。积分或逆求导不一定是以封闭形式 存在,或许存在但软件也许找不到,或者软 件可明显地求解,但超过内存或时间限制。 当 MATLAB 不能找到逆导数时,它将返回未 经计算的命令。 例如 int('log(x)/exp(x^2)') ans=int(log(x)/exp(x^2),x)
7
例4.4 符号矩阵的符号转换的例子 syms x y z u v w; %定义符号变量x,y,z,u,v,w F=[sin(x),cos(y),exp(z)]; %定义符号矩阵F subs(F,[x y z] ,[u,v,w]) %用符号变量u,v,w替换矩阵F中的符号变量 x,y,z ans = [sin(u), cos(v), exp(w)]
6
4. 符号矩阵的数值转换 符号运算的目的经常是希望得到精确的数值 解,因此需要把符号矩阵转换成数值矩阵。
符号矩阵中符号变量的替换命令subs
格式:subs(F,[old], [new]) 其中F为符号矩阵,[old]为F中符号变量的列 表,[new]为替换后变量的列表。
此命令将F中变量old替换为new。
5
3. 符号矩阵的索引和修改 符号矩阵的索引和修改与数值矩阵的索引和修 改完全相同,即利用矩阵的下标表达式实现 例4.3 syms s x y z a=[1/s,sin(x),x^2; 1,exp(y),log(z)]; a(2,3) ans = log(z) a(2,3)='log(cos(x))' a = [ 1/s, sin(x), x^2 ] [ 1, exp(y), log(cos(x)) ]
相关主题