符号运算
符号运算又称计算机代数,通俗地讲就是用计算机推导数学公式,如对表达式进行因式分解、化简、微分、积分、解代数方程、求解常微分方程等。与数值运算相比,符号计算存在以下的特点:(1)运算以推理方式进行,因此不受截断误差和累积误差问题的影响;(2)符号计算的速度比较慢。
1.1 符号对象的创建
在MATLAB中,提供了两个创建符号对象的函数,即sym和syms函数.
1.sym
sym函数用来建立单个符号量,函数的调用格式为:
var=sym('var') %创建一个符号变量var.
symexpr=sym(h) %通过匿名函数的函数句柄创建符号表达式.
A=sym('a', [m,n]) %创建一个m×n 矩阵的符号变量.
2.syms
sym 函数一次只能定义一个符号变量,使用不方便. MATLAB 提供了另一个函数syms,一次可以定义多个符号变量.
clc, clear
syms a %定义符号变量a
syms x y integer %定义整型符号变量x 和y
syms s(t) f(x,y) %定义两个符号函数
1.2 代数方程的符号解
在MATLAB 中,提供了solve
函数求解符号代数方程或方程组,其调用格式如下:
S
=
s
o
l
v
e
(
e
q
n
,
v
a
r
)
S=solve(eqn,var)
S=solve(eqn,var)%求表达式eqn 的代数方程,求解变量为var。
S
=
s
o
l
v
e
(
e
q
n
,
v
a
r
,
N
a
m
e
,
V
a
l
u
e
)
S=solve(eqn,var,Name,Value)
S=solve(eqn,var,Name,Value)%求表达式eqn 的代数方程,求解变量为var,其中指定
一个或多个属性值名及其对应的属性值。
[
y
1
,
…
,
y
N
]
[y1,…,yN]
[y1,…,yN]=solve(eqns,vars) %求表达式eqns 的代数方程组,求解变量组为vars。
代数方程的数值解
线性方程组的数值解
线性方程组
A
x
=
b
Ax = b
Ax=b的求解命令为
x
=
p
i
n
v
(
A
)
∗
b
x=pinv(A)*b
x=pinv(A)∗b,当A 列满秩时,可以使用命令KaTeX parse error: Undefined control sequence: \b at position 4: x=A\̲b̲。
(1)数学上唯一解,MATLAB 也给出唯一解;
(2)数学上无解,MATLAB 给出最小二乘解;
(3)数学上无穷多解,MATLAB 给出最小范数解。
非线性方程的数值解
- 求多项式的所有根命令roots
roots 的调用格式为
r=roots§ %求多项式的所有根,这里p 是一个向量,是由多项式从高次幂系数到常数
项所组成的向量,返回值r 是多项式的所有根。 - 求非线性函数的零点或非线性方程的解
fzero函数
fsolve函数