第三讲数值计算与符号计算
第3章 符号运算与推导

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]
第三讲运算符和表达式PPT教案

第三讲 运算符和表达式
④ 在调用函数时,对于实参的求值顺序,ANSI C也没有规定。 有的系统按从左到右的顺序求值,有的相同按从右到左的 顺序求值。
例3.2】 main( ) {
int i=5; printf("\n%d,%d",i, ++i); }
若按从左到右的次序处理,预期的运行结 果为: 5, 6
第17页/共30页
第三讲 运算符和表达式
关系运算符和关系表达式
关系运算符
<
种类:< <= == >= ><>= !=优先级6(高)
结合方向:自左向右 >=
优先级别:
例 c>a+b
//c>(a+b)
== !=
优先级7(低)
a>b!=c //(a>b)!=c
关系表达a=式=b的<c值:/是/a逻==辑(b值<c“) 真”或“假”,用1
强制类型转换:(类型) 分量运算符:(. ->) 下标运算符:([]) 其它 :(( ) -)
第1页/共30页
第三讲 运算符和表达式
学习运算符应注意:
运算符功能 与运算量关系
要求运算量个数 要求运算量类型
运算符优先级别 结合方向 结果的类型
第2页/共30页
第三讲 运算符和表达式
3.1 算术运算 3.2 赋值运算 3.3 自增、自减运算 3.4 关系运算与逻辑运算 3.5 条件运算 3.6 逗号运算 3.7 位运算 3.8 类型转换 第3页/共30页
第三讲 运算符和表达式
3.1 算术运算
3.1.1 算术运算符
基本算术运算符: + - * / %
Matlab符号计算.ppt

3.1 符号变量的定义 格式二:syms 变量1 变量2 …….
例:syms a1 a2 a3 注意:用格式二时,变量和变量之间只能用空格隔开, 不能用其他分隔符。
符号变量定义之后,就可以参与各种解析运算了。
• 例:创建符号复数变量a+bi;
• 方法一:
分区间为[a,b],其中a和b是数值; (4)int(f,‘m’,‘n’) 返回f对预设变量的积分值,积
分区间为[m,n],其中m,n是符号式;
例:已知 f (x) ax2 bx c 求f(x)的积分
例 求定积分。
命令如下:
x=sym('x');t=sym('t'); int(abs(1-x),1,2)
Maple函数的使用:
格式:maple(‘函数’,变量1,变量2,…….)
其中,函数是maple中的函数名称,变量1,变量2等是 函数所用的参数。
如:matlab中没有专门求差分方程的函数,就可以调用 Maple符号运算工具箱中的迭代运算函数rsolve来求解, 通过maple函数来访问rsolve函数。
3
结果:
3.5 方程求解
1、代数方程 利用符号表达式解代数方程所需要的函数为solve(f),
作用为解符号方程式f; 例:求一元二次方程 f (x) ax2 bx c 的根
例2:
2、常微分方程
matlab解常微分方程式的函数为:
dsolve(‘equ’,’condition’);
其中,equ代表常微分方程式,condition为初始条件, 如果初始条件没有给出,则给出通解形式。
第3章 MATLAB符号计算

复数函数。在符号计算中,复数的共轭conj、求实部real、求虚部 imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号 计算中,MATLAB没有提供求相角的命令。
2.使用syms命令创建符号变量和符号表达式
语法:
syms('arg1', ' arg2',…,参数) syms arg1 arg2 … 参数
%把字符变量定义为符号变量 %把字符变量定义为符号变量的简洁形式
说明:syms用来创建多个符号变量,以上两种方式创建的符号对象是相同的。参数设置和前面的sym命令 相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】 使用syms命令创建符号变量和符号表达式。
>> syms x y real >> z=x+i*y; >> real(z) ans = x >> sym('x','unreal'); >> real(z) ans = x/2 + conj(x)/2
%创建实数符号变量 %创建z为复数符号变量 %复数z的实部是实数x
%清除符号变量的实数特性 %复数z的实部
符号运算中的运算符有以下2种。 (1)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。
数值计算和符号计算

