MATLAB1 (2)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 函数求导
1. 函数的导数和高阶导数 如果函数和自变量都已知,则可以调用函数diff来求各阶导数,使用 格式如下 (1) y=diff(expr, x),expr为函数表达式,x为自变量,求一阶导数 (2)y=diff(expr, x, n),求函数的n阶导数
2. 多元函数偏导数 多元函数偏导数仍然是通过调用diff来实现的,使用格式为 f=diff(diff(expr, x, m), y, n) 或者 f=diff(diff(expr, y, n), x, m)
Leabharlann Baidu
• 例如 下面分别生成零矩阵、幺矩阵和单位矩阵。
>> A=zeros(3) A= 0 0 0 0 0 0 0 0 0 >> B=ones(3) B= 1 1 1 1 1 1 1 1 1 >> C=eye(3) C= 1 0 0 0 1 0 0 0 1 >> D=zeros(2,3) D= 0 0 0 0 0 0 >> E=ones(2,3) E= 1 1 1 1 1 1 >> F=eye(2,3) F= 1 0 0 0 1 0
多项式展开(expand)、因式分解(factor)等。 (1). 合并同类项(collect) 函数collect( )调用的格式有两种。 R = collect(S):对于多项式S 按默认独立变量的幂次降幂排列。 R = collect(S,v):对指定的对象v 计算,操作同上。
4. 表达式化简 MATLAB 提供了化简和美化符号表达式的各种函数,具体有:合并同 类项(collect)、多项式展开(expand)、因式分解(factor)等。 (1). 合并同类项(collect): 函数collect( )调用的格式有两种。 R = collect(S):对于多项式S 按默认独立变量的幂次降幂排列。 R = collect(S,v):对指定的对象v 计算,操作同上。
大学计算机基础 ——
系统工具与环境 (理工科用)
赵 欢 李丽娟 编著
肖德贵 洪跃山
第三部分 仿真及计算工具
第11章 MATLAB应用
大学计算机基础 ——系统工具与环境(理工科用)
本章内容提要
• 符号运算
1. 定义符号常量 符号数学工具箱中的函数sym( )可以将一个数值常量A 定义成一个符 号常量。其一般的使用形式为 sym(A) 例如 将一组数值常量定义成符号常量。 >>x=sym('sin(15)') x= sin(15) >>y=sym ('(3*4-2)/5+1') y= (3*4-2)/5+1
• 函数积分
1. 不定积分 在MATLAB中,调用int函数直接求出符号函数表达式的不定积分解析 式,使用格式为 F=int(expr, x),expr为函数的表达式,x为积分变量。
2. 定积分 在MATLAB中,函数int同样可以用于求定积分,使用格式为 F=int(expr, x, a, b),expr为函数的表达式,x为积分变量, [a, b]为积 分区间。
2. 多项式求值 在MATLAB中多项式被表示为一个行向量,因此任何一个行向量都可 当作一个多项式,可以通过调用函数polyval来求多项式的值,使用格 式为 y = polyval(p,x) 其中,p为行向量,x作为参数,计算前必须赋值。
3. 多项式求根 多项式求根的函数是roots,返回结果可能是复数根。其使用格式为 y=roots(p) 其中p为行向量,用于表示一个多项式。
2. 随机矩阵和魔方矩阵 使用函数rand()可以生成一个0~1之间的随机数,而使用rand(m,n)则可 以生成一个m×n阶随机矩阵,使用rand(m)生成的是m×m阶随机方阵 魔方矩阵是指生成的方阵行、列、对角线之和相等的矩阵,通过函数 magic(m)来实现。 例如 生成2×3阶随机方阵以及5阶魔方矩阵。 >> rand(2,3) >> magic(3) ans = ans = 8 1 6 0.7655 0.1869 0.4456 3 5 7 0.7952 0.4898 0.6463 4 9 2
2. 多元函数的极限 多元函数极限一般可表示为
在MATLAB中,同样是通过调用函数limit来实现,格式如下 (1) limit(limit(expr, x, x0), y, y0) (2) limit(limit(expr, y, y0), x, x0) 如果x0或y0不是确定的值,而是另外一个变量的函数,如 ,则顺序不 能改变。
3. 对角矩阵 对角矩阵的生成是通过调用函数diag来实现的,其基本格式为 (1) diag(p),生成以向量p的元素构成的对角矩阵,矩阵大小由p的 元素个数决定。 (2) diag(p, k),将向量p的元素分布在对角线偏上或偏下的斜列上, k>0,代表上部,k<0代表下部,k=0时与(1)相同,生成的矩阵阶数=p 的元素个数+k。
3. 表达式求值 通过符号变量定义符号表达式以后,可以通过函数eval来求表达式的 值。 例如 符号常量表达式求值。 >> x=sym('sin(15)'); >>eval(x) ans = 0.6503 包含符号变量的表达式求值时,应对符号变量赋初值。
包含符号变量的表达式求值时,应对符号变量赋初值。 例如 符号变量表达式求值。 >> syms x y >> f=x^2+y^2 f= x^2 + y^2 >> x=5; >> y=4; >> eval(f) ans = 41
(2). 表达式展开(expand) 利用函数expand( )来展开符号表达式。其命令格式如下: R = expand(S) 对符号表达式S 中每个因式的乘积进行展开计算。该命令通常用于计 算多项式函数、三角函数、指数函数与对数函数等表达式的展开式。
>> syms x y a b c t >>e1 = expand((x-2)*(x-4)*(y-t)) e1 = 8*y - 8*t + 6*t*x - 6*x*y - t*x^2 + x^2*y >> e2 = expand(cos(x+y)) e2 = cos(x)*cos(y) - sin(x)*sin(y) >>e3 = expand(exp((a+b)^3)) e3 = exp(3*a*b^2)*exp(3*a^2*b)*exp(a^3)*exp(b^3) >>e4 = expand(log(a*b/sqrt(c))) e4 = log((a*b)/c^(1/2)) >>e5 = expand([sin(2*t), cos(2*t)]) e5 = [ 2*cos(t)*sin(t), cos(t)^2 - sin(t)^2] >> e6 = expand((x+1)^3) e6 = x^3 + 3*x^2 + 3*x + 1
>> syms a b x y >> f1 = factor(x^4-y^4) f1 = (x-y)*(x+y)*(x^2+y^2) >> f2 = factor([a^2-b^2, x^3+y^3]) f2 = [(a-b)*(a+b), (x+y)*(x^2-x*y+y^2)]
f ( x) 4 x 4 3x 3 18 x 2 5 x 1
• 符号运算
1. 多项式表示 在 MATLAB 中,多项式被表示成行向量的形式,它的系数是按降幂排 列的,即按降幂次序将多项式的系数组成行向量,就可以在MATLAB 中建立一个多项式。例如,多项式
在MATLAB 中,按下面方式组成一个行向量 >> f = [-4 3 18 5 1] MATLAB 会将长度为n+1 的向量解释成一个n 次多项式。因此,若多项 式某些项系数为零,则必须在向量中相应位置补零。
Si
2. 级数求和 对于具有通项公式的级数,MATLAB提供了函数symsum来计算级数和 ,具体使用格式为 symsum(expr, n, a,b),expr为通项公式表达式,n为级数变量,a和 b分别表示开始项和结束项。
• 矩阵及线性方程组
1. 零矩阵、幺矩阵和单位矩阵 在矩阵理论中,将所有元素全为0的矩阵称为零矩阵,把所有元素全 为1的矩阵称为幺矩阵,而将对角线元素全为1而其余元素全为0的矩 阵称为单位矩阵。使用格式分别如下: (1) A=zeros(m),B=ones(m),C=eye(m),分别生成m×m阶零矩阵A、 幺矩阵B和单位矩阵C。 (2) A=zeros(m,n),B=ones(m,n),C=eye(m,n),分别生成m×n阶 零矩阵A、幺矩阵B和单位矩阵C。
5. 从根创建多项式 假定已知多项式的根,则可以使用函数poly函数来求多项式向量,这 个函数与roots是互逆函数。 例如 已知多项式的根为2、5、1,求多项式。 >> r=[2;5;1]; >> s=poly(r) s= 1 -8 17 -10
这里创建了多项式 ,根分别为2、5、1。
• 函数极限
2. 定义符号变量 定义符号变量可以有两种方法:使用函数sym( )或命令syms。其使用 形式为 sym('x') 或 syms x y 例如 定义符号变量及其表达式
>> a=sym('x') a= x >> b=sym('y') b= y >> f=a^2+b^2 f= x^2 + y^2
在该例中,定义符号x并赋值到符号变量a,同时利用a定义解析式f。 需要注意的是,使用函数sym()每次只能定义一个符号变量,而使用 syms一次可以定义多个符号变量。 例如 定义符号变量及表达式 >> syms x y >> f=x^2+y^2 f= x^2 + y^2
3、矩阵行列式、秩、逆和条件数 在MATLAB中,通过调用函数det、rank、inv、cond即可分别求的矩阵 的行列式的值、秩、矩阵的逆和条件数。
4. 线性方程组求解 1 考虑线性方程组 Ax b ,很显然 x A b ,很显然,利用矩阵的逆 可以直接求解线性方程组,这也称为直接法,也可以直接利用之前介 绍的反除,即 。
4. 符号多项式 当已知多项式的系数时,可以利用函数poly2sym来构造符号多项式。 例如 对于多项式系数向量p=[-4 3 18 5 1]构造符号多项式并求值。 >> p=[-4 3 18 5 1]; >> f=poly2sym(p) f= - 4*x^4 + 3*x^3 + 18*x^2 + 5*x + 1 >> x=5; >> y=eval(f) y= -1649
• 级数运算
1. 泰勒(Taylor)展开式 根据泰勒定理,函数在 的展开形式为
其中, 为截断误差,也称为拉格朗日余项。如果 ,上式又称为麦克 劳林(Maclaurin)公式。 事实上,要使用泰勒公式求函数的近似值是一件非常困难的事情,因 为需要计算多项,特别是要计算高阶导数,调用MATLAB中的函数 taylor可以直接导出泰勒公式,其使用格式为 (1) taylor(expr, x, k),expr为函数符号表达式,x为自变量,该方式 为将函数在 处做泰勒展开,k为展开项数。 (2) taylor(expr, x, k, a),该方式为将函数在 处做泰勒展开。
1. 一元函数的极限 假设已知函数 ,则极限问题一般描述为
其中 可以是一个确定的值,也可以是 ,对于某些问题来说,还可以 是左右极限,如 或 ,在MATLAB中,直接调用函数limit来求极限,格 式如下 (1) limit(expr, x,x0),其中expr为函数表达式,一般为符号表达式,x是 变量,x0为极限点。 (2) limit(expr, x, x0, 'left'),expr、x、x0与上面格式相同,如果为左极 限,则最后一个参数为’left’,否则为’right’。 在上面格式中,极限点x0可以是inf或-inf,表示正、负无穷大。
(3). 因式分解(factor) 利用函数factor( )来进行符号表达式的因式分解。其使用格式为 factor(X) 参量X 可以是正整数、符号表达式矩阵。若X 为一正整数,则factor(X) 返回X 的质数分解式。若X 为多项式或整数矩阵,则factor(X)分解矩阵 的每一元素。 例如 因式分解示例。