文章目录
1. 符号定义
1.1 sym函数介绍
1.1.1 定义单个符号
sym 函数能够定义单个的符号变量,如下所示:
a = sym('a')
运行后的显示为:
a =
a
1.1.2 定义多个符号
当需要定义多个变量时,则可以在后面写上需要变量的行数与列数,其可以生成多行多列的变量矩阵。
A = sym('a',[2 4])
打印出的结果如下
A =
[ a1_1, a1_2, a1_3, a1_4]
[ a2_1, a2_2, a2_3, a2_4]
当想调用对应的符号时用矩阵元素的索引即可
f = A(1,3) * 8
f =
8*a1_3
sym 还支持自定义生成的变量的形式,
A = sym('a_%d_%d',[2 4])
生成的符号就是a_1_1 的形式。
1.1.3 保留真实数据
使用sym 函数能够将数据的值进行精确的保留,不必要担心计算机计算的误差等问题。
例如,当计算 1 123467 ∗ 3 4 \frac{1}{123467} * \frac{3}{4} 1234671∗43 时,我们想要的是准确的分数形式,但是直接输入的话会导致答案成为浮点形式,这时使用 sym函数就能避免这种情况。
直接输入如下:
answer = 1 / 1234567 * (3 / 4)
输出为
answer =
6.0750e-07
使用sym函数转换后:
answer2 = 1 / sym(1234567) * (3 / 4)
输出为
answer2 =
3/4938268
该答案为分式形式的准确解。
注意:在使用sym函数进行精度保留时,不能将其写为sym(1/1234567) ,写成这种形式时会优先计算1/1234567再将其转为分式,精度已经得到了损失。
1.2 syms函数介绍
1.2.1 定义不同变量
syms函数能够很快的定义多个不同的变量,变量之间只需要使用空格隔开就行,形式如下:
syms a b c d
使用whos命令查看所有变量为
Name Size Bytes Class Attributes
a 1x1 8 sym
b 1x1 8 sym
c 1x1 8 sym
d 1x1 8 sym
1.2.2 定义多行符号
syms 同样可以定义多行多列的数据类型,形式如下
syms a [4 3]
以上代码定义了一个4*3的符号,等价于a=sym('a', [4 3]),符号全部存储在a当中,需要使用时只需要使用诸如a(1,3)的索引即可。
2. 代换符号
使用符号定义了一个符号函数后,往往需要将符号函数中的一些符号代换成其他符号或者数值类型,这种情况下一般使用 subs 函数。
2.1 代换表达式中的符号
subs 函数的一般形式如下
subs(S, old, new)
其参数的含义是在符号表达式 S 中,利用 new 中的符号或数值替换 old 中的符号。
其示例如下
syms a b c x y
f = a * x^2 + b * y + c;%原表达式
syms m
f1 = subs(f, [x y], [sin(x) log(y)]) %符号替换符号
f2 = subs(f, [a b], [2 3]) %数值替换符号
f3 = subs(f, a, 1: 4) %多数值替换符号
输出如下:
f1 =
a*sin(x)^2 + c + b*log(y)
f2 =
2*x^2 + c + 3*y
f3 =
[ x^2 + c + b*y, 2*x^2 + c + b*y, 3*x^2 + c + b*y, 4*x^2 + c + b*y]
2.2 控制替换后的精度
使用数值对表达式进行了替换后,往往需要对精度做一定的控制与保证,这个时候就需要使用vpa 函数了。
控制精度的方法有两种,一是用 digits 函数+ vpa 函数,一种是直接用 vpa 函数。
方式一: digits+vpa
digits函数规定了精度的保留位数 ,默认是32位,vpa函数对数值进行计算。如digits(10)代表精度保留为有效数字10位,digits函数使用后必须要配合vpa函数使用。
例
计算 π ∗ e 2 \pi * e^2 π∗e2</

本文详细介绍了MATLAB中如何使用sym和syms函数定义符号变量,包括单个和多个变量的定义,以及如何保留真实数据。此外,还讲解了如何使用subs函数进行符号代换,控制精度的方法,以及factor、expand、collect、simplify、numden、horner、finverse和compose等函数在符号表达式中的应用,展示了各种函数的具体用法和示例。
最低0.47元/天 解锁文章
6098

被折叠的 条评论
为什么被折叠?