for i=2:length(t)
if ysign(i)~=ysign(i-1) >> n,yzero
n=n+1;yzero(n)=i-1; n =
%与前一函数值符号相反,则表示有一零点
end
6 %yzero(n)存放第n个零点对应的下标
end
yzero =
220 523 852 1146 1488
010
100
Adet=det(A)
%求矩阵的行A列de式t =
Aroots =
Arank=rank(A)
%求矩阵的秩 -82
10.8570
Anorm=norm(A) P=poly(A) Aroots=roots(P)
%求矩阵的范数Ara,nk通= 过带不同的参数可以求不同的-2.范677数6
%求矩阵特征多An项o3rm式=
1
五
❖两种计算的特点
、
数
❖数值计算
值
计
❖符号对象和符号表达式
算
和
❖符号计算
符 号
❖符号函数的可视化
计 算
❖Maple函数的使用
5.1 两种计算的特点
2
数值计算特点:
1)以数值数组作为运算对象,给出数值解;
2)计算过程中产生误差累积问题,影响计算结果的精确性;
3)计算速度快,占用资源少。
符号计算特点:
本节主要以例题的形式给出一些常用的数值计算问题的MATLAB解算过程,以 便熟悉MATLAB的计算指令。相对于具体的应用环境,需要根据实际情况查阅 MATLAB函数列表,选择合适的函数和参数进行处理。
【例5-1】矩阵常见运算 L =
1.0000 0 0
数值计算与符号运算

