第三章MATLAB语言的符号计算
MATLAB的符号计算
符号数学工具箱中的工具是建立在功能强大 符号数学工具箱中的工具是建立在功能强大 的称作Maple软件的基础上。它最初是由加拿 软件的基础上。 大的滑铁卢( 大的滑铁卢 ( Waterloo ) 大学开发的。 当要 大学开发的 。 求MATLAB进行符号运算时,它就请求Maple 进行符号运算时, 去计算并将结果返回到MATLAB命令窗口。 命令窗口。 因此, 因此 , 在 MATLAB 中的符号运算是 MATLAB 处理数字的自然扩展。 处理数字的自然扩展。
积分 运用函数可以求得符号表达式的积分,该函数用 以演算函数的积分项,这个函数要找出一符号表 达式F使得diff(F)=f。相关的用法如下: 达式F使得diff(F)=f。相关的用法如下: ①int(f)返回f对预设独立变量的积分值。 int(f)返回f ② int(f,’t’)返回f对独立变量t的积分值。 int(f,’ 返回f对独立变量t ③ int(f,a,b)返回f对预设独立变量的积分值,积分 int(f,a,b)返回f对预设独立变量的积分值, 区间为[a,b], 区间为[a,b],a和b为数值表达式。 ④ int(f,’t’,a,b)返回f对独立变量t的积分值,积分区 int(f,’ ,a,b)返回f对独立变量t的积分值, 间为[a,b], 间为[a,b],a和b为数值表达式。 ⑤ int(f,’m’,’n’)返回f对预设独立变量的积分值,积 int(f,’ 返回f对预设独立变量的积分值, 分区间为[m,n], 分区间为[m,n],m和n为符号表达式。
左趋近于a
lim f ( x )
x →a −
limit(f,x,a,’left’)
lim f ( x )
x →a +
右趋近于a limit(f,x,a,’right’)
Mlab第3章总结
第三章MATLAB符号计算1. sym(‘变量’,参数(positive/real/unreal)) 使用syms命令创建符号变量和符号表达式syms(‘arg1’, ‘arg2’, …,参数(positive/real/unreal)) syms arg1 arg2 …,参数符号表达式()中的参数一定要用' ' 单引号括起来。
2. 符号运算中的运算符(1)基本运算符:运算符“+”,“-”,“*”,“\”,“/”,“^”分别实现符号矩阵的加、减、乘、左除、右除、求幂运算。
运算符“.*”,“./”,“.\”,“.^”分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算运算符“′”,“.′”分别实现符号矩阵的共轭转置、非共轭转置。
(2)关系运算符运算符“= =”、“~=”分别对运算符两边的符号对象进行“相等”、“不等”的比较。
真为1,假为0。
3在Symbolic Math Toolbox中有三种不同的算术运算:数值型:MATLAB的浮点运算。
有理数型:Maple的精确符号运算。
VPA型:Maple 的任意精度运算。
任意精度的VPA型运算可以使用digits和vpa命令来实现。
digits(n) %设定默认的精度(全局matlab应用)S=vpa(s,n) %将s表示为n位有效位数的符号对象,n省略后依据digits(n)设定。
只针对一次,不改变matlab设定的digits(n)精度。
4. 1.将数值矩阵转化为符号矩阵函数调用格式:sym(A) 2.将符号矩阵转化为数值矩阵函数调用格式: numeric(A)、double(A)5. 符号表达式“f=ax2+bx+c”中只有一个变量是独立变量:1. 小写字母i和j不能作为自由变量。
2.符号表达式中如果有多个符号变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。
MATLAB应用第三章-符号计算
3. 1 数据类型 3.2 符号运算
数学运算中除了数值运算外,还有大量抽象运算(计算式中带有符号变 量、表达式的运算)。Matlab就是利用maple软件的符号运算功能来实 现这些符号运算的。 Maple : 通用的数学和工程软件,是世界上最值得信赖、最完整的数学 软件之一,被高等院校、研究机构和公司广泛应用,用户渗透超过97% 的世界主要高校和研究所,超过81%的世界财富五百强企业。 Maple提供世界上最强大的符号计算,无与伦比的数值计算,支持 用户界面开发和网络发布,内置丰富的数学求解库,覆盖几乎所有的数 学分支,所有的操作都是在一个所见即所得的交互式技术文档环境中完 成,完成计算的同时也生成了专业技术文件和演示报告。 Maple不仅仅提供编程工具,更重要的是提供数学知识。Maple是 教授、研究员、科学家、工程师、学生们必备的科学计算工具,从简单 的数字计算到高度复杂的非线性问题,Maple都可以帮助您快速、高效 地解决问题。用户通过Maple产品可以在单一的环境中完成多领域物理 系统建模和仿真、符号计算、数值计算、程序设计、技术文件、报告演 示、算法开发、外部程序连接等功能,满足各个层次用户的需要,从高 中学生到高级研究人员。
格 Eg 3-2 补充。 补充。 2)char函数创建:char(‘string1’,’string2’, …); Eg 3-3 各个字符串不须同大小, 各个字符串不须同大小,该函数自动补充空白 字符。 字符。 Eg 3-4
字符串与单元 1)cellstr将字符数组转换成单元数组。 2)char函数将单元数组转换成字符数组。 数组的转换 字符串的比较 1)strcmp(a,b):比较两个字符串所有字符是
Grand total is 33 elements using 462 bytes
第3讲matlab的符号运算
第三讲 MATLAB 的符号运算(注:文中红色字体为命令执行的结果,在Command 窗口中显示)3-1 符号对象的创建和使用1.符号运算入门符号运算的特点是,运算过程中允许存在非数值的符号变量。
先看如下示例: 函数2)(sin )(x x f =,用MATLAB 求它的微积分,命令如下:f=’sin(x)^2’; %定义符号函数f(x)dfdx=diff(f) %求dxx df )(的指令 intf=int(f) %求⎰dx x f )(的指令显示的计算结果为:dfdx=2*sin(x)*cos(x)intf=-1/2sin(x)*cos(x)+1/2*x 所以,x x dx x df cos sin )(2=,x x x dx x f cos sin )(2121-=⎰。
此例中,首先定义符号函数f=’sin(x)^2’,然后由符号运算获得2)(sin )(x x f =的微分和积分。
2.定义符号变量在使用符号变量之前,应先声明某些要用到的变量是“符号”变量。
声明符号变量的语句:syms 变量名列表或: sym(‘变量名’)其中各个变量名应该用空格分隔,而不能用逗号分隔。
如创建符号变量x 和a :x=sym(‘x ’)a=sym(‘alpha ’)或用: syms x a %定义符号变量x 和a这里,变量x 和a 的类型是符号对象,它们被定义后,即可参与符号运算。
3.定义符号表达式和符号方程符号表达式和符号方程是两种不同的操作对象。
区别在于:符号表达式不包含等号(=),而符号方程须带等号。
它们的创建方式相同。
如:要考虑二次函数f=ax^2+bx+c ,可以创建符号表达式,赋值给符号变量f 。
f=sym(‘a*x^2+b*x+c ’)或:f=‘a*x^2+b*x+c’此例中,将符号表达式赋给符号变量f,但这不是必需的,引入符号变量是为了以后调用方便。
在这种情况下,没有创建对应于表达式中a、b、c、x项的变量,为了执行符号数学运算(如微分、积分等),必须显式地创建这些变量,可用下列命令创建:syms a b c x如下例中创建了符号表达式和符号方程,分别赋给相应的符号对象。
matlab第3章
第7章MATLAB科学计算¾方程求解¾概率统计¾插值、拟合¾数值微积分¾最优化求解其它常用的matlab 数值计算命令¾max,min¾mean, median¾sum 求和, prod 求积¾cumsum 求和, cumprod 求积¾std 标准方差¾corrcoef 相关系数¾sort 元素排序¾离散傅里叶变换fft,fft2,fftn__ifft第7章MATLAB 数值计算作业¾1.编写傅立叶变换的matlab 程序与matlab 自带的fft 进行比较,并分析冲击信号的傅立叶变换。
(若不了解冲击信号,可计算方波的傅里叶变换,方波幅度为1,周期为10,方波个数为10,占空比为0.5)。
∑=−−−=Nm Nk m j em f k F 1/)1)(1(2)()(π编写的DFT 函数:function X=mydft(x )N = length(x );W=exp(-2*i*pi/N);X=zeros(1,N);for k=1:NX(k )=sum(x .*W.^((0:N -1)*(k -1)));end∑=−−−=N m N k m j em f k F 1/)1)(1(2)()(πx = [0 0 0 0 0 1 1 1 1 1]; X = [x x x x x x x x x x]; y = mydft(X);plot(abs(y))y1=fft(X);plot(abs(y1));¾y = fftshift(mydft(X));¾>> plot(abs(y))第3章MATLAB符号计算¾Maple优势在于符号运算,¾Mathematic符号运算和数值计算均不差,图像处理或者数据可视化较差¾Matlab强项是数值计算和数据可视化,¾MathCAD各方面均弱一些,但易学。
第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)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。
如何使用MATLAB进行符号计算
如何使用MATLAB进行符号计算1. 引言在科学计算和工程应用中,符号计算是一项重要的任务。
符号计算可以帮助我们推导数学公式、解方程、进行代数化简等等。
MATLAB作为一种强大的科学计算工具,也提供了符号计算的功能。
本文将介绍如何使用MATLAB进行符号计算。
2. 符号计算基础在MATLAB中,符号计算通过符号工具箱提供。
首先需要将变量声明为符号变量,使用`syms`关键字来完成。
例如,下面的代码将变量x和y声明为符号变量:```syms x y```其次,我们可以使用`sym`函数将数值转换为符号类型。
例如,下面的代码将整数2转换为符号类型:```a = sym(2)```最后,我们可以使用各种符号运算进行符号计算。
例如,下面的代码演示了符号变量之间的加法运算:```x + y```3. 推导数学公式符号计算的一个常见用途是推导数学公式。
MATLAB提供了一系列函数来进行推导,如`diff`、`int`等。
例如,下面的代码计算了函数sin(x)的导数: ```syms xf = sin(x);df = diff(f, x);```在这个例子中,`diff`函数用于计算导数,第一个参数是要计算导数的函数,第二个参数是相对于哪个变量求导数。
4. 解方程另一个常见的符号计算任务是解方程。
MATLAB提供了`solve`函数来解方程。
例如,下面的代码解了方程x^2 - 2 = 0:```syms xsol = solve(x^2 - 2);```解方程的结果是一个结构体数组,每个元素代表一个解。
5. 代数化简符号计算还可以用于代数化简。
MATLAB提供了`simplify`函数来进行代数化简。
例如,下面的代码对表达式(x+1)^2进行化简:```syms xexpr = (x+1)^2;simplified_expr = simplify(expr);````simplify`函数将表达式化简为最简形式。
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; 作用为解符号方程式 例:求一元二次方程
实验三 MATLAB符号计算
expr1 =
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 = x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
expand使用指令 y=0.14-(1.2e+002)*(-2.4005*(0.445-x)^7+4.2505*(0.445x)^6-2.2336*(0.445-x)^5+0.4993*(0.445-x)^40.0514*(0.445-x)^3+0.0025*(0.445-x)^2);
符号矩阵的生成
符号矩阵可通过函数sym来生成。符号矩阵中的元素是任何不带等号的符 号表达式,各符号表达式的长度可以不相同;符号矩阵中,以空格或逗号 分隔的元素指定的是不同列的元素而分号分隔的元素指定的是不同行的元 素。 例:
syms x; A=sym(‘[cos(x),sin(x),x;-x+1 x^2+x+1 tan(x)]’) A= [ cos(x), sin(x), x] [ -x+1, x^2+x+1, tan(x)] >> size(A) %求符号矩阵的大小 ans = 2 3 > a=[1 2 3 4;4 5 6 7]; >> b=sym(a) b= [ 1, 2, 3, 4] [ 4, 5, 6, 7]
第3讲 MATLAB语言的符号运算
2、微分
Matlab求微分的函数是diff()
说明:
①用diff(f)求 f 对预设独立变量的一次微分;
② diff(f,t)求 f 对独立变量 t 的一次微分;
③用diff(f,n)求 f 对预设独立变量的n次微分 ④diff(f,t,n)求 f 对独立变量 t 的n次微分; ⑤ f 可以是标量、向量、矩阵。
调用格式如下:
通过F=fourier(f)求时域函数f的Fourier变换
①如果采用F=fourier(f)的格式,默认积分变量是x;
③invfourier()为Fourier反变换。
②如果采用F=fourier(f,u)的格式,指定u为积分变量;
例:计算时间函数的 >>syms t w
f (t ) e
(t ) y (t ) x (t ) x(t ) y
[x,y]= dsolve(‘Dx=y’,Dy=-x’) [f,g]= dsolve(‘Df=3*f+4*g’,’Dg=-5*f+2*g’)
⑥ 2个微分方程,给定初始条件 [x,y]= dsolve(‘Dx=y’,Dy=-x’,’x(0)=0’,’y(0)=1’)
3.4 微分方程求解
符号运算中的微分方程求解函数可利用如下格式
dsolve(‘方程1’,‘方程2’,…) 函数格式说明: ①可多至12个微分方程的求解; ②默认自变量为x,并可任意指定自变量t,u等;
③方程的各阶导数项以大写字母“D”作为标识,后接 数字阶数,再接解变量名;
④初始条件以符号代数方程给出,如果初始条件项缺 省,其默认常数为C1,C2,…等; ⑤返回变量的格式为:[Y1,Y2,…]=dsolve(…)
3.6 符号表达式的运算
第三章_MATLAB的符号运算
%创建符号表达式
符号运算与数值运算的区别主要有以下几点: A 传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采 用计算机硬件提供的 8 位浮点表示法, 因此每一次运算都会有一定的截断误差, 重复的多次 数值运算就可能会造成很大的累积误差。 符号运算不需要进行数值运算, 不会出现截断误差, 因此符号运算是非常准确的。 B 符号运算可以得出完全的封闭解或任意精度的数值解。 C 符号运算的时间较长,而数值型运算速度快。 3.2.1 提取分子分母 如果符号表达是有理分式形式或可展开为有理分式形式,则可通过函数 numden 来提取符号 表达式中的分子分母。numden 函数的调用形式如下: [n,d]=numden(a) 提取符号表达式 a 的分子与分母,并分别将其存放在 n 与 d 中 n=numden(a) 提取符号表达式 a 的分子与分母,但只把分子存放在 n 中 例 提取符号表达式的分子与分母 >> f=sym('a*x^2/(b-x)'); [n,d]=numden(f) n= -a*x^2 d= -b+x 3.2.2 符号表达式的基本代数运算 符号表达式的加、减、乘、除四则运算及幂运算等基本的代数运算,与矩阵的数值运算几乎 完全一样。 其中, 符号表达式的加、 减、 乘、 除运算可分别有函数 symadd、 symsub、 symmul、 symdiv 来实现,也可与矩阵的数值运算一样,用“+” 、 “-” 、 “×” 、 “÷”符号进行运算, 而符号表达式的幂运算也可以由函数 sympow 来实现,也可以由幂运算符“^”来实现。 例 >> f='4*x+5'; g='2*x^2+5*x+6'; symadd(f,g) ans = 9*x+11+2*x^2 symsub(f,g) ans = -x-1-2*x^2 symmul(f,g) ans =
第三章 MATLAB符号运算
第3章 MATLAB符号计算符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。
MATLAB具有符号数学工具箱(Symbolic Math Toolbox),将符号运算结合到MATLAB的数值运算环境。
符号数学工具箱是建立在Maple软件基础上的。
3.1 符号表达式的建立3.1.1 创建符号变量和表达式Symbolic Math Toolbox规定在进行符号计算时,首先要定义基本的符号对象然后才能进行符号运算。
创建符号变量和符号表达式可以使用sym和syms命令。
1. 使用sym命令创建符号变量和表达式语法:sym(‘变量’,参数) %把变量定义为符号对象2.使用syms命令创建符号变量和符号表达式语法:syms(‘arg1’, ‘arg2’, …,参数) %把字符变量定义为符号变量syms arg1 arg2 …,参数%把字符变量定义为符号变量的简洁形式说明:syms用来创建多个符号变量,这两种方式创建的符号对象是相同的。
参数设置和前面的sym命令相同,省略时符号表达式直接由各符号变量组成。
说明:参数用来设置限定符号变量的数学特性,可以选择为’positive’、’real’和’unreal’,’positive’表示为“正、实”符号变量,’real’表示为“实”符号变量,’unreal’表示为“非实”符号变量。
如果不限定则参数可省略。
【例3.1】创建符号变量,用参数设置其特性。
>> syms x y real %创建实数符号变量>> z=x+i*y; %创建z为复数符号变量>>real(z) %复数z的实部是实数xans =x【例3.2】创建符号表达式。
>> f1=sym('a*x^2+b*x+c')f1 =a*x^2+b*x+c【例3.3】使用syms命令创建符号变量和符号表达式。
>> syms a b c x %创建多个符号变量>>f2=a*x^2+b*x+c %创建符号表达式f2 =a*x^2+b*x+c3.1.2符号表达式的代数运算符号运算与数值运算的区别主要有以下几点:▪传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的8位浮点表示法,因此每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。
MATLAB的符号运算
10
③ 符号对象与数值对象的转换
将数值对象转化为符号对象 函数调用格式:sym(A) A=[1/3,2.5;1/0.7,2/5]
A=
0.3333 2.5000 1.4286 0.4000
sym(A)
ans = [ 1/3, 5/2] [10/7, 2/5]
2013年8月6日12时46
4
2. 符号变量与符号表达式
syms v1 v2 v3 … vn
—— 定义符号变量 名
syms x f = sin(x)+5*x
f —— 符号变量(矩阵) sin(x)+5*x —— 符号表达式
2013年8月6日12时46
5
3.符号对象的创建
数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别
11
将符号对象转化为数值对象
函数调用格式: numeric(A) A= [ 1/3, 5/2] [10/7, 2/5]
numeric(A)
ans = 0.3333 2.5000 1.4286 0.4000
2013年8月6日12时46
12
二、符号运算
1.符号对象运算 数值运算中,所有对象运算操作指 令都比较直观、简单。例如:a=b+c; a=a*b ;A=2*a^2+3*a-5等。
ans = cos(x)/sin(2*x)+cos(x)*sin(2*x)
x=pi/4;subs(ans)
ans = 1.4142 2013年8月6日12时46
15
例1 f= 2*x^2+3*x-5; g= x^2+x-7;
syms x f=2*x^2+3*x-5; g= x^2+x-7; h=f+g h= 3*x^2+4*x-12 例2 f=cos(x);g= sin(2*x); syms x f=cos(x);g=sin(2*x); f/g+f*g ans = cos(x)/sin(x)+cos(x)*sin(x)
MATLAB符号计算
MATLAB符号计算MATLAB是一种强大的数值计算和科学计算工具,不仅可以进行数值计算,还可以进行符号计算。
符号计算是一种基于数学符号的计算方法,它可以处理复杂的代数表达式、方程、微分、积分等数学问题。
MATLAB 中的符号计算将这些问题转化为代数表达式,然后通过符号工具箱进行求解。
使用MATLAB进行符号计算需要用到符号工具箱。
可以通过输入`syms`命令来定义符号变量,例如`syms x`可以定义符号变量x。
在定义完符号变量之后,就可以使用这些变量进行符号计算了。
1.代数表达式的化简符号计算可以对代数表达式进行化简。
MATLAB提供了许多函数可以实现化简操作,如`simplify`、`collect`、`expand`等函数。
其中`simplify`函数可以将符号表达式化简为最简形式;`collect`函数可以将符号表达式按照指定的变量进行整理;`expand`函数可以将符号表达式展开为多项式形式。
例如,对于表达式`(x+1)^2`,可以使用`simplify`函数进行化简:```matlabsyms xexpr = (x + 1)^2;result = simplify(expr);```2.解方程符号计算可以解析地求解方程。
MATLAB提供了`solve`函数用于解方程。
`solve`函数可以通过指定的变量来解析地求解方程,并获得方程的解。
例如,对于方程`x^2 - 1 = 0`,可以使用`solve`函数求解:```matlabsyms xeqn = x^2 - 1;sol = solve(eqn, x);````sol`将得到方程的解,即`x = -1`和`x = 1`。
3.求导和积分符号计算可以对函数进行求导和积分。
MATLAB提供了`diff`函数用于求导,提供了`int`函数用于积分。
这些函数可以对符号表达式进行求导和积分,并获得结果。
例如,对于函数`f(x) = x^2`,可以使用`diff`函数求导:```matlabsyms xf=x^2;df = diff(f, x);```求导结果为`df = 2*x`。
MATLAB第三章数值数组及其运算
行向量
如:array=[2, pi/2, sqrt(3), 3+5i]
x=[1,2,3,4,5都已知.如对 少量实验数据的处理可用此种方法.
4
(2) 冒号生成法: array=a: inc: b
<向量>
a---数组的第一个元素
inc---采样点之间的间隔, 即步长. 最后一个元素不一定等于b, 其大小为b’=a +inc*[(b-a)/inc]; 步长可以省略, 默认为 1; inc可以取正数或负数, 但要注意当取正时,要保证b>a, 数 组最后一个元素不超过b, 取负时b<a, 最后一个元素不小于b.
(2) 数值计算解法
delt=0.01; x=0:delt:4;
y=exp(-sin(x));
sx=delt*cumtrapz(y);
plot(x,y, 'r', 'LineWidth', 6); hold on;
plot(x, sx, '.b', 'MarkerSize', 15);
plot(x, ones(size(x)), 'k');
a inc>0 b
b inc>0 a
特点: 等差数列
方便对数据之间的间隔(步长)进行控制.但要注意三个数值之 间的关系,可能得到空数组.另外要注意生成的数组的元素的 个数.如x=a: (b-a)/n :b (b>a)得到n+1个元素的数组.
5
x=1:5x=[1,2,3,4,5]
y=5:-1:1y=[5, 4, 3, 2, 1]
2. 在命令窗中输入MyMatrix
11
3.5 二维数组的标识 (mxn, m>1, n>1)
MATLAB 数学实验 第三章
微积分符号计算 diff(f) — 对缺省变量求导数 diff(f,v) — 对指定变量 v 求导数 diff(f,v,n) —对指定变量 v 求n阶导数 对指定变量 阶导数 int(f) — 对f表达式的缺省变量求积分 表达式的缺省变量求积分 int(f,v) — 对f表达式的 变量求积分 表达式的v变量求积分 表达式的 int(f,v,a,b) — 对f表达式的 变量在 b] 表达式的v变量在 表达式的 变量在[a, 区间求定积分
绕X轴旋转的旋转曲面体积 轴旋转的旋转曲面体积 2π V = π ∫ [ f ( x )]2 dx 0 syms a b x f=exp(a*x)*sin(b*x); f1=subs(f,a,-0.2); f2=subs(f1,b,0.5); V=pi*int(f2*f2,x,0,2*pi) double(V) V =pi*(-125/116*exp(-4/5*pi)+125/116) ans = 3.1111
16/20
1 2 y2 例3.26 解微分方程 y ′ = 2 x +1
y ( 0) = 0
命令格式:dsolve('eq1',,'con1',,'x') y的一阶导数—— Dy, y的二阶导数—— D2y
y = dsolve('Dy=1/(1+x^2)-2*y^2','y(0) = 0','x') y= 2*x/(2*x^2+2) 符号解: 符号解: y(x)= x / (1 + x 2)
12/20
定积分数值计算命令 quad(f, a, b) t 例3.14 计算积分上限函数值 F (t ) = ∫
MATLAB符号计算功能
MATLAB符号计算功能MATLAB是一种高级计算机语言和环境,广泛用于科学和工程计算。
除了数值计算功能,MATLAB还提供了符号计算功能,即能够进行符号推导和代数计算的能力。
本文将详细介绍MATLAB的符号计算功能,包括符号表达式和符号求解。
一、符号表达式在MATLAB中,可以使用符号对象来创建和操作符号表达式。
符号对象是一种特殊的MATLAB变量类型,用于存储和操作符号表达式,而不是数值。
符号表达式由符号变量和运算符组成,可以表示代数表达式、方程、微积分等。
1.创建符号变量可以使用syms函数创建符号变量。
例如,要创建一个名为x的符号变量,可以使用以下命令:syms x2.创建符号表达式可以使用符号变量和运算符创建符号表达式。
例如,要创建一个符号表达式x^2+2*x+1,可以使用以下命令:expr = x^2 + 2*x + 13.展示符号表达式可以使用disp函数将符号表达式显示在命令窗口中。
例如,要展示上述创建的符号表达式,可以使用以下命令:disp(expr)二、符号求解1.方程求解可以使用solve函数求解方程。
solve函数可以解代数方程、方程组和符号方程。
例如,要解方程x^2 + 2*x + 1 = 0,可以使用以下命令:sol = solve(x^2 + 2*x + 1 == 0, x)2.求导可以使用diff函数对符号表达式进行求导。
diff函数可以计算一阶、多阶和偏导数。
例如,要对表达式x^2 + 2*x + 1进行求导,可以使用以下命令:diff_expr = diff(expr, x)3.积分可以使用int函数对符号表达式进行积分。
int函数可以计算定积分和不定积分。
例如,要对表达式x^2 + 2*x + 1进行积分,可以使用以下命令:int_expr = int(expr, x)4.简化表达式可以使用simplify函数简化符号表达式。
simplify函数可以将符号表达式转化为其最简形式。
matlab的符号计算
matlab的符号计算符号数学工具箱是操作和解决符号表达式的符号数学工具箱(函数)集合,有复合、简化、微分、积分以及求解代数方程和微分方程的工具。
另外还有一些用于线性代数的工具,求解逆、行列式、正则型式的精确结果,找出符号矩阵的特征值而无由数值计算引入的误差。
工具箱还支持可变精度运算,即支持符号计算并能以指定的精度返回结果。
符号数学工具箱中的工具是建立在功能强大的称作Maple软件的基础上。
它最初是由加拿大的滑铁卢(Waterloo)大学开发的。
当要求MATLAB进行符号运算时,它就请求Maple去计算并将结果返回到MATLAB命令窗口。
因此,在MATLAB中的符号运算是MATLAB处理数字的自然扩展。
8.1 符号表达式符号表达式是代表数字、函数、算子和变量的MATLAB字符串,或字符串数组。
不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。
符号算术是使用已知的规则和给定符号恒等式求解这些符号方程的实践,它与代数和微积分所学到的求解方法完全一样。
符号矩阵是数组,其元素是符号表达式。
MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全象基本的MATLAB命令。
下表列有几则符号表达式例子以及MATLAB等效表达式。
符号表达式 MATLAB表达式'1/(2*x^n)'y='1/sqrt(2*x)''cos(x^2)-sin(2*x)'M=sym('[a,b;c,d]')f=int('x^3/sqrt(1-x)','a','b')MATLAB符号函数使我们能用多种方法来操作符号表达式,比如,>>diff('cos(x)') %differentiate cos(x) with respect to xans=-sin(x)>>M=sym('[a,b;c,d]') %create a symbolic matrix MM=[a,b][c,d]>>determ(M) %find the determinant of the symbolic matrix Mans=a*d-b*c要注意的是,以上第一例的符号表达式是用单引号以隐含方式定义的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.3 方程求解
3.3.1 代数方程 利用符号表达式解代数方程所需要的函数为solve(f) 解符号方程式f 例3-5求一元二次方程的根
区别solve(f)和solve(f,a)
solve(f)按默认变量求解符号方程式, solve(f,a)指定要求解的变量是a
>> syms a b c x >> f=sym(a*x^2+b*x+c)
>> F1=sym('x+y+z=10'); >> F2=sym('x-y+z=0'); >> F3=sym('2*x-y-z=-4'); >> [x,y,z]=solve(F1,F2,F3)
2019/4/2 24
3.3.2 常微分方程
MATLAB解常微分方程式的函数为 Dsolve(‘equation’,’condition’) Equation表示常微分式, condition为初始条件。 Equation中用D来表示求微分,D后跟的数字表示几重微 分,数字后的变量为因变量。
例3-7求微分方程y’=5 的通解。
>> dsolve('D2y=5*y','y(0)=0')
2019/4/2 25
3.1 符号变量和符号表达式
变量特点,自变量的默认原则(findsym)
合并、化简、展开等函数,反函数,复合函数,表达式替换函 数(collect,factor,simplify,numden,finverse,compose,subs)
2019/4/2
14
3.2 微积分
3.2.1 极限
求极限是微积分的基础,limit函数
表达式 函数格式 备注
lim f (x)
x a
Limit(f,x,a)
若a=0且是对x求极限,可 简写为Limit(f)
左趋近于a 右趋近于a
lim
x a x a
f ( x) Limit(f,x, a,’left’)
符号表达式的定义
f=sym(‘a*x^2+b*x+c’)
符号表达式一定要用'' 单引 号括起来MATLAB才能识别。
2019/4/2
5
' ' 的内容可以是符号表达式,也可以是符号方程。 例:
f1=sym('a*x^2+b*x+c')—— 二次三项式 f2= sym('a*x^2+b*x+c=0') —— 方程
2019/4/2
进入Maple核心,把结果返回MATLAB。 对Maple函数进行数值运算。 列出能被Mfun计算的Maple函数 寻求关于Maple的库函数及其调用方法的帮助 加载Maple程序
用赋值语句中给定值替换表达式中所有同名变量 用符号或数值变量new替换s中的符号变量old
11
subs (s, old, new)
2019/4/2
>>clear >> f1 =sym('(exp(x)+x)*(x+2)'); >> f2 = sym('a^3-1'); >> f3 = sym('1/a^4+2/a^3+3/a^2+4/a+5'); >> f4 = sym('sin(x)^2+cos(x)^2'); >> f5=collect(f1) >>factor(f5) >>expand(f1) >>factor(f2) >> [m,n]=numden(f3) %m为分子,n为分母 %
% 对默认的自变量x求微分 %对x求二次微分 %对a求微分 %对a求二次微分
Diff(diff(f),a)
% 对x和a求偏导
微分函数也可以作用于符号矩阵,其结果是对矩阵的每一
个元素进行微分运算。
2019/4/2 18
3.2.3 积分
求积分的函数是int,相关的函数语法
int(f) 返回f对预设独立变量的积分值; int(f,’t’) 返回f对独立变量t的积分值; int(f,a,b) 返回f对预设独立变量的积分值,积分区间为[a,b], a和b为数
7
自变量的默认原则
有x存在,认为x为自变量,将a,b,c等作为常量参数。
可以利用函数findsym来查询
符号表达式 a*x^2+b*x+c
1/(4+cos(t)) 4*x/y 2*a+b
2019/4/2
默认自变量
x
t
x b
8
算术运算
>>clear >>f1 = sym('1/(a-b) '); >>f2 = sym('2*a/(a+b) '); >>f3 = sym(' (a+1)*(b-1)* (a-b) '); >> f1+f2 >> f1*f3 >> f1/f3
3.2 微积分
极限:limit 微分:diff
积分:int
级数:symsum 和taylor
3.3 方程求解
代数方程 常微分方程
2019/4/2 26
maple函数——符号运算的扩展
maple——是专门进行数学运算的软件工具,具有超强的符号运算能力,提
供了几乎包括所有数学领域的专用函数
MATLAB——利用了maple的内核与函数库,扩展了自己的符号运算功能。 MATLAB还设计了对maple库函数的调用功能,使得已有的maple数学功能 可以扩充到MATLAB中,作为自身符号运算能力的扩展。 要进一步利用maple资源,以下五个命令不可不提: maple mfun mfunlist mhelp
diff(f,t,n)求f对独立变量t的n次微分值
例3-1
已知
f (x) ax2 bx c
求 f ( x ) 的微分
2019/4/2 17
Syms a b c x F=sym(‘a*x^2+b*x+c’)
diff(F)
Diff(f) Diff(f,2) Diff(f,a) Diff(f,a,2)
syms命令方法 >> clear >> syms a b c x >> whos Name Size a 1x1 b 1x1 c 1x1 x 1x1
2019/4/2
Bytes Class 126 sym object 126 sym object 126 sym object 126 sym object
f (x) ax bx c
2
>>solve(f)
2019/4/2
23
解代数方程组
Solve(f1,f2,…fn)解由f1,f2…fn组成的代数方程组 例3-6
x y z 10 求方程 的解 x y z 0 2 * x y z 4
第一步定义符号表达式
2019/4/2 2
数值运算在运算前必须先对变量赋值,再参加运算。 符号运算不需要对变量赋值就可运算,运算结果以标准的符
号形式表达。
2019/4/2
3
2019/4/2
4
3.1 符号变量和符号表达式
使用sym函数可以创建符号变量和表达式 符号变量的定义
x=sym(‘x’) 函数法 syms a b c x 命令法
2019/4/2
%符号和 %符号积 %符号商
9
syms u v w z Eq=u*z^2+v*z+w; result_1=solve(Eq) findsym(Eq,1)
%
result_1 = -u*z^2-v*z ans = w
result_2 = 1/2/u*(-v+(v^2-4*u*w)^(1/2)) 1/2/u*(-v-(v^2-4*u*w)^(1/2))
去计算并将结果返回给Matlab。 Matlab的符号数学工具箱可以完成几乎所有得符号 运算功能。这些功能主要包括:符号表达式的运算,符号
表达式的复合、化简,符号矩阵的运算,符号微积分、符
号函数画图,符号代数方程求解,符号微分方程求解等。 此外,工具箱还支持可变精度运算,既支持符号运算并以 指定的精度返回结果。
Limit(f,x, a,’right’)
lim f (x)
2019/4/2
15
2019/4/2
16
3.2.2 微分
求微分的函数是diff,相关的函数语法
用diff(f)求f对预设独立变量的一次微分值 diff(f,t)求f对独立变量t的一次微分值
diff(f,n)求f对预设独立变量的n次微分值
>> F=sym('a*x^2+b*x+c')
>> int(F) int(F,’x’)
int(F,'x',0,2)
%返回f对预设独立变量的积分值 %返回f对独立变量t的积分值
%返回f对独立变量t的积分值,积分区间为[a,b],
%a和b为数值式
int(F,‘m’,‘n’)
%返回f对预设独立变量的积分值;积分区间为
2019/4/2 13