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