实验名称:数值计算与符号运算一、实验目的与要求:1.掌握MATLAB 数值计算的基本功能,其中主要掌握矩阵的定义、矩阵的代数运算、多项式运算的函数、函数微积分的数值求解及信号处理中傅里叶变换的基本函数应用。
2.掌握MATLAB 中的符号计算的基本功能,其中主要掌握符号表达式的定义、符号矩阵的代数运算、符号方程的求解、符号函数的微积分、信号处理中傅里叶变换的函数以及符号函数的可视化。
二、实验原理、内容和步骤(一)数值计算1.求解线性方程,并进行解的验证。
2.计算以下序列。
3.两个多项式a(x )=5x 4+4x 3+3x 2+2x +1,b(x )=3x 2+1计算c(x )=a(x )*b(x ),并计算c(x )的根。
当x =2时,计算c(x )的值。
4.t 在[0,10]范围内,y(t)=e -2t sin(10t +30o ),计算y 的微分和积分,并用不同的颜色在同一张图上画出y 函数、y 的微分函数及y 的积分函数曲线。
5.t 在[0,10]范围内,对y=e -2t sin(10t +30o )+ e -3t cos(5t ) 进行快速傅立叶变换,并绘制y 的频域曲线图。
(二)符号计算1. 创建符号表达式:f =ax 3+bx 2+cx +d2.计算下列矩阵,并对结果矩阵中的元素进行化简,得到最简形式的矩阵。
3. 使用 “solve”函数,求解下列方程中的x 。
333(1)cos()0,(2)cos()0,(3)cos()0x a x x and x ax +=+=+=, 当a=0.5, 求x 的数值解。
4. 求解以下积分:322(645)ba S x x bx dx=-+-⎰5. 求解微分方程: 初始条件:2)1(,0)1(==x dt d ;2220d x dx x dt dt-+= 6.已知符号表达式12)(sin 12+=-=x g x f ,,计算当x=1时,f 的值;计算f 与g 的复合函数;求g 的逆函数。
符号计算与数值计算的结合方法研究

符号计算与数值计算的结合方法研究符号计算与数值计算是计算机科学中两个重要的研究领域。
符号计算主要处理符号表达式,能够精确地求解代数方程、微积分问题等数学问题,是高级数学、科学与工程领域不可缺少的工具。
数值计算主要处理离散数据的计算问题,其应用范围非常广泛,包括科学计算、工业计算等。
符号计算和数值计算都有其独特的优缺点,它们之间的结合方法可以充分发挥它们的优势,解决更加复杂的数学问题。
一、符号计算和数值计算的优缺点符号计算和数值计算有各自的优缺点。
符号计算具有高精度、高可靠性和通用性等优点,它能够对代数方程、微积分问题等数学问题进行完全的符号化处理,获得闭合的解析式。
符号计算的缺点是其处理速度较慢,且对于复杂的数学问题难以进行符号化处理。
数值计算具有处理速度快、适用范围广等优点,其模拟了许多现实世界中的问题,能够提供数字解,而不是解析解。
数值计算的缺点是处理的数据是离散的,其精度始终受到数据离散程度的限制。
二、符号计算和数值计算的结合方法符号计算和数值计算之所以能够结合起来,是因为它们既有各自的优势和特点,又有互补的作用。
在实际应用中,符号计算和数值计算常常配合使用,以在不同场景下获得更好的计算效果。
1. 符号计算和数值计算的计算优化符号计算和数值计算的结合方法可以优化计算过程。
符号计算能够将数学问题转换为更加简洁的表达式,使得计算过程更加高效。
数值计算则能够将符号计算得到的表达式对应转化为算法,使得计算结果更加准确。
符号计算通过化简、代数替换等技术,将原本复杂的数学公式转换为更为简单的形式,从而降低计算难度。
数值计算则通过数值模拟、优化算法等技术,加速计算,提高并行化效率,增强数值计算的可靠性。
2. 符号计算和数值计算的数据在表达上的转换符号计算和数值计算的结合方法可以进行数据在表达上的转换。
符号计算的处理结果是高度抽象、形式上的,包括如多项式代数、超几何显式公式等数学结构,在特定场景下能够提供通用性的形式化解。
MATLAB符号计算

例2: :
2、常微分方程 、 matlab解常微分方程式的函数为: 解常微分方程式的函数为: 解常微分方程式的函数为 dsolve(‘equ’,’condition’); 其中, 代表常微分方程式, 为初始条件, 其中,equ代表常微分方程式,condition为初始条件, 代表常微分方程式 为初始条件 如果初始条件没有给出,则给出通解形式。 如果初始条件没有给出,则给出通解形式。 equ中 用字母D来表示求微分 D的数字表示几 来表示求微分, 注:在equ中,用字母D来表示求微分,D的数字表示几 重微分, 后的变量为因变量 后的变量为因变量。 重微分,D后的变量为因变量。如Dy表示一阶微分项 表示一阶微分项 ,D2y表示二阶微分项 表示二阶微分项 量都是对自变量t求导 求导。 量都是对自变量 求导。 ,并默认所有这些变
3.级数运算 级数运算 可用于级数的函数有: 可用于级数的函数有: (1)symsum(s,v,a,b) 自变量 在[a,b]之间取值时, 自变量v在 之间取值时, 之间取值时 对通项s求和 求和; 对通项 求和; (2)toylor(f,v,n)求f对自变量 的泰勒级数展开 ( 对自变量v的泰勒级数展开 ) 对自变量 至n阶; 阶
例:计算时间函数 f (t ) = e
−t 2
的傅立叶变换
例:计算时间函数 f (t ) = 0.1e − t sin(t −
π
3
) 的拉氏变换。 的拉氏变换。
例:计算时间函数 f (t ) = 0.1e − t sin(t − 结果: 结果:
π
3
) 的拉氏变换。 的拉氏变换。
3.5 方程求解 1、代数方程 、 利用符号表达式解代数方程所需要的函数为solve(f), 利用符号表达式解代数方程所需要的函数为 作用为解符号方程式f; 作用为解符号方程式 例:求一元二次方程
第4章-MATLAB数值计算与符号计算

• 10 40 100 160 170 120 • conv指令可以嵌套使用,如conv(conv(a, b), c)。 • 命令[q, r]=deconv(v, u)表示u整除v。 向量q表示商
,向量r表示余, 即有v=conv(u, q)+r。
• (3) 多项式的导函数
• 对多项式求导数的函数有
• yi=interp1(x, y, xi, method) • 函数根据x, y的值,计算函数在xi处的值。x, y是两个等
长的已知向量,分别描述采样点和样本值,xi是一个向 量或标量,描述欲插值的点,yi是一个与xi等长的插值 结果。method是插值方法,允许的取值有'linear'、 'nearest'、'cubic'、'spline',分别表示线性插值、最近点 插值、3次多项式插值、3次样条插值。 • 注意:xi的取值范围不能超出x的给定范围,否则,会 给出“NaN”错误。
plot(x,y,'o',x,Y) xlabel('年龄') ylabel('体重')
运行结果如下:
p=
0.0141 -0.2230 2.5809 3.5313
Y' =
%显示Y的转置Y'
3.5313 4.7678 5.9033 9.6478 14.0360 17.1301 26.7709 39.6895
0.8797 0.0102
• 绘出sinx和多项式P(x)在给定区间的函数曲线, 如图4.1所示。
图4.1 用6次多项式对正弦函数进行拟合
【例】 经测量某人从出生到成年之间的体重,得到年龄 与体重的数据如表1所示,试建立年龄与体重之间的关系。
符号和数值混合计算

符号和数值混合计算北京大学数学科学学院2004级谭昌汇摘要符号和数值混合计算是一种利用数值计算方法解决符号计算问题的计算方法,它为符号计算提供了一种新的思维模式和方法。
本报告以多项式的伪除问题为一个切入点,设计傅立叶变换的方法来求解多项式的伪除问题,并证明所得结果的精确性。
这是使用数值计算的方法解决精确问题的一个新的想法,我们希望通过大量的实例检验目前流行的计算机代数系统是否使用了类似的思想和方法。
关键词:符号和数值混合计算,多项式伪除,傅立叶变换1介绍数值计算和符号计算是计算数学的两大重要体系,这两种方法各有优劣,在不同的问题中有着不同的应用。
1.1数值计算数值计算方法是人类为了求解大型的科学和工程问题而不断探索的高速高效计算方法。
数值计算的出现和发展使得很多大规模的问题得到求解,特别是计算机问世以来,越来越多看似相当繁复的计算问题在数值计算的帮助下得到了满意的解答。
数值计算方法以其快速和大规模运算为诸多问题提供了有效的计算支持。
然而,由于数值计算过程中的浮点运算会逐渐累积误差,使得计算结果并不是精确解。
在某些问题看来,一些误差是可以接受的,但对于精度要求比较高,甚至要求完全精确的计算问题来说,数值计算方法就不再适用了。
1.2符号计算为了精确的解决问题,自20世纪五六十年代开始,数学家们开始提出一种新的方法:符号计算方法,也称计计算机代数。
符号计算不再使用浮点近似来处理诸如π,e之类的数,而是使用符号来精确的代替。
这样就不存1在近似过程,也没有误差的出现,得到的结果是精确解。
当然,符号计算也有它的弱点,由于精确的需要,计算过程中将可能累积大量无法消去的符号,这使得以后的计算变慢,同时耗费更多的空间。
由于精确的代价实在太高,许多大型工程问题不可能使用符号计算的方法求解,这也在一方面限制了符号计算的实际应用。
提高速度和节省空间成为了符号计算发展的重要目标。
1.3符号和数值混合计算由于与数值计算实际的工程计算联系更加紧密,同时数值计算的发展时间也要长于符号计算,可以说,数值计算是一门更加成熟的学科,有更多有效的办法供各种问题使用。
数值计算和符号计算

for i=2:length(t)
if ysign(i)~=ysign(i-1) >> n,yzero
n=n+1;yzero(n)=i-1; n =
%与前一函数值符号相反,则表示有一零点
end
6 %yzero(n)存放第n个零点对应的下标
end
yzero =
220 523 852 1146 1488
010
100
Adet=det(A)
%求矩阵的行A列de式t =
Aroots =
Arank=rank(A)
%求矩阵的秩 -82
10.8570
Anorm=norm(A) P=poly(A) Aroots=roots(P)
%求矩阵的范数Ara,nk通= 过带不同的参数可以求不同的-2.范677数6
%求矩阵特征多An项o3rm式=
2.8207 Aroots2 =
%求特征根 11.9378
10.8570
Aroots2=eig(A)
%特征根的又一P 种= 求法
-2.6776
%线性方程组求解
1.0000 -11.0000 -6.0000 82.0000
2.8207
x=A\b
%求方程组AX=b的解
x=inv(A)*b 方程组为:
解为:
1
五
两种计算的特点
、
数
数值计算
值
计
符号对象和符号表达式
算
和
符号计算
符 号
符号函数的可视化
计 算
Maple函数的使用
5.1 两种计算的特点2来自数值计算特点:1)以数值数组作为运算对象,给出数值解;
2)计算过程中产生误差累积问题,影响计算结果的精确性;
五 数值计算和符号计算

