MATLAB学习之符号运算

    • 创建符号变量
    • 数值与符号的转换
    • 数值矩阵转换为符号矩阵
    • 符号替换

本文介绍MATLAB中的符号运算;

1. 创建符号变量

符号常量是不含变量的符号表达式,用 sym 命令来创建符号常量。

  • sym(‘常量’):创建符号常量。
    a=sym('sin(2)')

sym 命令也可以把数值转换成某种格式的符号常量。

  • sym(常量,参数):参数可以选择为 d、f、e 或 r 四种格式,也可以省略。d 表示返回最接近的十进制数值(默认位数为32位)。f 表示返回该符号值最接近的浮点数。r 表示返回该符号值最接近的有理数型(为系统默认方式),可表示为 p/q、p*q、10^q、pi/q、2^q 和 sqrt(p) 形式之一。e 表示返回最接近的带有机器浮点误差的有理值。
    % 创建数值常量和符号常量 

    a1 = 3*sqrt(5)+pi           %创建数值常量
    a2 = sym('3*sqrt(5)+pi')    %创建符号表达式
    a3 = sym(3*sqrt(5)+pi)      %按最近的有理数型表示符号常量
    a4 = sym(3*sqrt(5)+pi,'d')  %按最近的十进制浮点数表示符号常量
    a31= a3-a1                  %数值常量和符号常量的计算
    a5 = '3*sqrt(5)+pi'         %字符串常量
  • sym(‘变量’, 参数):把变量定义为符号对象。说明:参数用来设置限定符号变量的数学特性,可以选择为 positive、real和unreal、positive 表示为“整数”、“实数”符号变量,real 表示为“实数”符号变量,unreal 表示为“非实数”符号变量。如果不限定,则参数可以省略。
    % 创建符号变量,用参数设置其特性

    syms x y real         % 创建实数符号变量
    z=x+i*y;              % 创建z为复数符号变量
    real(z)               % 复数z的实部是实数x
    sym('x','unreal');    % 清除符号变量的实数特性
    real(z)               % 复数z的实部
  • sym(‘表达式’):创建符号表达式。
    f1=sym('a*x^3+b*x+c')
  • syms(‘arg1’,’arg2’,…,参数):把字符变量定义为符号变量。syms 用来创建多个符号变量,这种方式创建的符号对象是相同的。参数设置和前面的 sym 命令相同,省略时符号表达式直接由各符号变量组成。
    % 使用syms命令创建符号变量和符号表达式

    syms a b c x            % 创建多个符号变量
    f2 = a*x^2 + b*x + c    % 创建符号表达式
    syms('a','b','c','x')
  • A=sym(‘[a , b ; c , d]’):创建符号矩阵。
    syms a b c d
    A = [a b;c d]

下面我们通过一个简单的例子来比较符号矩阵与字符串矩阵的不同。

    A=sym('[a,b;c,d]')    % 创建符号矩阵
    B='[a,b;c,d]'         % 创建字符矩阵
    syms a b c d          
    C=[a,b;c,d]           % 创建数值矩阵

运行结果如下:

MATLAB学习之符号运算_第1张图片

2. 数值与符号的转换

在MATLAB中,利用 sym 函数将数值结果转换为符号表达式。调用方法如下:

  • sym(a1,’f’) 表示返回符号浮点表达式

  • sym(a1,’r’) 表示返回符号有理数表达式

  • sym(a1,’e’) 表示返回符号有理数表达式,同时根据eps给出r的理论和实际计算差

  • sym(a1,’d’) 表示返回符号十进制小数

3. 数值矩阵转换为符号矩阵

在 MATLAB 中,必须事先定义符号矩阵,才能对矩阵进行符号运算。

  • sym(矩阵名):数值矩阵转换为符号矩阵。
    A=hilb(3)
    A=sym(A)

运行结果如下:
MATLAB学习之符号运算_第2张图片

4. 符号替换

在 MATLAB 中,subs 函数用于符号变量的替换,该命令适用于单个符号矩阵、符号表达式、符号代数方程和微分方程,该函数的使用方法如下:

  • subs(S, new):表示用新的变量 new 替换 S 中的默认变量 。
  • subs(S, old, new):表示用新变量 new 替换 S 中的指定的变量 old 。如果新变量是符号变量,必须将新变量名以 ‘new’ 形式给出。
    % 以符号变量 '5' 替换符号表达式 f 中的 'A'

    f=sym('sin(1/2*A*pi)');
    subs(f, 'A', '5')

你可能感兴趣的:(matlab)