主要内容

执行符号计算

区分符号表达

使用符号数学工具箱™软件,您可以找到

  • 单变量表达式的导数

  • 偏导数

  • 二阶和更高阶导数

  • 混合衍生品

有关取符号导数的深入信息,请参见分化

单变量表达式

要区分符号表达式,请使用diff命令。下面的例子说明了如何求符号表达式的一阶导数:

符号x f = sin(x)^2;差异(f)
Ans = 2*cos(x)* sinx

偏导数

对于多变量表达式,可以指定微分变量。如果不指定任何变量,MATLAB®根据与字母的接近程度选择默认变量x

Syms xy f = sin(x)²+ cos(y)²;差异(f)
Ans = 2*cos(x)* sinx

有关MATLAB应用于选择默认变量的完整规则集,请参见找到一个默认符号变量

区分符号表达f关于一个变量y,输入:

Syms xy f = sin(x)²+ cos(y)²;差异(f, y)
Ans = -2 cos(y)* siny

二阶偏导数和混合导数

对符号式求二阶导数f关于一个变量y,输入:

Syms xy f = sin(x)²+ cos(y)²;Diff (f, y, 2)
Ans = 2* siny ^2 - 2* cosy ^2

两次求导得到相同的结果:diff (diff (f, y)).要求混合导数,使用两个微分命令。例如:

Syms xy f = sin(x)²+ cos(y)²;(Diff (f, y), x)
Ans = 0

整合符号表达

您可以执行符号集成,包括:

  • 不定积分和定积分

  • 多变量表达式的积分

有关的深入信息int命令,包括与实参数和复杂参数的集成,请参见集成

一元表达式的不定积分

假设您想对一个符号表达式进行积分。第一步是创建符号表达:

符号x f = sin(x)^2;

求不定积分,输入

int (f)
Ans = x/2 - sin2 *x /4

多元表达式的不定积分

如果表达式依赖于多个符号变量,则可以指定一个积分变量。如果不指定任何变量,MATLAB将根据字母的接近程度选择一个默认变量x

Syms x y n f = x^n + y^n;int (f)
Ans = x*y^n + (x*x^n)/(n + 1)

有关MATLAB应用于选择默认变量的完整规则集,请参见找到一个默认符号变量

你也可以对表达式进行积分F = x^n + y^n关于y

Syms x y n f = x^n + y^n;int (f, y)
Ans = x^n*y + (y*y^n)/(n + 1)

如果积分变量是n,输入

Syms x y n f = x^n + y^n;int (f, n)
Ans = x²/log(x) + y²/log(y)

定积分

为求定积分,将积分的极限作为函数的最后两个参数int功能:

Syms x y n f = x^n + y^n;Int (f, 1,10)
ans =分段(n = = 1,日志(10)+ 9 / y, n ~ = 1,……(10*10^n - 1)/(n + 1) + 9*y^n)

如果MATLAB找不到积分的封闭形式

如果int函数不能计算积分,它返回一个无法解析的积分:

Syms x int(sinh(x))
Ans = int(sin(sinh(x)), x)

解决方程

您可以解决不同类型的符号方程,包括:

  • 只有一个符号变量的代数方程

  • 有几个符号变量的代数方程

  • 代数方程组

有关求解符号方程(包括微分方程)的深入信息,请参见方程求解

用一个符号变量解代数方程

使用双等号(==)来定义一个方程。然后你就可以解决通过调用solve函数来求解方程。例如,解这个方程:

Syms x solve(x^3 - 6*x^2 == 6 - 11*x)
Ans = 1 2 3

如果你不指定方程的右边,解决假设它为零:

Syms x solve(x^3 - 6*x^2 + 11*x - 6)
Ans = 1 2 3

用几个符号变量解代数方程

如果一个方程包含几个符号变量,您可以指定一个变量来求解这个方程。例如,解这个多变量方程y

信谊x y解决(6 * x ^ 2 - 6 * x ^ 2 * y + x * y ^ 2 - x * y + y ^ 3 - y ^ 2 = = 0, y)
Ans = 1 2*x -3*x

如果不指定任何变量,则得到字母顺序最接近的方程的解x变量。有关MATLAB应用于选择默认变量的完整规则集,请参阅找到一个默认符号变量

解代数方程组

你也可以解方程组。例如:

信谊x y z [x, y, z] =解决(z = = 4 * x, x = = y, z = = x ^ 2 + y ^ 2)
X = 0 2 y = 0 2 z = 0 8

简化符号表达

“符号数学工具箱”提供了一组简化函数,允许您操作符号表达式的输出。例如,下面这个黄金比例的多项式φ

=(1 +根号下(sym(5)))/2;F = ^2 - - 1

返回

F =(5^(1/2)/2 + 1/2)²- 5^(1/2)/2 - 3/2

你可以输入来简化这个答案

简化(f)

然后得到一个很简短的答案:

Ans = 0

符号简化并不总是那么简单。不存在通用的简化函数,因为符号表达式的最简单表示的含义无法明确定义。不同的问题需要相同数学表达式的不同形式。知道什么样的形式更有效地解决你的特定问题,你可以选择适当的简化函数。

例如,要显示一个多项式的阶数,或对一个多项式进行符号微分或积分,请使用标准多项式形式,将所有括号乘开,并将所有相似项相加。要以标准形式重写多项式,请使用扩大功能:

信谊f = x (x ^ 2 - 1) * (x ^ 4 + x ^ 3 + x ^ 2 + x + 1) * (x ^ 4 - x ^ 3 + x ^ 2 - x + 1);扩大(f)
Ans = x^10 - 1