syms a11 a12 a13 a21 a22 a23 a31 a32 a33 D; A=[a11,a12,a13;a21,a22,a23;a31,a32,a33]; IA=inv(A); [IAS,D]=subexpr(IA,D) syms a b c d D IA=inv([a b;c d]) [IAS,D]=subexpr(IA,D)
3
五 数值计算和符号计算
[例5-1] 矩阵常见运算 例 A=[1 2 3; 4 7 2;7 4 3 ]; b=[2; 4; 5;]; %矩阵的分解 矩阵的分解 [L U P]=lu(A)%矩阵的 LU 分解,分解成上三角和下三角阵 分解, 矩阵的 [Q,R]=qr(A) %矩阵的 QR 分解 矩阵的 %矩阵的特征参数 矩阵的特征参数 Adet=det(A) %矩阵行列式 矩阵行列式 Arank=rank(A) %矩阵的秩 矩阵的秩 Anorm=norm(A) %矩阵的范数 矩阵的范数 P=poly(A) %矩阵特征多项式 矩阵特征多项式 Aroots=roots(P) %特征根 特征根 Aroots2=eig(A) %特征根另一种求法 特征根另一种求法 %线性方程组求解 线性方程组求解 x=A\b %求方程组 AX=b的解 X 求方程组 的解 4
9
五 数值计算和符号计算
符号计算的步骤: 符号计算的步骤: 1) 定义基本的符号对象,syms, sym 定义基本的符号对象, 2) 构造符号表达式 3) 进行符号计算 例如: 例如:
a = [ 1/3, 0.2+sqrt(2), pi ]; % 数值数组 a1 = sym( ‘[1/3, 0.2+sqrt(2), pi]’ ); % 符号数组 a2 = sym( ‘2*sin(x)*cos(x)’ ); % 符号表达式 a3 = simple( a2 ); % 符号表达式化简
计算机组成与结构王爱英版第三讲

