第3章 符号运算与推导
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
或下 (k<0)第k条次对角线元素
A=[1 2 3;4 a 6;7 8 9] A= [ 1, 2, 3] [ 4, a, 6] [ 7, 8, 9]
diag(A) ans = [ 1] [ a] [ 9] diag(A,-1) ans = [ 4] [ 8]
v=[1 2 a 6] diag(v) %创建以v为主对角元素的矩阵 diag(v,k) %创建以v为主对角线上(k>0)
⑥符号数组的除法
A./B和B.\A都为对应分量进行相除,A与B 为同型矩阵或有一个为标量。如果有标量, 则把标量扩大为与另外一个同型的矩阵,再 按对应的分量进行操作。
B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B./C ans = [ a/e, b/f] [ c/g, d/h] B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B.\C ans = [ e/a, f/b] [ g/c可用A’或A .’ ,也可以用命令: transpose(A)来实现。 3、符号矩阵的行列式运算 求方阵A的行列式:det(A)
4、符号矩阵的逆运算使用
inv(A)或A^-1
5、符号矩阵的秩运算命令为 rank(A)
6、符号矩阵对角元素 diag(A) %求矩阵A的主对角元素 diag(A,k) %求矩阵A的主对角线上(k>0)
A=[a/x+a/y,1/(b*x);a*x/c,c/3]; [N,D]=numden(A) N= [ a*(x+y), 1] % 分子矩阵 [ a*x, c] D= [ x*y, b*x] % 分母矩阵 [ c, 3]
5、符号表达式的化简simplify
simplify(S) % 对符号表达式S进行化简
syms a b c x y
f=factor(x^4-y^4) % x可以为符号表达式 f= (x-y)*(x+y)*(x^2+y^2) h=factor([a^2-b^2,x^2-y^2;x^3+y^3,a*x-b*x]) % 可以为符号矩阵的因式分解
h=
[ (a-b)*(a+b), (x-y)*(x+y)]
例如: syms x y=sin(x)^4-cos(x)^4; simplify(y) ans = 1-2*cos(x)^2
6、确定符号矩阵的维数size
d=size(A) % A为m×n符号阵,则输出d= [m,n]
[m,n] =size(A) % 直接返回A的行数m、列数n。
d=size(A,n) % n=1返回A的行数;n=2返回列数 如: syms a b c d e A=[1 a 3 b;2 d 6 c;e 5 3 a];
2.^B ans = [ 2^a, 2^b] [ 2^c, 2^d]
④符号矩阵的左除法
X=A\B为符号线性方程组A*X=B的解。如果 X不存在或不惟一,则产生警告信息。矩阵A 应为方阵。 B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B\C ans = [ -(b*g-e*d)/(d*a-c*b), -(b*h-f*d)/(d*a-c*b)] [ (-c*e+a*g)/(d*a-c*b), (a*h-c*f)/(d*a-c*b)]
⑦符号矩阵的幂
计算矩阵A的整数m次方幂
syms a b c d e f B=sym('[a b;c d]'); B^2 ans = [ a^2+b*c, a*b+b*d] [ c*a+d*c, b*c+d^2]
B^0 ans = [ 1, 0] [ 0, 1]
B^2 ans = [ a^2+b*c, a*b+b*d] [ c*a+d*c, b*c+d^2 B=sym('[a c;f d]'); A=sym('[e b;a f]'); A.^B ans = [ e^a, b^c] [ a^f, f^d]
d=size(A) d= 3 4 d=size(A,1) d= 3
[m,n] =size(A) m= 3 n= 4
d=size(A,2) d= 4
7、复合函数compose 用 compose 函 数 可 以 把 f(x),g(x)复 合 为 f(g(x))或g(f(x))。如:
syms x y z t u;
+、-、*、.*、 /、\、./、.\、
^、.^、'、.'
(.*、.^等是对数组操作)
①符号矩阵的加减
如果A与B为同型矩阵时,A+B,A-B分别为 对应分量进行加减。 如果A与B中有一个为标量,则把标量扩大 为与另外一个同型的矩阵,再按对应的分量进 行加减。
B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B+C ans = [ a+e, b+f] [ c+g, d+h]
ans =
[ (y+1)*x+y+1,
[
x+y]
y+x*y, -4+x^2+3*x]
2、符号表达式的展开 expand
expand(S) % 将表达式S展开
如:
syms x y S = (x-3)^2+(y-4)^2; expand(S) ans = x^2-6*x+25+y^2-8*y
% 不加单引号
%上行命令等价与下面这个命令
syms a b c d
此时可在工作空间窗口(Workspace)中查看 变量的定义情况,此后,用户可以在表达式中 使用已创建的变量进行各种运算。
2、用单引号创建符号表达式
赋值等号右端所有字符串均用单引号设定, 如:
g=‘a*x^2+b*x+c=0' g= A*x^2+b*x+c=0 A='[a b 1;5 b c]'(其中 a、b、c已创建) A=
syms函数用来建立多个符号变量,例如 syms a b c… syms函数定义符号变量a,b,c等,用这种格式 定义符号变量时不要在变量名上加字符分界符 ('),变量间用空格而不要用逗号分隔。
如:
ok=sym('hao')
a=sym('a');b=sym('b');c=sym('c');d=sym('d')
3.3 符号表达式的基本运算
1、合并同类项collect ① collect(s)
数合并系数
% 对符号多项式s按默认变量x的次
syms a b c x y
s=a*x^2+2*x^3*y^2+3*b*x^2+5*c*y^2+8*x^3*y+4*y;
collect(s)
ans =
(8*y+2*y^2)*x^3+(a+3*b)*x^2+4*y+5*c*y^2
B+1 ans = [ a+1, b+1] [ c+1, d+1]
②符号矩阵的乘法:A*B为高等代数中定义 的矩阵乘法。要求第一个矩阵的列数等于第 二个矩阵的行数。
B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B*C ans = [ a*e+b*g, a*f+b*h] [ c*e+d*g, c*f+d*h]
[ (x+y)*(x^2-x*y+y^2),
x*(a-b)]
4、符号表达式的分子与分母numden
[N,D]=numden(A) % 提取符号表达式A的
分子和分母,输出参数N为分子、D为分母。
[N,D]=numden(sym(3/5))
N=
3
D= 5
[N,D]=numden(sym(sin(2/3))) %提取三角函数的 N= 5569780029364069 D= 9007199254740992 [N,D]=numden(a*x/y+b*y/x) %提取符号表达式的 N= a*x^2+b*y^2 D= x*y
或下 (k<0)第k条次对角线元素的矩阵
diag(v) ans = [ 1, 0, 0, 0] [ 0, 2, 0, 0] [ 0, 0, a, 0] [ 0, 0, 0, 6]
diag(v,2) ans = [ 0, 0, 1, 0, 0, 0] [ 0, 0, 0, 2, 0, 0] [ 0, 0, 0, 0, a, 0] [ 0, 0, 0, 0, 0, 6] [ 0, 0, 0, 0, 0, 0] [ 0, 0, 0, 0, 0, 0]
factor(200) % factor (x) ,x可以为正整数 ans = 2 2 2 5 5 factor(sym('200')) ans = (2)^3*(5)^2 factor(sym([12345678901234567890])) ans = (2)^11*(7)*(7324703)*(117570121)
[a b 1;5 b c]
3、用sym 、syms创建符号表达式
用单引号创建符号表达式,但不能创 建数组,因此有时还得用sym 、syms。 如:
A=sym('[a b 1;5 b c]')
A=
[ a, b, 1]
[ 5, b, c]
3.2 符号矩阵的运算
1、符号矩阵的运算符与数值矩 阵类似,具体如下:
15a15b15c15d15a15b15c15d符号矩阵的幂计算矩阵a的整数m次方幂bsym?adiaga求矩阵a的主对角元素diagak求矩阵a的主对角线上k0diagaansdiaga1ansdiagv创建以v为主对角元素的矩阵diagvk创建以v为主对角线上k0k0第k条次对角线元素的矩阵diagv2ansdiagvanscollectcollects对符号多项式s按默认变量x的次数合并系数syms对符号多项式s按指定变量合并
第3章 符号运算与推导
1、什么是符号运算 定义:运算对象是没赋值的符号变量 2、符号运算与数值运算的区别 (1)数值运算中必须先对变量赋值,然 后才能参与运算。 (2)符号运算无须事先对独立变量赋值, 运算结果以标准的符号形式表达。
3.1 符号表达式的创建
1、用sym 、syms创建符号变量
sym函数用来建立单个符号量,例如, a=sym('a') % 建立符号变量a
syms x y a b S = cos(x+y);
% 三角函数展开
expand(S) ans = cos(x)*cos(y)-sin(x)*sin(y) S=x^((a+b)^2) % 指数函数展开 expand(S)
ans =
x^(a^2)*(x^(a*b))^2*x^(b^2)
3、符号表达式因式分解factor (x)
② collect(s,v) 变量v合并。 collect(s,y)
% 对符号多项式s按指定
ans = (5*c+2*x^3)*y^2+(4+8*x^3)*y+a*x^2+3*b*x^2
③ collect也可以对符号矩阵进行合并。
collect([(x+1)*(y+1),x+y;y+x*y,(x-1)*(x+4)])
f = 1/(1 + x^2);
g = sin(y);
h = x^t;
p = exp(-y/u);
y1= compose(f,g) y1 =
%表示 f[g(y)]
1/(1+sin(y)^2) compose(h,g,z) 与y3= 作用完全相同,x为过度变 y2= compose(f,g,t) %表示 f[g(t)] 量 y2 =
5./B ans = [ 5/a, 5/b] [ 5/c, 5/d] 5.\B ans = [ 1/5*a, 1/5*b] [ 1/5*c, 1/5*d]
B.\5 ans = [ 5/a, 5/b] [ 5/c, 5/d] B./5 ans = [ 1/5*a, 1/5*b] [ 1/5*c, 1/5*d]
1/(1+sin(t)^2)
y3= compose(h,g,x,z) %表示 h[g(z)]
y3 =
sin(z)^t
y4= compose(h,g,t,z) y4 = x^sin(z) 令t=p = exp(-y/u) ,代入 把hh= x^t中的 y5=compose(h,p,x,y,z)t作为过渡变 = x^t,将u替换为z 量(t=sin(z)) y5 = exp(-z/u)^t
2^B ?
③符号数组的乘法:A.*B为对应分量进行相 乘,A与B为同型矩阵或有一个为标量。如果 有标量,则把标量扩大为与另外一个同型的 矩阵,再按对应的分量进行操作。
B=sym(‘[a,b;c,d]’); C=sym(‘[e,f;g,h]’); B.*C ans = [ a*e, b*f] [ c*g, d*h]
⑤符号矩阵的右除法
X=B/A为符号线性方程组X*A=B的解。如 果X不存在或不惟一,则产生警告信息。矩 阵A应为方阵。 B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B/C ans = [ -(-b*g+a*h)/(-e*h+f*g), (f*a-e*b)/(-e*h+f*g)] [ (g*d-c*h)/(-e*h+f*g), (-e*d+c*f)/(-e*h+f*g)]
A=[1 2 3;4 a 6;7 8 9] A= [ 1, 2, 3] [ 4, a, 6] [ 7, 8, 9]
diag(A) ans = [ 1] [ a] [ 9] diag(A,-1) ans = [ 4] [ 8]
v=[1 2 a 6] diag(v) %创建以v为主对角元素的矩阵 diag(v,k) %创建以v为主对角线上(k>0)
⑥符号数组的除法
A./B和B.\A都为对应分量进行相除,A与B 为同型矩阵或有一个为标量。如果有标量, 则把标量扩大为与另外一个同型的矩阵,再 按对应的分量进行操作。
B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B./C ans = [ a/e, b/f] [ c/g, d/h] B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B.\C ans = [ e/a, f/b] [ g/c可用A’或A .’ ,也可以用命令: transpose(A)来实现。 3、符号矩阵的行列式运算 求方阵A的行列式:det(A)
4、符号矩阵的逆运算使用
inv(A)或A^-1
5、符号矩阵的秩运算命令为 rank(A)
6、符号矩阵对角元素 diag(A) %求矩阵A的主对角元素 diag(A,k) %求矩阵A的主对角线上(k>0)
A=[a/x+a/y,1/(b*x);a*x/c,c/3]; [N,D]=numden(A) N= [ a*(x+y), 1] % 分子矩阵 [ a*x, c] D= [ x*y, b*x] % 分母矩阵 [ c, 3]
5、符号表达式的化简simplify
simplify(S) % 对符号表达式S进行化简
syms a b c x y
f=factor(x^4-y^4) % x可以为符号表达式 f= (x-y)*(x+y)*(x^2+y^2) h=factor([a^2-b^2,x^2-y^2;x^3+y^3,a*x-b*x]) % 可以为符号矩阵的因式分解
h=
[ (a-b)*(a+b), (x-y)*(x+y)]
例如: syms x y=sin(x)^4-cos(x)^4; simplify(y) ans = 1-2*cos(x)^2
6、确定符号矩阵的维数size
d=size(A) % A为m×n符号阵,则输出d= [m,n]
[m,n] =size(A) % 直接返回A的行数m、列数n。
d=size(A,n) % n=1返回A的行数;n=2返回列数 如: syms a b c d e A=[1 a 3 b;2 d 6 c;e 5 3 a];
2.^B ans = [ 2^a, 2^b] [ 2^c, 2^d]
④符号矩阵的左除法
X=A\B为符号线性方程组A*X=B的解。如果 X不存在或不惟一,则产生警告信息。矩阵A 应为方阵。 B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B\C ans = [ -(b*g-e*d)/(d*a-c*b), -(b*h-f*d)/(d*a-c*b)] [ (-c*e+a*g)/(d*a-c*b), (a*h-c*f)/(d*a-c*b)]
⑦符号矩阵的幂
计算矩阵A的整数m次方幂
syms a b c d e f B=sym('[a b;c d]'); B^2 ans = [ a^2+b*c, a*b+b*d] [ c*a+d*c, b*c+d^2]
B^0 ans = [ 1, 0] [ 0, 1]
B^2 ans = [ a^2+b*c, a*b+b*d] [ c*a+d*c, b*c+d^2 B=sym('[a c;f d]'); A=sym('[e b;a f]'); A.^B ans = [ e^a, b^c] [ a^f, f^d]
d=size(A) d= 3 4 d=size(A,1) d= 3
[m,n] =size(A) m= 3 n= 4
d=size(A,2) d= 4
7、复合函数compose 用 compose 函 数 可 以 把 f(x),g(x)复 合 为 f(g(x))或g(f(x))。如:
syms x y z t u;
+、-、*、.*、 /、\、./、.\、
^、.^、'、.'
(.*、.^等是对数组操作)
①符号矩阵的加减
如果A与B为同型矩阵时,A+B,A-B分别为 对应分量进行加减。 如果A与B中有一个为标量,则把标量扩大 为与另外一个同型的矩阵,再按对应的分量进 行加减。
B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B+C ans = [ a+e, b+f] [ c+g, d+h]
ans =
[ (y+1)*x+y+1,
[
x+y]
y+x*y, -4+x^2+3*x]
2、符号表达式的展开 expand
expand(S) % 将表达式S展开
如:
syms x y S = (x-3)^2+(y-4)^2; expand(S) ans = x^2-6*x+25+y^2-8*y
% 不加单引号
%上行命令等价与下面这个命令
syms a b c d
此时可在工作空间窗口(Workspace)中查看 变量的定义情况,此后,用户可以在表达式中 使用已创建的变量进行各种运算。
2、用单引号创建符号表达式
赋值等号右端所有字符串均用单引号设定, 如:
g=‘a*x^2+b*x+c=0' g= A*x^2+b*x+c=0 A='[a b 1;5 b c]'(其中 a、b、c已创建) A=
syms函数用来建立多个符号变量,例如 syms a b c… syms函数定义符号变量a,b,c等,用这种格式 定义符号变量时不要在变量名上加字符分界符 ('),变量间用空格而不要用逗号分隔。
如:
ok=sym('hao')
a=sym('a');b=sym('b');c=sym('c');d=sym('d')
3.3 符号表达式的基本运算
1、合并同类项collect ① collect(s)
数合并系数
% 对符号多项式s按默认变量x的次
syms a b c x y
s=a*x^2+2*x^3*y^2+3*b*x^2+5*c*y^2+8*x^3*y+4*y;
collect(s)
ans =
(8*y+2*y^2)*x^3+(a+3*b)*x^2+4*y+5*c*y^2
B+1 ans = [ a+1, b+1] [ c+1, d+1]
②符号矩阵的乘法:A*B为高等代数中定义 的矩阵乘法。要求第一个矩阵的列数等于第 二个矩阵的行数。
B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B*C ans = [ a*e+b*g, a*f+b*h] [ c*e+d*g, c*f+d*h]
[ (x+y)*(x^2-x*y+y^2),
x*(a-b)]
4、符号表达式的分子与分母numden
[N,D]=numden(A) % 提取符号表达式A的
分子和分母,输出参数N为分子、D为分母。
[N,D]=numden(sym(3/5))
N=
3
D= 5
[N,D]=numden(sym(sin(2/3))) %提取三角函数的 N= 5569780029364069 D= 9007199254740992 [N,D]=numden(a*x/y+b*y/x) %提取符号表达式的 N= a*x^2+b*y^2 D= x*y
或下 (k<0)第k条次对角线元素的矩阵
diag(v) ans = [ 1, 0, 0, 0] [ 0, 2, 0, 0] [ 0, 0, a, 0] [ 0, 0, 0, 6]
diag(v,2) ans = [ 0, 0, 1, 0, 0, 0] [ 0, 0, 0, 2, 0, 0] [ 0, 0, 0, 0, a, 0] [ 0, 0, 0, 0, 0, 6] [ 0, 0, 0, 0, 0, 0] [ 0, 0, 0, 0, 0, 0]
factor(200) % factor (x) ,x可以为正整数 ans = 2 2 2 5 5 factor(sym('200')) ans = (2)^3*(5)^2 factor(sym([12345678901234567890])) ans = (2)^11*(7)*(7324703)*(117570121)
[a b 1;5 b c]
3、用sym 、syms创建符号表达式
用单引号创建符号表达式,但不能创 建数组,因此有时还得用sym 、syms。 如:
A=sym('[a b 1;5 b c]')
A=
[ a, b, 1]
[ 5, b, c]
3.2 符号矩阵的运算
1、符号矩阵的运算符与数值矩 阵类似,具体如下:
15a15b15c15d15a15b15c15d符号矩阵的幂计算矩阵a的整数m次方幂bsym?adiaga求矩阵a的主对角元素diagak求矩阵a的主对角线上k0diagaansdiaga1ansdiagv创建以v为主对角元素的矩阵diagvk创建以v为主对角线上k0k0第k条次对角线元素的矩阵diagv2ansdiagvanscollectcollects对符号多项式s按默认变量x的次数合并系数syms对符号多项式s按指定变量合并
第3章 符号运算与推导
1、什么是符号运算 定义:运算对象是没赋值的符号变量 2、符号运算与数值运算的区别 (1)数值运算中必须先对变量赋值,然 后才能参与运算。 (2)符号运算无须事先对独立变量赋值, 运算结果以标准的符号形式表达。
3.1 符号表达式的创建
1、用sym 、syms创建符号变量
sym函数用来建立单个符号量,例如, a=sym('a') % 建立符号变量a
syms x y a b S = cos(x+y);
% 三角函数展开
expand(S) ans = cos(x)*cos(y)-sin(x)*sin(y) S=x^((a+b)^2) % 指数函数展开 expand(S)
ans =
x^(a^2)*(x^(a*b))^2*x^(b^2)
3、符号表达式因式分解factor (x)
② collect(s,v) 变量v合并。 collect(s,y)
% 对符号多项式s按指定
ans = (5*c+2*x^3)*y^2+(4+8*x^3)*y+a*x^2+3*b*x^2
③ collect也可以对符号矩阵进行合并。
collect([(x+1)*(y+1),x+y;y+x*y,(x-1)*(x+4)])
f = 1/(1 + x^2);
g = sin(y);
h = x^t;
p = exp(-y/u);
y1= compose(f,g) y1 =
%表示 f[g(y)]
1/(1+sin(y)^2) compose(h,g,z) 与y3= 作用完全相同,x为过度变 y2= compose(f,g,t) %表示 f[g(t)] 量 y2 =
5./B ans = [ 5/a, 5/b] [ 5/c, 5/d] 5.\B ans = [ 1/5*a, 1/5*b] [ 1/5*c, 1/5*d]
B.\5 ans = [ 5/a, 5/b] [ 5/c, 5/d] B./5 ans = [ 1/5*a, 1/5*b] [ 1/5*c, 1/5*d]
1/(1+sin(t)^2)
y3= compose(h,g,x,z) %表示 h[g(z)]
y3 =
sin(z)^t
y4= compose(h,g,t,z) y4 = x^sin(z) 令t=p = exp(-y/u) ,代入 把hh= x^t中的 y5=compose(h,p,x,y,z)t作为过渡变 = x^t,将u替换为z 量(t=sin(z)) y5 = exp(-z/u)^t
2^B ?
③符号数组的乘法:A.*B为对应分量进行相 乘,A与B为同型矩阵或有一个为标量。如果 有标量,则把标量扩大为与另外一个同型的 矩阵,再按对应的分量进行操作。
B=sym(‘[a,b;c,d]’); C=sym(‘[e,f;g,h]’); B.*C ans = [ a*e, b*f] [ c*g, d*h]
⑤符号矩阵的右除法
X=B/A为符号线性方程组X*A=B的解。如 果X不存在或不惟一,则产生警告信息。矩 阵A应为方阵。 B=sym('[a,b;c,d]'); C=sym('[e,f;g,h]'); B/C ans = [ -(-b*g+a*h)/(-e*h+f*g), (f*a-e*b)/(-e*h+f*g)] [ (g*d-c*h)/(-e*h+f*g), (-e*d+c*f)/(-e*h+f*g)]