您的位置:首页 > 编程语言 > MATLAB

MATLAB学习之符号运算

2016-03-11 15:41 537 查看
创建符号变量

数值与符号的转换

数值矩阵转换为符号矩阵

符号替换

本文介绍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]           % 创建数值矩阵


运行结果如下:



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)


运行结果如下:



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