前言
有时候,你可能会遇到较复杂的方程(组),希望用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的符号变量矩阵,但矩阵内元素不会被创建成符号变量。
2. 创建符号表达式、符号函数
要表达一个数学函数可以用符号函数或符号表达式。
%创建符号表达式
syms x y
f = x^2 + 5*x + 4 %符号表达式
subs(f, x, [2 1]) %分别将f中的x换成2和1
f2 = sym('x^2 + 2*x + 1 = 0') %创建