matlab04符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:计算
ln( x + h ) − ln( x ) L = lim , h→0 h
x M = lim 1 − n→∞ n
n
syms x h n; L=limit((log(x+h)-log(x))/h,h,0) M=limit((1-x/n)^n,n,inf)
计算极限
x −m a 1) L = lim 例:计算 x →a x−a syms x a m; L=limit((x^(1/m)-a^(1/m))/(x-a),x,a)
六类常见符号运算的应用
因式分解、展开、合并、简化及通分等 计算极限 计算导数 计算积分 符号求和 代数方程和微分方程求解
因式分解
因式分解 factor(f)
% 其中f可以是符号表达式、整数或符号常量 可以是符号表达式、
例:
syms x; f=x^6+1; factor(f)
factor 也可用于正整数的分解
计算导数 计算导数
diff
g=diff(f,v):求符号表达式 f 关于 v 的导数 : g=diff(f):求符号表达式 f 关于默认变量的导数 : 关于默认变量 默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数 : 的一阶导数,及导函数在 及导函数在x=0 :计算 f(x)= sin(x)+3x2的一阶导数,及导函数在x=0 处的值。 处的值。 syms x; f=sin(x)+3*x^2; g=diff(f,x) x=0;eval(g)
clear; syms x; f=x^3-6*x+3; g=diff(f) %作图 作图 x=-4:0.1:4; y1=x.^3-6*x+3; y2=3*x.^2-6; y3=zeros(size(x)); %准备画 轴 准备画x轴 准备画 plot(x,y1,x,y2,':r',x,y3 ,'-.g') legend('函数 函数','导函数 导函数'); 函数 导函数
数学实验 第四讲 Matlab 符号运算
本讲主要内容
符号变量和符号表达式的建立 符号对象的基本运算 符号表达式的替换函数subs(f,x,a)
两种计算的特点
数值计算特点: 以数值数组作为运算对象,给出数值解; 以数值数组作为运算对象,给出数值解; 计算过程中产生误差累积问题,影响计算结果的精确性; 计算过程中产生误差累积问题,影响计算结果的精确性; 计算速度快,占用资源少。 计算速度快,占用资源少。 符号计算特点: 以符号对象和符号表达式作为运算对象,给出解析解; 以符号对象和符号表达式作为运算对象,给出解析解; 运算不受计算误差累积问题的影响; 运算不受计算误差累积问题的影响; 计算指令简单; 计算指令简单; 占用资源多,计算耗时长。 占用资源多,计算耗时长。
例:指出下面各条语句的输出结果 指出下面各条语句的输出结果 syms x; f=x^2; subs(f,2) 例:将表达式 将表达式x^2+y^2中x取值为 取值为2 将表达式 中 取值为 syms x y; f=x^2+y^2; subs(f,x,2) 例:同时对两个或多个变量取值求解 同时对两个或多个变量取值求解 syms x y ; f=x^2+y^2; subs(f,[x,y],[1,2]) %同时替换两个变量并求值 同时替换两个变量并求值 subs(f,[x,y],[a+b,a-b]) %方括号换成大花括号也可以 方括号换成大花括号也可以
factor(f) expand(f) collect(f,v) collect(f) y=simple(f) [y,How]=simple(f) y=simplify(f) [N,D]=numden(f) g=horner(f) 因式分解符号表达式和整数、长整数 可以对符号表达式进行多项式展开或三角函数 展开 进行合并 合并同类项 按指定变量 v 进行合并 按默认变量进行合并 默认变量进行合并同类项 变量进行合并 对 f 尝试多种不同的算法进行简化,返回其中 尝试多种不同的算法进行简化 进行简化, 最简短的形式 y 为 f 的最简短形式,How 中记录的为简化过 最简短形式, 程中使用的方法。 程中使用的方法。 利用代数上的函数规则对多项式化简 分式通分: 为通分后的分子, 分式通分:N 为通分后的分子,D 为通分后的 分母, 分母,并可以化简分数表达式 转化f为嵌套形式的多项式 转化 为嵌套形式的多项式
% eval函数是用来将字符串转化为命令并执行它 常用来求符号表达式的值 函数是用来将字符串转化为命令并执行它.常用来求符号表达式的值 函数是用来将字符串转化为命令并执行它
计算导数 计算导数
给定函数y=x 求出其导函数, : 给定函数y=x3-6x+3 ,求出其导函数,然后在同一坐 标系里作出函数及导函数在区间[ 4]上的图形 上的图形。 标系里作出函数及导函数在区间[-4,4]上的图形。
R
3*cos(x)^2-1
HOW
simplify combine(trig) factor expand
函数简化
函数简化 y=simplify(f): 对 f 进行简化 例:1)
syms x; f=sin(x)^2 + cos(x)^2 ; simplify(f)
2)
syms c alpha beta; f=exp(c*log(sqrt(alpha+beta))); simplify(f)
y=simple(f):
尝试多种不同的算法进行简化 进行简化, 对 f 尝试多种不同的算法进行简化,返回其中最简短的形式
[y,How]=simple(f):
y 为 f 的最简短形式,How 中记录的为简化过程中使用的方法。 中记录的为简化过程中使用的方法。 最简短形式,
例:
f
2*cos(x)^2-sin(x)^2 (x+1)*x*(x-1) x^3+3*x^2+3*x+1 cos(3*acos(x)) x^3-x (x+1)^3 4*x^3-3*x
% 特别注意不能用逗号分隔,否则含义就变了 特别注意不能用逗号分隔,
符号表达式的建立: 例:1) y=sym('sin(x)+cos(x)') 2) x=sym('x'); y=sin(x)+cos(x) 3)syms x y; z=sin(x)+cos(y)
% 符号运算采用的运算符和基本函数,在功能和格式上都与数值计算中的 符号运算采用的运算符和基本函数, 完全相同。 完全相同。
计算极限
limit(f,x,a): 计算 lim f ( x ) x →a limit(f,a): 当默认变量趋向于 a 时的极限 默认变量趋向于 limit(f): 计算 a=0 时的极限 limit(f,x,a,'right'): 计算右极限 limit(f,x,a,'left'): 计算左极限
计算极限与导数的相关函数一览表
计算极限
L=limit(f,x,a) L=limit(f,a) L=limit(f) L=limit(f,x,a,'right') L=limit(f,x,a,'left') L1=limit(limt(f,x,x0),y,y0) L2=limit(limt(f,y,y0),x,x0) g=diff(f,v) g=diff(f) g=diff(f,v,n): : 计算f在变量 趋向于 时的极限, 计算 在变量x趋向于 a 时的极限, f为符号表达式 为符号表达式 默认变量为x, 默认a=0 默认变量为 默认 可计算带参数的极限 计算右极限 计算左极限 计算多变量函数的极限
log(1/2) ans = -0.6931 x=log(sym(2/4)) x = -log(2) subs()函数来求符号表达式的值 subs(x) %可以用 subs()函数来求符号表达式的值 ans = -0.6931
一个比较典型的符号运算实例
例:求以下矩阵的行列式值、逆和特征根。 解: syms a11 a12 a21 a22; A=[a11,a12;a21,a22] DA=det(A) IA=inv(A) EA=eig(A) %试一试,看看它的运算结果 %几乎所有适用于数值变量的所有运算和函数也适 用于符号变量,而且运算函数的含义也相同。
函数简化举例 函数简化举例
例:简化
f (x) =
3
Leabharlann Baidu
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(f) g2=simple(g1)
可以达到最简表达。 多次使用 simple 可以达到最简表达。
m
2)试一试 lim sin 1 = ? x
x →0
syms x; L=limit(sin(1/x)) x=1:(-0.0001):eps; %作图看看 作图看看 y=sin(1 ./x); plot(x,y);
多变量函数的极限
求:L = lim f ( x, y )
x −> x 0 y −> y 0
符号表达式的替换求值函数
符号表达式的替换求值函数: 符号表达式的替换求值函数:常用格式 subs(f) subs(f,a) subs(f,x,a) (求符号表达式 的值 求符号表达式f的值 求符号表达式 的值) (用a替换 中的默认变量 ,并求值 用 替换 中的默认变量x,并求值) 替换f中的默认变量 (用a替换 中的指定变量 ,并求值 用 替换 中的指定变量x,并求值) 替换f中的指定变量
horner 多项式
horner 多项式:嵌套形式的多项式 如: f ( x ) = x n + x n −1 + L + x + 1
= x (L x ( x ( x + 1) + 1) L) + 1
例:
•syms x; • f=x^4+2*x^3+4*x^2+x+1;
• g=horner(f)
因式分解、展开、合并、简化及通分等相关函数 因式分解、展开、合并、简化及通分等相关函数
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)
a 11 a 12 A= a 21 a 22
符号对象的建立 符号对象的建立: sym 和 syms 的建立
sym 函数用来建立单个符号变量 如: a=sym('a')
% 建立符号变量 。sym 函数实际上是常用于建立符号表达式。 建立符号变量a。
syms 命令用来建立多个符号变量 如: syms a b c
L1=limit(limt(f,x,x0),y,y0) 或,L1=limit(limt(f,y,y0),x,x0)
例:求 lim e
x − >1 / y y − >∞
−1 /( x 2 + y 2 ) sin 2 x x2
(1 +
2 2 1 x+a y y2
)
syms x y a; f=exp(f=exp(-1/(x^2+y^2))*sin(x)^2 ... /x^2*(1+1/y^2)^(x+a^2*y^2); L=limit( limit(f,x,1/sqrt(y)) , y,inf)
合并同类项
合并同类项 collect(f,v): 按指定变量 v 进行合并 进行合并 collect(f): 按默认变量进行合并 默认变量进行合并 变量进行 例:
syms x y; f= x^2*y + y*x - x^2 + 2*x ; collect(f) collect(f,y)
函数简化
函数简化
分式通分
函数简化
[N,D]=numden(f): N 为通分后的分子,D 为通分后的分母 为通分后的分子,
例:1)可以化简分数表达式 可以化简分数表达式
syms x y; f=x/y+y/x; [N,D]=numden(f)
2)也可以化简数值分数,只需将它转化为符号表达式 )也可以化简数值分数,
[n,d]=numden(sym(112/1024))
例 : 符号对象和普通数据对象之间的差别
sqrt(2) ans = 1.4142 x=sqrt(sym(2)) x = 2^(1/2)
%返回数值结果
%返回符号结果
符号运算是按推理解析的方式进行, 例 :符号运算是按推理解析的方式进行,运算结果以标准 符号运算是按推理解析的方式进行 符号形式表达。 符号形式表达。-- 类似于代数运算
ln( x + h ) − ln( x ) L = lim , h→0 h
x M = lim 1 − n→∞ n
n
syms x h n; L=limit((log(x+h)-log(x))/h,h,0) M=limit((1-x/n)^n,n,inf)
计算极限
x −m a 1) L = lim 例:计算 x →a x−a syms x a m; L=limit((x^(1/m)-a^(1/m))/(x-a),x,a)
六类常见符号运算的应用
因式分解、展开、合并、简化及通分等 计算极限 计算导数 计算积分 符号求和 代数方程和微分方程求解
因式分解
因式分解 factor(f)
% 其中f可以是符号表达式、整数或符号常量 可以是符号表达式、
例:
syms x; f=x^6+1; factor(f)
factor 也可用于正整数的分解
计算导数 计算导数
diff
g=diff(f,v):求符号表达式 f 关于 v 的导数 : g=diff(f):求符号表达式 f 关于默认变量的导数 : 关于默认变量 默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数 : 的一阶导数,及导函数在 及导函数在x=0 :计算 f(x)= sin(x)+3x2的一阶导数,及导函数在x=0 处的值。 处的值。 syms x; f=sin(x)+3*x^2; g=diff(f,x) x=0;eval(g)
clear; syms x; f=x^3-6*x+3; g=diff(f) %作图 作图 x=-4:0.1:4; y1=x.^3-6*x+3; y2=3*x.^2-6; y3=zeros(size(x)); %准备画 轴 准备画x轴 准备画 plot(x,y1,x,y2,':r',x,y3 ,'-.g') legend('函数 函数','导函数 导函数'); 函数 导函数
数学实验 第四讲 Matlab 符号运算
本讲主要内容
符号变量和符号表达式的建立 符号对象的基本运算 符号表达式的替换函数subs(f,x,a)
两种计算的特点
数值计算特点: 以数值数组作为运算对象,给出数值解; 以数值数组作为运算对象,给出数值解; 计算过程中产生误差累积问题,影响计算结果的精确性; 计算过程中产生误差累积问题,影响计算结果的精确性; 计算速度快,占用资源少。 计算速度快,占用资源少。 符号计算特点: 以符号对象和符号表达式作为运算对象,给出解析解; 以符号对象和符号表达式作为运算对象,给出解析解; 运算不受计算误差累积问题的影响; 运算不受计算误差累积问题的影响; 计算指令简单; 计算指令简单; 占用资源多,计算耗时长。 占用资源多,计算耗时长。
例:指出下面各条语句的输出结果 指出下面各条语句的输出结果 syms x; f=x^2; subs(f,2) 例:将表达式 将表达式x^2+y^2中x取值为 取值为2 将表达式 中 取值为 syms x y; f=x^2+y^2; subs(f,x,2) 例:同时对两个或多个变量取值求解 同时对两个或多个变量取值求解 syms x y ; f=x^2+y^2; subs(f,[x,y],[1,2]) %同时替换两个变量并求值 同时替换两个变量并求值 subs(f,[x,y],[a+b,a-b]) %方括号换成大花括号也可以 方括号换成大花括号也可以
factor(f) expand(f) collect(f,v) collect(f) y=simple(f) [y,How]=simple(f) y=simplify(f) [N,D]=numden(f) g=horner(f) 因式分解符号表达式和整数、长整数 可以对符号表达式进行多项式展开或三角函数 展开 进行合并 合并同类项 按指定变量 v 进行合并 按默认变量进行合并 默认变量进行合并同类项 变量进行合并 对 f 尝试多种不同的算法进行简化,返回其中 尝试多种不同的算法进行简化 进行简化, 最简短的形式 y 为 f 的最简短形式,How 中记录的为简化过 最简短形式, 程中使用的方法。 程中使用的方法。 利用代数上的函数规则对多项式化简 分式通分: 为通分后的分子, 分式通分:N 为通分后的分子,D 为通分后的 分母, 分母,并可以化简分数表达式 转化f为嵌套形式的多项式 转化 为嵌套形式的多项式
% eval函数是用来将字符串转化为命令并执行它 常用来求符号表达式的值 函数是用来将字符串转化为命令并执行它.常用来求符号表达式的值 函数是用来将字符串转化为命令并执行它
计算导数 计算导数
给定函数y=x 求出其导函数, : 给定函数y=x3-6x+3 ,求出其导函数,然后在同一坐 标系里作出函数及导函数在区间[ 4]上的图形 上的图形。 标系里作出函数及导函数在区间[-4,4]上的图形。
R
3*cos(x)^2-1
HOW
simplify combine(trig) factor expand
函数简化
函数简化 y=simplify(f): 对 f 进行简化 例:1)
syms x; f=sin(x)^2 + cos(x)^2 ; simplify(f)
2)
syms c alpha beta; f=exp(c*log(sqrt(alpha+beta))); simplify(f)
y=simple(f):
尝试多种不同的算法进行简化 进行简化, 对 f 尝试多种不同的算法进行简化,返回其中最简短的形式
[y,How]=simple(f):
y 为 f 的最简短形式,How 中记录的为简化过程中使用的方法。 中记录的为简化过程中使用的方法。 最简短形式,
例:
f
2*cos(x)^2-sin(x)^2 (x+1)*x*(x-1) x^3+3*x^2+3*x+1 cos(3*acos(x)) x^3-x (x+1)^3 4*x^3-3*x
% 特别注意不能用逗号分隔,否则含义就变了 特别注意不能用逗号分隔,
符号表达式的建立: 例:1) y=sym('sin(x)+cos(x)') 2) x=sym('x'); y=sin(x)+cos(x) 3)syms x y; z=sin(x)+cos(y)
% 符号运算采用的运算符和基本函数,在功能和格式上都与数值计算中的 符号运算采用的运算符和基本函数, 完全相同。 完全相同。
计算极限
limit(f,x,a): 计算 lim f ( x ) x →a limit(f,a): 当默认变量趋向于 a 时的极限 默认变量趋向于 limit(f): 计算 a=0 时的极限 limit(f,x,a,'right'): 计算右极限 limit(f,x,a,'left'): 计算左极限
计算极限与导数的相关函数一览表
计算极限
L=limit(f,x,a) L=limit(f,a) L=limit(f) L=limit(f,x,a,'right') L=limit(f,x,a,'left') L1=limit(limt(f,x,x0),y,y0) L2=limit(limt(f,y,y0),x,x0) g=diff(f,v) g=diff(f) g=diff(f,v,n): : 计算f在变量 趋向于 时的极限, 计算 在变量x趋向于 a 时的极限, f为符号表达式 为符号表达式 默认变量为x, 默认a=0 默认变量为 默认 可计算带参数的极限 计算右极限 计算左极限 计算多变量函数的极限
log(1/2) ans = -0.6931 x=log(sym(2/4)) x = -log(2) subs()函数来求符号表达式的值 subs(x) %可以用 subs()函数来求符号表达式的值 ans = -0.6931
一个比较典型的符号运算实例
例:求以下矩阵的行列式值、逆和特征根。 解: syms a11 a12 a21 a22; A=[a11,a12;a21,a22] DA=det(A) IA=inv(A) EA=eig(A) %试一试,看看它的运算结果 %几乎所有适用于数值变量的所有运算和函数也适 用于符号变量,而且运算函数的含义也相同。
函数简化举例 函数简化举例
例:简化
f (x) =
3
Leabharlann Baidu
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(f) g2=simple(g1)
可以达到最简表达。 多次使用 simple 可以达到最简表达。
m
2)试一试 lim sin 1 = ? x
x →0
syms x; L=limit(sin(1/x)) x=1:(-0.0001):eps; %作图看看 作图看看 y=sin(1 ./x); plot(x,y);
多变量函数的极限
求:L = lim f ( x, y )
x −> x 0 y −> y 0
符号表达式的替换求值函数
符号表达式的替换求值函数: 符号表达式的替换求值函数:常用格式 subs(f) subs(f,a) subs(f,x,a) (求符号表达式 的值 求符号表达式f的值 求符号表达式 的值) (用a替换 中的默认变量 ,并求值 用 替换 中的默认变量x,并求值) 替换f中的默认变量 (用a替换 中的指定变量 ,并求值 用 替换 中的指定变量x,并求值) 替换f中的指定变量
horner 多项式
horner 多项式:嵌套形式的多项式 如: f ( x ) = x n + x n −1 + L + x + 1
= x (L x ( x ( x + 1) + 1) L) + 1
例:
•syms x; • f=x^4+2*x^3+4*x^2+x+1;
• g=horner(f)
因式分解、展开、合并、简化及通分等相关函数 因式分解、展开、合并、简化及通分等相关函数
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)
a 11 a 12 A= a 21 a 22
符号对象的建立 符号对象的建立: sym 和 syms 的建立
sym 函数用来建立单个符号变量 如: a=sym('a')
% 建立符号变量 。sym 函数实际上是常用于建立符号表达式。 建立符号变量a。
syms 命令用来建立多个符号变量 如: syms a b c
L1=limit(limt(f,x,x0),y,y0) 或,L1=limit(limt(f,y,y0),x,x0)
例:求 lim e
x − >1 / y y − >∞
−1 /( x 2 + y 2 ) sin 2 x x2
(1 +
2 2 1 x+a y y2
)
syms x y a; f=exp(f=exp(-1/(x^2+y^2))*sin(x)^2 ... /x^2*(1+1/y^2)^(x+a^2*y^2); L=limit( limit(f,x,1/sqrt(y)) , y,inf)
合并同类项
合并同类项 collect(f,v): 按指定变量 v 进行合并 进行合并 collect(f): 按默认变量进行合并 默认变量进行合并 变量进行 例:
syms x y; f= x^2*y + y*x - x^2 + 2*x ; collect(f) collect(f,y)
函数简化
函数简化
分式通分
函数简化
[N,D]=numden(f): N 为通分后的分子,D 为通分后的分母 为通分后的分子,
例:1)可以化简分数表达式 可以化简分数表达式
syms x y; f=x/y+y/x; [N,D]=numden(f)
2)也可以化简数值分数,只需将它转化为符号表达式 )也可以化简数值分数,
[n,d]=numden(sym(112/1024))
例 : 符号对象和普通数据对象之间的差别
sqrt(2) ans = 1.4142 x=sqrt(sym(2)) x = 2^(1/2)
%返回数值结果
%返回符号结果
符号运算是按推理解析的方式进行, 例 :符号运算是按推理解析的方式进行,运算结果以标准 符号运算是按推理解析的方式进行 符号形式表达。 符号形式表达。-- 类似于代数运算