1.1.2 数制间的转换
2.十进制转换为非十进制(举例练习)
Windows操作系统
Windows操作系统
在人们使用最多的进位记数制中,表示数的符号在不同的位置上时所代表的数值是不同的,按 进位的方法进行记数的规则称为进位记数制。
日常生活中,人们最常用的是十进位记数制,即按照“逢十进一”的原则进行记数
1.1.1 进位记数制
进位记数制的基本要素
一种进位记数制包含一组数码符号和基数、数位、位权3个基本要素 数码:数制中表示基本数值大小的不同数字符号。例如:十进制的数码就是0、1、2、3、4、5、 6、7、8、9,二进制数的数码就是0、1 基数:某数制可以使用的数码个数。可以理解为:具体使用多少个数字符号来表示数目的大小, 对于N进制数,实际上基数就是N。 数位:数码Wi在nd一ow个s操数作系中统所处的位置。 位权:位权是基数的幂,表示数码在不同位置上的数值。可以理解为:对于多位数,处在某一 位上的“1”所表示的数值大小称为该位的位权。如果规定小数点左起第一位的序号位0,向左序号 自然递增,则位权等于基数的序号次方 例如:(123)10 (1011)2
计算机组成 第三讲
第三讲 运算方法和存储
目录
CONTENTS
01 数据的表示方法和转换 02 带符号的二进制表示及计算 03 二进制乘法运算
04 二进制除法运算 05 浮点数的运算方法
01
数据的表示方法和转换
1.1 数制及其转换
1.计算机中的数据 计算机中的数据包括文字、数字、声音、图形以及动画等,所有类型的数据在计算机中都是用 二进制形式表示和存储的。 2.为什么还有其他进制数 由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观 地解决问题。但二进制数太长了。比如int 类型占用4个字节,32位。
第三课算术运算符和表达式课件

