当前位置:
文档之家› 4matlab的符号运算解读
4matlab的符号运算解读
符号对象及其运算
建立符号对象 符号表达式运算 符号表达式中变量的确定 符号矩阵
6
一、建立符号对象
1.建立符号对象 (1)sym函数 sym函数用来建立单个符号量,一般调用格式为 符号量名 = sym('符号字符串')
该函数可以建立一个符号量,符号字符串可以是常量、 变量、函数或表达式。例如:
合化简,并显示化简过程。 例如: s= sym('(x^2+5*x+6)/(x+2)'); simplify(s)
ans=
x + 3
20
函数simple试用几种不同的化简工具,然后选择在结 果表达式中含有最少字符的那种形式。例如 >> syms x >> s=cos(x)^2+sin(x)^2; simple(s) %自动调用多种函数对s进行化简,并显
例如: h=sym('[3/2,(2*x+1)/3;a/x+a/y,3*x+4]') ; [n,d]=numden(h) n = [ 3, 2*x + 1] [a*x + a*y, 3*x + 4] d = [ 2, 3] [ x*y, 1]
15
3.符号表达式的因式分解与展开
factor(s):对符号表达式s分解因式。 expand(s):对符号表达式s进行展开。
>> y2=sin(p2/3)
>> y3=cos((a1+10)^2)
>> y4=cos((a2+10)^2)
(2)syms函数 函数sym一次只能定义一个符号变量,使用不方便。 MATLAB提供了另一个函数syms,一次可以定义多个符号变量。 syms函数的一般调用格式为 syms符号变量名1符号变量名2…符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分 界符('),变量间用空格而不要用逗号分隔。例如,用syms 函数定义4个符号变量a、b、c、d,命令如下: syms a b c d
2.建立符号表达式
含有符号对象的表达式称为符号表达式。建立符号 表达式有以下2种方法。 (1)用sym函数建立符号表达式。例如:
U=sym('3*x^2-5*y+2*x*y+6') U = 3*x^2-5*y+2*x*y+6 F=sym('cos(x^2)-sin(2*x)=0') F = cos(x^2)-sin(2*x)=0 M=sym('[a,b;c,d]') M = [ a, b] [ c, d]
2*3^2*5*7
18
4.符号表达式系数的提取
c = coeffs(s [, x])
该函数返回多项式中按指定变量升幂顺序排列的系 数,若没有指定变量,则返回所有项的常系数,且按离 字符“x”近原则确定主变量。例如: syms x y s = 5*x*y^3 + 3*x^2*y^2 + 2*y + 1;
collect(s):对符号表达式s合并同类项。
collect(s,v):对符号表达式s按变量v合并同类项。
16
例如:
syms x y; s1=x^3-y^3; factor(s1) ans = (x - y)*(x^2 + x*y + y^2) s2=(-7*x^2-8*y^2)*(-x^2+3*y^2); expand(s2) %对s展开
a=sym('a') %建立符号变量a 符号变量参与运算前无须赋值,其结果是一个由参与 运算的变量名组成的表达式。
a=sym('a'); w=a^3+3*a+10 w= a^3 + 3*a + 10 x=5; w=x^3+3*x+10 w= 150 whos Name Size a 1x1 w 1x1 x 1x1
>> u=sym2poly(sym('x^3-2*x-5')) u = 1 0 -2 -5 >> v=poly2sym(u,'Y') v = Y^3-2*Y-5
23
三、符号表达式中变量的确定
findsym、symvar函数可以帮助用户查找一个符号表达式 中的符号变量。该函数的调用格式为 findsym(s[,n]) symvar(s[,n])
掌握符号对象的定义方法以及符号表达式的运
算法则。
掌握微积分的符号计算方法。 掌握级数求和的方法以及将函数展开为泰勒级
数的方法。
掌握代数方程和微分方程符号求解的方法。
5
第一节 符号对象及其运算
MATLAB数值运算的对象是数值,而符号运算的对象是非数
值的符号对象。
符号对象就是指代表非数值的符号字符串。例如,符号常 量、符号变量以及有它们参与的数学表达式等。 在进行符号运算前首先要建立符号对象。
coeffs(s)
coeffs(s,y)
%求所有项的常系数,按x的升幂排列
%求变量y的系数
[ 1, 2, 5, 3]
[ 1, 2, 3*x^2, 5*x]
5.符号表达式的化简 MATLAB提供的对符号表达式化简的函数如下。 ● simplify(s):应用MuPAD简化规则对s进行化简。
● simple(s):调用MATLAB的其他函数对表达式进了i 和j之外,字母位置最接近x的字母;若距离相等, 则取ASCII码大的; (2)若没有除了i 与j以外的字母,则视x为默认的符号变量; (3)可利用函数findsym(string,N)来询问在众多符号中, 哪N个为符号变量.例如:键入findsym(3*a*b+y^2,1), 即可得到答案y.更多的例子见下表:
11
(2)使用已经定义的符号变量组成符号表达式。例如: syms x y; V=3*x^2-5*y+2*x*y+6 ans = 3*x^2 + 2*y*x - 5*y + 6
二、符号表达式运算
1.符号表达式的四则运算
符号表达式的四则运算与数值运算一样,用+、−、 *、/、^ 运算符实现,其运算结果依然是一个符号表达 式。例如: f= sym('2*x^2+3*x-5') %定义符号表达式 g= sym('x^2-x+7') f+g ans= 3*x^2 + 2*x + 2 f^g ans= (2*x^2 + 3*x - 5)^ (x^2 - x + 7)
17
%对s分解因式
ans =
7*x^4 - 13*x^2*y^2 - 24*y^4
s3=(x+y)*(x^2+y^2+1) collect(s3,y) ans = y^3 + x*y^2 + (x^2 + 1)*y + x*(x^2 + 1) factor(sym(630)) ans = %对符号整数分解因式 %对s按变量y合并同类项
3
【例】求导数 >> x=sym('x'); >> diff(cos(x)^2) ans = (-2)*cos(x)*sin(x) MATLAB符号运算的对象全是文字符号,算的结果 也是文字符号。
符号运算基本覆盖了初等数学和高等数学中绝大多数 内容,都可用MATLAB命令行实现。
4
本章学习目标
函数返回符号表达式s中的n个符号变量,若没有指
定n,则返回s中的全部符号变量。findsym以字符串形 式返回结果,symvar以向量形式返回结果。例如:
syms x a y z b; %定义5个符号变量 s1=3*x+y; s2=a*y+b; %定义2个符号表达式 findsym(s1) findsym(s2,2) ans = ans= x, y y,b symvar(s1+s2) ans = [ a, b, x, y] 在求函数的极限、导数和积分时,如果用户没有明确 指定自变量,MATLAB将按以下原则确定主变量并对其进行 相应微积分运算。
27
四、符号矩阵
函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。
2 2 a x 【例】化简矩阵 ax 式分解。 1
sin y 15
2
,并对其因 x y ab x 2 y 2 2 xy
syms a b x y m= [(a^2-x^2)/(a+x), sin(y)^2,(x-y)/(a+b);1,15,x^2+y^2-2*x*y]; simplify(m) %对符号矩阵化简处理 ans = [ a-x, 1-cos(y)^2, (x-y)/(a+b)] [ 1, 15, x^2+y^2-2*x*y] factor(m) %对符号矩阵因式分解 [ a-x, sin(y)^2, (x-y)/(a+b)] [ 1, 15, (x-y)^2]
MATLAB与科学计算
南京师范大学地理科学学院
第四章 MATLAB符号运算
在科学研究和工程应用中,除了存在大量的数值计算 外,还有对符号对象进行的运算,即在运算时无须事先 对变量赋值,而将所得到结果以标准的符号形式来表示。 MATLAB符号计算是通过集成在MATLAB中的符号运算 工具箱(Symbolic Math Toolbox)来实现的。应用符号计 算功能,可以直接对抽象的符号对象进行各种计算,并 获得问题的解析结果。
phi=sym('(1+sqrt(5))/2') phi = (1+sqrt(5))/2