首页 > 编程笔记 > MATLAB笔记 阅读:3

MATLAB subs()函数的用法(附带实例)

符号运算的操作与算术运算基本一致,包括符号对象的加、减、乘、除、乘方和开方等操作。除此之外,MATLAB 还提供了专门用于符号运算的函数,以便进行更复杂的符号运算。

在 MATLAB 中,利用 subs() 函数可以在符号表达式中进行变量代换,即将符号表达式中的某个符号变量替换为其他符号、数值或表达式。这在求解方程、进行符号推导或简化时非常有用。

subs() 函数的调用格式如下:
1) 替换符号变量和函数:
snew = subs(s,old,new)     % 将 s 中出现的所有 old 替换为 new,并计算 s
snew = subs(s,new)         % 将 s 中所有默认的符号变量替换为 new,并计算 s
snew = subs(s)             % 将 s 中的符号变量替换为工作区中分配的值,并计算 s
old 一定是符号表达式 s 中的符号变量,而 new 可以是符号变量、符号常量、双精度数值与数值数组等。

2) 替换符号矩阵和函数:
sMnew = subs(sM,oldM,newM)  % 将 sM 中出现的所有 oldM 替换为 newM,并计算 sM
sMnew = subs(sM,newM)        % 将 sM 中所有默认的符号矩阵替换为 newM,并计算 sM
sMnew = subs(sM)             % 将 sM 中的符号矩阵替换为工作区中分配的值,并计算 sM

【实例】已知 f=axn+by+k,试对其进行符号变量替换:a=sint、b=lnw、k=ce-dt;符号常量替换:n=5、k=p,及数值数组替换:k=[1234]。在命令行窗口中输入以下语句,并查看输出结果:
>> clear
>> syms a b c d k n x y w t
>> f = a*x^n + b*y + k
f =
k + a*x^n + b*y

% 符号变量替换:a = sin t, b = ln w
>> f1 = subs(f,[a b],[sin(t) log(w)])
f1 =
k + x^n*sin(t) + y*log(w)

% 符号常量替换:n = 5, k = π
>> f2 = subs(f,[a b k],[sin(t) log(w) c*exp(-d*t)])
f2 =
c*exp(-d*t) + x^n*sin(t) + y*log(w)

>> f3 = subs(f,[n k],[5 pi])
f3 =
a*x^5 + pi + b*y

% 数值数组替换:k = [1 2 3 4]
>> f4 = subs(f1,k,1:4)
f4 =
[ x^n*sin(t) + y*log(w) + 1,  x^n*sin(t) + y*log(w) + 2, ...
  x^n*sin(t) + y*log(w) + 3,  x^n*sin(t) + y*log(w) + 4 ]
若要对符号表达式进行两个变量的数值数组替换,可以用循环程序来实现,而不必使用函数 subs,这样既简单又明了且高效。

【实例 2】已知 f=asinx+k,试求当 a=1:1:2 与 x = 0:π/6:π/3 时函数 f 的值。在编辑器中编写以下程序并运行:
syms a k;
f = a*sin(x) + k;
for a = 1:2
    for x = 0:pi/6:pi/3
        f1 = a*sin(x) + k
    end
end

程序运行第一组(当 a=1 时)后的结果如下:
f1 =
    k
f1 =
    k + 1/2
f1 =
    k + 3^(1/2)/2

程序运行第二组(当 a=2 时)后的结果如下:
f1 =
    k
f1 =
    k + 1
f1 =
    k + 3^(1/2)

相关文章