Python算数运算符 开动脑筋
如何计算分别得到数123的百、十、个 位上的数?
Python
算数运算的 02
程序实例
Python算术运算的程序实例
将华氏温度转化为摄氏温度 转换公式:C=5/9(F-32)
Python算术运算的程序实例
代码:
#温度转换 F=float(input(“请输入华氏温度值”) C=(5/9)*(F-32) Print(“对应的摄氏温度为:”,C)
Python算术运算的程序实例
开动脑筋
在本例中: 1、float()函数的作用是什么? 2、如何使输出的摄氏温度保留2位小数?
Python算术运算的程序实例
随堂练习
1.程序编写,输入一个三位数的自然数,然后依 次输出这个数每位上的数字,并用逗号隔开。 2.编程实现将摄氏温度转化为华氏温度。
hon算术运算的程序实例
1.算数运 算符
算术运算符用法 算术运算符的优先级
课堂 小结
华氏温度转换为摄氏温度 数据类型转换函数 Format()格式化函数
2.程序实例
Python算术运算的程序实例
日积月累
1.Python常用的数据类型转换函数 Int([x]):将字符串或数字转换为整型 Float([x]):将字符串或数字转换为浮点型
Python算术运算的程序实例
日积月累
2.格式化函数format( ) 格式:format(value[,format_spec]) 功能:将数据value按format_spec格式规范表 现情势。例如,浮点数格式[width][.precision]
matlab数值计算与符号计算

例4.3 用一个6次多项式在区间[0, 2]内 逼近函数
• MATLAB程序如下: • x=linspace(0, 2*pi, 50); • y=sin(x); • P=polyfit(x, y, 6) %得到6次多项式的系
16 -563 -12089 -43779
0
0
0
0
0
0
0
0
0
0
0
0
• (5) 多项式的根 • 使用函数roots可以求出多项式等于0的根,
根用列向量表示, 其调用格式为
• r=roots(p) • 若已知多项式等于0的根, 函数poly可以求出
相应多项式, 调用格式为
• p=poly(r)
• 例4.2 求多项式x4 + 8x3 - 10的根。 • 命令如下: • A=[1, 8, 0, 0, -10]; • x=roots(A) • 返回 • x= • -8.0194 • 1.0344 • -0.5075 + 0.9736i • -0.5075 - 0.9736i • 再输入 • p=poly(x) • 返回 • p= • 1.0000 8.0000 -0.0000 -0.0000 -10.0000
• (2) 二维数据插值 • 在MATLAB中, 提供了解决二维插值问题的函数
interp2, 其调用格式为
• Z1=interp2(X, Y, Z, X1, Y1, 'method') • 其中, X, Y是两个向量, 分别描述两个参数的采样
点;Z是与参数采样点对应的函数值;X1, Y1是两 个向量或标量, 描述欲插值的点;Z1是根据相应 的插值方法得到的插值结果。method的取值与一 维插值函数相同。X, Y, Z也可以是矩阵形式。 • 同样, X1, Y1的取值范围不能超出X, Y的给定范围, 否则, 会给出“NaN”错误。
2符号计算与数值计算

