第三章matlab语言的符号运算
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中的数学符号与运算
matlab中的数学符号与运算MATLAB(Matrix Laboratory)是一种用于数值计算和科学工程应用的高级编程语言和环境。
MATLAB中包含了丰富的数学符号和运算,用于进行矩阵操作、线性代数、微积分等数学计算。
以下是MATLAB中一些常见的数学符号和运算:1. 数学符号:-矩阵:MATLAB 中的基本数据类型是矩阵,可以使用方括号`[]` 来表示。
例如,`A = [1, 2; 3, 4]` 表示一个2x2的矩阵。
-向量:向量可以表示为一维矩阵,例如,`v = [1, 2, 3]` 表示一个包含3个元素的行向量。
-转置:使用单引号`'` 来进行转置操作。
例如,`A'` 表示矩阵A的转置。
-点乘和叉乘:点乘使用`.*`,叉乘使用`.*`。
例如,`A .* B` 表示矩阵A和B的对应元素相乘,`A * B` 表示矩阵A和B的矩阵乘法。
2. 数学运算:-基本算术运算:MATLAB支持基本的算术运算,如加法、减法、乘法和除法。
例如,`result = 2 + 3`。
-元素-wise 运算:MATLAB 支持元素-wise 的运算,即对矩阵或向量中的每个元素进行运算。
例如,`C = A .* B` 表示矩阵A和B的对应元素相乘。
-矩阵操作:MATLAB 提供了许多用于矩阵操作的函数,如`inv`(求逆矩阵)、`det`(求行列式)、`eig`(求特征值)等。
-积分和微分:MATLAB 提供了`int`(积分)和`diff`(微分)等函数,用于进行积分和微分运算。
-方程求解:MATLAB 提供了`solve` 函数,用于求解方程组。
这些是MATLAB中一些常见的数学符号和运算。
MATLAB 的强大之处在于它的矩阵操作能力,使得它非常适用于数学和工程领域的计算和建模。
如果你有特定的数学运算需求,可以查阅MATLAB 的官方文档或在线资源以获取详细信息。
MATLAB的符号运算V精简版
ans=[2+y,4+y,6+y]
>> subs(f,x,[1:3]) >> subs(f,{x,y},{[1:3],[5:7]})
ans=[7 10 13]
>> subs(f,{x,y},{a+b,a-b}) >> subs(f,{x,y},{x+y,x-y})
Copyright © CUGB
2024/4/3
Matlab的符号运算
符号对象建立时可以附加属性: real、positive 和 unreal
>> x=sym('x','real') >> k=sym('k','positive') >> x=sym('x','unreal')
表明 x 是实的 表明 k 是正的 去掉 x 的附加属性
Copyright © CUGB 2024/4/3
Matlab的符号运算
符号表达式的建立
>> syms x >> f1=sin(x)+cos(x)
推荐!
>> f2=sym(’sin(x)+cos(x)’)
Copyright © CUGB 2024/4/3
Matlab的符号运算
相关函数
➢ findsym: 查找符号表达式中的符号变量
findsym(f) 按字母顺序列出符号表达式 f 中的所有自由变量 findsym(f,N) 列出 f 中距离 x 最近的 N 个自由变量(i,j 除外)
Matlab的符号运算
其它运算
第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.掌握符号对象的创建及符号表达式化简的基本方法;2.掌握符号微积分、符号方程的求解的基本方法。
二 实验装置:计算机三 实验内容:1.符号对象的创建(1) 建立符号变量使用sym 函数把字符表达式'2*sin(x)*cos(x)'转换为符号变量。
2.符号表达式的化简(1)因式分解对表达式f=x 3-1 进行因式分解。
(2) 符号表达式的展开对符号表达式f=cos(x+y)进行展开。
(3)符号表达式的同类项合并对于表达式f=(2x 2*(x+3)-10)*t ,分别将自变量x 和t 的同类项合并。
(4)符号表达式的化简(5)符号表达式的分式通分对表达式 进行通分。
(6)符号表达式的替换用新变量替换表达式a+b 中变量b 。
3.符号微积分(1) 符号极限计算表达式 的极限。
(2)符号微分计算表达式f=sinx 的微分。
(3)符号积分。
例:简化32381261+++=xx x f 22x y y x f +=xtgx x lim 0→()⎰+dzz x31计算表达式 的积分。
(4)符号求和计算表达式 4.符号方程的求解求解代数方程组 四 实验要求:1.按照要求预习实验;2.在MATLAB 中运行实验程序验证仿真结果;3. 按照要求完成实验报告。
.10005∑k⎪⎩⎪⎨⎧=--=-+=+-043035218472z y x z y x z y x。
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符号运算 多项式
一、介绍matlab符号运算matlab符号运算是指利用matlab软件进行代数表达式的计算和求解。
在matlab中,符号运算可以实现对多项式的加减乘除、导数和积分等操作,非常适用于代数表达式的计算和求解。
在工程、数学和物理等领域,matlab符号运算被广泛应用,能够高效地解决各种代数运算问题。
二、matlab符号运算的基本操作1. 创建符号变量在matlab中,可以使用syms函数来创建符号变量,例如:```matlabsyms x y```这样就创建了两个符号变量x和y,可以用于代数表达式的计算和求解。
2. 代数表达式的运算利用符号变量创建代数表达式,并进行加减乘除等运算,例如:```matlabf = x^2 + 2*x + 1;g = x + 1;h = f * g;```这样就实现了对代数表达式的乘法运算,h为结果表达式。
3. 多项式求导利用diff函数可以对代数表达式进行求导,例如:```matlabf = x^2 + 2*x + 1;df = diff(f,x);```这样就求出了代数表达式f对x的一阶导数df。
4. 多项式积分利用int函数可以对代数表达式进行积分,例如:```matlabf = x^2 + 2*x + 1;F = int(f,x);```这样就求出了代数表达式f对x的不定积分F。
5. 多项式因式分解利用factor函数可以对代数表达式进行因式分解,例如:```matlabf = x^2 + 2*x + 1;factored_f = factor(f);```这样就对代数表达式f进行了因式分解,得到了其因式分解形式。
三、matlab符号运算在工程应用中的实例在工程领域,matlab符号运算被广泛应用于各种代数表达式的计算和求解。
以下以电路分析为例,介绍了matlab符号运算在工程应用中的实例。
1. 电路分析中的符号运算在电路分析中,通常需要对电路中的电压、电流、电阻等元件进行建模和分析。
第三章 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的运算符号及函数
3.常用的函数及常量
常用的函数及常量如表7-2所示。
函数名 abc(x)
pi sin(x) asin(x) cos(x)
函数功能 绝对值函数 |x|
圆周率 正弦函数 sin(x) 反正弦函数 arcsin(x) 余弦函数 cos(x)
acos(x)
反余弦函数 arccos(x)
tan(x) cot(x)
经济数学
MATLAB的运算符号及函数
1.基本运算
MATLAB能识别常用的加(+)、减(-)、乘(*)、除(/)及 幂次运算符号(^)等绝大部分数学运算符号。因此,要在 MATLAB中进行基本数学运算,只需在命令窗口中的提示符(>>) 之后直接输入运算式并按Enter键即可。
例如:>>(2 * 3+3 * 4)/10
中(均用小括号),从最里层向最外层逐渐脱开。
2.常用快捷键 常用快捷键如表7-1所示。
快捷键 ↑(Ctrl+P) ↓(Ctrl+N) ←(Ctrl+B) →(Ctrl+F) Esc(Ctrl+U) Del(Ctrl+D)
表7-1
功能 调用上一行 调用下一行 光标左移一个字符 光标右移一个字符 清除当前输入行 删除光标处右侧字符
正切函数 tan(x) 余切函数 cot(x)
函数名 sum(x) sqrt(x)
inf exp(x) log(x)
log10(x)
log2(x) sign(x)
表7-2
函数功能 向量元素求和
平方根 无穷大 指数 ex 自然对数 lnx 以 10 为底的常用对数
lgx 以 2 为底的对数符号 Nhomakorabea数概率学与数理统计
3-1 Matlab矩阵、数组和符号运算
第3章 矩阵、数组和符号运算 章 矩阵、
>> x x= 0 0.5000 1.0000 1.5000 2.0000
% x=linspace(a,b,n) 生成有 n 个元素的行向量 x,其元素值在 a、 , 、 b 之间线性分布。 之间线性分布。
第3章 矩阵、数组和符号运算 章 矩阵、
c.利用 文件产生矩阵 利用M文件产生矩阵 利用
A=[1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,20 21,22,23,24,25]
第3章 矩阵、数组和符号运算 章 矩阵、
d.从外部数据文件调入矩阵 用load命令输入 用Import 菜单输入
>> Z=zeros(2,4) Z= 0 0 0 0 0 0 0 0 0 0 0 0 0 1
% eye 生成单位阵
0 0 0 1 0 0 0 0 0 0 1 0
% rand 生成均匀分布的随机矩阵
>> R=rand(4) R= 0.9501 0.8913 0.2311 0.7621 0.6068 0.4565 0.4860 0.0185 0.8214 0.4447 0.6154 0.7919 0.9218 0.7382 0.1763 0.4057
第3章 矩阵、数组和符号运算 章 矩阵、
>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16] A= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
利用表达式输入
>> B=[1,sqrt(25),9,13 2,6,10,7*2 3+sin(pi),7,11,15 4,abs(-8),12,16] B= 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
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的符号计算
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要注意的是,以上第一例的符号表达式是用单引号以隐含方式定义的。
matlab符号运算求定积分
matlab符号运算求定积分摘要:1.引言2.MATLAB符号运算概述3.求定积分的MATLAB符号运算4.结论正文:1.引言MATLAB是一种广泛应用于科学计算和工程设计的编程语言。
在MATLAB 中,符号运算功能强大,可以方便地处理复杂的数学问题。
本文将介绍如何使用MATLAB符号运算求解定积分问题。
2.MATLAB符号运算概述MATLAB符号运算基于MuPAD数学软件包,可以进行高等数学计算、线性代数计算、微分方程求解等。
符号运算主要包括以下几个方面:- 符号变量:使用字母表示变量,如x、y等。
- 符号表达式:使用符号变量和运算符组成的表达式,如f(x) = x^2 + 3x - 2。
- 符号函数:将符号表达式封装成函数,如f = @(x) x^2 + 3x - 2。
- 符号微积分:进行符号微积分计算,如求导、积分等。
3.求定积分的MATLAB符号运算在MATLAB中,可以使用符号积分函数求解定积分问题。
具体步骤如下:- 首先,定义被积函数。
例如,我们设被积函数为f(x) = x^2 + 3x - 2。
- 然后,使用符号积分函数求解定积分。
例如,我们要求解积分∫(x^2 + 3x - 2) dx。
可以使用以下MATLAB代码实现:```matlabsyms x;f = x^2 + 3*x - 2;int(f)```运行上述代码,MATLAB将返回定积分的结果,即:```1/3*x^3 + 3/2*x^2 - 2x + C```其中,C为积分常数。
4.结论通过MATLAB符号运算功能,我们可以方便地求解定积分问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1') f=
x: [1x1 sym] f.x ans =2/3
y: [1x1 sym] f.y ans =-1/2
z: [1x1 sym] f.z ans =5/6
[x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=1') x = 2/3 y =-1/2 z =5/6
• 符号运算
sym(1/2)+(1/3) ans = 5/6 --精确解
• 任意精度算术运算
digits(n) —— 设置可变精度,缺省16位 vpa(x,n) —— 显示可变精度计算 digits(25) vpa(1/2+1/3) ans = .8333333333333333333333333
dy 或 dt
dy dx
y的一阶导数—— Dy
d2y dt 2
或
d2y dx2
y的二阶导数—— D2y
dny dt n
或
d n y y的 n 阶导数—— Dny dxn
[y1,y2…]=dsolve(x1,x2,…xn) —— 返回 微分方程的解
一阶微分方程 dsolve('Dx=y','Dy=x','x(0)=0','y(0)=1')
第三章 MATLAB语言的符号运算
—— matlab 不仅具有数值运算 功能,还开发了在matlab环境下 实现符号计算的工具包Symbolic Math Toolbox
符号运算的功能
• 符号表达式、符号矩阵的创建 • 符号线性代数 • 因式分解、展开和简化 • 符号代数方程求解 • 符号微积分 • 符号微分方程
ans = x(t) = sin(t), y(t) = cos(t)
二阶微分方程 dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')
ans = cos(a*x)
例.
d2y dx2
2 dy 2 y 0
dx
y(0) 1,dy(0) 0 求该方程的解 dx
y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')
R=
(-1 + sqrt(5))/2
vpa(R,4) ans =
.6180 syms w t
syms s G=(s+1)/((s+2)(s+3)) G= (s+1)/(s+2)/(s+3)
F = sin(w*t);
E = sym(‘Dy + 5 * y = t’); A = sym(‘[a11 a12;a21 a22]’);
一、符号运算的基本操作
1. 什么是符号运算 • 与数值运算的区别
※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
• 特点:
运算对象可以是没赋值的符号变量
可以获得任意精度的解
2. 符号变量与符号表达式
f = 'sin(x)+5x'
例题:计算无穷级数求和
funtool
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
1. 数值类型 matlab的浮点算术运算 2. 有理数类型 maple的精确符号运算 3. vpa类型 maple的任意精度算术
运算
• 浮点算术运算
1/2+1/3 --(定义输出格式format long) ans = 0.83333333333333
ans =
exp(-x)*cos(x)+exp(-x)*sin(x) ezplot(y) —— 方程解y(t)的时间曲线图
exp(-t) sin(t)+exp(-t) cos(t)
250 200 150 100
50 0
-6
-4
-2
0
2
4
t
对于教材中提到的状态方程求解、差
vpa(5/6,40) ans = .8333333333333333333333333333333333333333
a=sym('[1/4,exp(1);log(3),3/7]') a= [ 1/4,exp(1)] [log(3), 3/7] vpa(a,10) ans = [.2500000000, 2.718281828] [1.098612289, .4285714286]
※ 需用' '标识
例如:A = sym('[a , 2*b ; 3*a , 0]') A= [ a, 2*b] [3*a, 0]
这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方
括号,这是与 matlab数值矩阵的 一个重要区别。
例题:符号变量定义
R = SYM(‘(-1 + sqrt(5))/2’)
f —— 符号变量名
sin(x)+5x—— 符号表达式
'
'—— 符号标识
❖符号表达式一定要用' ' 单引
号括起来matlab才能识别。
' ' 的内容可以是符号表达式,也可 以是符号方程。
例:
f1='ax^2+bx+c' —— 二次三项式 f2= 'ax^2+bx+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程
3. 符号微积分与积分变换
• 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表达式的v变量在(a,b)
❖ 用A1=subs(A, ‘new’, ‘old’)来修改
例如:A =[ a, 2*b] [3*a, 0]
A1=subs(A, 'c', 'b') A1 =[ a, 2*c]
[3*a, 0]
数值矩阵转换为符号矩阵
函数调用格式: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]
例.计算二重不定积分 xexydxdy
F=int(int('x*exp(-x*y)','x'),'y') F=
1/y*exp(-x*y)
例.计算 f='x*exp(-x*10)'的Z变换
F=ztrans(f) F=
z*exp(-10)/(z-exp(-10))^2
>> syms x y >> F=int(int(x*exp(-x*y),x),y) F= 1/y*exp(-x*y) >> syms x >> f=x*exp(-x*10); >> F=ztrans(f) >> F=ztrans(x*exp(-x*10); F= z*exp(-10)/(z-exp(-10))^2
※符号表达式或符号方程可以赋给符 号变量,以后调用方便;也可以不赋 给符号变量直接参与运算
3.符号矩阵的创建
数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别
用matlab函数sym创建矩阵(symbolic
的缩写)
命令格式:A=sym('[
]')
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义
用字符串直接创建矩阵
❖ 模仿matlab数值矩阵的创建方法 ❖ 需保证同一列中各元素 Nhomakorabea符串有相
同的长度。
例:A =['[ a,2*b]'; '[3*a, 0]'] A= [ a, 2*b] [3*a, 0]
例题:f = sin(w*x + pi/3), 求该函数对时间t的导 数,并在x=0邻域展开泰勒级数的前4项。
例题:计算时间函数f(t)= exp(-t^2)傅 立叶变换。
例. 计算指数函数eAt。 用拉氏反变换法计算eAt的公式为:
eAt = L-1[(SI-A)-1]
系统矩阵A= 0 1
2 3
结果:
eAt =
e2t 2et 2e2t 2et
e2t et 2e2t et
>> a=[0 1;-2 -3]; >> syms s >> b=(s*eye(2)-a) b= [ s, -1] [ 2, s+3] >> B=inv(b) [ (s+3)/(s^2+3*s+2), [ -2/(s^2+3*s+2),
命令格式:
solve(f) —— 求一个方程的解
solve(f1,f2, …fn) —— 求n个方程的解
例1. f = ax2+bx+c 求解
f='a*x^2+b*x+c';
• solve(f) —— 对缺省变量x求解