符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3. 除函数 atan2 ()仅能用于数值计算外,其余的三角函数
(如 sin ())、双曲函数(如 cosh ())及其反函数(如
asin ()、 acosh ()),无论在数值计算还是符号运算中, 其使用方法都相同。
2.4.
在数值计算与符号运算中,指数函数与对数函数的使用方
法完全相同,如函数sqrt()、exp()、expm()、log()、
syms x; y=((x+3)/(x*(x+1)))+((x-1)/(x^2*(x+2))); [n,d]=numden(y)%提取有理多项式的分子、分母多项式。其中y
是符号表达式,n为符号表达式y的分子,d为符号表达式y的分母。
n =x^3+6*x^2+6*x-1 d =x^2*(x+1)*(x+2) 即:
3.3. 因式分解 例 3.3.1 已知数学表达式 y(x)=x4-5x3+5x2+5x-6, 试对其 进行因式分解。
【解】 在MATLAB
syms x; y=x^4-5*x^3+5*x^2+5*x-6 y1=factor(y) %把符号表达式y转换为多个因式相乘的形式,各多项式的系数均为有理数。 y =x^4-5*x^3+5*x^2+5*x-6 y1 =(x-1)*(x-2)*(x-3)*(x+1) 即: y=x4-5x3+5x2+5x-6=(x-1)(x-2)(x-3)(x+1)
y= sin(fai1-fai2)
说明:
由本例可看出,使用函数syms创建符号对 象较函数sym()简单。
但注意,使用syms arg1 arg2 …格式定义 符号变量时,变量名之间只能用空格符隔 离,而不能采用逗号或分号,如写成 syms fai1,fai2就是错误的,它不能把fai2定义为 符号变量。
y2=x(e-t)2+(2x2+1)e-t+(x2+1)x
例3.1.2 合并多项式 的同类项。
( x x 1)( x 1)
3 2
x=sym('x'); f=(x^3+x+1)*(x^2+1); g=collect(f)
g= 1+x^5+2*x^3+x^2+x
3.2. 表达式展开
例3.2.1 已知数学表达式y(x)=cos(3arccosx),试将其展开。 【解】 在MATLAB syms x; y=cos(3*acos(x)); y1=expand(y) %展开
例3.3.2 分解因式
x a
3
3
>>syms x a >>f=factor(x^3-a^3) f= -(a-x)*(a^2+a*x+x^2)
3.4. 表达式通分
例3.4.1 已知数学表达式
试对其进行通分。
x3 x 1 , y ( x) 2 x( x 1) x ( x 2)
【解】 在MATLAB命令窗口中输入:
2.2. 在符号对象的比较中,没有“大于”、“大于等于”、
“小于”、“小于等于”的概念,而只有是否“等于”的概
念。 运算符号“==”和“~=”分别对它两边的对象进行 “相等”、“不相等”的比较。当事实为“真”时,比较结 果用1表示; 当事实为“假”时,比较结果用0表示。 需要特别指出的是,MATLAB的符号对象无逻辑运算功 能。
进行符号运算时,首先要创建(即 定义)基本的符号对象, 它可以是常 数、变量和表达式。然后利用这些基 本符号对象构成新的表达式,进而完 成所需的符号运算。
符号对象的创建使用函数 sym ()和 syms ()来完成, 它们的调用格式如下:
S = sym ( A )将数值 A转换成符号对象 S ,A 是数字(值)
运行结果为:
y= sin(2*x)
【例1.3】 应用符号运算验证三角等式 sinφ 1cosφ 2-cosφ 1sinφ 2=sin(φ 1-φ 2)。 【解】 在MATLAB >> syms fai1 fai2; %定义符号变量fai1, fai2
>> y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))
S=sym(′x′)
将字符串x转换成符号对象S
S=sym(A, flag)将数值A转换成flag格式的符号对象
syms函数的格式为: syms(‘arg1’, ‘arg2’, …,参数) syms arg1 arg2 …参数 功能:创建多个符号变量。
syms arg1 arg2 … arg1=sym(′arg1′),arg2=sym(′arg2′)
【解】 在MATLAB syms x t; y=sym('(x^2+x*exp(-t)+1)*(x+exp(-t))'); y1=collect(y) %默认合并x同幂项系数 y2=collect(y,‘exp(-t)’) %合并y变量里的exp(-t)同幂项系数 运行结果为: y1 =x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) y2 =x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x 即: y1=x3+2e-tx2+[1+(e-t)2]x+e-t,
例3.2.3 证明正弦函数和余弦函数的两角和、差 公式。
syms t s expand([cos(t+s) sin(t-s);sin(t+s) cos(t-s)])
ans = [ cos(t)*cos(s)-sin(t)*sin(s), sin(t)*cos(s)-cos(t)*sin(s)] [ sin(t)*cos(s)+cos(t)*sin(s), cos(t)*cos(s)+sin(t)*sin(s)]
IA = [ a22/(a11*a22-a12*a21), -a12/(a11*a22-a12*a21)] [ -a21/(a11*a22-a12*a21), a11/(a11*a22-a12*a21)]
>>EA=eig(A)
%求矩阵A
EA = 1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2) 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)
>> syms a b c x >> f = sym('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
【例1.2】 字符表达式转换为符号变量演示。 【解】 在MATLAB >> y=sym('2*sin(x)*cos(x)') 运行结果为: y= 2*sin(x)*cos(x) >> y=simple(y) %将已有的y符号表达式化成最简形式 %将字符表达式转换为符号变量
y1 = 4*x^3-3*x 即: y=cos(3arccosx)=4x3-3x
例3.2.2 将 ( x y)n 展开 n=input('Please input n? ') syms x y; expand((x+y)^n) Please input n? 8 n= 8 ans = x^8+8*x^7*y+28*x^6*y^2+56*x^5*y^3+70* x^4*y^4+56*x^3*y^5+28*x^2*y^6+8*x*y^7 +y^8
它可以是常数、变量和表达式。然后利用这些基本符号对象构 成新的表达式,进而完成所需的符号运算。
符号计算的特点: 1)符号计算定义在符号变量的基础上,符号 表达式计算前必须定义符号变量。 2)符号计算是精确计算。 3)符号计算的计算速度较慢。 4)符号计算的运算符和基本数学函数与数值 计算中的运算符和基本数学函数几乎完全 相同。
补充知识: 符 号 运 算
1
在MATLAB的数值计算中,数值表达式所引用的变量必须事
先被赋值, 否则无法计算。因此,前面介绍的有关数值运算, 其运算变量都是被赋值的数值变量。而在MATLAB的符号运算中, 运算变量则是符号变量,所出现的数字也作为符号来处理。实 际上,符号数学是对字符串进行的运算。
进行符号运算时,首先要创建(即定义)基本的符号对象,
3
MATLAB符号表达式的操作涉及符号运算中的因式分解、
展开、简化等,在符号运算中非常重要。
3.1. 同类项合并 3.2. 表达式展开 3.3. 3.4. 表达式通分 3.5. 3.6. 符号(包括符号变量、 符号常量及数值数组)替换 3.7 反函数和复合函数
3.1. 例3.1.1 合并。 已知数学表达式y=(x2+xe-t+1)(x+e-t),试对其同类项进行
eig()等。它们的用法几乎与数值计算中的情况完全一样。
【例2.1】 基本运算符号与基本函数应用演示。 【解】 在MATLAB syms x; f1=x^3+x^2+4*x+4; f2=x^2+4*x+10; f=f1+f2 运行结果为: f= x^3+2*x^2+8*x+14 %定义符号变量x %生成多项式f1 %生成多项式f2 %求f1与f2之和
2. 符号运算中的运算符号和基本函数 2.1. 基本运算符 (1) 运算符号“+”、“-”、“*”、“\”、“/”、 “^”分别实现矩阵的加法、减法、乘法、左除、右除与求幂运 算。
(2) 运算符号“.*”、“.\”、“./”、“.^”分别实现
元素对元素的数组相乘、左除、右除与求幂运算。 (3) 运算符号“′”实现矩阵的Hermition转置或复数矩阵 的共轭转置; 运算符号“.′”实现数组转置或复数矩阵的非共 轭转置。
( x y ) 2 2 e ln( x y ) 例3.2.4 将矩阵 ( x 2) 2 1 lg(100 y ) 2
的各元素展开。
syms x y; f=[exp(x+y) log(x^2*y^2);2^(x+2)+1 log10(100*y^2)] expand(f) f= [ exp(x+y), log(x^2*y^2)] [ 2^(x+2)+1, log(100*y^2)/log(10)] ans = [exp(x)*exp(y), log(x^2*y^2)] [4*2^x+1, 1/log(10)*log(100)+1/log(10)*log(y^2)]
x3 x 1 x3 6 x 2 6 x 1 y 2 2 x( x 1) x ( x 2) x ( x 1)(x 2)
例3.4.2 求出 的分子、分母
f
1
x
3
6
x
2
12
x
8
>>syms x >>f=1/(x^3)+6/x/x+12/x+8 >>[n,d]=numden(f) f= 1/x^3+6/x^2+12/x+8 n= 1+6*x+12*x^2+8*x^3 d =x^3
>> y=sqrt(x^5)
%
y= (x^5)^(1/2)
>> z=log10(x)
%求以10
z= log(x)/log(10)
【例2.2】 矩阵代数运算演示。求矩阵A的行列式值、逆和特 征值。 【解】 在MATLAB syms a11 a12 a21 a22; %定义符号变量a11,a12, a21, a22 A=[a11,a12;a21,a22] %生成矩阵A 运行结果为: A =[ a11, a12] [ a21, a22] >>DA=det(A) %求矩阵A的行列式 >>IA=inv(A) %求矩阵A的逆矩阵 DA = a11*a22-a12*a21
【例1.1】 创建符号变量和符号表达式演示。 【解】 在MATLAB >> y=sym('x'); 运行结果为: y= x >> f=sym('x^3+x^2+4*x+4') %定义变量f,它代表符号表达式x3+x2+4x+4 %定义变量y,它代表字符x
f= x^3+x^2+4*x+4
使用syms函数定义符Leabharlann Baidu变量和符号表达式
log2()及log10()等。
2.5. 涉及复数的共轭函数 conj ()、求实部的函数 real ()、
求虚部的函数 imag ()和求绝对值的函数 abs (),在符号与
数值计算中的使用方法相同。 2.6. 矩阵代数运算 在符号运算中, MATLAB 提供的常用矩阵代数函数有 diag ()、inv()、det()、rank()、poly()、expm()及