第二章符号计算数学计算有数值计算与符号计算之分。
这两者的根本区别是:数值计算的表达式、矩阵变量中不允许有未定义的自由变量,而符号计算可以含有未定义的符号变量。
对于一般的程序设计软件如C,C++等语言实现数值计算还可以,但是实现符号计算并不是一件容易的事。
而Matlab自带有符号工具箱Symbolic Math Tooibox,再借助于软件Maple,就具有了强大的符号运算功能。
在数值计算(包括输入、输出及中间变量在内的)过程中,所运作的变量都是被赋了值的数值变量。
而在符号计算的整个过程中,所运作的是符号变量。
注意:在符号计算中所出现的数字也都是当作符号处理的。
2.1符号变量的创建在Matlab的数据类型中,字符型与符号型是两种重要而又容易混淆的数据类型。
一定要注意这两种类型的不同之处。
在Matlab中利用sym命令来创建符号变量,sym的使用格式为:S=sym(‘A’) 定义单个符号变量Ssyms a b c …. 定义多个符号变量a,b,c…syms命令的使用要比sym简便,它一次可以定义多个符号变量,而且格式简练。
因此一般用syms 来创建符号变量。
注意各符号变量之间是空格。
例1:比较字符型与符号型s='123456'↙s =123456S1=sym('123456')↙S1 =123456whos↙Name Size Bytes ClassS1 1x1 136 sym objects 1x6 12 char array说明:从例1可以看到符号变量的保存是不同于矩阵形式的单独保存方式。
2.2符号表达式的创建创建符号表达式的目的就是把表达式赋值给一符号变量,方便表达式的使用。
创建符号表达式由两种方法。
●直接创建例2:fn=sym('2*x^2+b*x+6')↙fn =2*x^2+b*x+6b↙?? Undefined function or variable 'b'说明:符号表达式2*x^2+b*x+6赋给了符号变量fn,但对于符号表达式中的变量x,b 并未创建,因此系统并不认识符号b.●间接创建在创建符号表达式之前,先把符号表达式中的所有变量定义为符号变量,然后直接创建表达式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2.2 矩阵删除
(1)单个元素删除:a(i,j)=[]
(2)子矩阵删除:a(i:j,k:l)=[]
(3)所有元素删除:a=[]
例2: >> a=[1 2 3;3 4 5;5 6 7]
(2)符号运算可以得出完全的封闭解或任意精 度的数值解。
(3)符号运算的时间较长,而数值运算速度快。
Matlab基础应用
23
1. 符号表达式的建立
(1)使用sym命令创建
符号变量:sym(‘arg’,’参数’)
符号表达式:sym(‘表达式’)
(2)使用syms命令创建
符号变量:syms arg1 arg2 … 参数
>>roots(f) >> syms a b c x; >> f=a*x^2+b*x+c; >> solve(f)
※ 数值运算中必须先对变量赋值 ※ 符号运算无须事先对变量赋值,运算 结果以标准的符号形式表达
Matlab基础应用
22
符号运算与数值运算的区别
(1)每一次数值运算有一定的截断误差,重复 的多次数值运算就可能会造成很大的积累 误差。
可用polyval函数,计算多项式在变量
为特定值的结果。
例3:计算x=0:0.5:3时,p(x)=x3+21x2+20x值。
解: >>p1=[1 21 20 0]; >>x=0:0.5:3; >>M=polyval(p1,x);
>>M=[15.375 42 80.625 132 196.875 276]
Matlab基础应用 25
2.符号运算
2.1 符号运算中的运算符
(1)基本运算符
符号矩阵:‚+”,‚-”,‚*‛,‚\”,‚/”,‚^”
‚ ’ ” 符号数组(矩阵元素):‚.*”,‚./”,‚.\‛, ‚.^” (2)关系运算符 运算符‚==”,‚~=”。
Matlab基础应用 26
2.2 符号运算中的函数运算
矩阵元素 算术运算( +,-,.*,./,.\,.^ )、其它函数(超越函数) (数组) 多项式 表示方法、求值(polyval)、求根(roots)、相乘(conv)、 相除(deconv)、微分(polyer)、积分
函数
微分/差分(diff)、积分(cumsum、trapz、cumtrapz)
信号处理 傅立叶变换(fft) 专用函数 傅立叶逆变换(ifft)
2 j ( n 1)( k 1) 1 N x( k )ifft:一维快速傅立叶逆变换。 N 1 x( n)e N k 1,.... N n 1 语法: x=ifft(X,N)
Matlab基础应用
19
内容归纳
项目
矩阵
内容
定义、生成、下标、赋值、修改、删除、算术运算(+,,*,/,\,^(与标量运算也一样))、其它运算
fft:一维快速傅立叶变换。 语法:X=fft(x,N) 说明:x可是向量、矩阵和多维数组;N为输入变量x的序列 离散序列傅立叶变换定义为:
长度,可省略,如果x的长度小于N,会自动补零;如 2 N j ( n 1)( k 1) x( n果x的长度大于N,会自动截断;当N取2的整数幂时, ) x( k )e N n 1,.... N 1 k 1 傅立叶变换的计算速度最快。通常取大于又最靠近x 长度的幂次。 离散序列傅立叶逆变换定义为:
Matlab基础应用 12
4.多项式运算
4.1 多项式的表示
MATLAB语言把多项式表达成一个行量,该向 量中的元素是按多项式降幂排列的。
f(x)=anxn+an-1xn-1+……+a0
用行向量 p=[an, an-1 ,…… a1, a0]表示。
Matlab基础应用
13
4.2 多项式求值
Matlab基础应用
ans = x^3 + 21 x^2 + 20 x
5 差分(微分)与积分
函数名 功能 沿第n维求第m阶差分。差分是 求相邻行(列)之间的差,结果 会减少一行(列)(微分)
例子:a = 5.3000 5.1000 3.7000 1.5000
输入
13.0000 11.8000 8.1000 7.7000
使矩阵X沿垂直轴左右翻转
fliplr(a)
rot90(X)
使矩阵X逆时针旋转900
rot90(a)
Matlab基础应用
8
3.矩阵运算
3.1矩阵的代数运算
矩阵的代数操作:+,-,*,
\(左除),/(右除) ,.\
对应元素的操作:+,-,.*,./ 矩阵的代数乘方:^ 矩阵元素的乘方:.^
Matlab基础应用
符号表达式:利用上面定义的符号变量,直接定义。 例:>>syms a b c x
>>f=a*x^2+b*x+c
注意: (1)由sym命令创建符号表达式或者符号方程时,必须用 单引号引起来MATLAB才能识别。 (2)符号变量和符号表达式在使用前必须说明。
Matlab基础应用 24
例: >>sym(‘ f ’,’real’) >>syms a x 或sym(‘a’,’x’) >> f2=a*sin(x) >> whos Name Size Bytes Class a 1x1 126 sym object f2 1x1 146 sym object x 1x1 126 sym object
Matlab基础应用
14
4.3 多项式求根
在MATLAB利用函数:roots
例2:p(x)=x3-6x2-72x-27
Now Begin:
在MATLAB command window 中演示。
Matlab基础应用
15
4.4 多项式乘除运算
4.4.1 多项式的乘法
语法:p=conv(p1,p2)
说明:p是多项式p1和p2的乘积多项式。
4.4.2 多项式的除法
语法:[q,r]=deconv(p1,p2)
Hale Waihona Puke 说明:p1被p2除,商为多项式q,余数式为r。
Matlab基础应用
16
4.5 多项式微分与积分
多项式微分:由polyer函数实现
语法:polyder(p) 说明:求多项式p的微分。
triu(a) 1 0 0 1 3 5 5 3 1 0 0 9 0 2 1
结果
2 4 0 0 4 6 6 4 2 2 4 6 0 4 3 0 0 9 0 0 9 9 0 0 1 3 5 9 6 5
tril(X)
tril(a)
flipud(X)
使矩阵X沿水平轴上下翻转
flipud(a)
fliplr(X)
-2.1000 2.3000 -5.1000 18.7000 15.2000 12.4000 4.7000 -3.1500
cumsum(X,n)
沿第n维求累计和(积分)
cumsum(a,2) %沿 列求累计和
trapz(X,y)
梯形法求积分近似于求元素和 ,把相邻两点数据的平均值乘 以步长表示面积。x为自变量, y为函数。 用梯形法沿第n维求函数y对自 变量x累计积分。
—— 产生均匀分布随机矩阵;
—— 单位矩阵; ——全部元素都为1的矩阵;
zeros ——全部元素都为0的矩阵; magic ——产生魔方阵。
Matlab基础应用 5
2. 矩阵元素的操作
2.1 矩阵元素的引用
(1)全下标表示方式:即a(i,j); (2)单下标表示方式:即a(s),按列排列,
20
Matlab基础应用
二、符号计算
符号表达式创建
符号运算
符号表达式的操作 符号方程求解 符号微积分 符号积分变换 符号函数的可视化
Matlab基础应用 21
内容导入
求解函数f= ax2+bx+c的根
如果a=1,b=2,c=1,则: 如果a,b,c不给出具 体值怎样求解呢? >>f = [1 2 1];
a=linspace(1,10,5);
线性对数等分向量:logspace命令
b=logspace(0,2,10)
矩阵连接
c=[a b];
Matlab基础应用 4
1.3 用函数创建矩阵
空阵[]——MATLAB允许输入空阵,当操作无结果 时,返回空阵;
rand
eye ones
s=(j-1)×m+i,矩阵a为m×n
1 1 2 1 3 2 2 4 3 0 0
a(1,2) a(4)
3
5
6
9
Matlab基础应用
6
2.2 矩阵的赋值和删除
2.2.1 矩阵赋值
(1)全下标方式:a(i,j)=b (2)单下标方式:a(s)=b (3)全元素方式:a(:)=b (4)整行列方式:a(:,j)=b 或a(i,:)=b
MATLAB中没有专门的多项式积分函数, 例: 可用[p./length(p):-1:1,k]方法实现积分,其
>>p=[3 42 20]; 中k为常数。 >>s=length(p):-1:1
s = 3 2
21
1