matlab04符号运算
第三讲 MATLAB的符号运算
例2. factor指令的使用
(1)除x外不含其他自由变量的情况 (2) 含其他自由变量的情况之一
syms a x;
f2=x^2-a^2;
f1=x^4-5*x^3+5*x^2+5*x-6;
factor(f2)
factor(f1)
(3)对正整数的质数分解,若正整数数大于252,则用 factor(sym (‘N’))
用matlab函数sym创建矩阵(symbolic 的缩写)
命令格式:A=sym('[
]')
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义
※ 需用'
'标识
2019/7/19
13
例如:A = sym('[a , 2*b ; 3*a , 0]') A= [ a, 2*b] [3*a, 0]
2019/7/19
10
numeric(s): 将不含自由变量的符号表达式转换 为数值形式,其效果double(sym(s))相同.(旧版 中的数值转化函数).
2019/7/19
11
vpa(5/6,40)
ans =
.8333333333333333333333333333333333333333
a=sym('[1/4,exp(1);log(3),3/7]')
有时符号运算的目的是为了得到精确的数值 解,这样就需要对得到的解析解进行数值转 换。在symbolic中有三种不同的算术运算:
数值类型 matlab的浮点算术运算 有理数类型 maple的精确符号运算 vpa类型 maple的任意精度算术运算
2019/7/19
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符号运算函数大全
3.1 算术符号操作命令+、-、*、.*、\、.\、/、./、^、.^、’、.’功能符号矩阵的算术操作用法如下:A+B、A-B 符号阵列的加法与减法。
若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。
A*B 符号矩阵乘法。
A*B为线性代数中定义的矩阵乘法。
按乘法定义要求必须有矩阵A的列数等于矩阵B的行数。
即:若A n*k*B k*m=(a ij)n*k.*(b ij)k*m=C n*m=(c ij)n*m,则,i=1,2,…,n;j=1,2,…,m。
或者至少有一个为标量时,方可进行乘法操作,否则将返回一出错信息。
A.*B 符号数组的乘法。
A.*B为按参量A与B对应的分量进行相乘。
A与B必须为同型阵列,或至少有一个为标量。
即:A n*m.*B n*m=(a ij)n*m.*(b ij)n*m=C n*m=(c ij)n*m,则c ij= a ij* b ij,i=1,2,…,n;j=1,2,…,m。
A\B 矩阵的左除法。
X=A\B为符号线性方程组A*X=B的解。
我们指出的是,A\B近似地等于inv(A)*B。
若X不存在或者不唯一,则产生一警告信息。
矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。
A.\B 数组的左除法。
A.\B为按对应的分量进行相除。
若A与B为同型阵列时,A n*m.\B n*m=(a ij)n*m.\(b ij)n*m=C n*m=(c ij)n*m,则c ij= a ij\ b ij,i=1,2,…,n;j=1,2,…,m。
若若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。
A/B 矩阵的右除法。
X=B/A为符号线性方程组X*A=B的解。
我们指出的是,B/A粗略地等于B*inv(A)。
若X不存在或者不唯一,则产生一警告信息。
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的符号运算
其它运算
matlab04Symbolic
[y,How]=simple( f ): y 为 f 的最简短形式,
How 中记录的为简化过程中使用的方法。
f y HOW
2*cos(x)^2-sin(x)^2 3*cos(x)^2-1 simplify (x+1)*x*(x-1) x^3-x combine(trig) x^3+3*x^2+3*x+1 cos(3*acos(x)) (x+1)^3 4*x^3-3*x factor expand
>> syms x h n; >> L=limit((log(x+h)-log(x))/h,h,0) >> M=limit((1-x/n)^n,n,inf)
26
n
计算导数
计算导数: diff
g=diff(f,v):求符号表达式 f 关于 v 的导数 g=diff(f ):求符号表达式 f 关于默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数
常量 pi, i, j 不作为符号变量
12
findsym 举例
例: >> f=sym('2*w-3*y+z^2+5*a')
>> findsym(f) >> findsym(f,3) >> findsym(f,1)
13
subs
符号替换
用给定的数据替换符号表达式中的指定的符号变量
subs(f,x,a) 用 a 替换字符函数 f 中的字符变量 x a 是可以是 数/数值变量/表达式 或 字符变量/表达式
22
MATLAB符号运算
MATLAB符号运算前⾔有时候,你可能会遇到较复杂的⽅程(组),希望⽤MATLAB来求解。
MATLAB的符号运算正好可⽤于求解⽅程(组)。
此外,它还有许多其他功能。
例如,展开和简化、因式分解以及微积分运算等。
MATLAB的符号运算虽然是数值运算的补充,但是它仍然是科学计算研究中不可替代的重要内容。
与数值运算相⽐,符号运算不需要预先对变量赋值,其运算结果以标准的符号形式表达。
⽐如说计算sin(π),数值运算的结果是1.2246e-16,符号运算的结果是0。
前者是近似的,后者是精确的。
正⽂MATLAB符号运算功能⾮常强⼤,本⽂只介绍⼤部分常⽤的符号运算功能。
注:本⽂代码的运⾏环境是MATLAB R2016b。
1. 创建符号数、符号变量和符号矩阵这⼀步骤是符号运算的第⼀步,后⾯的步骤都是在此基础上进⾏的。
%创建符号数 (只能⽤sym函数)s0 = 1 / sym(7) %符号数,不适合⼤型符号数s1 = sym('1/7') %符号数s2 = sym('3 + 4i') %符号复数%创建符号变量 (sym函数和syms函数都⾏)%--sym函数s3 = sym('x') %符号变量%--syms函数syms a b c %创建多个符号变量,值为本⾝syms(sym('[d e; e d]')) %⽤已存在的符号变量矩阵创建多个符号变量%创建符号矩阵 (sym函数和syms函数都⾏)s4 = sym('[2 5 6; 9 8 6]') %符号数矩阵s5 = sym('x', [2 3]) %符号变量矩阵,矩阵内的元素不会被创建为符号变量A = [a b c; c b a] %⽤已存在的符号变量创建符号变量矩阵% syms A B [2 3] %仅2017及以上版本⽀持,同时创建多个符号矩阵代码运⾏结果如下。
可以看到s5是⼀个2x3的符号变量矩阵,但矩阵内元素不会被创建成符号变量。
MATLAB符号运算运用
MATLAB符号运算运用MATLAB 是一种数值计算和编程环境,它可以进行符号运算,即对代数表达式进行操作和计算。
在 MATLAB 中,符号运算的主要工具是符号计算工具箱(Symbolic Math Toolbox),它提供了一系列函数和命令,用于处理和求解符号表达式。
1.创建符号表达式首先,我们可以通过使用符号变量来创建符号表达式。
符号变量可以使用 sym 函数定义。
例如,创建一个符号变量 x:```syms x```然后,可以使用这个符号变量来创建符号表达式。
例如,创建一个简单的二次多项式表达式:```f=x^2+2*x+1;```2.符号表达式运算一旦有了符号表达式,就可以对其进行各种运算,包括求导、积分、求解方程等。
- 求导:使用 diff 函数可以对符号表达式进行求导。
例如,对上述的 f 求导:```df = diff(f, x);```- 积分:使用 int 函数可以对符号表达式进行积分。
例如,对 f 在区间 [0, 1] 上进行积分:```I = int(f, 0, 1);```- 求解方程:使用 solve 函数可以对符号表达式进行求解。
例如,求解方程 f = 0:```sol = solve(f == 0, x);```3.简化符号表达式有时,符号表达式可能过于复杂,可以使用 simplify 函数对其进行简化。
例如,简化一个复杂的三角函数表达式:```syms xf = sin(x)^2 + cos(x)^2;sf = simplify(f);```4.数值近似符号表达式可以通过使用 vpa 函数进行数值近似。
例如,将一个符号表达式近似为 5 位小数:```syms xf = exp(x);f_num = vpa(f, 5);```在MATLAB中,符号运算可以应用于各种数学问题,包括求解方程、微积分、矩阵计算等。
它提供了一种便捷的方式来处理代数表达式,而不需要将其转化为数值形式进行计算。
符号运算 matlab
符号运算 matlab符号运算是一种在数学上进行推导和计算的重要方法,在Matlab 中也有相应的符号运算功能。
通过符号运算,可以进行高精度计算、求解方程、求导积分、代数化简等操作。
本文将介绍 Matlab 中符号运算的基本使用方法和相关函数。
1. 符号变量的定义和赋值在 Matlab 中,可以使用 syms 函数定义符号变量,并使用等号将其赋值。
例如,定义符号变量 x 和 y:syms x yx = 2;y = x + 3;这里,定义了两个符号变量 x 和 y,并将 x 赋值为 2,y 赋值为 x+3。
需要注意的是,符号变量和数值变量在 Matlab 中是不同的类型,不能直接进行运算。
2. 符号表达式的运算在 Matlab 中,可以使用符号表达式进行各种运算,包括加减乘除、幂运算、三角函数、指数函数等。
例如,定义符号表达式 f(x) = 2*x^3 + 3*x^2 - 5*x + 1:syms xf(x) = 2*x^3 + 3*x^2 - 5*x + 1;然后可以对 f(x) 进行各种运算,如求导、积分、代数化简等。
例如,求 f(x) 的一阶导数:diff(f(x), x)这里使用 diff 函数求 f(x) 的一阶导数,结果为 6*x^2 + 6*x - 5。
3. 方程求解在 Matlab 中,可以使用 solve 函数求解方程。
例如,求解方程 x^2 + 3*x + 2 = 0:syms xsolve(x^2 + 3*x + 2 == 0)solve 函数返回的是符号变量的解,需要使用 double 函数将其转换为数值变量。
4. 代数化简在 Matlab 中,可以使用 simplify 函数对符号表达式进行代数化简。
例如,代数化简表达式 (x^2 + 2*x + 1)/(x + 1):syms xsimplify((x^2 + 2*x + 1)/(x + 1))simplify 函数会自动将表达式化简为最简形式。
第2章 MATLAB的基本操作-符号运算
例
>>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'); >> collect(f1) %合并同类项 ans = x^2+(exp(x)+2)*x+2*exp(x) >>expand(f1) %展开 ans = exp(x)*x+2*exp(x)+x^2+2*x >>factor(f2) %分解因式 ans = (a-1)*(a^2+a+1) >> [m,n]=numden(f3) %m为分子,n为分母 m= 1+2*a+3*a^2+4*a^3+5*a^4 n= a^4 >> simplify(f4) ans = 1
>>clear >>f1 = sym('1/(a-b) '); >>f2 = sym('2*a/(a+b) '); >>f3 = sym(' (a+1)*(b-1)* (a-b) '); >> f1+f2 %符号和 ans = 1/(a-b)+2*a/(a+b) >> f1*f3 %符号积 ans = (a+1)*(b-1) >> f1/f3 %符号商 ans = 1/(a-b)^2/(a+1)/(b-1)
matlab的符号运算
提问: sym(‘sqrt(3)’) 和 sym(sqrt(3))区别是什么?
第四章 MATLAB的符号运算
五、符号运算 2 sym函数 例如: sym(1/3,'f') sym(1/3,'e') sym(1/3,'r') sym(1/3,'d')
第四章 MATLAB的符号运算
五、符号运算 2 sym函数 例如:
第四章 MATLAB的符号运算
三、符号表达式的定义 MATLAB自变量确定原则: (1) x被视为默认的自变量。 (2)字母位置最接近x的小写字母; (。。。u,v,w,x,y,z。。。)
第四章 MATLAB的符号运算
三、符号表达式的定义 默认自变量实例
(1) sin(a*x+b*y) (2)a*x^2+b*x+c (3)1/(4+cos(t)) (4)4*x/y (5)2*a+b (6)2*i+4*j
符号表达式:包含数字、函数和变量的字符串, 不要求字符串中的变量有预先确定的值。 调用命令: sym 调用格式: f=sym(‘符号表达式’) 定义符号表达式,并将它赋值给变量f。
第四章 MATLAB的符号运算
三、符号表达式的定义
建立符号表达式有以下2种方法: (1)用sym函数建立符号表达式。 >> f=sym('a*x^2+b*x+c'); (2) 使用已经定义的符号变量组成符号表达式。 >> syms x y a b c >> f=a*x^2+b*x+c (?)利用单引号来生成符号表达式。 >> f='a*x^2+b*x+c'
matlab符号运算
2、创建符号变量和表达式
(1)使用sym命令创建符号变量和表达式; 语法:创建符号变量:sym(‘arg’,’参数’) 创建符号表达式:sym(‘表达式’) 说明:参数用来设置限定符号变量的数学 特性,可以选择 为:’positive’,’real’,’unreal’表示:正, 实和非实。不限定可以省略。
2、创建符号变量和表达式
例:>>x=sym(‘x’,’real’) >>y=sym(‘y’,’real’) >>z=x+i*y >>real(z) >>x=sym(‘x’,’unreal’) >>real(z) 比较一下两个real(z)命令的结果有什么不同?为 什么呢?
2、创建符号变量和表达式
x t sin( x ) e
>>syms t x
>>g=sym(‘[2*t t^2;tsin(x) exp(x)]’)
>>diff(f)
>>diff(f,’t’)
3、符号积分
函数int可以求符号表达式的积分 语法: int(f,’t’) 求符号变量t的不定积分 int(f,’t’,a,b) 求符号变量t的在[a,b]区间 的定积分,a,b是具体的数值 int(f,’t’,’m’,’n’) 求符号变量t的在[m,n]区间 的定积分,m,n是符号
第三讲 MATLAB的符号运算
—— matlab 不仅具有数值运算功 能,还开发了在matlab环境下实现 符号计算的工具包Symbolic Math Toolbox
一、符号运算入门
例 1 :求解一元二次方程 x 2 5x 2 0
在matlab中利用命令 solve(‘a*x^2+b*x+c=0’) 可以计算出一元二次方程的解析解。 ans = 1/2/a*(-b+(b^2-4*a*c)^(1/2)) 1/2/a*(-b-(b^2-4*a*c)^(1/2)) 对于例1,可运行如下语句: solve('x^2+5*x+2=0') 即可得到方程的根: ans = -5/2+1/2*17^(1/2) -5/2-1/2*17^(1/2)
第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中的数学符号与运算
matlab中的数学符号与运算
摘要:
1.引言
2.Matlab 中的符号计算
3.创建符号对象
4.符号运算和函数
5.符号计算与数值计算的区别
6.总结
正文:
Matlab 是一款广泛应用于科学计算和数据分析的软件,其中的数学符号和运算功能十分强大。
本文将详细介绍Matlab 中的数学符号与运算。
首先,我们需要了解Matlab 中的符号计算。
符号计算是指使用符号变量和符号运算来进行计算,与数值计算不同,符号计算可以处理未定义的变量和表达式,更适合处理复杂数学问题。
在Matlab 中,我们可以使用`sym`函数来创建符号对象,包括符号变量、符号常量、符号矩阵等。
接下来,我们来看如何创建符号对象。
在Matlab 中,可以使用`syms`函数来创建符号变量,例如`syms x y z`;使用`asym`函数创建符号常量,例如`asym(2/3,"f")`;使用`Csym`函数创建符号矩阵,例如`Csym("[1 ab; c d]")`。
在创建了符号对象之后,我们就可以进行符号运算和函数了。
Matlab 提供了丰富的符号运算和函数,例如加减乘除、求导、积分、方程求解等。
这些运算和函数可以帮助我们更好地处理符号计算问题。
虽然符号计算在处理复杂数学问题上有优势,但与数值计算相比,符号计算的运行速度较慢,而且耗内存。
因此,在实际应用中,我们需要根据问题具体情况选择使用符号计算还是数值计算。
总之,Matlab 中的数学符号与运算功能为我们处理复杂数学问题提供了强大的支持。
matlab符号运算
第2章符号运算- Presentation Transcript1.第二章符号运算o MA TLAB 的数学计算=数值计算+符号计算o其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。
2. 1. 符号变量、符号表达式和符号方程的生成o使用sym 函数定义符号变量和符号表达式o使用syms 函数定义符号变量和符号表达式3. 2 、用syms 创建符号变量o使用syms 命令创建符号变量和符号表达式o语法:o syms(‘arg1’, ‘arg2’, …, 参数) % 把字符变量定义为o% 符号变量o syms arg1 arg2 …, 参数% 把字符变量定义为符号变量的简洁形o% 式o说明:syms 用来创建多个符号变量,这两种方式创建的符号对象是相同的。
参数设置和前面的sym 命令相同,省略时符号表达式直接由各符号变量组成。
4.使用syms 函数定义符号变量和符号表达式▪>> syms a b c x▪>> f = a*x^2 + b*x + c▪ f =▪a*x^2 + b*x + c▪>> g=f^2+4*f-2▪g =▪(a*x^2+b*x+c)^2+4*a*x^2+4*b*x+4*c-2▪>>ex02015.符号方程的生成▪>> % 符号方程的生成▪>> % 使用sym 函数生成符号方程▪>> equation1='sin(x)+cos(x)=1'▪equation1 =▪sin(x)+cos(x)=1▪>>6. 2.2 符号形式与数值形式的转换o 1 、将符号形式转换为数值形式:o eval 与numerico例:a1='2*sqrt(5)+pi'o a1 =o2*sqrt(5)+pio b2=numeric(a2) % 转换为数值变量o b2 =o7.6137o b3=eval(a1)o b3 =o7.61377. 2.2 符号形式与数值形式的转换▪ 2 、数值形式转换为符号形式▪p=3.1416;▪q=sym(p)▪执行后屏幕显示:▪q=3927/1250▪numeric(q)▪屏幕显示:▪ans =▪ 3.14168. 2.2 符号形式与数值形式的转换3 、多项式与系数向量之间的转换3.1 sym2poly: 将多项式转化为对应的系数向量例:syms x p; p=x^3-4*x+5; sym2poly(p) 执行后屏幕显示:ans= 1 0 -4 5 9. 2.2 符号形式与数值形式的转换o 3 、多项式与系数向量之间的转换o 3.2 poly2sym: 将向量转化为对应的多项式o例o a=[1 0 -4 5];o poly2sym(a)o执行后屏幕显示o ans=o x^3-4*x+510. 3. 符号表达式( 符号函数) 的操作o(1) 符号表达式的四则运算o syms xo f=x^3-6*x^2+11*x-6;o g=(x-1)*(x-2)*(x-3);o h=x*(x*(x-6)+11)-6;o f+g-ho执行后输出:o ans =o x^3-6*x^2+11*x+(x-1)*(x-2)*(x-3)-x*(x*(x-6)+11)11.(1) 符号表达式的四则运算▪>> syms x y a b▪>> fun1=sin(x)+cos(y)▪fun1 =▪sin(x)+cos(y)▪>> fun2=a+b▪fun2 =▪a+b▪>> fun1+fun2▪sin(x)+cos(y)+a+b▪>>fun1*fun2▪ans =▪(sin(x)+cos(y))*(a+b)12.o(1) 将表达式中的括号进行展开: expando(2) 将表达式进行因式分解:factoro(3) 将一般的表达式变换为嵌套的形式:hornero(4) 将表达式按某一个变量的幂进行集项:collecto(5) 化简表达式:simplifyo(6) 化简表达式,使之成为书写长度最短的形式:simple13.o同一个数学函数的符号表达式的可以表示成三种形式,例如以下的f(x) 就可以分别表示为:o多项式形式的表达方式:o f(x)=x^3+6x^2+11x-6o因式形式的表达方式(factor) :o f(x)=(x-1)(x-2)(x-3)o嵌套形式的表达方式(horner) :o f(x)=x(x(x-6)+11)-614.集项-合并符号表达式的同类项o>> syms x y▪>> collect(x^2*y + y*x - x^2 - 2*x)▪ans =▪(y-1)*x^2+(y-2)*xo>> syms x y▪>> collect(x^2*y + y*x - x^2 - 2*x,y)▪ans =▪(x^2+x)*y-x^2-2*x15.符号多项式的嵌套(horner )▪>> syms x▪>> fun1=2*x^3+2*x^2-32*x+40▪fun1 =▪2*x^3+2*x^2-32*x+40▪>> horner(fun1)▪ans =▪40+(-32+(2+2*x)*x)*x▪>> fun2=x^3-6*x^2+11*x-6▪fun2 =▪x^3-6*x^2+11*x-6▪>> horner(fun2)▪ans =▪-6+(11+(-6+x)*x)*x16.符号表达式的化简(simplify)▪>> syms x▪>> fun1=(1/x+7/x^2+12/x+8)^(1/3)▪fun1 =▪(13/x+7/x^2+8)^(1/3)▪>> sfy1= simplify (fun1)▪sfy1 =▪((13*x+7+8*x^2)/x^2)^(1/3)▪>> sfy2= simple (sfy1)▪sfy2 =▪(13/x+7/x^2+8)^(1/3)17.subs 函数用于替换求值▪>> syms x y▪ f = x^2*y + 5*x*sqrt(y)▪ f =▪x^2*y+5*x*y^(1/2)▪>> subs(f, x, 3)▪ans =▪9*y+15*y^(1/2)▪>> subs(f, y, 3)▪ans =▪3*x^2+5*x*3^(1/2)▪>>subs(f,{x,y},{1,1})ex0202 ex0203 ex020418. 4 、反函数的运算(finverse )▪>> syms x y▪>> f = x^2+y▪ f =▪x^2+y▪>> finverse(f,y)▪ans =▪-x^2+y使用格式: 1 、g=finverse(f):f,g 均为单变量x 的符号函数; 2 、g=finverse(f,t) 返回值g 的自变量取为t ;19. 5 复合函数的运算(compose)▪>> syms x y z t u▪>> f = 1/(1 + x^2);▪>> g = sin(y);▪>> h = x^t;▪>> p = exp(-y/u) ;▪>> compose(f,g)▪ans =▪1/(1+sin(y)^2)▪>> compose(f,g,t)▪ans =▪1/(1+sin(t)^2)使用格式:Compose(f,g) % 返回当f=f(y) 和g=g(x) 时的复合函数f(g(x)) Compose(f,g,t) % 返回的复合函数以t 为自变量,即有f(g(t))20. 6 函数的极限、导数与积分o(1 )函数极限-limit 函数的使用o(2 )函数求导-diff 函数的使用o(3 )符号积分-int 函数的使用21.o符号极限(limit)假定符号表达式的极限存在,Symbolic Math Toolbox 提供了直接求表达式极限的函数limit ,函数limit 的基本用法如下表所示。
MATLAB的符号运算
MATLAB 的符号运算前面介绍的内容基本上是MATLAB 的数值计算功能,参与运算过程的变量都是被赋了值的数值变量.在MATLAB 环境下,符号运算是指参与运算的变量都是符号变量,即使是数字也认为是符号变量. 数值变量和符号变量是不同的.1 符号微积分下面着重介绍一些与微积分有关的指令,这些指令都需要符号表达式作为输入宗量. 求和symsum(S) 对通项S 求和,其中k 为变量且从0变到k-1.symsum(S,v) 对通项S 求和,指定其中v 为变量且v 从0变到v-1. symsum(S,a,b) 对通项S 求和,其中k 为变量且从a 变到b .symsum(S,v,a,b) 对通项S 求和,指定其中v 为变量且v 从a 变到b . 例:求∑-=10k i i ,键入k=sym('k') % k 是一个符号变量;symsum(k)得 ans = 1/2*k^2-1/2*k例:求∑=1002k k,键入:symsum(k^2,0,10)得 ans = 385 例:求∑+∞=0!k kk x 键入 symsum('x'^k/sym('k!'),k,0,inf),得 ans = exp(x)这最后的一个例子是无穷项求和.求极限limit(P) 表达式P 中自变量趋于零时的极限limit(P,a) 表达式P 中自变量趋于a 时的极限limit(P,x,a,'left') 表达式P 中自变量x 趋于a 时的左极限limit(P,x,a,'right') 表达式P 中自变量x 趋于a 时的右极限 例:求xx x sin lim 0→,键入 P=sym('sin(x)/x');limit(P)得 ans = 1例:求xx 1lim 0+→ 键入 P=sym('1/x');limit(P,'x',0,'right')得 ans = inf 例:求hx h x h sin )sin(lim 0-+→,键入: P=sym('(sin(x+h)-sin(x))/h');h=sym('h');limit(P,h,0)得ans = cos(x) 例:求)lim , )1(lim (-x x x x e xa -∞→-∞→+, 键入 v=sym('[(1+a/x)^x,exp(-x)]');limit(v,'x',inf,'left')得 ans = [ exp(a), 0]求导数diff(S,v) 求表达式S 对变量v 的一阶导数.diff(S,v,n) 求表达式S 对变量v 的n 阶导数.例如:设A=⎪⎪⎪⎭⎫ ⎝⎛++21cos 11x e x x b a ,求dx dA 键入命令: syms a b x; A= [1/(1+a),(b+x)/cos(x);1,exp(x^2)];diff(A,'x')得 ans = [0, 1/cos(x)+(b+x)/cos(x)^2*sin(x)][0, 2*x*exp(x^2)]例:求y=sinx+e x 的三阶导数,键入命令:diff('sin(x)+x*exp(x)',3)得 ans = -cos(x)+3*exp(x)+x*exp(x) 例:设⎪⎪⎪⎭⎫ ⎝⎛+=xyi n e xy y x y x A 1sin ,求A 的先对x 再对y 的混合偏导数.可键入命令: S=sym('[x*sin(y),x^n+y;1/x/y,exp(i*x*y)]');dsdxdy=diff(diff(S,'x'),'y')得: dsdxdy = [ cos(y), 0][ 1/x^2/y^2, i*exp(i*x*y)-y*x*exp(i*x*y)]例:求y=(lnx)x 的导数.可键入命令:p='(log(x))^x';p1=diff(p,'x')得:p1 = log(x)^x*(log(log(x))+1/log(x))例:求y=xf(x2)的导数.可键入命令:p='x*f(x^2)';p1=diff(p,'x')得:p1 = f(x^2)+2*x^2*D(f)(x^2)例:求xy=e x+y的导数.可键入命令:p='x*y(x)-exp(x+y(x))';p1=diff(p,'x')得:p1 = y(x)+x*diff(y(x),x)-(1+diff(y(x),x))*exp(x+y(x))再键入p2='y+x*dy-(1+dy)*exp(x+y)=0';dy=solve(p2,'dy')%把dy作为变量解方程得dy= -(y-exp(x+y))/(x-exp(x+y))求Taylor展开式taylor(f,v) f对v的五阶Maclaurin展开.taylor(f,v,n) f对v的n-1阶Maclaurin展开.例:求sinxe-x 的7阶Maclaurin展开.可键入f=sym('sin(x)*exp(-x)');F=taylor(f,8)得F = x-x^2+1/3*x^3-1/30*x^5+1/90*x^6-1/630*x^7例:求sinxe-x 在x=1 处的7阶Taylor展开.可键入f=sym('sin(x)*exp(-x)');F=taylor(f,8,1) 得F = sin(1)*exp(-1)+(-sin(1)*exp(-1)+cos(1)*exp(-1))*(x-1)-cos(1)*exp(-1)*(x-1)^2+(1/3*sin(1)*exp(-1)+1/3*cos(1)*exp(-1))*(x-1)^3-1/6*sin(1)*exp(-1)*(x-1)^4+(1/30*sin(1)*exp(-1)-1/30*cos(1)*exp(-1))*(x-1)^5+1/90*cos(1)*exp(-1)*(x-1)^6+(-1/630*cos(1)*exp(-1)-1/630*sin(1)*exp(-1))*(x-1)^7多元函数的Taylor展开MATLAB不能直接进行多元函数的Taylor展开.必须先调用MAPLE函数库中的mtaylor命令.方法为:在MATLAB的工作窗口中键入maple('readlib(mtaylor)')mtaylor的格式为mtaylor(f,v,n)f为欲展开的函数式v 为变量名.写成向量的形式:[var1=p1,var2=p2,…,varn=pn],展开式将在(p1,p2,…,pn )处进行.如只有变量名,将在0点处展开.n 为展开式的阶数(n -1阶).要完成Taylor 展开,只需键入maple('mtaylor (f,v,n )')即可.例:在(x0,y0,z0)处将F=sin xyz 进行2阶Taylor 展开.键入syms x0 y0 z0maple('readlib(mtaylor)');maple('mtaylor(sin(x*y*z),[x=x0,y=y0,z=z0],2)') 得:ans = sin(x0*y0*z0)+cos(x0*y0*z0)*y0*z0*(x-x0)+cos(x0*y0*z0)*x0*z0*(y-y0)+cos(x0*y0*z0)*x0*y0*(z-z0)求积分int(P) 对表达式P 进行不定积分.int(P,v) 以v 为积分变量对P 进行不定积分.int(P,v,a,b) 以v 为积分变量,以a 为下限,b 为上限对P 进行定积分. 例:求⎰+-dx x x 22)1(2,可键入int('-2*x/(1+x^2)^2')得 ans = 1/(1+x^2) 例:求⎰+dz z x )1(2,可键入键入int('x/(1+z^2)','z')得 ans = atan(z)*x例:求⎰+10)1ln(dx x x ,可键入 int('x*log(1+x)',0,1) 得ans = 1/4例:求⎰tt xdx ln sin 2可键入:int('2*x','sin(t)','log(t)') 得:ans = log(t)^2-sin(t)^2对(符号)矩阵积分例:求()⎰⎰dt e dt e att ,输入 int('[exp(t),exp(a*t)]'),得:ans = [ exp(t), 1/a*exp(a*t)]求符号方程的解ⅰ线性方程组的求解线性方程组的形式为A*X=B ;其中A 至少行满秩.X=linsolve(A,B) 输出方程的特解X .例:解方程组⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛11cos sin sin cos X t t t t .键入 A=sym('[cos(t),sin(t);sin(t),cos(t)]');B=sym('[1;1]');c=linsolve(A,B)c =[ 1/(sin(t)+cos(t))][ 1/(sin(t)+cos(t))]ⅱ 代数方程的求解solve(P,v)对方程P 中的指定变量v 求解.v 可省略.solve(p1,P2,…,Pn,v1,v2,…,vn)对方程P1,P2,…Pn 中的指定变量v1, v2…vn 求解.例:解r x p =+sin ,可输入solve('p+sin(x)=r') 得:ans =-asin(p-r)例:解⎩⎨⎧=+-=++034322x x y xy x ,可输入: P1='x^2+x*y+y=3';P2='x^2-4*x+3=0';[x,y]=solve(P1,P2) 得:x = [ 1][ 3]y = [ 1][ -3/2]解⎩⎨⎧=-=++1022v u v u a ,可输入: P1='a+u^2+v^2=0';P2='u-v=1';[u,v]=solve(P1,P2,'u','v') 得:u = [ 1/2+1/2*(-1-2*a)^(1/2)][ 1/2-1/2*(-1-2*a)^(1/2)]v = [ -1/2+1/2*(-1-2*a)^(1/2)][ -1/2-1/2*(-1-2*a)^(1/2)]对于有些无法求出解析解的非线性方程组,MATLAB 只给出一个数值解.这一点可以从表示解的数字不被方括号括住而确定.例:解⎪⎩⎪⎨⎧=-=-+20)sin(2y x ye y x x 键入:[x,y]=solve('sin(x+y)-exp(x)*y=0','x^2-y=2') 得:x = -6.0173272500593065641097297117905y = 34.208227234306296508646214438330由于这两个数字没有被[ ]括住,所以它们是数值解.另外,可利用solve 来解线性方程组的通解.例:解⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛246714922531372X 键入P1='2*x1+7*x2+3*x3+x4=6'; P2='3*x1+5*x2+2*x3+2*x4=4';P3='9*x1+4*x2+x3+7*x4=2';u=solve(P1,P2,P3,'x1','x2','x3','x4')Warning: 3 equations in 4 variables.u = x1: [1x1 sym]x2: [1x1 sym]x3: [1x1 sym]x4: [1x1 sym]可以看到:屏幕提示“有3个方程4个变量”,意为解不唯一(有时会提示解不唯一).且输出的是解的结构形式.为进一步得到解,可输入:u.x1,u.x2,u.x3,u.x4, 得:ans = x1ans = -5*x1-4*x4ans = 11*x1+9*x4+2ans = x4这样就得到了原方程组的通解.⑷ 解符号微分方程解符号微分方程的命令格式为: dsolve('eq1','eq2',…).其中eq 表示相互独立的常微分方程、初始条件或指定的自变量.默认的自变量为t .如果输入的初始条件少于方程的个数,则在输出结果中出现常数c1,c2等字符.关于微分方程的表达式有如下的约定:字母y 表式函数,Dy 表示y 对t 的一阶导数;Dny 表示y 对t 的n 阶导数. 例如:求⎪⎩⎪⎨⎧-==x dtdy ydt dx 的解可键入:[x,y]=dsolve('Dx=y','Dy=-x') 得x =cos(t)*C1+sin(t)*C2y =-sin(t)*C1+cos(t)*C2dsolve 中的输入宗量最多只能有12个,但这并不妨碍解具有多个方程的方程组,因为可以把多个方程或初始条件定义为一个符号变量进行输入.例如求 g f dt df 43+= ,g f dtdg 34+-= , f(0)=0 , g(0)=1 的解.可输入指令: P='Df=3*f+4*g,Dg=-4*f+3*g';v='f(0)=0,g(0)=1';[f,g]=dsolve(P,v)f = exp(3*t)*sin(4*t)g = exp(3*t)*cos(4*t)注意:微分方程表达式中字母D 必须大写. 例如求解微分方程⎪⎩⎪⎨⎧=''='=-=0(0)y 0,(0)y 1,y(0)33y dx y d 可输入y=dsolve('D3y=-y','y(0)=1,Dy(0)=0,D2y(0)=0','x') 得:y = (1/3+2/3*exp(1/2*x)*cos(1/2*3^(1/2)*x)*exp(x))/exp(x)最后看一个解非线性微分方程的例子:dsolve('(Dy)^2+y^2=1','y(0)=0','x')ans = [ sin(x)][ -sin(x)]对于无法求出解析解的非线性微分方程,屏幕将提示出错信息.微分方程的数值解及其它问题的数值解ⅰ 常微分方程的数值解MATLAB 提供了求微分方程数值解的指令:[t,x]=ode23('fname',[t0,tf],x0,tol,trace)[t,x]=ode45('fname',[t0,tf],x0,tol,trace)这两个格式中的输入参数意义完全一样.下面介绍这两个格式的有关内容及各参数的意义.这两个格式都采用Runge--Kutta 法求解微分方程的数值解.它们是针对一阶微分方程组设计的.因此,如果待解的是高阶微分方程,那么首先要化成形式为x'=f(t,x)的一阶微分方程组.称为“状态方程”.‘fname ’是f(t,x)的函数名.该函数以x'为输出,以t,x 为输入变量,注意次序不能颠倒. t0和tf 分别是积分的起始值和终止值.x0是初始值,以向量的形式输入.tol 是用来控制精度的参数,可缺省.缺省时ode23默认tol=1.e-3;ode45默认tol=1.e -6.trace 用来控制是否显示中间结果,可缺省.缺省时,默认trace=0,不显示.输出结果t 和x 分别是时间向量和相应的状态向量.虽然ode45比ode23的精度高,但它的运算速度更快.例:求著名的Van der pol 方程⎩⎨⎧=--=x yy x y x )1(2,并绘出其解的图形. 第一步:在编辑器中编写名为fname 的M 文件.function X=fname(t,x)X=zeros(2,1);X(1)=(1-x(2)^2)*x(1)-x(2);X(2)=x(1);第二步:将此文件存放于自己的文件夹中听候调用.第三步:在MATLAB 的命令窗口调用这个函数,即键入如下命令:[t,x]=ode45('fname',[0,20],[0,0.5]);plot(t,x)ⅱ 数值积分quad('fname',a,b,tol,trace) Simpson 法求数值积分.quad8('fname',a,b,tol,trace) Newton-Cotes 法求数值积分.fname 是被积函数文件名b,a 分别是积分上下限用tol 来控制积分精度.可缺省.缺省时默认tol=0.001.用trace 来控制是否用图形显示积分过程.可缺省.缺省时默认trace=0,不显示图形.例如:求 ⎰-302x e dx第一步:在编辑器中建立被积函数的M 文件.取名为fname 即在编辑器中输入: function y=fname(x)y=exp(-x^2);第二步:将此文件存放于自己的文件夹中.第三步:在MATLAB 环境下调用fname.即输入s=quad8('fname',0,3)就可以得到结果:s =8862。
matlab 符号运算
matlab 符号运算MATLAB符号运算是一种使用符号运算技术来处理数学运算的一种方法,可以帮助我们快速解决问题,节省时间。
MATLAB符号运算的核心概念是以符号的形式表达数学表达式,在程序中指定包含变量和符号的表达式,用于实现数学运算。
MATLAB符号运算由两个主要部分组成:符号变量和符号函数。
符号变量是使用字符表示的变量,可以用来表示数字,字符串和函数。
例如,当我们指定一个函数f(x)=x^2时,可以用变量x表示。
而符号函数是用于分析符号表达式并实现符号运算的函数集,其中包括求值,积分,求导数,解方程等功能。
MATLAB符号运算可以被应用于求解函数,特别是常微分方程,求解符号表达式,代数求解,积分,极限,求解微型极限等问题,以及解决更复杂的数学问题,例如系统控制,最优化,统计学等。
MATLAB符号运算的优势在于提供了一个简单,快速,可靠的解决数学问题的方法。
它可以在更高级别上理解数学表达式,从而带来更多的计算结果。
通过MATLAB符号运算,可以提高编程效率和可阅读性,从而节省编程时间,并减少调试的工作量。
此外,MATLAB符号运算还具有许多新的特性。
首先,它可以自动对数学表达式使用代数技术,使用简单的算法就可以实现很多复杂的计算。
其次,它提供了各种快速搜索和索引功能,可以帮助用户快速找到所需的结果。
最后,它提供了丰富的可视化功能,可以帮助用户实时观察结果,并便于分析数据。
因此,MATLAB符号运算成为解决数学问题的理想工具,为许多学科领域提供支持,例如力学,机械,电子,生物学,工程,教育,统计学等。
针对更复杂的数学问题,MATLAB符号运算的实用性和强大性能使它在当今计算领域中越来越受欢迎。
MATLAB中的符号运算
k
2 4
x2
2x 1
3
3x 4
在必要时,numden将表达式合并、有理化并返回所得的分 子和分母。进行这项运算的MATLAB语句是:
m= ' x^2 ' % create a simple expression m= x^2 [n,d]=numden(m) % extract the numerator and denominator n= x^2 d= 1 f= ' a*x^2/(b-x) ' % create a rational expression f= a*x^2/(b-x) [n,d]=numden(f) % extract the numerator and denominator n= a*x^2 d= b-x
diff( ' sin(omega) ' , ' omega ' ) % specify the independent variable ans= cos(omega)
符号表达式运算
一旦创建了一个符号表达式,或许想以某些方式改变它; 也许希望提取表达式的一部分,合并两个表达式或求得表 达的数值。有许多符号工具可以帮助完成这些任务。 所有符号函数(很少特殊例外的情况)作用到符号表达式和 符号数组,并返回符号表达式或数组。其结果有时可能看 起来象一个数字,但事实上它是一个内部用字符串表示的 一个符号表达式。可以运用MATLAB函数isstr来找出像似 数字的表达式是否真是一个整数或是一个字符串。
g=' 3*x^2+5*x-4 ' g= 3*x^2+5*x-4
% create another function
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数概率学与数理统计
第三讲MATLAB符号运算
20
❖将符号矩阵转化为数值矩阵
函数调用格式: numeric(A)
A=
[ 1/3, 5/2]
[10/7, 2/5]
numeric(A)
ans =
0.3333 2.5000
1.4286 0.4000 第三讲MATLAB符号运算
21
二、符号运算
1. 符号矩阵运算
数值运算中,所有矩阵运算操作指
令都比较直观、简单。例如:a=b+c;
symbolic expression S with values obtained from the calling function, or the MATLAB workspace.
• subs(S, new) replaces the default symbolic variable in S
号变量,以后调用方便;也可以不赋
给符号变量直接参与运算
第三讲MATLAB符号运算
6
sym函数
符号量名=sym(符号字符串)
该函数可以建立一个符号字符串,符号字符串可以是 常量、变量、函数或者表达式
例如:a=sym(‘a’)将建立符号变量a,此后,用户可以 在表达式中使用变量a进行各种运算
第三讲MATLAB符号运算
[3*a, 4*b]
第三讲MATLAB符号运算
19
⑤ 符号矩阵与数值矩阵的转换
❖将数值矩阵转化为符号矩阵
函数调用格式: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]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)
因式分解、展开、合并、简化及通分等相关函数 因式分解、展开、合并、简化及通分等相关函数
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)
% eval函数是用来将字符串转化为命令并执行它 常用来求符号表达式的值 函数是用来将字符串转化为命令并执行它.常用来求符号表达式的值 函数是用来将字符串转化为命令并执行它
计算导数 计算导数
给定函数y=x 求出其导函数, : 给定函数y=x3-6x+3 ,求出其导函数,然后在同一坐 标系里作出函数及导函数在区间[ 4]上的图形 上的图形。 标系里作出函数及导函数在区间[-4,4]上的图形。
例:指出下面各条语句的输出结果 指出下面各条语句的输出结果 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]) %方括号换成大花括号也可以 方括号换成大花括号也可以
计算导数 计算导数
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)
% 特别注意不能用逗号分隔,否则含义就变了 特别注意不能用逗号分隔,
符号表达式的建立: 例: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)
% 符号运算采用的运算符和基本函数,在功能和格式上都与数值计算中的 符号运算采用的运算符和基本函数, 完全相同。 完全相同。
符号表达式的替换求值函数
符号表达式的替换求值函数: 符号表达式的替换求值函数:常用格式 subs(f) subs(f,a) subs(f,x,a) (求符号表达式 的值 求符号表达式f的值 求符号表达式 的值) (用a替换 中的默认变量 ,并求值 用 替换 中的默认变量x,并求值) 替换f中的默认变量 (用a替换 中的指定变量 ,并求值 用 替换 中的指定变量x,并求值) 替换f中的指定变量
数学实验 第四讲 Matlab 符号运算
本讲主要内容
符号变量和符号表达式的建立 符号对象的基本运算 符号表达式的替换函数subs(f,x,a)
两种计算的特点
数值计算特点: 以数值数组作为运算对象,给出数值解; 以数值数组作为运算对象,给出数值解; 计算过程中产生误差累积问题,影响计算结果的精确性; 计算过程中产生误差累积问题,影响计算结果的精确性; 计算速度快,占用资源少。 计算速度快,占用资源少。 符号计算特点: 以符号对象和符号表达式作为运算对象,给出解析解; 以符号对象和符号表达式作为运算对象,给出解析解; 运算不受计算误差累积问题的影响; 运算不受计算误差累积问题的影响; 计算指令简单; 计算指令简单; 占用资源多,计算耗时长。 占用资源多,计算耗时长。
函数简化举例 函数简化举例
例:简化
f (x) =
3
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 可以达到最简表达。
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('函数 函数','导函数 导函数'); 函数 导函数
计算极限
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'): 计算左极限
合并同类项
合并同类项 collect(f,v): 按指定变量 v 进行合并 进行合并 collect(f): 按默认变量进行合并 默认变量进行合并 变量进行 例:
syms x y; f= x^2*y + y*x - x^2 + 2*x ; collect(f) collect(f,y)
函数简化
函数简化
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为嵌套形式的多项式 转化 为嵌套形式的多项式
例 : 符号对象和普通数据对象之间的差别
sqrt(2) ans = 1.4142 x=sqrt(sym(2)) x = 2^(1/2)
%返回数值结果
%返回符号结果
符号运算是按推理解析的方式进行, 例 :符号运算是按推理解析的方式进行,运算结果以标准 符号运算是按推理解析的方式进行 符号形式表达。 符号形式表达。-- 类似于代数运算
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)
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
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) %试一试,看看它的运算结果 %几乎所有适用于数值变量的所有运算和函数也适 用于符号变量,而且运算函数的含义也相同。