因素化简函数表示多项式根。如果一个多项式不能因式分解有理数,则该多项式的输出因素函数是标准多项式形式。例如,要将三阶多项式因式分解,输入:

Syms x g = x^3 + 6*x^2 + 11*x + 6;因子(g)
Ans = [x + 3, x + 2, x + 1]

多项式的嵌套(Horner)表示对于数值计算是最有效的:

符号x h = x^5 + x^4 + x^3 + x^2 + x;霍纳(h)
Ans = x*(x*(x*(x + 1) + 1) + 1) + 1)

有关“符号数学工具箱”简化函数的列表,请参见选择函数来重新排列表达式

符号表达中的替换

用数字代替符号变量

方法可以将符号变量替换为数值潜艇函数。例如,求符号表达式的值f在这一点上x= 1/3:

Syms x f = 2*x^2 - 3*x + 1;潜艇(f, 1/3)
Ans = 2/9

潜艇函数不会改变原始表达式f

f
F = 2*x^2 - 3*x + 1

替换多元表达式

当表达式包含多个变量时,可以指定要进行替换的变量。例如,替换值x在符号表达式中= 3

Syms x y f = x^2*y + 5*x*√(y);

输入命令

Subs (f, x, 3)
Ans = 9*y + 15*y^(1/2)

用一个符号变量替换另一个符号变量

您还可以用一个符号变量替换另一个符号变量。例如替换变量y有了变量x,输入

s(f, y, x)
Ans = x^3 + 5*x^(3/2)

将矩阵代入多项式

你也可以把一个矩阵代入一个具有数值系数的符号多项式。将一个矩阵代入多项式有两种方法:逐元素和根据矩阵乘法规则。

中的元素替换。要在每个元素上替换一个矩阵,请使用潜艇命令:

符号x f = x^3 - 15*x^2 - 24*x + 350;A = [1 2 3;4 5 6];潜艇(f)
Ans = [312, 250, 170] [78, -20, -118]

您可以对矩形或方阵进行逐元素替换。

矩阵意义上的代换。如果你想用标准矩阵乘法规则将一个矩阵代入多项式,那么这个矩阵必须是方阵。例如,你可以替换魔方一个变成多项式f

  1. 创建多项式:

    符号x f = x^3 - 15*x^2 - 24*x + 350;
  2. 创建魔术方阵:

    A =魔术(3)
    A = 8 1 6 3 5 7 4 9 2
  3. 得到一个包含多项式的数值系数的行向量f

    B = sym2poly(f)
    B = 1 -15 -24
  4. 代入魔方阵一个变成多项式f.矩阵一个替换所有出现的x在多项式中。常数乘以单位矩阵(3)替换常数项f

    A^3 - 15*A^2 - 24*A + 350*eye(3)
    Ans = -10 0 0 0 -10 0 0 0 -10

    polyvalm命令提供了一种获得相同结果的简单方法:

    polyvalm (b)
    Ans = -10 0 0 0 -10 0 0 0 -10

替换一个符号矩阵的元素

若要替换符号矩阵中的一组元素,也可以使用潜艇命令。假设你想替换符号循环矩阵a中的一些元素

syms a b c a = [a b c;C a b;B c a
A = [A, b, c] [c, A, b] [b, c, A]

替换的(2,1)元素一个β还有变量b贯穿矩阵的变量α,输入

Alpha = sym(' Alpha ');Beta = sym(' Beta ');A(2,1) =;A = subs(A,b,)

结果是矩阵:

A = [A, alpha, c] [beta, A, alpha] [alpha, c, A]

有关更多信息,请参见替换符号矩阵中的元素

图示符号功能

符号数学工具箱提供绘图函数:

  • fplot在笛卡尔坐标中创建符号表达式、方程或函数的2-D图。

  • fplot3来创建三维参数图。

  • ezpolar在极坐标下绘制图。

  • fsurf创建曲面图。

  • fcontour创建等高线图。

  • fmesh创建网格图。

显式函数图

创建一个2-D线状图fplot.画出表达式 x 3. - 6 x 2 + 1 1 x - 6

信谊xF = x^3 - 6*x^2 + 11*x - 6;fplot (f)

图中包含一个轴对象。axis对象包含一个functionline类型的对象。

为x轴和y轴添加标签。通过使用生成标题texlabel (f).通过使用显示网格网格.详细信息请参见将标题和轴标签添加到图表中

包含(“x”) ylabel (“y”) title(texlabel(f)

图中包含一个轴对象。标题为1的坐标轴对象1空白x空白-空白6空白x平方基线空白+空白x立方基线空白-空白6包含类型为functionline的对象。

隐函数图

绘制方程和隐式函数fimplicit

画出方程 x 2 + y 2 4 x 2 - y 2 2 - 1 < x < 1

信谊xyEqn = (x²+ y²)^4 == (x²- y²)^2;Fimplicit (eqn, [-1 1])

图中包含一个轴对象。axis对象包含一个implicitfunctionline类型的对象。

三维图

绘制三维参数线fplot3

绘制参数线

x t 2 1 0 t y t 2 因为 1 0 t z t

信谊tFplot3 (t²sin(10 t) t²cos(10 t) t)

图中包含一个轴对象。axis对象包含一个parameterizedfunctionline类型的对象。

创建表面图

创建一个3-D表面使用fsurf

画出抛物面 z x 2 + y 2

信谊xyFsurf (x²+ y²)

图中包含一个轴对象。axis对象包含一个functionsurface类型的对象。

相关的话题