Matlab 符号运算12[1].19【最终】
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>> syms x; f=sin(x)^2 + cos(x)^2 ; >> simplify(f) >> syms c alpha beta; >> f=exp(c*log(sqrt(alpha+beta))); >> simplify(f)
符号函数的化简
函数化简
y=simple(f): 对 f 尝试多种不同的算法进行
多次使用 siBiblioteka Baiduple 可以达到最简表达。
分式通分
函数简化
[N,D]=numden(f):
N 为通分后的分子,D 为通分后的分母 >> syms x y; >> f=x/y+y/x; >> [N,D]=numden(f) >> [n,d]=numden(sym(112/1024))
实例: clear a=sym(0.333) [n,d]=numden(a) f=sym('a*x^2/(b+x)') [n,d]=numden(f)
计算精度和数据类型转换 digits(n) 将数值计算精度设为n位(32);
x=vpa(s) 求s的数值结果 x=vpa(s,n) 采用n位计算精度求s的数值 结果 double(s) 将符号对象转化为双精度数值
char(s)
将符号对象转化为字符串
MATLAB
MATLAB符号运算
7.2符号矩阵和符号函数 ---符号矩阵---
如果符号表达式是一个符号矩阵,numden返回两个新矩 阵n和d,其中n是分子矩阵,d是分母矩阵。 clear h=sym('[3/2,(2*x+1)/3;a/x+a/y,3*x+4]') [n,d]=numden(h)
h= [ 3/2, (2*x+1)/3] [ a/x+a/y, 3*x+4] n= [ 3, 2*x+1] [ a*(y+x), 3*x+4] d= [ 2, 3] [ x*y, 1]
符号表达式的嵌套
horner 多项式:嵌套形式的多项式
例: f ( x) x n x n1 x 1
x( x( x( x 1) 1)) 1
>> syms x; >> f=x^4+5*x^3-3*x^2+4*x+1; >> g=horner(f)
g=1+(4+(-3+(5+x)*x)*x)*x
符号表达式的替换
用给定的数据替换符号表达式中的指定的符号变量
subs(f,x,a) 用 a 替换字符函数 f 中的字符变量 x a 是可以是 数/数值变量/表达式 或 字符变量/表达式
若 x 是一个由多个字符变量组成的数组或矩阵, 则 a 应该具有与 x 相同的形状的数组或矩阵。
[exp,sigma]=subexpr(expression,sigma) MATLAB自动搜索expression中多次出现的符号 表达式,并与sigma替换。
>> s=factor(100) >> factor(sym('12345678901234567890'))
大整数的分解要转化成符号常量
函数展开
函数展开
expand(f)
多项式展开
>> syms x; f=(x+1)^6; >> expand(f)
三角函数展开
>> syms x y; f=sin(x+y); >> expand(f)
符号变量 = sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串
例: >> a=sym('a')
>> b=sym(1/3)
a 是符号变量 b 是符号常量 c 是符号矩阵
>> c=sym('[1 ab; e d]')
符号对象的建立
符号对象的建立:sym 和 syms syms 命令用来建立多个符号常量,调用格式:
Matlab 的符号数学工具箱可以完成几乎所有的符号运算 功能。主要包括:符号表达式的运算,符号表达式的复合、 化简,符号矩阵的运算,符号微积分、符号作图,符号代 数方程求解,符号微分方程求解等。此外,该工具箱还支 持任意指定精度的数值计算。
Matlab 符号运算特点
计算以推理方式进行,因此不受计算误差累积所带来的 困扰。 符号计算可以给出完全正确的封闭解,或任意精度的数 值解(封闭解不存在时)。 符号计算指令的调用比较简单,与数学教科书上的公式 相近。 符号计算所需的运行时间相对较长。
>> Y=sym('[y11,y12,y13;y21,y22,y23]'); >> Z1=X*Y; Z2=X+Y
符号对象的基本运算
基本函数
三角函数与反三角函数、指数函数、对数函数等 sin、cos、tan、cot、sec、csc、…
asin、acos、atan、acot、asec、acsc、…
syms 符号变量1 符号变量2 ... 符号变量n
例: >> syms a b c
>> a=sym('a'); >> b=sym('b'); >> c=sym('c');
用这种格式定义符号变量时不要在变量名上加字符串分界符(‘), 变量间用空格而不要用逗号分隔。如:syms a b c d
符号表达式的建立
[ n= 2 0, asin(x)]
A= [ sin(x), cos(x)] [ acos(x), asin(x)]
MATLAB
MATLAB符号运算
7.2符号矩阵和符号函数 ---符号函数运算---
7.2符号函数的运算
算术运算 因式分解 函数展开 合并同类项 化简 通分 嵌套 替换 复合 反函数
符号矩阵也是一种符号表达式,所以前面介绍的符 号表达式运算都可以在矩阵意义下进行。但应注意 这些函数作用于符号矩阵时,是分别作用于矩阵的 每一个元素。 由于符号矩阵是一个矩阵,所以符号矩阵还能进 行有关矩阵的运算。MATLAB还有一些专用于符号 矩阵的函数,这些函数作用于单个的数据无意义。 例: transpose(s):返回s矩阵的转置矩阵。 det(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函 数,如diag、triu、tril、inv、det、rank、eig等, 也可直接应用于符号矩阵。
算术运算
注意其运算结果依然是一个符号表达式。 符号函数的加减乘除及幂运算分别由函数 Symadd; symsub; symmul; symiv; sympow来实现
算术运算
因式分解
因式分解
factor(f)
>> syms x; f=x^6+1; >> factor(f)
factor 也可用于正整数的分解
符号对象的建立
符号对象的建立:sym 和 syms sym 函数用来建立单个符号常量,一般调用格式为:
符号变量 = sym(‘num’) >> sym(‘1/3’) 符号常量
sym 可以把数值转化成某种格式的符号常量,调用格
式为: 符号变量 = sym(num,参数)
符号对象的建立
符号对象的建立:sym 和 syms sym 函数用来建立单个符号变量,一般调用格式为:
exp、log、log2、log10、sqrt abs、conj、real、imag rank、det、inv、eig、lu、qr、svd diag、triu、tril、expm
查找符号变量
查找符号表达式中的符号变量 findsym(expr)
按字母顺序列出符号表达式 expr 中的所有符号变量
findsym(expr, N) 列出 expr 中离‘x’最近的 N 个符号变量(字母表中顺
序) 若表达式中有两个符号变量与 ‘x’ 的距离相等, 则ASCII 码大者优先。
常量 pi, i, j 不作为符号变量
findsym 举例
例: >> f=sym(‘a*x^2+b*x+c')
>> findsym(f) ans= a, b, c, x >> f=sym(f,2) ans= x,c
MATLAB
MATLAB符号运算
7.1符号对象
符号对象
在进行符号运算时,必须先定义基本的符号对象,可以是 符号常量、符号变量、符号表达式等。符号对象是一种数据 结构。 含有符号对象的表达式称为符号表达式,Matlab 在内部 把符号表达式表示成字符串,以与数字变量或运算相区别。 符号矩阵/数组:元素为符号表达式的矩阵/数组。
合并同类项
合并同类项
collect(f,v): 按指定变量 v 进行合并 collect(f): 按默认变量进行合并
>> syms x y; >> f= x^2*y + y*x - x^2 + 2*x ; >> collect(f) >> collect(f,y)
符号函数的化简
函数化简
y=simplify(f): 对 f 进行化简
符号表达式的建立:
建立符号表达式通常有以下3种方法: (1)利用单引号来生成符号表达式 (2)用 sym 函数直接建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 >> y='sin(x)+cos(x)' >> y=sym('sin(x)+cos(x)') >> x=sym('x'); >> y=sin(x)+cos(x)
简化,返回其中最简短的形式
[How,y]=simple(f): y 为 f 的最简短形式,
How 中记录的为简化过程中使用的方法。
符号函数的化简
例:简化
f ( x)
3
1 6 12 8 x x3 x2
>> syms x; >> f=(1/x^3+6/x^2+12/x+8)^(1/3); >> y1=simplify(f) >> g1=simple(y1) >> g2=simple(g1)
subs 举例
例:指出下面各条语句的输出结果 >> f=sym('2*u'); >> subs(f,'u',2) >> f2=subs(f,'u','u+2') >> a=3; >> subs(f2,'u',a+2) >> subs(f2,'u','a+2') >> syms x y >> f3=subs(f,'u',x+y) >> subs(f3,[x,y],[1,2])
实例: clear A=sym('[sin(x),cos(x);acos(x),asin(x)]') B= B=transpose(A) [ sin(x), acos(x)] C=det(A) [ cos(x), asin(x)] C= D=inv(A) sin(x)*asin(x)-cos(x)*acos(x) F=triu(A) F= n=rank(A) [ sin(x), cos(x)]
a= 333/1000 n= 333 d= 1000 f= a*x^2/(b+x) n= a*x^2 d= b+x
实例: clear g=sym('(x^2+3)/(2*x-1)+3*x/(x-1)') [n,d]=numden(g) g= (x^2+3)/(2*x-1)+3*x/(x-1) n= x^3+5*x^2-3 d= (2*x-1)*(x-1)
例:
符号表达式的基本运算
Matlab 符号运算采用的运算符和基本函数,在形状、名称 和使用上,都与数值计算中的运算符和基本函数完全相同
基本运算符
普通运算:+ 、- 、* 、\ 、/ 、^ 数组运算:.* 、.\ 、./ 、.^ 矩阵转置:' 、.'
例:>> X=sym('[x11,x12;x21,x22;x31,x32]');
符号矩阵
使用 sym 函数直接生成
符号矩阵
符号矩阵
符号矩阵的索引和修改与数值矩阵的相同,即用 矩阵的坐标表达式实现。 >> A=sym('[1+x, sin(x); 5, exp(x)]'); >> A(1,2) % 索引 >> A(2,2)=sym('cos(x)') % 重新赋值
符号矩阵
MATLAB
MATLAB符号计算 第七章
Matlab 符号计算介绍
在科学研究和工程应用中,除了存在大量的数值计算外, 还有各组符号计算,即在运算时无须对变量赋值,而将所 得的结果以标准的符号形式来表示。
Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能 强大的 Maple 软件的基础上的。
符号函数的化简
函数化简
y=simple(f): 对 f 尝试多种不同的算法进行
多次使用 siBiblioteka Baiduple 可以达到最简表达。
分式通分
函数简化
[N,D]=numden(f):
N 为通分后的分子,D 为通分后的分母 >> syms x y; >> f=x/y+y/x; >> [N,D]=numden(f) >> [n,d]=numden(sym(112/1024))
实例: clear a=sym(0.333) [n,d]=numden(a) f=sym('a*x^2/(b+x)') [n,d]=numden(f)
计算精度和数据类型转换 digits(n) 将数值计算精度设为n位(32);
x=vpa(s) 求s的数值结果 x=vpa(s,n) 采用n位计算精度求s的数值 结果 double(s) 将符号对象转化为双精度数值
char(s)
将符号对象转化为字符串
MATLAB
MATLAB符号运算
7.2符号矩阵和符号函数 ---符号矩阵---
如果符号表达式是一个符号矩阵,numden返回两个新矩 阵n和d,其中n是分子矩阵,d是分母矩阵。 clear h=sym('[3/2,(2*x+1)/3;a/x+a/y,3*x+4]') [n,d]=numden(h)
h= [ 3/2, (2*x+1)/3] [ a/x+a/y, 3*x+4] n= [ 3, 2*x+1] [ a*(y+x), 3*x+4] d= [ 2, 3] [ x*y, 1]
符号表达式的嵌套
horner 多项式:嵌套形式的多项式
例: f ( x) x n x n1 x 1
x( x( x( x 1) 1)) 1
>> syms x; >> f=x^4+5*x^3-3*x^2+4*x+1; >> g=horner(f)
g=1+(4+(-3+(5+x)*x)*x)*x
符号表达式的替换
用给定的数据替换符号表达式中的指定的符号变量
subs(f,x,a) 用 a 替换字符函数 f 中的字符变量 x a 是可以是 数/数值变量/表达式 或 字符变量/表达式
若 x 是一个由多个字符变量组成的数组或矩阵, 则 a 应该具有与 x 相同的形状的数组或矩阵。
[exp,sigma]=subexpr(expression,sigma) MATLAB自动搜索expression中多次出现的符号 表达式,并与sigma替换。
>> s=factor(100) >> factor(sym('12345678901234567890'))
大整数的分解要转化成符号常量
函数展开
函数展开
expand(f)
多项式展开
>> syms x; f=(x+1)^6; >> expand(f)
三角函数展开
>> syms x y; f=sin(x+y); >> expand(f)
符号变量 = sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串
例: >> a=sym('a')
>> b=sym(1/3)
a 是符号变量 b 是符号常量 c 是符号矩阵
>> c=sym('[1 ab; e d]')
符号对象的建立
符号对象的建立:sym 和 syms syms 命令用来建立多个符号常量,调用格式:
Matlab 的符号数学工具箱可以完成几乎所有的符号运算 功能。主要包括:符号表达式的运算,符号表达式的复合、 化简,符号矩阵的运算,符号微积分、符号作图,符号代 数方程求解,符号微分方程求解等。此外,该工具箱还支 持任意指定精度的数值计算。
Matlab 符号运算特点
计算以推理方式进行,因此不受计算误差累积所带来的 困扰。 符号计算可以给出完全正确的封闭解,或任意精度的数 值解(封闭解不存在时)。 符号计算指令的调用比较简单,与数学教科书上的公式 相近。 符号计算所需的运行时间相对较长。
>> Y=sym('[y11,y12,y13;y21,y22,y23]'); >> Z1=X*Y; Z2=X+Y
符号对象的基本运算
基本函数
三角函数与反三角函数、指数函数、对数函数等 sin、cos、tan、cot、sec、csc、…
asin、acos、atan、acot、asec、acsc、…
syms 符号变量1 符号变量2 ... 符号变量n
例: >> syms a b c
>> a=sym('a'); >> b=sym('b'); >> c=sym('c');
用这种格式定义符号变量时不要在变量名上加字符串分界符(‘), 变量间用空格而不要用逗号分隔。如:syms a b c d
符号表达式的建立
[ n= 2 0, asin(x)]
A= [ sin(x), cos(x)] [ acos(x), asin(x)]
MATLAB
MATLAB符号运算
7.2符号矩阵和符号函数 ---符号函数运算---
7.2符号函数的运算
算术运算 因式分解 函数展开 合并同类项 化简 通分 嵌套 替换 复合 反函数
符号矩阵也是一种符号表达式,所以前面介绍的符 号表达式运算都可以在矩阵意义下进行。但应注意 这些函数作用于符号矩阵时,是分别作用于矩阵的 每一个元素。 由于符号矩阵是一个矩阵,所以符号矩阵还能进 行有关矩阵的运算。MATLAB还有一些专用于符号 矩阵的函数,这些函数作用于单个的数据无意义。 例: transpose(s):返回s矩阵的转置矩阵。 det(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函 数,如diag、triu、tril、inv、det、rank、eig等, 也可直接应用于符号矩阵。
算术运算
注意其运算结果依然是一个符号表达式。 符号函数的加减乘除及幂运算分别由函数 Symadd; symsub; symmul; symiv; sympow来实现
算术运算
因式分解
因式分解
factor(f)
>> syms x; f=x^6+1; >> factor(f)
factor 也可用于正整数的分解
符号对象的建立
符号对象的建立:sym 和 syms sym 函数用来建立单个符号常量,一般调用格式为:
符号变量 = sym(‘num’) >> sym(‘1/3’) 符号常量
sym 可以把数值转化成某种格式的符号常量,调用格
式为: 符号变量 = sym(num,参数)
符号对象的建立
符号对象的建立:sym 和 syms sym 函数用来建立单个符号变量,一般调用格式为:
exp、log、log2、log10、sqrt abs、conj、real、imag rank、det、inv、eig、lu、qr、svd diag、triu、tril、expm
查找符号变量
查找符号表达式中的符号变量 findsym(expr)
按字母顺序列出符号表达式 expr 中的所有符号变量
findsym(expr, N) 列出 expr 中离‘x’最近的 N 个符号变量(字母表中顺
序) 若表达式中有两个符号变量与 ‘x’ 的距离相等, 则ASCII 码大者优先。
常量 pi, i, j 不作为符号变量
findsym 举例
例: >> f=sym(‘a*x^2+b*x+c')
>> findsym(f) ans= a, b, c, x >> f=sym(f,2) ans= x,c
MATLAB
MATLAB符号运算
7.1符号对象
符号对象
在进行符号运算时,必须先定义基本的符号对象,可以是 符号常量、符号变量、符号表达式等。符号对象是一种数据 结构。 含有符号对象的表达式称为符号表达式,Matlab 在内部 把符号表达式表示成字符串,以与数字变量或运算相区别。 符号矩阵/数组:元素为符号表达式的矩阵/数组。
合并同类项
合并同类项
collect(f,v): 按指定变量 v 进行合并 collect(f): 按默认变量进行合并
>> syms x y; >> f= x^2*y + y*x - x^2 + 2*x ; >> collect(f) >> collect(f,y)
符号函数的化简
函数化简
y=simplify(f): 对 f 进行化简
符号表达式的建立:
建立符号表达式通常有以下3种方法: (1)利用单引号来生成符号表达式 (2)用 sym 函数直接建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 >> y='sin(x)+cos(x)' >> y=sym('sin(x)+cos(x)') >> x=sym('x'); >> y=sin(x)+cos(x)
简化,返回其中最简短的形式
[How,y]=simple(f): y 为 f 的最简短形式,
How 中记录的为简化过程中使用的方法。
符号函数的化简
例:简化
f ( x)
3
1 6 12 8 x x3 x2
>> syms x; >> f=(1/x^3+6/x^2+12/x+8)^(1/3); >> y1=simplify(f) >> g1=simple(y1) >> g2=simple(g1)
subs 举例
例:指出下面各条语句的输出结果 >> f=sym('2*u'); >> subs(f,'u',2) >> f2=subs(f,'u','u+2') >> a=3; >> subs(f2,'u',a+2) >> subs(f2,'u','a+2') >> syms x y >> f3=subs(f,'u',x+y) >> subs(f3,[x,y],[1,2])
实例: clear A=sym('[sin(x),cos(x);acos(x),asin(x)]') B= B=transpose(A) [ sin(x), acos(x)] C=det(A) [ cos(x), asin(x)] C= D=inv(A) sin(x)*asin(x)-cos(x)*acos(x) F=triu(A) F= n=rank(A) [ sin(x), cos(x)]
a= 333/1000 n= 333 d= 1000 f= a*x^2/(b+x) n= a*x^2 d= b+x
实例: clear g=sym('(x^2+3)/(2*x-1)+3*x/(x-1)') [n,d]=numden(g) g= (x^2+3)/(2*x-1)+3*x/(x-1) n= x^3+5*x^2-3 d= (2*x-1)*(x-1)
例:
符号表达式的基本运算
Matlab 符号运算采用的运算符和基本函数,在形状、名称 和使用上,都与数值计算中的运算符和基本函数完全相同
基本运算符
普通运算:+ 、- 、* 、\ 、/ 、^ 数组运算:.* 、.\ 、./ 、.^ 矩阵转置:' 、.'
例:>> X=sym('[x11,x12;x21,x22;x31,x32]');
符号矩阵
使用 sym 函数直接生成
符号矩阵
符号矩阵
符号矩阵的索引和修改与数值矩阵的相同,即用 矩阵的坐标表达式实现。 >> A=sym('[1+x, sin(x); 5, exp(x)]'); >> A(1,2) % 索引 >> A(2,2)=sym('cos(x)') % 重新赋值
符号矩阵
MATLAB
MATLAB符号计算 第七章
Matlab 符号计算介绍
在科学研究和工程应用中,除了存在大量的数值计算外, 还有各组符号计算,即在运算时无须对变量赋值,而将所 得的结果以标准的符号形式来表示。
Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能 强大的 Maple 软件的基础上的。